Sunday, November 10, 2013

Шпаргалка по работе с портами FreeBSD

За несколько лет работы с FreeBSD 8/9 собрал множество заметок по работе с софтом в FreeBSD. Собрав их все в месте выкладываю в одном посте.

Содержание:
  1. Поиск портов;
  2. Установка и конфигурирование  порта;
  3. Аудит установленных портов и зависимостей между ними;
  4. Удаление портов;
  5. Обновление портов.
Поиск портов

Поиск порта можно осуществить четырьмя способами:
Поиск портов 1-й способ:
#: cd /usr/ports
#: make search name=<имя_порта>
Поиск портов 2-й способ:
#: cd /usr/ports
#: make search key= 
Поиск портов 3-й способ:
#: cd /usr/ports
#: locate <название_порта>
Поиск портов 4-й способ:
#: whereis <название_порта> 

Установка и конфигурирование  портов
Процедура установки
Рассмотрим процедуру инсталляции порта по этапам.
1. Конфигурирование порта:
#: make config
2. Конфигурирование и установка необходимых зависимостей порта
#: make configure
3. Сборка 
#: make
4. Установка
#: make install
5. Очистка созданных во время компиляции и конфигурирования файлов
#: make clean

Операции можно сократить:
#: make configure && make && make install && make clean

Полезные опции утилиты make
Просмотреть получившуюся конфигурацию (созданную командой make config) порта можно командой:
#: make showconfig
Загрузка всех зависимых портов:
#: make fetch-recursive
У каждого порта можно узнать список его  зависимостей:
#: make all-depends-list
#: make run-depends-list
#: make build-depends-list
Удаление файлов созданных во время сборки зависимых портов:
#: make clean-depends
Переустановка пакета:
#: make reinstall

Обновление установленного порта
Для поддержания системы в актуальном состоянии необходимо периодически производить обновление установленных пакетов. Это можно сделать с помощью утилиты portupgrade (/usr/ports/sysutils/portupgrade/)
Обновление порта:
#: portupgrade название_программы
Если вы хотите обновить только определенное приложение, но не полностью базу данных, используйте portupgrade pkgname, с флагом -r, если portupgrade должен отработать все пакеты, которые зависят от указанного, и использовать флаг -R для отработки всех пакетов, которые требуют указанные пакеты.
Так же можно обновить пакет перейдя в его директорию в папке /usr/ports/ и выполнив:
#: portupgrade 

Обновление дерева портов через portsnap 
Для первого запуска:
#: portsnap fetch
#: portsnap extract
Для всех последующих запусков:
#: portsnap fetch
#: portsnap update
Или
#: portsnap fetch update

Обновление портов с помощью portupgrade
#: portsnap fetch update
#: portupgrade -arR
Второй командой будут скачаны исходники всех портов, нуждающихся в обновлении, распакованы, скомпилированы и инсталлированы в порядке, определяемом зависимостями.
Ключи portupgrade:
-a - обновление всех портов, для которых portversion выявила "старение" по сравнению с текущим деревом;
-r - рекурсивное обновление всех портов, которые зависят от установленных и обновляемых;
-R - рекурсивное обновление всех портов, от которых зависят пакеты, установленные в системе.
Две последние опции могут показаться тавтологичными, но это не так: только их сочетание позволяет корректно обновить все установленные ранее пакеты (да и то не всегда - в некоторых случаях может потребоваться ручное вмешательство). 

Устранение возможных неполадок и пере конфигурирование собранного порта.
Варианты развития событий:
Вариант 1 — необходимо пере конфигурировать пакет.
Необходимо удалить собственную заданную с помощью make config конфигурацию:
#: make rmconfig
Затем можно начинать с начало всю процедуру инсталляции
Вариант2 — необходимо пересобрать порт с другим набором зависимостей или конфигурациями этих зависимостей.
Есть такой момент, что опции заданные через make configure задаются один раз. При последующих попытках пересбора порта могут появится сообщения вида:
… Found saved configuration for <имя пакета> …
Один раз заданные опции порта хранятся в /var/db/ports//options .
Для того чтобы иметь возможность заново переконфигурировать все зависимости пакета следует файл options удалить
Подробнее можно прочитать п. 5.11.2: http://www.freebsd.org/doc/ru_RU.KOI8-R/books/porters-handbook/makefile-options.html

Удаление портов
Удаление портов с помощью утилиты pkg_deinstall
Ключ -r
#: pkg_deinstall -r
Удалить все пакеты, которые от него не зависят без учета зависимостей от него других пакетов. Т. е. удаляет порт и все, что от него зависит — рекурсия к листьям.
Ключ -R
#: pkg_deinstall -R
Удалить пакеты и пакеты, которые от него зависят — рекурсия к корню. При этом пакеты используемые в других портах будут пропущены (если pkg_deinstall без ключа -f).

Аудит установленных портов и зависимостей между ними
Утилита pkg_tree
Утилита pkg_tree строит визуальное дерево пакетов и их зависимостей.
#: cd /usr/ports/ports-mgmt/pkg_tree ; make install clean
Используемые ключи:
  1. -v - зависимости зависимостей.
  2. -t - чтобы показывать только верхнего уровня пакетов.
  3. -b - чтобы показать только нижний уровень пакеты.
  4. -t -q - даст список верхнего уровня пакетов без их зависимостей, установка только этих пакетов должны установить всех установленных пакетов.
Список установленных пакетов и портов:
#: pkg_info
Поиск установленных пакетов по части названия
Для поиска пакета с помощью утилиты pkg_info необходимо ввести не только полное название, но и версию пакета, что иногда может вызвать трудность.
C ключом -x можно указать только первую часть названия пакета:
#: pkg_ingp -xc lynk

Как узнать какие файлы относятся к данному пакету:
#: pkg_info -xL имя_пакета

Как узнать какому пакету необходимо обновление:
#: pkg_version -v | grep «need»

1 comment:

  1. 1xbet - Best Bet in 1xBet - Download or Install for Android
    1xbet is the best filmfileeurope.com betting app worrione in the world created for esports. It is a one of the safest and wooricasinos.info most trusted 1xbet login names among players. It goyangfc.com offers a user friendly interface

    ReplyDelete