Сегодня я хочу рассказать о том, как же во FreeBSD правильно обновить установленные из портов программы. Механизм обновления программ со старой версии на новую прост и логичен. Благодаря его продуманности работать с ПО, которые установлены из системы портов очень легко даже новичкам. В деле обновления нам поможет программа по имени portupgrade.
Я работаю в FreeBSD 7.1
Первым дело нам нужно обновить порты.
Потом устанавливаем portupgrade
cd /usr/ports/ports-mgmt/portupgrade && make install clean ?????????????????????????????????????????????????????????????????????? ? Options for portupgrade 2.4.6_2,2 ? ? ?????????????????????????????????????????????????????????????????? ? ? ? [X] BDB4 Use Berkeley DB >=2 as backend ? ? ? ? [ ] BDB1 Use Berkeley DB 1.85 as backend ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?????????????????????????????????????????????????????????????????????? ? [ OK ] Cancel ? ??????????????????????????????????????????????????????????????????????
опции я оставил по умолчанию
Ставится на современной машине очень быстро.
после установки нам говорят в числе прочего и
Note also, portupgrade knows nothing how to handle ports with different
suffixes (E.g. -nox11). So you should explicitly define variables
(E.g. WITHOUT_X11=yes) for the ports in /etc/make.conf or pkgtools.conf
(MAKE_ARGS section) files.
Так что если вы работаете только с консолью, то добавляем
WITHOUT_X11=yes
в
/etc/make.conf
Если работаете в Х среде, это делать не нужно.
Теперь смотрим, какие порты нам можно обновить. Вот что у меня вышло.
pkg_version -v | grep "need" apache-2.2.11_3 < needs updating (port has 2.2.11_4) clamav-0.94.2 < needs updating (port has 0.95.1_1) curl-7.19.2 < needs updating (port has 7.19.4) freetype2-2.3.7 < needs updating (port has 2.3.9_1) gamin-0.1.10 < needs updating (port has 0.1.10_1) gio-fam-backend-2.18.4 < needs updating (port has 2.20.1) glib-2.18.4 < needs updating (port has 2.20.1) havp-0.88_1 < needs updating (port has 0.90) icu-3.8.1_1 < needs updating (port has 3.8.1_2) libSM-1.1.0,1 < needs updating (port has 1.1.0_1,1) libX11-1.1.3_1,1 < needs updating (port has 1.2.1,1) libslang2-2.1.4 < needs updating (port has 2.1.4_1) m4-1.4.11,1 < needs updating (port has 1.4.12,1) openldap-client-2.4.13 < needs updating (port has 2.4.16) pcre-7.8 < needs updating (port has 7.9) perl-5.8.9 < needs updating (port has 5.8.9_2) php5-5.2.8 < needs updating (port has 5.2.9) php5-session-5.2.8 < needs updating (port has 5.2.9) php5-xml-5.2.8 < needs updating (port has 5.2.9) php5-xmlrpc-5.2.8 < needs updating (port has 5.2.9) png-1.2.34 < needs updating (port has 1.2.35) python25-2.5.2_3 < needs updating (port has 2.5.4_1) rtgui-0.2.2_2 < needs updating (port has 0.2.7) rtorrent-devel-0.8.4 < needs updating (port has 0.8.4_1) ruby-1.8.6.287,1 < needs updating (port has 1.8.7.72_1,1) ruby18-bdb-0.6.4 < needs updating (port has 0.6.5) squid-3.0.13 < needs updating (port has 3.0.14) trafd-3.0.1_2 < needs updating (port has 3.0.2.1) xmlrpc-c-devel-1.11.00_3 < needs updating (port has 1.18.00) xproto-7.0.14 < needs updating (port has 7.0.15)
И когда только успел столько понаставить .
Обновлять программы просто. Пишем в консоли
portupgrade имя_обновляемого_порта
Важно помнить, что во время обновления сервис будет остановлен. Если это ваш домашний компьютер – как правило это допустимо, а если прокси сервер организации и вы задумаете обновить тот же squid – то лучше это делать в нерабочие часы, вдруг что-то пойдет не так, как вы хотели?
ВНИМАНИЕ! Сохраняйте конфигурационные файлы обновляемых программ. Причем это нужно делать перед каждым обновлением, а то рискуете в самый неподходящий момент их потерять.
Как более пароноидальный вариант – перед обновление сделайте пакеты из установленных программ. Откатиться будет еще проще, чем с одними голыми конфигами на руках.
Команда
1 |
portupgrade -arR
|
Позволяет обновить все порты.
-a значит применить ко всем.
-R проверит зависимости для установки
-r проверит приложения, которые зависят от порта.
Сочетание этих ключей предотвратит появление в вашей системе устаревших зависимостей и несовместимости программ.
Иногда во время использования portupgrade появляется предложение запустить pkgdb -F. Эта команда обновляет базу данных пакетов. Эта база данных находится в /var/db/pkg/pkgdb.db. Если вы увидели это сообщение, запустите о чем вас просит система.
1 |
pkgdb -F
|
интерактивно исправляет базу данных пакетов, т.е. спрашивает вас как поступить. Если не хотите с этим связываться, можно позволить системе самой решать как лучше.
Это делается так
1 |
pkgdb -fu
|
Вот вроде бы и все про обновление программ, которые установлены из портов, при помощи portupgrade.