PKG. Установка и удаление программ во FreeBSD

Ноябрь 2nd, 2012

Трюки с установкой и удалением программ во FreeBSD.

Начну с практической задачи: иногда возникают такие ситуации когда нужно "откатится" до другой версии программы или попробовать новую версию, НО чтобы при этом с минимальными потерями откатится назад, если что …

Тут нам на помощь приходит работа с пакеджами. Грубо (очень грубо) говоря при сборке программы из портов софт регистрируется в локальной базе данных пакетов (что-то вроде установка и удаление программ в Windows) где записываются исходные файлы, которые были установлены и многое другое. Собственно кому интересно:

# ls -la /var/db/pkg/

total 248

drwxr-xr-x 123 root wheel 3584 Dec 4 14:56 .

drwxr-xr-x 13 root wheel 512 May 14 2009 ..

drwxr-xr-x 2 root wheel 512 Feb 18 2009 apache-2.0.63_2

drwxr-xr-x 2 root wheel 512 Feb 14 2009 arpwatch-2.1.a15_4

drwxr-xr-x 2 root wheel 512 May 14 2009 autoconf-2.62

Но вернемся к нашей задаче: и так, нам нужно поставить другую версию пакета, при этом у нас уже установлена какая-то условная версия.

Действие первое: готовим пакет:

Прежде всего нужно точно узнать как он называется, для этого найдем его в списке пакетов вызвав его командой

# pkg_info

затем перейдем в каталог где резервная копия установленной программы не будет мешать никому (например /home/ или /usr/local/ или еще куда-нибудь), напоминаю что перемещение по каталогам делается не только миднайт командером, а еще командой cd, а создание каталогов не только клавишей F7, а так-же командой mkdir

ну и собственно делаем резервную копию пакета

# pkg_create -j -b имя_пакета

Сразу хочу предупредить тех, кто прочитал не очень внимательно:

pkg_create -j -b squid работать не будет, а pkg_create -j -b squid-3.0.13 будет. Ответ "почему" чуть выше.

после этого в каталоге, где мы в данный момент находимся должен появится .tbz файл. Если он появился - можно начинать эксперименты. НО аккуратно, об этом будет сказано чуть далее…

Действие второе: удаляем пакет:

# pkg_delete имя_пакета

удалит этот пакет из системы, НО не удалит изменившиеся со времени установки файлы. Т.е. если вы правили конфиг - он останется, соответственно и каталоги с такими файлами тоже останутся, в этом есть плюс что настраивать заново ничего не нужно. (но это не отменяет предварительно сделать резервную копию конфигурационных файлов).

после этого можно обновлять/откатывать порты, собирать-пересобирать софт и делать прочие эксперименты потому что обратно этот пакет можно будет легко и не напрягаясь поставить 1 командой.

Действие третье: возвращаем на место старый пакет:

# pkg_add /путь_куда_бэкапили/имя_пакета.tbz

И на последок предостережение. У пакетов есть зависимости. Пакет mysql-server ВСЕГДА требует пакет mysql-client причем одинаковых версий поэтому если сносите какой-то пакет у которого есть зависимости - внимательно читайте какие пакеты от него зависят. Система об этом вам сообщит. Зависимые пакеты в этом случае необходимо сделать по этой же схеме. В противном случае придется применять ключ при установке -f (форсированая установка) что есть первый шаг на пути к разрушению системы т.к. нерегламентированные версии зависимых пакетов могут работать между собой не корректно.


Смотрите также: