portupgrade
Установка:
sh# cd /usr/ports/ports-mgmt/portupgrade
sh# make config
########################################
[X] BDB4 Use Berkeley DB >=2 as backend
########################################
sh# make install clean && rehash
Хитрой выборкой и отобром по манам можно
добится просмотра списка установленого ПО
относящегося к portupgrade:
sh# pkg_info -xL portupgrade | grep man
/usr/local/man/man1/pkg_deinstall.1.gz
/usr/local/man/man1/pkg_fetch.1.gz
/usr/local/man/man1/pkg_glob.1.gz
/usr/local/man/man1/pkg_sort.1.gz
/usr/local/man/man1/pkgdb.1.gz
/usr/local/man/man1/portcvsweb.1.gz
/usr/local/man/man1/portsclean.1.gz
/usr/local/man/man1/portsdb.1.gz
/usr/local/man/man1/portupgrade.1.gz
/usr/local/man/man1/portversion.1.gz
/usr/local/man/man5/pkgtools.conf.5.gz
/usr/local/man/man1/pkg_which.1.gz
/usr/local/man/man1/portinstall.1.gz
/usr/local/man/man1/ports_glob.1.gz
/usr/local/man/man1/pkg_deinstall.1.gz
/usr/local/man/man1/pkg_fetch.1.gz
/usr/local/man/man1/pkg_glob.1.gz
/usr/local/man/man1/pkg_sort.1.gz
/usr/local/man/man1/pkgdb.1.gz
/usr/local/man/man1/portcvsweb.1.gz
/usr/local/man/man1/portsclean.1.gz
/usr/local/man/man1/portsdb.1.gz
/usr/local/man/man1/portupgrade.1.gz
/usr/local/man/man1/portversion.1.gz
/usr/local/man/man5/pkgtools.conf.5.gz
/usr/local/man/man1/pkg_which.1.gz
/usr/local/man/man1/portinstall.1.gz
/usr/local/man/man1/ports_glob.1.gz
Дальше мы можем просмотреть установленые
в системе пакеты коммандой:
sh# pkg_info
и их версии:
sh# pkg_version
= Версия установленного пакета соответствует версии, находящейся в локальном дереве портов.
< Установленная версия старее, чем та, что имеется в дереве портов.
> Установленная версия новее чем та, что есть в дереве портов.
? В индексном файле портов установленный пакет не может быть найден.
* Имеется несколько версий пакета.
Далее ключом -v можно озвучить pkg_version
И слегка подправив строку соберём спсок ПО
которое нужно обновить и занесём в файл need_upgrade.list
sh# pkg_version -v | grep "needs" > /need_upgrade.list
#само обновление ПО сделать можно так, например postfix:
#/usr/local/sbin/portupgrade postfix
Обновить всё можно так:
sh# portupgrade -a
Ключ -i будет запрашивать при каждом следующем обновлении:
(интерактивный режим)
sh# portupgrade -ai
Если Вы просто апгрейдите порты, то рано или поздно сталкиваетесь с портами,
которые отказываются апгрейдится. Для предотвращения такой ситуации,
используйте portupgrade с двумя ключами, вот так:
sh# portupgrade -rR
Ключ -R проверит зависимости для установки, а ключ -r проверит приложения,
которые зависят от порта. Это предотвратит появление в Вашей системе
устаревших зависимостей и несовместимости программ.
Опция для portupgrade, которая полезна, если у Вас нет постоянного соединения с интернетом -F.
#portupgrade -F
Она вытянет с инета всё что нужно но устанавливать не будет.
Ключ -f запустит обновление в режиме force (обновит в любом случае)
#portupgrade -f postfix
Ключ -n просто проинформирует то что хочет сделать с вашим софтом:
sh# portupgrade -anrR
Также можно задать всё разом:
sh# portupgrade -aFrR
Ну и самое интересное можно ложить всё в лог ключом -l:
sh# portupgrade postfix -l /postfix_upgrd.log
Запуск pkgdb с ключом -F интерактивно исправит Вашу
базу данных, установленых пакетов в этой системе:
(база, кстати, лежит в /var/db/pkg/pkgdb.db)
# pkgdb -F
Утилита сама спросит что хотите сделат с неисправностями.
Если же вы затрудняетесь с ответами, то можно запустить так:
sh# pkgdb -fu
Утилита выберет сама наилучший вариант.
Весьма полезна утилита pkg_which
pkg_which используется для определения,
какому приложению принадлежит файл.
Вот простой пример:
sh# pkg_which pkgdb
portupgrade-2.1.3.3_1,2
Если задать ключ -o можно узнать где в портах лежат исходники:
sh# pkg_which -o kdemultimedia-3.1.3
multimedia/kdemultimedia3
Вывод показывает, что каталог, из которого было построено
приложение - /usr/ports/multimedia/kdemultimedia3.
Ключ -v также может оказаться полезным. Если я хочу узнать какие приложения
kde у меня установлены:
$ pkg_which -v kde*
kde-config: kdelibs-3.1.3
kdebugdialog: kdebase-3.1.3
kded: kdelibs-3.1.3
kdeeject: kdebase-3.1.3
kdeinit: kdelibs-3.1.3
kdeinit_shutdown: kdelibs-3.1.3
kdeinit_wrapper: kdelibs-3.1.3
kdepasswd: kdeutils-3.1.3
kdeprintfax: kdebase-3.1.3
kdesktop: kdebase-3.1.3
kdesktop_lock: kdebase-3.1.3
kdessh: kdeutils-3.1.3
kdesu: kdebase-3.1.3
kdesu_stub: kdelibs-3.1.3
kdesud: kdebase-3.1.3
kdevdlg2ui: kdevelop-2.1.5
kdevelop: kdevelop-2.1.5
Используйте portsdb для обновления INDEX.db.
#portsdb -uUF
Используйте portversion для определения приложений, требующих обновления.
Используйте portupgrade для апгрейда этих приложений.