Обновляем пакеты через portmaster

Время от времени приходится обновлять ПО по тем или иным причинам (нашли уязвимость или добавился новый функционал). Есть замечательно утилита portupgrade. Но она написана на ruby, а значит при установке нужно будет ставить ruby. Что не всегда оправдано, когда у вас не планируется использовать ruby.

Что же делать? Выход есть. Будем использовать утилиту portmaster. Она написана на shell, а значит достаточно быстро будет выполнятся и не требует зависимостей. Ниже будет представлен краткий обзор возможностей данной утилиты с примерами.

1) Установка.

По умолчанию она не идёт в базовой поставке FreeBSD, поэтому её нужно установить отдельно. Например, через порты:

#cd /usr/ports/ports-mgmt/portmaster && make install clean

Вылезет диалоговое окно с выбором установки дополнений для оболочек bash/zsh. Если вы ими не пользуетесь — можете ничего не выбирать.

После установки рекомендую пройтись по конфигурационному файлу /usr/local/etc/portmaster.rc и выставить такие переменные:

# Do not create temporary backup packages before pkg_delete (-B)
BACKUP=bopt
# Do not run 'make config' for ports that need updating (-G)
PM_NO_MAKE_CONFIG=Gopt
# Log actions taken by portmaster with a date/time stamp
PM_LOG=/var/log/portmaster.log

2) Просмотр доступных новых версий пакетов.

# portmaster -L
===>>> Root ports (No dependencies, not depended on)
===>>> en-freebsd-doc-20110110
===>>> New version available: en-freebsd-doc-20110710
===>>> portmaster-3.9.1
===>>> ru-freebsd-doc-20110110
===>>> New version available: ru-freebsd-doc-20110710
===>>> 3 root ports
===>>> Trunk ports (No dependencies, are depended on)
===>>> 0 trunk ports
===>>> Branch ports (Have dependencies, are depended on)
===>>> 0 branch ports
===>>> Leaf ports (Have dependencies, not depended on)
===>>> 0 leaf ports
===>>> 3 total installed ports
===>>> 2 have new versions available

Как видим, есть 2 новых пакета, которые можно обновить.

3) Обновление пакета.

#portmaster ru-freebsd-doc-20110110

ВНИМАНИЕ!

Название пакета должно быть полностью, вместе с версией. Например, php5-sockets-5.3.6

При этом если требуется обновить зависимости, portmaster об этом предупредит и выдаст запрос : продолжать или нет.

Примечание.

Без параметров portmaster будет обновлять так же и зависимые пакеты. Если требуется обновить только некоторые пакеты, то используйте опцию ‘-i’, которая позволит выбрать какие пакеты нужно обновить.

4) Замена версии пакета другой.

Очень удобно, когда нужно обновиться не в пределах текущей ветки, а через ветку. Например, обновить php5.2 до php5.3. В портах эти версии разнесены по разным веткам. Делаем так:

#portmaster -o dev/php5 dev/php52

5) Обновление всех пакетов, для которых доступны обновления.

#portmaster -ad

где параметр ‘-d’ означает удалять старые версии пакетов

6) Выбор источника обновлений: пакеты или порты.

Если для вас сборка из портов занимает много времени, можно указать portmaster’y пробовать обновляться сначала через пакеты, и если нету нужной версии, тогда -через порты:

#portmaster -P vim

Если указать ключ ‘-PP’ то будет произведено обновление ТОЛЬКО ИЗ ПАКЕТОВ. Если нужной версии не окажется, тогда пакет не будет обновлён.

7) Удаление порта и всех зависимостей неиспользуемых другими

# portmaster -e exim &&  portmaster -s exim

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *