Главная | Контакты



Главная > Операционные системы > 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 - непосредственно обновляет коллекцию портов.
  • portinstall - прекрасно может заменить установку портов посредством make install clean
  • portcvsweb - дает прямую возможность просмотреть историю изменений в портах через CVSweb
  • portversion - отлично заменяет стандартную FreeBSD команду pkg_version(1),

    которая обычно дает посмотреть какие программы в системе требуют обновлений, а также взаимодействует с portupgrade(1), давая тем самым возможность оперативно производить обновления. При этом, portversion

    работает гораздо быстрее, чем pkg_version(1).
  • portsclean - очень полезная утилитка. Позволяет автоматически и быстро очищать каталоги /usr/ports/*/*/work

    (workdirs), удалять неактуальные версии пакетов с исходными кодами

    (distfiles), неактуальные библиотеки (libs) и пакеты (packages).
  • portsdb - создает двоичную базу данных портов из INDEX'ного файла.
  • pkg_deinstall - заменяет pkg_delete(1) и добавляет новые возможности.
  • pkg_fetch - загружает пакеты с FTP серверов.
  • pkg_which - проверяет, к какому пакету относится тот или иной файл в системе.
  • pkgdb - управляет и проверяет базу пакетов.

А теперь рассмотрим каждую утилиту и приемы работы с ней по отдельности.

Содержание

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>



Практические примеры использования этой утилиты:

  • portinstall xorg - установить порт с именем "xorg". Версию указывать не нужно. Программа установит последнюю версию из портов.
  • portinstall -use-packages xorg - тоже самое что и

    в первом примере, но только при установке "xorg" будет запрошен готовый пакет данного ПО, и если последней версии, которая описана в портах, в виде пакета не окажется, программа начнет собирать данный пакет из

    исходников.
  • portinstall -use-packages-only xorg - тоже самое

    что и в первом примере, но только при установке "xorg" будет запрошен готовый пакет данного ПО, и если последней версии, которая описана в портах, в виде пакета не окажется, программа выдаст сообщение об ошибке

    и пакет установлен не будет.

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 не позднее указанной даты


Практические примеры использования этой утилиты:

  • Наберите в консоли portcvsweb -F и результат увидите сами.

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


Практические примеры использования этой утилиты:

  • portversion -v - выведет на экран список всех установленных в системе пакетов, их версии, а также актуальность версий.

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 -vCDLP - удалит work каталоги в коллекции портов, удалит неактуальные дистфайлы, удалит неактуальные библиотеки, а также неактуальные версии пакаджей в /usr/ports/packages/All

Небольшое замечание касательно 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

Практические примеры использования этой утилиты:

  • portsdb -U - обновление INDEX файла коллекции портов.

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_deinstall mc-4.6.1_6 - удалит пакет mc-4.6.1_6 из системы.

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_fetch firefox - загрузит с FTP сервера пакет firefox (последней версии) и сохранит его под именем firefox-X.X.X.X (номер версии) в каталог /usr/ports/packages/All

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 Расширенный режим вывода сообщений


Практические примеры использования этой утилиты:

  • pkg_which mc - покажет версию пакета Midnight Commander, если он установлен в системе.

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 Расширенный режим вывода сообщений


Практические примеры использования этой утилиты:

  • pkgdb -F - проверить и внести исправления в базу пакетов, если это требуется.
<br>

Главная > Операционные системы > UNIX > BSD > FreeBSD