Главная > Операционные системы > UNIX > BSD > FreeBSD Обновление ПО во FreeBSD
Как известно, программное обеспечение во FreeBSD можно установить двумя путями. Первый: скачав необходимый пакет с одного из FTP серверов (зеркал) FreeBSD и установить с помощью команды pkg_add. Другой способ: самостоятельно скомпилировав нужную программу, скачав ее исходные коды с того же FTP сервера (зеркала). Каждый способ имеет свои достоинства и недостатки. В первом случае мы выигрываем во времени и экономим процессорное время своего компьютера, во втором случае, компилируя программное обеспечение (пакет) из портов мы получаем самую последнюю версию программы. Однако, любое уже установленное программное обеспечение когда-нибудь понадобится обновлять (зачем обновлять ПО, думаю, пояснять не следует). И для этого в коллекции портов есть замечательный набор утилит под общим названием portupgrade. Ищем: # cd /usr/ports/ # make search name="portupgrade" Port: portupgrade-2.3.1,2 Path: /usr/ports/ports-mgmt/portupgrade Info: FreeBSD ports/packages administration and management tool suite Maint: sem@FreeBSD.org B-deps: ruby-1.8.6_2,1 R-deps: db41-4.1.25_4 perl-5.8.8 ruby-1.8.6_2,1 ruby18-bdb-0.6.2 WWW: http://wiki.freebsd.org/portupgrade Port: portupgrade-devel-2.3.1 Path: /usr/ports/ports-mgmt/portupgrade-devel Info: FreeBSD ports/packages administration and management tool suite (devel version) Maint: sem@FreeBSD.org B-deps: ruby-1.8.6_2,1 R-deps: db41-4.1.25_4 perl-5.8.8 ruby-1.8.6_2,1 ruby18-bdb-0.6.2 WWW: http://wiki.freebsd.org/portupgrade Port: sysutils/portupgrade Moved: ports-mgmt/portupgrade Date: 2007-02-05 Reason: Moved to a new category Port: sysutils/portupgrade-devel Moved: ports-mgmt/portupgrade-devel Date: 2007-02-05 Reason: Moved to a new category Видим, что в портах есть то, что нам надо, к тому же в двух исполнениях. Первое: версия для "повседневного использования", второе: версия, которая находится в стадии разработки. Я пробовал и ту и другую. Разницы не заметил. Но ставить будем portupgrade-2.3.1,2 # cd /usr/ports/ports-mgmt/portupgrade # make install clean Вылезет синее диалоговое окно с вопросом о том, какой тип базы данных использовать. Можно ничего не менять и нажимать OK. В процессе установки "portupgrade-2.3.1,2" также установит в системе пакеты "db41-4.1.25_4", "ruby-1.8.6_2,1", "ruby18-bdb-0.6.2", и, если у Вас еще не установлен Perl, то и perl-5.8.8 После установки пакета мы получаем целый арсенал для аудита и обновления программного обеспечения на Вашем роутере. Из пакета portupgrade я использую следущие программы:
А теперь рассмотрим каждую утилиту и приемы работы с ней по отдельности.
portupgradeПолный путь к исполняемому файлу:/usr/local/sbin/portupgrade Использование: portupgrade 2.4.3 (2008/02/10)<br><br>usage: portupgrade [-habcCDDefFiklnOpPPqrRsuvwWy] [-A command] [-B command]<br> [-L format] [-S command] [-x pkgname_glob]<br> [[-o origin] [-m make_args] [-M make_env] pkgname_glob ...]<br><br> -h, --help Вывод справки<br> -a, --all Применить ко всем установленным пакетам<br> -A, --afterinstall=CMD Выполнить команду CMD после каждой установки<br> -b, --backup-packages Сохранять резервные копии прежних версий<br> --batch Запустить процесс обновления в пакетном режиме<br> (with BATCH=yes)<br> -B, --beforebuild=CMD Запустить команду CMD перед каждой сборкой<br> Если команда завершится неудачей, пакет пропускается<br> -c, --config Выполнять "make config-conditional" перед любым заданием<br> -C, --force-config Выполнять "make config" перед любым заданием<br> -D, --distclean Удалить ошибочные dist файлы и попробовать получить<br> их заново, если контрольная сумма неверна. Указав<br> этот параметр дважды заставляем выполнять "make distclean"<br> перед каждой попыткой получения файла или сборкой.<br> -e, --emit-summaries Показывать суммарную информацию после работы с каждым пакетом.<br> -f, --force Безусловное обновление порта. Это может пригодиться<br> в случае если нужно обновить пакет до низшей версии<br> (даунгрейд), либо выполнить реинсталляцию, либо в том<br> случае если порт в статусе "held".<br> -F, --fetch-only Только ли выполнить загрузку исходника (либо,<br> если указан -P загрузка пакаджа) и ничего не собирать<br> и не устанавливать.<br> --ignore-moved Игнорировать перемещенные (MOVED) файлы.<br> -i, --interactive Интерактивный режим. Программа будет запрашивать<br> согласия пользователя перед выполнением любого действия.<br> -k, --keep-going Продолжать обновлять порты, даже если обновление<br> какого-либо порта завершилось неудачей.<br> -l, --results-file=FILE Можно указать имя файла FILE, в который команда<br> выведет отчет о проделанной работе. По-умолчанию<br> программа ничего никуда не выводит и не сохраняет.<br> -L, --log-file=FORMAT В стиле printf(3) можно указать формат разделителей<br> в лог-файле для каждого порта.<br> Допустимы конструкции вида '%s::%s'<br> -m, --make-args=ARGS С этим ключом можно указать аргументы, применимые<br> после каждого выполнения команды make(1)<br> -M, --make-env=ARGS С этим ключом можно указать аргументы, применимые<br> перед каждым выполнением команды make(1)<br> -n, --noexecute Ничего на самом деле не обновлять, а просто показать<br> результат работы команды.<br> -N, --new Когда указанный пакет не установлен, установить его,<br> после обновления всех зависимых от него пакетов<br> (по-умолчанию отключено)<br> -o, --origin=ORIGIN Указание, какой порт обновлять, следуя pkg with<br> -O, --omit-check Пренебречь проверкой зависимостей<br> -p, --package После завершения установки ПО из портов, собрать пакет.<br> -P, --use-packages При обновлении использовать пакаджи (если это возможно)<br> вместо коллекции портов. Если указать дважды - это будет<br> равносильно флагу --use-packages-only<br> --use-packages-only Или -PP; При обновлении использовать только пакеты.<br> -q, --quiet Ничего не выводить при использовании опции -N option<br> и если такой пакет уже установлен<br> --noconfig Не читать настройки из стандартного конфигурационного<br> файла /usr/local/etc/pkgtools.conf<br> -r, --recursive Рекурсивно обновлять порт, а также те порты,<br> от которых он зависит<br> -R, --upward-recursive Рекурсивно обновлять порт, а также те порты, которые<br> зависят от него. Рекурсивно загружать исходные коды<br> при указании опции -F<br> -s, --sudo При необходимости запускать команду с использованием sudo(8)<br> -S, --sudo-command=CMD Указание альтернативной команды вместо sudo(8)<br> Например: 'su root -c "%s"' (по-умолчанию sudo)<br> -u, --uninstall-shlibs Не складировать устаревшие расшаренные библиотеки<br> -v, --verbose Расширенный режим вывода сообщений<br> -w, --noclean Не выполнять "make clean" перед каждой сборкой<br> -W, --nocleanup Не выполнять "make clean" после каждой сборки<br> --without-env-upgrade<br> Не устанавливать значения переменных UPGRADE_*<br> -x, --exclude=GLOB При обновлении пакетов, исключить из обновления пакеты,<br> указанные в примере GLOB<br> -y, --yes Указание программе самостоятельно отвечать на все свои вопросы "ДА"<br> Практические примеры использования этой утилиты:
portcvswebПолный путь к исполняемому файлу: /usr/local/sbin/portcvsweb Использование: portcvsweb 2.4.3 (2008/01/08) usage: portcvsweb [-hqv] {pkgname_glob|portorigin_glob|file|directory} -h, --help Вывод справки -q, --noconfig Не читать настройки из стандартного конфигурационного файла /usr/local/etc/pkgtools.conf -v, --verbose Расширенный режим вывода сообщений -F, --freshports Для получения информации просматривать ресурсы FreshPorts.org вместо CVSweb -D, --datespec [DATE] Просматривать ресурсы FreshPorts.org не позднее указанной даты
Практические примеры использования этой утилиты:
portversionПолный путь к исполняемому файлу: /usr/local/sbin/portversion Использование: portversion 2.4.3 (2008/01/08) usage: portversion [-hOqv] [-l limit_chars] [-L inv_limit_chars] [pkgname_glob ...] portversion [-v] -t ver0 ver1 [ver2 ...] -h, --help Вывод справки -c, --command-output Включить вывод команд -C, --command-args=ARGS Указать аргументы для portupgrade в выводе команды (по-умолчанию ничего) --ignore-moved Игнорировать перемещенные (MOVED) файлы -l, --limit=CHARS Включить только пакеты с указанным статусом -L, --inv-limit=CHARS Исключить пакеты с указанным статусом -O, --omit-check Пренебречь проверкой зависимостей -q, --noconfig Не читать настройки из стандартного конфигурационного файла /usr/local/etc/pkgtools.conf -r, --recursive Проводить проверку пакета, а так же тех пакетов, которые от него зависят -R, --upward-recursive Проводить проверку пакета, а так же тех пакетов, от которых он зависит -t, --test=VERSION Сравнить версию пакета(ов) с указанной и вывести результат -v, --verbose Расширенный режим вывода сообщений -x, --exclude=GLOB В выводе команды, исключить пакеты, указанные в примере GLOB
Практические примеры использования этой утилиты:
portscleanПолный путь к исполняемому файлу: /usr/local/sbin/portsclean Использование: portsclean 2.4.3 (2008/02/10) usage: portsclean [-hCDDiLnPPQQq] -h, --help Вывод справки -C, --workclean Удаление /usr/ports/*/*/work каталогов -D, --distclean Удаление дистрибутивов с исходными кодами (в /usr/ports/distfiles), версии которых не соответствуют текущим версиям из дерева портов. Если этот параметр указать дважды, то будут удалены все дистфайлы, из которых не установлено ни одно приложение в системе -i, --interactive Интерактивный режим. Программа будет запрашивать согласия пользователя перед выполнением любого действия. -L, --libclean Удаление устаревших общеиспользуемых библиотек -n, --noexecute Ничего не делать, а только показать ход выполнения команды -P, --pkgclean Удалить неактуальные версии архивов с пакаджами (в /usr/ports/packages/All). Если указать этот параметр дважды, программа удалит все архивы с пакаджами. -Q, --quiet Работать "молча" и ничего не выводить на stdout. Если указать параметр дважды, то в случае появления также не будут выводиться сообщения на stderr. -q, --noconfig Не читать настройки из стандартного конфигурационного файла /usr/local/etc/pkgtools.conf
Практические примеры использования этой утилиты:
Небольшое замечание касательно portsclean -L Дело в том, что в выводе команды можно увидеть "ругань" на повторяющиеся библиотеки в каталогах /usr/local/lib/ и /usr/X11R6/lib/. Я не знаю, почему portsclean не в курсе того, что /usr/X11R6 есть символическая ссылка на /usr/local потому просто игнорирую эти сообщения. portsdbПолный путь к исполняемому файлу: /usr/local/sbin/portsdb Использование: portsdb 2.4.3 (2008/01/08) usage: portsdb [-hfFMqrRuU] [-x port_glob] [port_glob ...] -h, --help Вывод справки -f, --force Безусловно обновлять базу, несмотря на временные метки -F, --fetchindex Запросить с FTP сервера INDEX файл дерева пакетов -M, --master-recursive Вывести список всех портов, из которых собираются пакеты -q, --noconfig Не читать настройки из стандартного конфигурационного файла /usr/local/etc/pkgtools.conf -r, --recursive Список всех портов, которые зависят от этого пакета -R, --upward-recursive Список всех портов, от которых зависит этот пакет -u, --update Обновить базу INDEX.db -U, --updateindex Обновить файл INDEX -x, --exclude=GLOB В выводе команды, исключить пакеты, указанные в примере GLOB Практические примеры использования этой утилиты:
pkg_deinstallПолный путь к исполняемому файлу: /usr/local/sbin/pkg_deinstall Использование: pkg_deinstall 2.4.3 (2008/01/08) usage: pkg_deinstall [-hacdDfinOPqrRv] [-e args] [-p prefix] [-x pkgname_glob] [pkgname_glob ...] -h, --help Вывод справки -a, --all Удалить ВСЕ установленные пакеты -c, --collate Проверить вероятность того, что какой-либо установленный файл в каждом пакете был переписан другим пакетом, и если так, то не деинсталировать его. -d, --rmdir Удалять пустые каталоги [*] -D, --noscripts Не выполнять деинсталляционные скрипты [*] -f, --force Форсированное удаление пакетов [*] -i, --interactive Интерактивный режим удаления пакетов. Программа будет спрашивать подтверждения для каждого действия [*] -n, --noexecute Ничего не удалять - просто показать, какие шаги будут предприняты для выполнения команды [*] -O, --omit-check Пренебречь проверкой зависимостей -p, --prefix=PREFIX Установить префикс PREFIX [*] -P, --preserve Складировать разделяемые библиотеки. (Сохраняются как *.so.n) -q, --noconfig Не читать настройки из стандартного конфигурационного файла /usr/local/etc/pkgtools.conf -r, --recursive Удалить также все те пакеты, которые зависят от этого пакета -R, --upward-recursive Удалить также все те пакеты, от которых зависит удаляемый пакет -v, --verbose Расширенный режим вывода сообщений [*] -x, --exclude=GLOB При выполнении команды, исключить пакеты, указанные в примере GLOB [*] Выполнение программы с этими опциями передается pkg_delete(1).
Практические примеры использования этой утилиты:
pkg_fetchПолный путь к исполняемому файлу: /usr/local/sbin/pkg_fetch Использование: pkg_fetch 2.4.3 (2008/01/08) usage: pkg_fetch [-hfqRv] {pkgname|URI} ... -h, --help Вывод справки -f, --force Загружать пакет, даже если он есть в базе как установленный. Удалить пакет, если он помечен как поврежденный -q, --noconfig Не читать настройки из стандартного конфигурационного файла /usr/local/etc/pkgtools.conf -R, --upward-recursive Загрузить также те пакеты, от которых зависит загружаемый пакет -v, --verbose Расширенный режим вывода сообщений
Практические примеры использования этой утилиты:
pkg_whichПолный путь к исполняемому файлу: /usr/local/sbin/pkg_which Использование: pkg_which 2.4.3 (2008/01/26) usage: pkg_which [-hafFfiLOQQquv] [-c pkgname] [-o pkgname] [-s /old_pkgname/new_pkgname/] [file ...] -h, --help Вывод справки -c, --collate=PKGNAME Показать файлы, установленные указанным пакетом, которые были перезаписаны файлами из других пакетов -f, --force Форсированное выполненние команды: с указанием флага -u - обновлять базу, несмотря на временные метки; с указанием флага -F - исправлять также "удержанные" пакеты ("held") -F, --fix Исправлять базу пакетов в интерактивном режиме -a, --auto Включить автоматический режим если указан флаг -F --autofix Сокращенный аналог --auto -i, --interactive Интерактивный режим. Программа будет спрашивать подтверждения для каждого действия -L, --fix-lost Проверить и восстановить утерянные зависимости -o, --origin=PKGNAME[=ORIGIN] Посмотреть или изменить параметр $ORIGIN данного пакета -O, --omit-check Пренебречь проверкой зависимостей. Полезно, если нужно ускорить выполнение команды -Q, --quiet Работать "молча" и ничего не выводить на stdout. Если указать параметр дважды, то в случае появления также не будут выводиться сообщения на stderr. -q, --noconfig Не читать настройки из стандартного конфигурационного файла /usr/local/etc/pkgtools.conf -s, --substitute=/OLD/NEW/ Пометить все зависимости, помеченные как OLD на NEW -u, --update Обновить базу пакетов -v, --verbose Расширенный режим вывода сообщений
Практические примеры использования этой утилиты:
pkgdbПолный путь к исполняемому файлу: /usr/local/sbin/pkgdb Использование: pkgdb 2.4.3 (2008/01/26) usage: pkgdb [-hafFfiLOQQquv] [-c pkgname] [-o pkgname] [-s /old_pkgname/new_pkgname/] [file ...] -h, --help Вывод справки -c, --collate=PKGNAME Показать файлы, установленные указанным пакетом, которые были перезаписаны файлами из других пакетов -f, --force Форсированное выполненние команды: с указанием флага -u - обновлять базу, несмотря на временные метки; с указанием флага -F - исправлять также "удержанные" пакеты ("held") -F, --fix Исправлять базу пакетов в интерактивном режиме -a, --auto Включить автоматический режим, если указан флаг -F --autofix Сокращение от --auto --fix (-aF) -i, --interactive Интерактивный режим. Программа будет спрашивать подтверждения для каждого действия -L, --fix-lost Проверить и восстановить утерянные зависимости -o, --origin=PKGNAME[=ORIGIN] Посмотреть или изменить параметр $ORIGIN данного пакета. -O, --omit-check Пренебречь проверкой зависимостей. Полезно, если нужно ускорить выполнение команды. -Q, --quiet Работать "молча" и ничего не выводить на stdout. Если указать параметр дважды, то в случае появления также не будут выводиться сообщения на stderr. -q, --noconfig Не читать настройки из стандартного конфигурационного файла /usr/local/etc/pkgtools.conf -s, --substitute=/OLD/NEW/ Пометить все зависимости, помеченные как OLD на NEW -u, --update Обновить базу пакетов -v, --verbose Расширенный режим вывода сообщений
Практические примеры использования этой утилиты:
<br> Главная > Операционные системы > UNIX > BSD > FreeBSD |