Это старая версия документа!
Содержание
Обновление ПО FreeBSD
Менеджер пакетов pkg
pkg search pkg install pkg remove pkg upgrade
Управлять программным обеспечением с помощью менеджера бинарных пакетов проще, быстрее, но это как говорится путь на "темную сторону силы", поэтому я чаще пользуюсь портами FreeBSD. Там преднастройку пакетов можно сделать и скомпилировать все под свои конкретные нужды (и оборудование), правда это может быть значительно дольше(компилировать же все придется).
Если хотите сделать бэкап установленного пакета перед обновлением, то можно воспользоваться командой
pkg create имя_пакета
Можно сделать бэкап всех установленных пакетов
pkg create -a
Обновление из портов
Искать каталог нужной программы(пакета) в портах:
whereis имя_пакета
Обновлять можно и вручную. Заходить в каталог нужного порта и делать make&&make deinstall&&make reinstall&&make clean
. Но для упрощения процесса есть пакеты portupgrade и portmaster, которые придется установить вручную из портов или с помощью pkg. Кстати лучше иметь в системе установленными оба пакета для разных ситуаций оба могут пригодиться.
Вообще-то лучше почитать /usr/ports/UPDATING перед обновлением ПО. Но обычно его читать начинают, когда при обновлении что-то пошло не так (принцип стоматолога - к нему бегут, когда зуб совсем развалится)
Обновление дерева портов
https://www.freebsd.org/doc/en/books/handbook/ports-using.html
Первый запуск:
portsnap fetch extract
После этого можно пользоваться
portsnap fetch update
portupgrade
Установка
cd /usr/ports/ports-mgmt/portupgrade && make install clean
pkg install portupgrade
Этот пакет содержит несколько полезных утилит (cat /usr/ports/ports-mgmt/portupgrade/pkg-descr
):
- portinstall - установка ПО из портов
- portversion - просмотр установленных/доступных версий
- portsclean - очистка системы портов
- portupgrade - собственно программа для обновления.
и другие, но их запуск вручную бывает нужен редко.
Просмотр пакетов, требующих обновления:
portversion -vl "<"
Смотрим список обновляемых пакетов. Есть пакеты, от которых ничего особо не зависит (mc, bash…)- их можно обновить в первую очередь. Другие могут быть связаны сложными зависимостями их все-равно придется обновлять рано или поздно, но я надеюсь что как минимум бэкап конфигов у вас есть (хотя бы tar cvzf backup.tar.gz /etc /usr/local/etc
)
Обновление пакета и пакетов зависящих от него и пакетов от которых он зависит (rR - обновление с зависимостями). Сначала тестовый запуск без самого обновления(ключ n):
portupgrade -rRn имя_пакета
Затем собственно обновляем.
portupgrade -rR имя_пакета
Обновление всех пакетов, для которых есть обновления (ключ c - сделать make config перед процессом обновления).
portupgrade -rRac
Безоговорочное обновление всех пакетов независимо от наличия новых версий (ключ f).
portupgrade -frRac
pormaster
Вывод списка установленного ПО и наличия обновлений
portmaster -L
Обновление всех пакетов, требующих обновления
portmaster -a
Безусловное обновление всех пакетов
portmaster -afdy
Ошибка: The one in /usr/local/lib/compat/pkg is not used
В процессе работы portupgrade в папке /usr/local/lib/compat/pkg иногда скапливаются симлинки на уже несуществующие библиотеки и portupgrade ругается на них.
Вывести список "битых" линков:
find /usr/local/lib/compat/pkg -type l -exec test ! -e {} \; -print
Удалить "битые" симлинки:
find /usr/local/lib/compat/pkg -type l -exec test ! -e {} \; -delete