Ниже приведены некоторые полезные приемы, которые пригодятся при обновлении установленных портов.
При установке очередного порта, сборка отвалилась с ошибкой:
configure: error: Package requirements (glib-2.0 >= 2.27.2) were not met:
Requested ‘glib-2.0 >= 2.27.2’ but version of GLib is 2.26.1
Можно перепроверить, какая версия установлена:
# pkg_info | grep glib
glib-2.26.1_1
Пора подумать об обновлении установленных портов.
Обновим коллекцию портов, подробнее об этом написано тут>>>:
# portsnap fetch update
Для обновления уже установленных портов будем использовать утилиту Portupgrade:
# cd /usr/ports/ports-mgmt/portupgrade
# make install clean
Файл конфигурации Portupgrade – /usr/local/etc/pkgtools.conf.
Например, что бы в нем запретить обновление всех портов, названия которых начинаются с php, в секции HOLD_PKGS укажите:
HOLD_PKGS = [
‘php-*’,
]
После установки, проверим какие порты нуждаются в обновлении:
# pkg_version -v | grep “need”
Проверить, какие файлы и прочие зависимости обновятся можно командой:
# portupgrade -nr имя_пакета
Перед запуском обновления – очень желательно ознакомиться со файлом /usr/ports/UPDATING, в котором описаны пакеты, нуждающиеся в обновлении и описаны подробности кадого обновления.
Что бы не листать весь список – можно воспользоваться утилитой pkg_updating.
Напрмиер, просмотреть описание списка пакетов, которые установлены и могут быть обновлены:
# pkg_updating | less
Или посмотреть информацию о конкретном пакете:
# pkg_updating | grep glib
AFFECTS: users of devel/glib20 and future users of devel/gio-fam-backend
In order to update to glib 2.16 or higher, you must first update the
glib20 port on its own or you will get a failure trying to install
portmaster glib-2
portupgrade glib-2*
Обновим порт glib-2.26.1_1:
# portupgrade glib-2.26.1_1
[Updating the portsdb <format:bdb_btree> in /usr/ports …
…процесс установки новой версии…
===> Cleaning for glib-2.28.8_3
—> Cleaning out obsolete shared libraries
[Updating the pkgdb <format:bdb_btree> in /var/db/pkg … – 205 packages found (-0 +1) . done]
Для особо важных пакетов – не забывайте на всякий случай сделать копию конфигурационных файлов.
Так же, при обновлении важных пакетов используйте ключ -b – в таком случае Portupgrade создаст резервную копию пакета и сохранит её в каталоге /usr/ports/packages/All/. Для восстановления этого пакета используйте pkg_add.
Так же, прочтите файл /usr/ports/UPDATING – в нем описаны изменения, которые будут внесены в новые версии программ.
Попробуем теперь обновить пакет php52.
С помощью утилиты portversion проверим, нуждается ли он в обновлении:
# portversion |grep php
php52 <
Знак < обозначает, что установленная версия меньше, чем актуальная в портах.
Приступим к обновлению порта. Укажем такие ключи:
-R – обновлять порты, от которых зависит порт
-r – обновлять порты, которые зависят от порта
-b – создать резервную копию порта
-l – записывать события в лог-файл
и запишем процесс в файл phpupdate для анализа в случае каких-либо проблем:
# portupgrade -rRb php52 -l phpupdate
Сразу же выдало ошибку:
—> Upgrading ‘php52-5.2.17_4’ to ‘php52-5.2.17_6’ (lang/php52)
—> Building ‘/usr/ports/lang/php52’
===> Cleaning for php52-5.2.17_6
===> NOTICE:
This port is deprecated; you may wish to reconsider installing it:
PHP 5.2 series is not supported anymore, migrate now.
It is scheduled to be removed on or after 2012-03-01.
===> php52-5.2.17_6 has known vulnerabilities:
=> php — NULL byte poisoning.
Reference: http://portaudit.FreeBSD.org/3761df02-0f9c-11e0-becc-0022156e8794.html
=> Please update your ports tree and try again.
*** Error code 1
Stop in /usr/ports/lang/php52.
*** Error code 1
Stop in /usr/ports/lang/php52.
Программа Portaudit нашла ошибку в версии php, до которой мы пытаемся обновиться, и запрещает его установку. Как это исправить описано тут>>>.
Исправляем, и запускаем обновление заново.
Обновление завершено:
[Updating the pkgdb <format:bdb_btree> in /var/db/pkg … – 205 packages found (-0 +1) . done]
—> Skipping ‘databases/phpmyadmin’ (phpMyAdmin-3.4.8) because a requisite package ‘pecl-pdflib-2.1.8’ (print/pecl-pdflib) failed (specify -k to force)
—> Skipping ‘databases/php52-mysqli’ (php52-mysqli-5.2.17) because it has already done
** Listing the failed packages (-:ignored / *:skipped / !:failed)
! print/pecl-pdflib (pecl-pdflib-2.1.8) (unknown build error)
* databases/phpmyadmin (phpMyAdmin-3.4.8)
* databases/php52-mysqli (php52-mysqli-5.2.17)
1 порт не обновился – php52-mysqli потому что он уже обновлен, второй – phpMyAdmin-3.4.8 требует пакет pecl-pdflib-2.1.8, которого видимо нет.
# pkg_info | grep php
php52-5.2.17_6 PHP Scripting Language
И вывод portversion:
# portversion |grep php
php52 =
где = означает, что текущая версия соответствует последней в портах.
Можно перейти в каталог /usr/ports/packages/All/ и проверить, сделал ли Portupgrade резервные копии:
# cd /usr/ports/packages/All/
# ls -la
total 5736
drwxr-xr-x 2 root wheel 1536 Jan 20 18:11 .
drwxr-xr-x 3 root wheel 512 Jan 20 16:57 ..
-rw-r–r– 1 root wheel 3075872 Jan 20 16:56 php52-5.2.17_4.tbz
-rw-r–r– 1 root wheel 13502 Jan 20 17:13 php52-bz2-5.2.17_4.tbz
-rw-r–r– 1 root wheel 7845 Jan 20 17:01 php52-ctype-5.2.17.tbz
-rw-r–r– 1 root wheel 63027 Jan 20 18:01 php52-dom-5.2.17.tbz
-rw-r–r– 1 root wheel 22358 Jan 20 18:10 php52-filter-5.2.17.tbz
-rw-r–r– 1 root wheel 138964 Jan 20 17:37 php52-gd-5.2.17_4.tbz
-rw-r–r– 1 root wheel 153104 Jan 20 17:02 php52-hash-5.2.17.tbz
-rw-r–r– 1 root wheel 19755 Jan 20 17:14 php52-iconv-5.2.17.tbz
-rw-r–r– 1 root wheel 15420 Jan 20 17:35 php52-json-5.2.17.tbz
-rw-r–r– 1 root wheel 20465 Jan 20 17:18 php52-ldap-5.2.17_4.tbz
-rw-r–r– 1 root wheel 1223100 Jan 20 17:09 php52-mbstring-5.2.17_4.tbz
-rw-r–r– 1 root wheel 16137 Jan 20 17:21 php52-mcrypt-5.2.17_4.tbz
-rw-r–r– 1 root wheel 22551 Jan 20 17:11 php52-mysql-5.2.17_4.tbz
-rw-r–r– 1 root wheel 42643 Jan 20 18:02 php52-mysqli-5.2.17_4.tbz
-rw-r–r– 1 root wheel 39781 Jan 20 17:05 php52-openssl-5.2.17_4.tbz
-rw-r–r– 1 root wheel 18884 Jan 20 17:57 php52-pcre-5.2.17.tbz
-rw-r–r– 1 root wheel 50759 Jan 20 17:19 php52-pdo-5.2.17.tbz
-rw-r–r– 1 root wheel 18903 Jan 20 17:28 php52-pdo_mysql-5.2.17_4.tbz
-rw-r–r– 1 root wheel 269756 Jan 20 17:23 php52-pdo_sqlite-5.2.17.tbz
-rw-r–r– 1 root wheel 12991 Jan 20 17:24 php52-posix-5.2.17.tbz
-rw-r–r– 1 root wheel 28980 Jan 20 17:03 php52-session-5.2.17.tbz
-rw-r–r– 1 root wheel 21584 Jan 20 16:58 php52-simplexml-5.2.17.tbz
-rw-r–r– 1 root wheel 14752 Jan 20 17:12 php52-snmp-5.2.17_4.tbz
-rw-r–r– 1 root wheel 66115 Jan 20 17:59 php52-spl-5.2.17.tbz
-rw-r–r– 1 root wheel 208295 Jan 20 18:09 php52-sqlite-5.2.17.tbz
-rw-r–r– 1 root wheel 10466 Jan 20 17:17 php52-tokenizer-5.2.17.tbz
-rw-r–r– 1 root wheel 23394 Jan 20 17:25 php52-xml-5.2.17.tbz
-rw-r–r– 1 root wheel 15931 Jan 20 18:03 php52-xmlreader-5.2.17.tbz
-rw-r–r– 1 root wheel 49383 Jan 20 17:27 php52-xmlrpc-5.2.17_5.tbz
-rw-r–r– 1 root wheel 14265 Jan 20 17:16 php52-xmlwriter-5.2.17.tbz
-rw-r–r– 1 root wheel 37393 Jan 20 17:06 php52-zip-5.2.17_4.tbz
-rw-r–r– 1 root wheel 17083 Jan 20 16:59 php52-zlib-5.2.17_4.tbz
Ссылки по теме:
http://citkit.ru
http://www.freebsd.org
http://www.hilik.org.ua
http://habrahabr.ru
http://muff.kiev.ua