Установка портов с диска
В этих разделах описаны основные приемы использования коллекции портов для установки и удаления программ из вашей системы.
Перед тем, как вы сможете устанавливать порты, вы сначала должны установить коллекцию портов—она представляет собой в основном набор make-файлов, патчей, файлов описаний, и размещается обычно в /usr/ports .
При установке вашей системы FreeBSD утилита Sysinstall запрашивает, требуется ли вам установка коллекции портов. Если вы ответили отрицательно, то можете следовать этим указаниям для установки коллекции портов.
Метод с использованием Sysinstall
В этом методе повторно используется sysinstall для ручной установки коллекции портов.
Работая как пользователь root, запустите /stand/sysinstall так, как это показано ниже:
Опуститесь вниз и выберите Configure , нажмите Enter
Опуститесь вниз и выберите Distributions , затем нажмите Enter
Опуститесь вниз к ports , нажмите пробельную клавишу
Поднимитесь вверх к Exit , нажмите Enter
Выберите желаемый носитель для установки, например, CDROM, FTP и так далее.
Пройдите по меню до выхода (Exit) из sysinstall .
Альтернативный метод получения и постоянной актуализации вашей коллекции портов заключается в использовании CVSup . Посмотрите на файл CVSup из портов, /usr/share/examples/cvsup/ports-supfile . Прочтите раздел Использование CVSup () для получения более полной информации об использовании CVSup и указанного файла.
Метод с использованием CVSup
Это быстрый способ получения коллекции портов при помощи CVSup . Если вы хотите поддерживать ваше дерево портов в актуальном состоянии, или узнать больше о CVSup , то прочтите вышеотмеченные разделы.
Работая как пользователь root , скопируйте /usr/share/examples/cvsup/ports-supfile в новое место, например, в каталог /root или в ваш домашний каталог.
Измените CHANGE_THIS.FreeBSD.org на близкий к вам CVSup . Посмотрите раздел Зеркала CVSup () для получения полного списка зеркалирующих сайтов.
# cvsup -g -L 2 /root/ports-supfile
В дальнейшем при повторных запусках этой команды все последние изменения будут переноситься в вашу коллекцию портов.
Когда речь заходит о коллекции портов, то первым делом вы должны понять, что именно подразумевается под словом «скелет» . По сути скелетом порта является минимальный набор файлов, который указывает вашей системе FreeBSD, как корректно откомпилировать и установить программу. Скелет каждого порта включает:
Makefile . Makefile содержит различные директивы, которые определяют, как приложение должно быть откомпилировано и куда в вашей системе оно должно быть установлено
Файл distinfo . Этот файл содержит информацию о файлах, которые должны существовать на вашей системе для успешной сборки порта, и контрольные суммы, для того чтобы быть уверенным, что файлы не были повреждены в процессе скачки.
Каталог files . Этот каталог содержит патчи, использование которых необходимо для компиляции и установки программы в вашей системе FreeBSD. Патчи — это, как правило, маленькие файлы, в которых содержатся изменения, которые нужно внести в какой-то конкретный файл. Они имеют обычный текстовый формат и в основном содержат указания типа «Удалить строку 10» или «Заменить строку 26 на такую . » . Патчи также называются «diff-файлами» или просто «диффами» , потому что они генерируются программой diff .
Этот каталог также может содержать другие файлы используемые в процессе сборки порта.
pkg-comment . Это однострочное описание программы.
pkg-descr . Это более подробное, зачастую многострочное описание программы.
pkg-plist . Это список всех файлов, которые будут установлены портом. В нем также содержатся указания системе портов на удаление определенных файлов во время удаления порта.
В некоторых портах присутствуют и другие файлы, такие, как pkg-message . Система портов использует эти файлы для обработки особых ситуаций. Если вы хотите узнать более подробно об этих файлах и о портах вообще, то обратитесь к Руководству по созданию портов для FreeBSD .
Теперь, когда вы имеете достаточное количество информации о том, для чего предназначена коллекция портов, вы в состоянии установить ваш первый порт. Это может быть сделано двумя способами, каждый из которых будет описан ниже.
Другой метод заключается в использовании команды whereis . Чтобы ей воспользоваться, просто наберите в приглашении » whereis file » , где file — программа, которую вы хотите установить. И если она имеется в вашей системе, вам об этом будет сообщено, примерно так:
# whereis lsof lsof: /usr/ports/sysutils/lsof
Это говорит о том, что lsof (системная утилита) находится в каталоге /usr/ports/sysutils/lsof .
Ещё одним способом поиска конкретного порта является использование встроенной возможности поиска в коллекции портов. Чтобы ею воспользоваться, вы должны находиться в каталоге /usr/ports . Очутившись в этом каталоге, выполните команду make search name= program-name , где program-name — это название программы, которую вы хотите найти. Например, если вы ищете lsof :
# cd /usr/ports # make search name=lsof Port: lsof-4.56.4 Path: /usr/ports/sysutils/lsof Info: Lists information about open files (similar to fstat(1)) Maint: obrien@FreeBSD.org Index: sysutils B-deps: R-deps:
Вам следует обратить особое внимание на строчку «Path:» , так как в ней указывается, где найти программу. Остальная сообщаемая информация для непосредственно установки порта не нужна, поэтому здесь она не описывается.
Для выполнения более глубокого поиска вы можете также использовать make search key= string , где string представляет собой некоторый текст, который ищется. При этом будет выполнен поиск в именах портов, комментариях, описаниях и зависимостях, и его можно использовать для поиска портов, связанных с некоторой темой, если вы не знаете названия программы, которую вы ищете.
В обоих этих случаях строка поиска нечувствительна к регистру. Поиск «LSOF» приводит к тому же самому результату, что и поиск «lsof» .
Note: Для установки портов вы должны иметь привилегии пользователя root .
Теперь, когда вы нашли порт, который хотите установить, можно выполнять реальную установку. В порт включены инструкции относительно того, как выполнять построение из исходного кода, но сам код в порт не включён. Вы можете получить исходный код с компакт-диска или из Интернет. Исходный код распространяется в том виде, какой предпочёл выбрать разработчик. Зачастую это tar-файл, обработанный утилитой gzip, но он может также быть упакованным каким-то другим инструментом или быть не сжатым. Исходный код программы, в каком бы то виде он ни был, называется «дистрибутивным» (distfile). Вы можете получить дистрибутивный файл с CDROM или через Интернет.
Официальные образы CDROM Проекта FreeBSD больше не содержат файлы дистрибутивов. На них есть достаточно места, которое лучше использовать для предкомпилированных пакетов. Продукты на CDROM, такие, как FreeBSD PowerPak, включают дистрибутивные файлы, и вы можете заказать их от таких поставщиков, как FreeBSD Mall . В этом разделе предполагается, что у вас есть такой набор CDROM с FreeBSD.
Вставьте ваш CDROM с FreeBSD в привод. Смонтируйте его в каталог /cdrom . (Если вы используете другую точку монтирования, то установка работать не будет.) Чтобы начать, перейдите в каталог с портом, который вы хотите установить:
Оказавшись в каталоге lsof , вы увидите скелет порта. Следующим шагом является шаг компиляции (также называемый шагом построения) порта. Это выполняется простой выдачей команды make в ответ на приглашение командного процессора. Как только вы это сделаете, вы увидите нечто, выглядящее примерно так:
# make >> lsof_4.57D.freebsd.tar.gz doesn’t seem to exist in /usr/ports/distfiles/. >> Attempting to fetch from file:/cdrom/ports/distfiles/. ===> Extracting for lsof-4.57 . [выдача процесса распаковки опущена] . >> Checksum OK for lsof_4.57D.freebsd.tar.gz. ===> Patching for lsof-4.57 ===> Applying FreeBSD patches for lsof-4.57 ===> Configuring for lsof-4.57 . [вывод конфигуратора опущен] . ===> Building for lsof-4.57 . [компиляция опущена] . #
Заметьте, что, как только компиляция закончится, вы снова вернетесь к приглашению вашего командного процессора. Следующим шагом является установка порта. Чтобы это сделать, вам нужно просто добавить одно слово к команде make , а именно слово install :
# make install ===> Installing for lsof-4.57 . [процедуры установки опущены] . ===> Generating temporary packing list ===> Compressing manual pages for lsof-4.57 ===> Registering installation for lsof-4.57 ===> SECURITY NOTE: This port has installed the following binaries which execute with increased privileges. #
Как только вы вернулись к приглашению вашей оболочки, вы должны суметь запустить приложение, которое только что установили. Так как lsof является программой, которая запускается с повышенными правами, то выдаётся предупреждение о безопасности. Во время построения и установки портов вы должны принимать во внимание все выдаваемые предупреждения.
Note: Вы можете сэкономить лишний шаг, просто выдав команду make install вместо make и последующей make install в двух отдельных шагах.
Note: Пожалуйста, будьте готовы к тому, что лицензии некоторых портов не позволяют помещать их на компакт-диск. Это может делаться из-за обязательности заполнения регистрационной формы перед сгрузкой, запрета на дальнейшее распространение и так далее. Если вы хотите установить порт, которого нет на компакт-диске, вам нужно иметь подключение к Интернет, чтобы это сделать (обратитесь к следующему разделу ).
Как и в предыдущем разделе, здесь предполагается, что у вас имеется работающее подключение к Интернет. Если это не ваш случай, вам нужно выполнить установку с компакт-диска .
Установка порта из Интернет производится точно так же, как если бы делали ее с компакт-диска. Единственным отличием между ними является тот факт, что дистрибутивный файл сгружается из Интернет, а не берётся с компакт-диска.
Выполняются те же самые шаги:
# make install >> lsof_4.57D.freebsd.tar.gz doesn’t seem to exist in /usr/ports/distfiles/. >> Attempting to fetch from ftp://ftp.FreeBSD.org/pub/FreeBSD/ports/distfiles/. Receiving lsof_4.57D.freebsd.tar.gz (439860 bytes): 100% 439860 bytes transferred in 18.0 seconds (23.90 kBps) ===> Extracting for lsof-4.57 . [выдача процесса распаковки опущена] . >> Checksum OK for lsof_4.57D.freebsd.tar.gz. ===> Patching for lsof-4.57 ===> Applying FreeBSD patches for lsof-4.57 ===> Configuring for lsof-4.57 . [вывод конфигуратора опущен] . ===> Building for lsof-4.57 . [компиляция опущена] . ===> Installing for lsof-4.57 . [процедуры установки опущены] . ===> Generating temporary packing list ===> Compressing manual pages for lsof-4.57 ===> Registering installation for lsof-4.57 ===> SECURITY NOTE: This port has installed the following binaries which execute with increased privileges. #
Как вы видите, единственным отличием является строка, в которой указывается, откуда система сгружает порт.
Это всё об установке портов на вашу систему. В следующем разделе вы узнаете, как удалить порт из вашей системы.
Теперь, когда вы знаете, как устанавливать порты, вы наверное, уже задумывались о том, как же их удалять, просто даже на тот случай, если вы установили один из них, а позже решили, что установили не тот порт. Мы удалим порт из нашего предыдущего примера (а это была программа lsof , если вы обратили внимание). Как и при установке портов, первым делом вы должны перейти в каталог с портом, /usr/ports/sysutils/lsof . После смены каталога вы готовы к удалению xchat . Это делается командой make deinstall :
# cd /usr/ports/sysutils/lsof # make deinstall ===> Deinstalling for lsof-4.57
Это было достаточно легко. Вы удалили lsof из вашей системы. Если вам захочется переустановить эту программу, то это можно будет сделать, выдав команду make reinstall из каталога /usr/ports/sysutils/lsof .
Последовательность команд make deinstall и make reinstall не сработает, если вы запустите команду make clean . Если вы хотите убрать порт из системы после зачистки каталога, используйте команду pkg_delete так, как это описано в разделе о пакетах Руководства .
Источник
Записки программиста
В сети есть много информации про использование портов и пакеджей FreeBSD. К сожалению, часто эта информация оказывается устаревшей. Иногда бывает, что одна статья противоречит другой. Что касается хэндбука, то, на момент написания этих строк, в нем не было ни слова про утилиту pkg_upgrade, а информация об установке приложений из портов и их обновлении находилась на расстоянии двадцати глав. В общем, мне такая ситуация не нравится, так что я решил осветить вопрос в своем блоге.
1. Из чего выбираем?
Первое, что нужно сделать относительно установки софта во FreeBSD — это забыть про «традиционный unix-метод», заключающийся в скачивании архива с исходниками, его распаковке и выполнении команд ./configure, make и make install. Может, пару лет назад в каком-нибудь Slackware еще и было принято так делать, но даже в этом дистрибутиве уже появилась система портов.
Как я уже отмечал ранее, FreeBSD предоставляет два способа установки и обновления программ — из бинарных пакетов (packages) и исходных кодов (портов, ports). У каждого подхода есть свои преимущества. С некоторой осторожностью можно использовать их совместно. Для начала рассмотрим два крайних случая — использование только пакеджей или только портов.
2. Использование пакеджей
Важно! Эта часть статьи успела потерять актуальность, во всяком случае для последних версий FreeBSD. Подробности в заметке Управление пакетами во FreeBSD при помощи утилиты pkg. Часть про порты, описанная ниже в пункте 3 по состоянию на 2016-03-15 все еще актуальна.
Бинарные пакеты представляют собой файлы определенного формата и дерево каталогов определенной структуры, упакованных в один архив. Все пакеты, за исключением нескольких особых случаев, можно скачать с ftp.freebsd.org. Поскольку внутри пакеджей хранятся бинарные исполняемые файлы, то для каждой архитектуры процессора и версии операционной системы нужны свои пакеджи. Какие пакеты мы хотим использовать, определяется переменной окружения $PACKAGESITE. Вот пример для FreeBSD 8 и архитектуры процессора i386:
Как и в случае с версиями операционной системы, пакеджи бывают версий Release, Stable и Current. Stable — оптимальный вариант в плане частоты обновления и стабильности, так что с Release и Current советую вообще не связываться.
Если вы читали мою заметку про быструю установку FreeBSD, то можете помнить, как для установки пакеджей использовалась утилита pkg_add. По умолчанию она ищет пакеджи в каталоге, указанном в переменной окружения $PKG_PATH. Изменить это поведение можно с помощью ключа -r:
Программа скачает и установит Xorg, а также все программы и библиотеки, от которых он зависит. Собственно, главная фишка системы пакеджей и портов заключается в автоматическом контроле зависимостей. Не нужно искать по всей сети исходники программ/библиотек, собирать их, а затем выяснить, что тебе нужно было собрать другие версии. Одна команда — и система сделает все за тебя. Современные дистрибутивы Linux и *BSD используют только такой подход. Вот почему нужно забыть «./configure; make; make install», как страшный сон.
Посмотреть список всех установленных программ можно командой pkg_info. Как правило, список получается довольно объемный, так что используйте grep и less.
Для удаления пакеджей предназначена команда pkg_delete. Использовать ее без ключей неудобно, потому что в этом случае нужно указать полное название пакета. Например, «pkg_delete xorg-fonts-7.5» будет работать, а «pkg_delete xorg-fonts» выведет ошибку, дескать пакет не установлен. Чтобы изменить такое поведение, используйте ключи -ix:
Эта команда будет пытаться удалить все пакеты, в названии которых содержится «xorg» и перед каждым удалением потребует нашего подтверждения. Не правда ли, это удобнее, чем вручную вводить название десяти пакетов, предварительно выясняя их версии с помощью pkg_info? Также pkg_delete следит, чтобы удаление пакета не привело к нарушению зависимостей.
Теперь допустим, что нам хочется почистить систему от ненужных пакетов. Ненужный пакет — это тот, который мы не используем и от которого не зависят другие пакеты. Последнее можно проверить следующим образом:
Проблема в том, что вывод у команды довольно объёмный и искать в нем пакеты, которые можно безопасно удалить, довольно неприятно. Упростить себе работу можно, используя Perl и регулярные выражения:
Чтобы постоянно не вводить весь этот ужас, советую прописать алиас («pkg_leafs» ?) в /root/.cshrc сохранить команду в .sh-скрипт (почему не csh?) и затем использовать этот скрипт вместе с grep.
Наконец, самое интересное — обновление пакетов. Лучше всего для этой цели подходит pkg_upgrade, входящий в пакет bsdadminscripts. Не удивляйтесь, что система не имеет средств для обновления программ «из коробки». Какой-нибудь веб-сервер обычно настраивается один раз, после чего работает 5-10 лет, пока железо не развалится. Если за это время в Apache не найдут критическую уязвимость (а шансы этого события не так уж велики), то никому в голову не придет обновляться.
Перед обновлением нелишним будет узнать, что собственно мы собираемся обновлять:
Того же эффекта можно добиться командой:
По умолчанию pkg_version использует индекс, расположенный в дереве портов, а совсем не факт, что это дерево у нас имеется. Поэтому путь к файлу указывается явно. Сам файл FTPINDEX обновляется либо pkg_upgrade’ом, как это показано выше, либо утилитой uma.
Обновление бинарных пакетов обычно происходит быстро, так что можно сразу обновить весь устаревший софт:
Если же вам нужно обновить только одну или несколько программ, не забывайте, что вы можете нарушить зависимости. Избежать такой неприятности можно с помощью ключей -R (обновить то, что зависит от пакета) и -r (обновить то, от чего зависит пакет):
И последнее — это поиск пакетов. Допустим, вам нужен какой-то пакет, но вы не знаете, как он называется. Есть два пути. Во-первых, можно воспользоваться файлом FTPINDEX:
Во-вторых, можно воспользоваться веб-поиском на freebsd.org.
3. Использование портов
Система портов позволяет устанавливать программы, компилируя их из исходных кодов. Порты обновляются намного чаще пакетов, так что с их помощью вы получите более свежий софт. Поскольку в нашем распоряжении имеются исходники, мы можем настроить приложение, включив нужные нам опции и отключив ненужные. Также можно произвести оптимизацию программы под используемый нами процессор и передать дополнительные ключи компилятору.
Платить за все это приходится в первую очередь временем установки программ. Например, даже на очень мощных компьютерах компиляция OpenOffice занимает около суток и требует сколько-то там гигабайт оперативной памяти и места на диске. Сколько точно — не помню. Для сравнения, установка OpenOffice с помощью пакетов занимает несколько минут. Однако это — крайний случай. Мелкие утилиты обычно компилируются за минуты, на софт покрупнее может уходить час или два.
Указать аргументы компилятора и тип процессора можно в файле /etc/make.conf:
В принципе, можно этот файл и не трогать. Но раз мы решили заюзать порты, почему бы не воспользоваться всеми их плюсами? Если вы не уверены на счет того, какой типа процессора указать, загляните в /usr/share/examples/etc/make.conf. Там перечислены все поддерживаемые типы процессоров. У меня содержимое оказалось следующим:
Если вы не нашли свой тип процессора, то либо вообще не указывайте его (не так уж сильно это повлияет на скорость приложений), либо проконсультируйтесь у знающих людей на каком-нибудь форуме. Если вписать что попало, велика вероятность получить неработающую программу.
Теперь — об аргументах компилятора (CFLAGS). Чем выше уровень оптимизации, тем медленнее собираются программы, но и тем быстрее они будут работать. Например, флаг -O0 вообще отключает оптимизацию (используется gcc по умолчанию), а -O3 включает все доступные способы оптимизации. Еще есть флаг -Os, предназначенный для оптимизации размера программы. Используйте его, если у вас на диске ну очень мало места. Вообще, не стоит слишком беспокоиться на счет того, что программа будет тормозить, если скомпилировать ее с ключом -O2 вместо -O3. К тому же, есть шанс (небольшой, правда) что какие-то программы не соберутся с ключом -O3.
Еще хочу отметить, что ключи, которые вы зададите в CFLAGS, влияют только на порты. Это, в частности, означает, что не нужно беспокоиться, что эксперименты с make.conf приведут к тому, что вы не сможете обновить ядро системы из исходных кодов. Так, информация к сведению.
Дерево портов хранится в каталоге /usr/ports/. Если у вас этот каталог пустой, порты можно скачать с помощью программы portsnap:
Примечание: В старых мануалах рекомендуется использовать утилиту cvsup, но это устаревший метод. Забудьте про cvsup так же, как и про «./configure; make; make install»!
Если дерево портов уже есть, не забывайте время от времени его обновлять:
Чтобы установить программу из портов, сначала нужно найти соответствующей ей каталог. Имена каталогов образуются следующим образом: /usr/ports/группа/программа/. Например, в каталоге /usr/ports/ftp/ можно найти все программы, имеющие отношение к протоколу FTP, а упомянутый ранее bsdadminscripts находятся в /usr/ports/sysutils/bsdadminscripts/.
Есть несколько способов найти нужную программу, кроме упомянутого поиска на freebsd.org. Например:
Перейдя в нужный каталог, достаточно сказать
Система сама скачает и распакует исходники программы, а также всех программ и библиотек, от которых она зависит, затем соберет и установит их, после чего удалит весь мусор. А теперь представьте, что когда-то все это нужно было делать руками!
Некоторые порты имеют дополнительные настройки, которые вас попросят уточнить в процессе установки. Если вы не понимаете, что от вас хотят, соглашайтесь на настройки по умолчанию. Часто во время установки нужного вам порта также устанавливаются его зависимости. Некоторые зависимости интересуются, с какими настройками вы хотели бы их собрать. В результате приходится следить за всем процессом и время от времени отвечать на вопросы. Это не совсем удобно.
Большинство портов понимают команду:
Выполнив ее, вы настроите порт и его зависимости, после чего можно будет все это дело собрать, не отвечая ни на какие вопросы. Также есть команда, позволяющая вам принять все настройки по умолчанию:
Самое интересное в портах то, что после компиляции все приложения собираются в пакеты, после чего происходит установка этих самых пакетов. Другими словами, всем хозяйством, установленным из портов, можно управлять теми же средствами, что мы использовались при работы с пакетами — pkg_info, pkg_delete и так далее!
Примечание: Собрать бинарный пакет из портов можно командой «make package». Для создания пакетов из уже установленных приложений используйте команду pkg_create. Например, команда «pkg_create -R -b xorg-fonts-7.5» создаст бинарные пакеты xorg-fonts и всех его зависимостей, а командной «pkg_create -vb ‘*’» можно сделать резервную копию всех установленных приложений. Подробности — в man-pages.
Следующим по интересности, как и следовало ожидать, идет обновление. Есть две утилиты, предназначенные для обновления программ из портов — portupgrade и portmaster. Мне portmaster кажется во всех отношениях лучше. Во-первых, для работы ему не нужно ничего, кроме самого дерева портов. В отличие от него portupgrade работает с собственной базой, которая частенько портится, в связи с чем ее приходится перестраивать. Во-вторых, portmaster, в отличие от portupgrade, не тянет за собой Ruby. Поскольку программ, использующих Ruby, довольно мало, не хочется тратить время на его сборку ради одного только portupgrade. Мы ведь помним, что каждый лишний порт — это лишнее время на его компиляцию при установке и обновлении?
В общем, я буду считать, что вы используете portmaster (/usr/ports/ports-mgmt/portmaster/). Однако если это не так, не переживайте — portupgrade имеет точно такой же интерфейс, что и portmaster. То есть, при одинаковых аргументах эти программы (как правило) делают одно и то же.
Итак, мы обновили порты с помощью portsnap и узнали, какие программы состарились, с помощью уже знакомого нам pkg_version. Кстати, эта утилита не является частью bsdadminscripts, а идет вместе с системой. Можно запускать portmaster? Нет, не можно!
Первое, что нужно сделать перед обновлением приложений из портов — это внимательно прочитать файл /usr/ports/UPDATING и выполнить все касающиеся нас инструкции. Не сомневайтесь, вы обязательно забудете это сделать, так что лучше сразу подпишитесь на ленту со всеми изменениями в этом файле. Если вы редко заглядываете в свою RSS-читалку, воспользуйтесь сервисом rss2email.ru.
Обновить программу портмастером очень просто (кстати, с его же помощью можно производить установку):
Сложности начинаются, когда вспоминаешь про зависимости. Самое правильное решение заключается в обновлении всех портов, зависящих от данного (приложения, от которых зависит порт, обновляются всегда):
Еще можно обновить сразу весть устаревший софт:
Проблема в том, что компиляция исходников обычно занимает много времени. Есть два способа ускорить обновление. Первый — не удалять старые версии библиотек, тогда можно не обновлять зависимые приложения:
Второй способ заключается в совместном использовании портов и пакеджей, но об этом чуть ниже. Прежде, чем перейти к этой теме, хочу обратить ваше внимание на ключ -L, поддерживаемый portmaster’ом. Он позволяет получить список приложений, которые можно безопасно удалить, не нарушив зависимости. Лучше использовать его, чем связку из алиасов и регулярных выражений, упомянутую выше.
4. Совместное использование портов и пакетов
Пакеджи и порты можно использовать совместно. Если большую часть времени вы используете пакеджи, то можете время от времени устанавливать что-то из портов, потому что в портах софт всегда свежее, чем в бинарных пакетах. Главное — обновить дерево портов перед установкой. Впрочем, в этом случае с большой вероятностью могут произойти Bad Things™, в связи с чем новичкам лучше его избегать.
Если большую часть времени вы пользуетесь портами, то можете сэкономить на времени установки и обновлении приложений. Для этого нужно использовать portmaster с ключом -P:
Если portmaster сможет найти на $PACKAGESITE пакет той же версии, что и версия порта, приложение будет установлено из пакета, а не из портов. Еще portmaster имеет ключ -PP, означающий «устанавливать приложения только из пакетов, а если достаточно свежего пакета нет, прервать работу». Правда, пользы от этого ключа мало.
Еще один вариант — создать собственный веб- или ftp-сервер с пакетами, где они будут обновляться чаще, чем на официальном сервере. То есть на сервере пакеты будут собираться из портов, после чего раздаваться клиентам. Правда, это имеет смысл только в том случае, если у вас большой компьютерный парк, на котором нужно поддерживать свежие версии ПО.
Возможно, это будет не сервер, а домашний компьютер, на котором вы будете компилировать пакеты для дальнейшей установки на свой ноутбук и рабочий компьютер. Но это при условии, что на всех трех машинах используется FreeBSD одной ветки и используются процессоры одной архитектуры (i386 или amd64).
Пожалуй, это все, что касается совместного использования портов и пакетов. Основная идея — не устанавливать более старые версии библиотек и приложений, чем есть на данный момент.
5. И снова эта проблема выбора…
В идеальном мире мы бы за считанные секунды устанавливали свежайший софт, оптимизированный под данный конкретный компьютер. Но, поскольку наш мир не идеальный, приходится чем-то жертвовать.
Преимущества пакетов — простота использования и быстрая установка. За это приходится платить малой гибкостью и редкими обновлениями. Порты позволяют установить самый свежий софт, настроенный для конкретной ситуации и оптимизированный под конкретную машину. Увы, установка из исходников занимает время, а также требует дополнительного места на диске и средств разработки, необходимых для компиляции приложений.
Используя связку порты+пакеты, можно немного компенсировать недостатки каждого из методов. Но комбинированный подход обладает как преимуществами двух методов, так и суммарными недостатками. Оптимальным вариантом было бы завести сервер, предназначенный для сборки пакетов под наши нужды. Но в этом случае придется выделить лишний сервер или раскошелиться на VDS. Впрочем, если у вас есть машина с десятком виртуалок, считайте, что никаких проблем у вас нет.
Совет стандартный. Используйте то, что больше подходит для вашей задачи. Для себя я решил, что на ноутбуке лучше использовать пакеджи, а на сервере — порты. Вообще-то, учитывая мощность современных компьютеров, можно смело обходиться и одними пакетами.
Дополнение: Тут товарищ visokos посоветовал утилиту pkg_cleanup. Как несложно догадаться по названию, предназначена она для удаления ненужных пакетов:
Самое приятное в ней, что после удаления пакетов предлагается сделать повторный поиск. После него будет выведен список только тех пакетов, которые стали ненужными в результате предыдущей итерации. Очень удобно!
Источник
Установка портов с диска
В этих разделах описаны основные приемы использования коллекции портов для установки и удаления программ из вашей системы.
Перед тем, как вы сможете устанавливать порты, вы сначала должны установить коллекцию портов—она представляет собой в основном набор файлов Makefile , патчей, файлов описаний, и она размещается в каталоге /usr/ports .
При установке вашей системы FreeBSD утилита Sysinstall запрашивает, требуется ли вам установка коллекции портов. Если вы ответили отрицательно, то можете следовать следующим указаниям для установки коллекции портов:
Метод с использованием Sysinstall
В этом методе повторно используется sysinstall для ручной установки коллекции портов.
Работая как пользователь root, запустите /stand/sysinstall так, как это показано ниже:
Опуститесь вниз и выберите Configure , нажмите Enter
Опуститесь вниз и выберите Distributions , затем нажмите Enter
Опуститесь вниз к пункту ports , нажмите клавишу Пробел
Поднимитесь вверх к Exit , нажмите Enter
Выберите желаемый носитель для установки, например, CDROM, FTP и так далее.
Перейдите на пункт меню Exit и нажмите Enter .
Нажмите X для выхода из sysinstall .
Альтернативный метод получения и постоянной актуализации вашей коллекции портов заключается в использовании CVSup . Посмотрите на файл CVSup из портов, /usr/share/examples/cvsup/ports-supfile . Прочтите раздел Использование CVSup () для получения более полной информации об использовании CVSup и этого файла.
Метод с использованием CVSup
Это быстрый способ для получения коллекции портов при помощи CVSup . Если вы хотите поддерживать ваше дерево портов в актуальном состоянии, или узнать больше о CVSup , то прочтите вышеотмеченные разделы.
Работая как пользователь root , скопируйте /usr/share/examples/cvsup/ports-supfile в новое место, например, в каталог /root или в ваш домашний каталог.
Измените CHANGE_THIS.FreeBSD.org на близкий к вам сервер CVSup . Посмотрите раздел Зеркала CVSup () для получения полного списка зеркалирующих сайтов.
# cvsup -g -L 2 /root/ports-supfile
При повторных запусках этой команды все последние изменения (кроме реального перестроения портов для вашей системы) будут сгружаться и переноситься в вашу коллекцию портов.
Когда речь заходит о коллекции портов, то первым делом вы должны понять, что именно подразумевается под словом «скелет». По сути скелетом порта является минимальный набор файлов, который указывает вашей системе FreeBSD, как корректно откомпилировать и установить программу. Скелет каждого порта включает:
Makefile . Makefile содержит различные директивы, которые определяют, как приложение должно быть откомпилировано и куда в вашей системе оно должно быть установлено.
Файл distinfo . Этот файл содержит информацию о файлах, которые должны существовать на вашей системе для успешной сборки порта, и их контрольные суммы, для проверки при помощи md5 (1) того, что файлы в процессе сгрузки не были повреждены.
Каталог files . Этот каталог содержит патчи, использование которых необходимо для компиляции и установки программы в вашей системе FreeBSD. Патчи — это, как правило, маленькие файлы, в которых содержатся изменения, которые нужно внести в какой-то конкретный файл. Они имеют обычный текстовый формат и в основном содержат указания типа «Удалить строку 10» или «Заменить строку 26 на такую . ». Патчи также называются «diff-файлами» или просто «диффами», потому что они генерируются программой diff (1) .
Этот каталог также может содержать другие файлы, используемые для построения порта.
pkg-descr . Это более подробное, зачастую многострочное описание программы.
pkg-plist . Это список всех файлов, которые будут установлены портом. В нем также содержатся указания системе портов на удаление определенных файлов во время удаления порта.
В некоторых портах присутствуют и другие файлы, такие, как pkg-message . Система портов использует эти файлы для обработки особых ситуаций. Если вы хотите узнать более подробно об этих файлах и о портах вообще, то обратитесь к Руководству по созданию портов для FreeBSD .
Теперь, когда вы имеете достаточное количество информации о том, для чего предназначена коллекция портов, вы в состоянии установить ваш первый порт. Это может быть сделано двумя способами, каждый из которых будет описан ниже.
# whereis lsof lsof: /usr/ports/sysutils/lsof
Это говорит о том, что lsof (системная утилита) находится в каталоге /usr/ports/sysutils/lsof .
Ещё одним способом поиска некоторого порта является использование встроенной возможности поиска в коллекции портов. Чтобы ею воспользоваться, вы должны находиться в каталоге /usr/ports . Очутившись в этом каталоге, выполните команду make search name= program-name , где program-name — это название программы, которую вы хотите найти. Например, если вы ищете lsof :
# cd /usr/ports # make search name=lsof Port: lsof-4.56.4 Path: /usr/ports/sysutils/lsof Info: Lists information about open files (similar to fstat(1)) Maint: obrien@FreeBSD.org Index: sysutils B-deps: R-deps:
Вам следует обратить особое внимание на строчку «Path:», так как в ней указывается, где найти порт. Остальная сообщаемая информация для установки порта не нужна, поэтому здесь она описываться не будет.
Для выполнения более глубокого поиска вы можете также использовать make search key= string , где string представляет собой некоторый текст, который ищется. При этом будет выполнен поиск в именах портов, комментариях, описаниях и зависимостях, и его можно использовать для поиска портов, связанных с некоторой темой, если вы не знаете названия программы, которую вы ищете.
В обоих этих случаях строка поиска нечувствительна к регистру. Поиск «LSOF» приводит к тому же самому результату, что и поиск «lsof».
Note: Для установки портов вы должны войти в систему как пользователь root .
Теперь, когда вы нашли порт, который хотите установить, можно выполнять реальную установку. В порт включаются инструкции относительно того, как выполнять построение из исходного кода, но не сам код. Вы можете получить исходный код с CD-ROM или из Интернет. Исходный код распространяется в том виде, какой предпочёл выбрать разработчик. Зачастую это tar-файл, обработанный утилитой gzip, но он может также быть упакованным каким-то другим инструментом или быть не сжатым. Исходный код программы, в каком бы то виде он ни был, называется «дистрибутивным» (distfile). Вы можете получить дистрибутивный файл с CD-ROM или через Интернет.
Официальные образы CD-ROM Проекта FreeBSD больше не содержат дистрибутивные файлы. На них есть достаточно места, которое лучше использовать для предкомпилированных пакаджей. Продукты на CD-ROM, такие, как FreeBSD PowerPak, включают дистрибутивные файлы, и вы можете заказать их от таких поставщиков, как FreeBSD Mall . В этом разделе предполагается, что у вас есть такой набор CD-ROM с FreeBSD.
Вставьте ваш CD-ROM с FreeBSD в привод. Смонтируйте его в каталог /cdrom . (Если вы используете другую точку монтирования, то установка работать не будет.) Чтобы начать, перейдите в каталог с портом, который вы хотите установить:
Оказавшись в каталоге lsof , вы увидите структуру порта. Следующим шагом является компиляция, или построение («build») порта. Это выполняется простой выдачей команды make в ответ на приглашение командного процессора. Как только вы это сделаете, то увидите выдачу, выглядящую примерно так:
# make >> lsof_4.57D.freebsd.tar.gz doesn’t seem to exist in /usr/ports/distfiles/. >> Attempting to fetch from file:/cdrom/ports/distfiles/. ===> Extracting for lsof-4.57 . [выдача при распаковке опущена] . >> Checksum OK for lsof_4.57D.freebsd.tar.gz. ===> Patching for lsof-4.57 ===> Applying FreeBSD patches for lsof-4.57 ===> Configuring for lsof-4.57 . [выдача при конфигурации опущена] . ===> Building for lsof-4.57 . [выдача при компиляции опущена] . #
Заметьте, что, как только компиляция закончится, вы снова вернётесь к приглашению вашего командного процессора. Следующим шагом является установка порта. Чтобы это сделать, вам нужно просто добавить одно слово к команде make , а именно слово install :
# make install ===> Installing for lsof-4.57 . [выдача при установке опущена] . ===> Generating temporary packing list ===> Compressing manual pages for lsof-4.57 ===> Registering installation for lsof-4.57 ===> SECURITY NOTE: This port has installed the following binaries which execute with increased privileges. #
Как только вы вернулись к приглашению вашей оболочки, вы должны суметь запустить приложение, которое только что установили. Так как lsof является программой, которая запускается с повышенными правами, то выдаётся предупреждение о безопасности. Во время построения и установки портов вы должны принимать во внимание все выдаваемые предупреждения.
Note: Вы можете сэкономить лишний шаг, просто выдав команду make install вместо make и последующей make install в двух отдельных шагах.
Note: Некоторые командные процессоры для ускорения поиска выполнимых файлов и команд кэшируют имена таких программ, которые доступны для вызова из каталогов, перечисленных в переменной окружения PATH . Если вы используете один из таких командных процессоров, то перед использованием только что добавленных команд вам может понадобиться вызвать директиву rehash после установки порта. Это верно как для оболочек, являющихся частями базового системного набора (например, tcsh ), так и командных процессоров, доступных в виде портов (например, shells/zsh ).
Note: Пожалуйста, будьте готовы к тому, что лицензии некоторых портов не позволяют помещать их на CD-ROM. Это может делаться из-за обязательности заполнения регистрационной формы перед сгрузкой или запрета на дальнейшее распространение, либо по какой-то другой причине. Если вы хотите установить порт, которого нет на CD-ROM, вам нужно иметь подключение к Интернет, чтобы это сделать (обратитесь к следующему разделу ).
Как и в предыдущем разделе, здесь предполагается, что у вас имеется работающее подключение к Интернет. Если это не ваш случай, вам нужно выполнять установку с CD-ROM либо поместить копию дистрибутивного файла в каталог /usr/ports/distfiles вручную.
Установка порта из Интернет производится точно так же, как если бы делали её с CD-ROM. Единственным отличием между ними является тот факт, что дистрибутивный файл сгружается из Интернет, а не считывается с CD-ROM.
Выполняются те же самые шаги:
# make install >> lsof_4.57D.freebsd.tar.gz doesn’t seem to exist in /usr/ports/distfiles/. >> Attempting to fetch from ftp://ftp.FreeBSD.org/pub/FreeBSD/ports/distfiles/. Receiving lsof_4.57D.freebsd.tar.gz (439860 bytes): 100% 439860 bytes transferred in 18.0 seconds (23.90 kBps) ===> Extracting for lsof-4.57 . [выдача при распаковке опущена] . >> Checksum OK for lsof_4.57D.freebsd.tar.gz. ===> Patching for lsof-4.57 ===> Applying FreeBSD patches for lsof-4.57 ===> Configuring for lsof-4.57 . [выдача процесса конфигурации опущена] . ===> Building for lsof-4.57 . [выдача компиляции опущена] . ===> Installing for lsof-4.57 . [выдача процедуры установки опущена] . ===> Generating temporary packing list ===> Compressing manual pages for lsof-4.57 ===> Registering installation for lsof-4.57 ===> SECURITY NOTE: This port has installed the following binaries which execute with increased privileges. #
Как вы видите, единственным отличием является строка, в которой указывается, откуда система сгружает дистрибутивный файл порта.
Пользователям, которые не могут быть постоянно подключенными к сети, поможет команда make fetch . Просто запустите эту команду в каталоге самого верхнего уровня ( /usr/ports ), и требуемые файлы будут сгружены. Эта команда будут работать также и с вложенными категориями, например: /usr/ports/net . Заметьте, что если порт имеет зависимости от библиотек или других портов, то он не будет также сгружать дистрибутивные файлы этих портов. Замените fetch на fetch-recursive , если вы хотите выполнить сгрузку также и всех этих зависимостей порта.
Note: Вы можете построить все порты в категории за раз, запустив команду make в каталоге верхнего уровня, как и в вышеописанном методе с make fetch . Однако это опасно, так как некоторые порты не могут сосуществовать. В других случаях некоторые порты могут устанавливать два различных файла с одним и тем же именем.
В некоторых редких случая пользователям необходимо получить tar-архивы с сайтов, отличающихся от MASTER_SITES (это место, откуда файлы обычно сгружаются). Вы можете переопределять значение MASTER_SITES посредством следующей команды:
# cd /usr/ports/ directory # make MASTER_SITE_OVERRIDE= \ ftp://ftp.FreeBSD.org/pub/FreeBSD/ports/distfiles/ fetch
В этом примере мы изменили значение переменной MASTER_SITES на ftp.FreeBSD.org/pub/FreeBSD/ports/distfiles/ .
Note: Некоторые порты позволяют (или даже требуют) задавать параметры, которые включают или выключают построение отдельных частей приложения, которые не нужны, некоторые параметры безопасности, а также прочие настройки. К некоторым из них, часто упоминаемым, относятся пакеты www/mozilla , security/gpgme и mail/sylpheed-claws . При наличии подобных параметров будет выдано сообщение.
Иногда бывает полезным (или необходимым) использование других каталогов с портами и дистрибутивными файлами. Для переопределения каталогов, используемых по умолчанию, используются переменные PORTSDIR и PREFIX . К примеру:
# make PORTSDIR=/usr/home/example/ports install
будет компилировать порт в каталоге /usr/home/example/ports , а установит всё в /usr/local .
# make PREFIX=/usr/home/example/local install
будет компилировать его в каталоге /usr/ports , а установит в /usr/home/example/local .
# make PORTSDIR=../ports PREFIX=../local install
использует обе возможности (полная команда слишком длинна для написания на этой странице, однако вы должны уловить общую идею).
Альтернативным способом является задание значений этих переменных в параметрах вашего окружения. Обратитесь к страницам справки по вашему командному процессору для получения инструкций о том, как это сделать.
Некоторые порты, использующие imake (часть X Window System) нормально не работают с PREFIX , и будут пытаться установиться в дерево /usr/X11R6 . Аналогично некоторые Perl-порты игнорируют значения PREFIX и устанавливаются в дерево Perl. Заставить такие порты воспринимать переменную PREFIX является сложной или невыполнимой задачей.
Теперь, когда вы знаете, как устанавливать порты, вы наверное, уже задумывались о том, как же их удалять, просто даже на тот случай, если вы установили один из них, а позже решили, что установили не тот порт. Мы удалим порт из нашего предыдущего примера (а это была программа lsof , если вы обратили внимание). Как и при установке портов, первым делом вы должны перейти в каталог с портом, /usr/ports/sysutils/lsof . После смены каталога вы готовы к удалению xchat . Это делается командой make deinstall :
# cd /usr/ports/sysutils/lsof # make deinstall ===> Deinstalling for lsof-4.57
Это было достаточно легко. Вы удалили lsof из вашей системы. Если вам захочется переустановить эту программу, то это можно будет сделать, выдав команду make reinstall из каталога /usr/ports/sysutils/lsof .
Последовательность команд make deinstall и make reinstall не сработает, если вы запустите команду make clean . Если вы хотите убрать порт из системы после зачистки каталога, используйте команду pkg_delete (1) , как это описано в разделе о пакаджах Руководства .
Использование коллекции портов может определённо стоить вам дискового пространства. По этой причине вы не должны забывать о зачистке рабочих каталогов при помощи команды make clean . При этом будет удаляться каталог work , возникающий после построения и установки порта. Вы можете также удалить tar-файлы из каталога distfiles , а позже удалить установленные порты, если они не используются.
Некоторые пользователи ограничивают набор категорий портов, помещая в файл refuse соответствующую запись. В этом случае при запуске программы CVSup она не будет сгружать файлы из указанных категорий.
Поддержание ваших портов в актуальном состоянии может оказаться нудным занятием. К примеру, чтобы обновить порт, вам нужно перейти в каталог с портами, построить порт, удалить старый порт, установить новый, а затем вычистить его после построения. Представьте, сколько действий (пять) нужно сделать! Скучно, да? Это было большой проблемой для системных администраторов, но теперь есть утилиты, выполняющие эти действия за нас. Например, утилита sysutils/portupgrade сделает всё за вас сама! Просто установите её, как обычный порт, при помощи команды make install clean .
Теперь создайте базу данных командой pkgdb -F . Она выяснит перечень установленных портов и создаст файл базы данных в каталоге /var/db/pkg . Теперь при вызове команды portupgrade -a , она будет использовать эту базу данных и файл портов INDEX . Наконец, portupgrade сгрузит, построит, сделает резервную копию, установит и очистит порты, которые были обновлены. portupgrade имеет массу параметров для использования в разных ситуациях, из которых наибольшего внимания заслуживает описываемая далее.
Если вы хотите обновить только определённое приложение, но не полностью базу данных, используйте portupgrade pkgname , с флагом -r , если portupgrade должен отработать все пакаджи, которые зависят от указанного, и использовать флаг -R для отработки всех пакаджей, которые требуют указанные пакаджи. Для использования при установке пакаджей, а не портов, укажите флаг -P , а для простой сгрузки дистрибутивных файлов без построения или установки чего бы то ни было задайте флаг -F . Дополнительную информацию можно получить на странице справки по утилите portupgrade (1) .
Note: Важно регулярно обновлять базу данных пакаджей при помощи команды pkgdb -F для восстановления целостности, особенно когда portupgrade запрашивает вас это сделать. Не прерывайте работы portupgrade при обновлении базы данных пакаджей, это может привести к рассогласованию данных.
Существуют и другие утилиты, которые делают подобные вещи, посмотрите в каталоге ports/sysutils и выберите то, что вам подходит.
Источник
Порты FreeBSD
Порты FreeBSD — это набор программ и утилит с разнообразным функционалом. Например HTTP-сервер Apache, PHP и другие программы можно и нужно устанавливать именно из портов. Если используется DirectAdmin или другие панели управления сервером — ПО, которое они устанавливают лучше обновлять встроенными утилитами. Все остальное — при помощи коллекции портов. Например, перед установкой DirectAdmin на вновь инсталлированную FreeBSD требуется сначала установить некоторые порты.
Обновление дерева портов
Первым делом, перед установкой или обновлением портов необходимо обязательно обновить дерево портов FreeBSD. Это можно выполнить при помощи утилиты portsnap, которая является рекомендуемой и изначально предустановленна в FreeBSD с шестой версии.
Обновление или первоначальная загрузка портов FreeBSD выполняется так:
Флаги extract и update выполняют практически одно и тоже — загружают коллекцию портов на сервер, за исключением того, что extract полностью перезаписывает все порты, а update лишь обновляет дерево. По этому разумно использовать extract только для того, чтобы первоначально получить все программы портов, а в дальнейшем использовать исключительно update — так будет быстрее и меньше нагружается сервер.
Для полноценной работы portsnap не нуждается в конфигурировании, но для желающих все настроить под себя и в лучшем виде существует файл /etc/portsnap.conf (/usr/local/etc/portsnap.conf — portsnap был установлен из коллекции портов).
- SERVERNAME — указываются сервера, с которых будут загружаться актуальные снимки дерева портов. Всего есть 7 серверов: portsnap.FreeBSD.org, portsnap1.FreeBSD.org, . portsnap6.FreeBSD.org. При желании, можно сделать локальный сервер обновлений, подробнее можно узнать запустив man portsnap (caching HTTP proxy).
- WORKDIR — по умолчанию: /var/db/portsnap. В эту директорию будет загружаться сжатая копия портов.
- PORTSDIR — по умолчанию: /usr/ports. Директория хранения основной копии портов.
- KEYPRINT — ключ, который не стоит изменять.
- INDEX — список индексных файлов. Этот параметр лучше оставить как есть.
- REFUSE — список, через пробел, тех портов, которые не нужно обновлять ( первое название порта в строке должно идти сразу за REFUSE без пробела ), например:
Как настроить автоматическое обновление портов по расписанию и связанные с этим скрытые, на первый взгляд, проблемы, хорошо описано в официальном руководстве по FreeBSD: » Официальное руководство FreeBSD по Portsnap «.
Поиск локальных дистрибутивов портов
Порты можно искать как по ключу в описании, так и по символам названия (поиск работает только из директории /usr/ports/):
Чтобы поиск производился по актуальным данным, нужно выполнить make index , но это действие производится очень долго — в процессе индексации может показаться, что система подвисла, но стоит все же подождать пол-часа или более (чем «древнее» сервер — тем больше время индексации).
Поиск по имени (make search name) находит все порты, в имени которых найдены искомые символы. Поиск по ключу выдает результат с портами, в описании которых есть искомый ключ («B-deps» — это зависимости для построения, «R-deps» — зависимости для запуска приложения). More после команды поиска позволяет выводить результат поиска постранично, а не все сразу.
pkg_info — просмотр информации об уже установленных портах
Утилита pkg_info позволяет получить данные об уже установленных портах и пакетах. Самые полезные ключи программы:
- a — информация обо всех установленных портах;
- с — краткая информация о порте в одну строку;
- x — информация о портах с введенным не полным именем;
- D — вывод информационных сообщений, сгенерированных установочным скриптом порта;
- L — путь к файлам, которые были установлены портом;
- R — просмотр портов, зависящих от выбранного;
- s — занимаемое портом место.
Примеры использования pkg_info:
Просмотр кратких сведений обо всех установленных портах с постраничной разбивкой:
# pkg_info -ac | more
Просмотр кратких сведений о порте, содержащем в названии autoconf:
# pkg_info -xc autoconf
Просмотр путей к файлам, установленных портом autoconf-2.69:
# pkg_info -L autoconf-2.69
Просмотр нескольких путей к файлам, установленных портом:
# pkg_info -L autoconf-2.69 | head
Просмотр занимаемого места каждым из установленных портов с записью информации в файл sizes
# pkg_info -as > sizes
pkg_version — сравнение версий установленных портов с доступными
Утилита pkg_version сравнивает версии установленных в системе портов с существующими. Перед сравнением с локальным деревом портов необходимо обновить порты и пересобрать индекс (make index), чтобы отображаемые сведения были актуальными.
После запуска pkg_version без параметров, будет выведен список всех установленных портов со значком, напротив каждого из портов:
- = — установленный порт актуален;
- < — установленный порт устарел, существует более новая версия;
- > — установленный порт имеет более новую версию, чем присутствующий в локальной коллекции портов, возможно необходимо переиндексировать базу портов или установлена новая, тестовая версия порта;
- ? — информация об установленном порте отсутствует в БД;
- * — порт имеет несколько актуальных версий;
- ! — установленный порт существует в индексе, но по некоторым причинам невозможно сравнить номер версии установленного порта с соответствующей записью в индексе.
Пример использования pkg_version:
Просмотр тех поротов, которые можно обновить:
# pkg_version -v | grep need
Просмотр более подробных сведений о версиях портов с разбивкой на страницы:
# pkg_version -v | more
Определение установленных портов, для которых существуют более новые версии
(отобразить все порты со статусом "<", флаг -l — маленькая английская литра L)
и вывод подробных сведений (-v) (два приведенных варианта равнозначны):
# pkg_version -l "<" -v
# pkg_version -vl "<"
Определение установленных портов, которые не соответствуют статусу "=":
# pkg_version -L "="
Сравнение портов с удаленной базой:
# pkg_version -v ftp://ftp.freebsd.org/pub/FreeBSD/branches/-current/ports/INDEX \ | more
portupgrade — обновление портов
Важная информация перед использованием portupgrade:
- Перед обновлением нужно позаботиться о резервных копиях конфигурационных файлов обновляемых портов .
- При обновлении порт отключается и не будет работать — необходимо планировать время обновления во избежание временных отключений важных сервисов сервера. Не всегда после обновления порт может работать корректно — этот момент тоже стоит учитывать при планировании обновлений.
- Чем дольше не обновлялись порты в FreeBSD, тем медленнее будет идти процесс обновления и тем более вероятным становится появление ошибок. Если порты не обновлялись более года, возможно будет быстрее переустановить систему заново, чем устранять возможные ошибки.
Запустить обновление только одного порта, например MC (Midnight Commander):
Флаг r — проверяет и пытается обновить все программы, которые зависят от обновляемого порта, R — проверяет и пытается установить/обновить всё ПО, от которого зависит порт.
Чтобы обновить все устаревшие порты — можно запустить portupgrade с дополнительным флагом «a»:
Ели добавить ключ -i, администратору, возможно, будут задаваться вопросы по ходу установки/обновления (yes/no).
Необходимо внимательно следить за сообщениями, которые генерирует portupgrade во время обновления — там могут содержаться важные инструкции по решению проблем с отказами обновлений.
Возможно во время использования portupgrade появится предложение запустить pkgdb -F . Стоит принять предложение системы — эта команда обновляет базу данных портов /var/db/pkg/pkgdb.db.
Удаление портов
- make deinstall — удалить порт
- make reinstall — восстановить удаленный порт
- pkg_deinstall -R [packagename] — удаляет порт и все, от чего он зависит (т.е. рекурсия к корню), порты, которые нужны для других портов останутся не вредимыми.
- pkg_deinstall -r [packagename] — удаляет порт и все, что от него зависит (т.е. рекурсия к листьям), порты, которые нужны для других портов останутся не вредимыми.
Команды make deinstall и make reinstall нужно запускать из директории удаляемого/восстанавливаемого порта, pkg_deinstall -КЛЮЧ [packagename] — из любой директории, где [packagename] — имя удаляемого порта.
Если в pkg_deinstall добавить ключ -f — удаляемые порты не будут проверяться на их необходимость для других портов.
Источник