20.01.13

Использование portupgrade для обновления установленных из портов программ.



Сегодня я хочу рассказать о том, как же во 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 – то лучше это делать в нерабочие часы, вдруг что-то пойдет не так, как вы хотели?
ВНИМАНИЕ! Сохраняйте конфигурационные файлы обновляемых программ. Причем это нужно делать перед каждым обновлением, а то рискуете в самый неподходящий момент их потерять.
Как более пароноидальный вариант – перед обновление сделайте пакеты из установленных программ. Откатиться будет еще проще, чем с одними голыми конфигами на руках.
Команда
portupgrade -arR
Позволяет обновить все порты.
-a значит применить ко всем.
-R проверит зависимости для установки
-r проверит приложения, которые зависят от порта.
Сочетание этих ключей предотвратит появление в вашей системе устаревших зависимостей и несовместимости программ.
Иногда во время использования portupgrade появляется предложение запустить pkgdb -F. Эта команда обновляет базу данных пакетов. Эта база данных находится в /var/db/pkg/pkgdb.db. Если вы увидели это сообщение, запустите о чем вас просит система.
pkgdb  -F
интерактивно исправляет базу данных пакетов, т.е. спрашивает вас как поступить. Если не хотите с этим связываться, можно позволить системе самой решать как лучше.
Это делается так
pkgdb -fu
Вот вроде бы и все про обновление программ, которые установлены из портов, при помощи portupgrade.