Инструменты пользователя

Инструменты сайта


nix:freebsd_ustanovka_i_obnovlenie_ustanovlennogo_po

Обновление ПО FreeBSD

Менеджер пакетов pkg

man pkg

pkg search
pkg install
pkg remove
pkg upgrade

Управлять программным обеспечением с помощью менеджера бинарных пакетов проще, быстрее, но это как говорится путь на "темную сторону силы", поэтому я чаще пользуюсь портами FreeBSD. Там преднастройку пакетов можно сделать и скомпилировать все под свои конкретные нужды (и оборудование), правда это может быть значительно дольше(компилировать же все придется).

Список всех установленных пакетов:

pkg info

Если хотите сделать бэкап установленного пакета перед обновлением (или для дальнейшей установки этого пакета на другом компьютере), то можно воспользоваться командой

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

man portmaster

Вывод списка установленного ПО и наличия обновлений

portmaster -L

Обновление всех пакетов, требующих обновления

portmaster -a

То же самое исключая указанный пакет (ключ -x можно указывать несколько раз)

portmaster -a -x clamav-lts

Безусловное обновление всех пакетов

portmaster -afdy

То же самое исключая указанный пакет

portmaster -afd -x bind-tools

Некоторые полезные ключи

     --delete-build-only
         delete ports that are build-only dependencies after a successful run,
         only if installed this run

     --packages-build
         use packages for all build dependencies

     -l  list all installed ports by category

     -L  list all installed ports by category, and search for updates

     --packages-build
       use packages    for all    build dependencies

Исключение портов из обработки

     /var/db/pkg/*/+IGNOREME
           If this file exists for a port that is already installed, several
           things will happen:

           1. The port will be ignored for all purposes.
               This includes dependency updates even if there is no directory
               for the port in /usr/ports and there is no entry for it in
               /usr/ports/MOVED.  If the -v option is used, the fact that the
               port is being ignored will be mentioned.

           2. If using the
               -L option, and a new version exists, the existence of the
               +IGNOREME file will be mentioned.

           3. If you do a regular update of the port, or if the
               -a option is being used you will be asked if you want to update
               the port anyway.

Решение проблем

Ошибка: 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

configure: error: C compiler cannot create executables

Решение: Rebuild devel/binutils

cd /usr/ports/devel/binutils && make && make deinstall install clean

nix/freebsd_ustanovka_i_obnovlenie_ustanovlennogo_po.txt · Последнее изменение: 2024/02/12 12:02 — san

Если не указано иное, содержимое этой вики предоставляется на условиях следующей лицензии: Public Domain
Public Domain Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki