Категорії
FreeBSD

Обновляем пакеты через 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

Залишити відповідь

Ваша e-mail адреса не оприлюднюватиметься. Обов’язкові поля позначені *

Домашняя страничка Andy
Записки молодого админа
Самостоятельная подготовка к Cisco CCNA
Самостоятельная подготовка к Cisco CCNP
Powered by Muff