Проект переехал на новый домен!  [[ перейти ]]

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 для апгрейда этих приложений.