Шпаргалки по работе с портами.
В двух словах о назначении портов во FreeBSD. Порты предназначены для установки и обновления ПО. В коллекции портов собрано более 23000 единиц разномастного ПО. Разумеется, периодически версии программного обеспечения обновляются, и, вместе с ними обновляются и порты. На локальной машине порты должны находиться в достаточно актуальном состоянии, а иначе установка ПО может пойти неудачно. Про обновление и говорить нечего :-)
Содержание |
В принципе, порты можно поставить при установке FreeBSD. Можно поставить позже, используя команду sysinstall. Однако, если на машине есть подключение к Интернету, то для установки можно дать команду:
# portsnap fetch extract
В зависимости от "скорости инета" и мощи машины, следует ориентироваться на 15...40 минут, а с очень медленным инетом - и на дольше. Объем скачиваемого составляет немногим менее 70 мегабайт.
Для обновления дерева директорий портов /usr/ports команда будет чуточку иной:
# portsnap fetch update
Для поддержания коллекции портов в актуальном состоянии можно повесить на крон в файле /etc/crontab такое задание:
# Ports update 10 6 * * * root portsnap -I cron update && pkg_version -vIL=
На почту будут приходить письма о необходимости обновления ПО. Следует отметить, что при выполнении этой команды в рабочие директории /usr/ports никакие изменения не вносятся, все ограничивается только базами (те что в /var/db).
Удобно для этой цели использовать команду portinstall. Однако, ее требуется установить вместе с portupgrade:
# make install clean -C /usr/ports/ports-mgmt/portupgrade
Если через какое-то время директория /usr/ports/distfiles будет завалена тоннами исходников, оставшихся после установок или апдейтов, убрать лишнее/устаревшее можно командой
# portmaster -ty --clean-distfiles
При проверке необходимости обновления версий ПО получаем ошибку:
# pkg_version -vIL= .... pkg_version: corrupted record (pkgdep line without argument), ignoring
Это говорит о поврежденных записях (или связях) в списке зависимостей. Запускаем проверку. На вопросы, вроде такого, отвечаем утвердительно:
# portmaster --check-depends .... ===>>> Checking bugzilla-4.0.6 ===>>> @pkgdep is listed as a dependency ===>>> but there is no installed version ===>>> Delete this dependency data? y/n [n] y ===>>> Installing the new +CONTENTS file