Установка дополнительных программ из "пакетов" (packages)

Что такое package?

"Пакеты" - это архивы типа *.tgz (tar-архив, сжатый GNU zip'ом), в которых лежат уже собранные бинарники. А, также, мануалы к ним, необходимые конфиги и т.п.

Естественно, бинарники собраны под конкретную версию системы, поэтому желательно их не путать. Хотя это и не всегда критично.

Также, в этих архивах лежат несколько воспомогательных файлов, которые позволяют устанавливать их автоматически.

Используя эти файлы, утилита установки пакетов раскладывает все на свои места и регистрирует пакет.

Кроме того:
Некоторые пакеты "опираются" на другие. То есть для нормальной работы пакета необходимо, чтобы у вас уже был установлен какой-то другой пакет или пакеты (обычно это библиотеки). Естественно, в таких случаях программа установки проверяет наличие всего необходимого.
При установки некоторых пакетов требуется выполнить какие-то дополнительные действия кроме просто раскладывания файлов по директориям. В таком случае в пакет добавляется "инсталляционный скрипт" (командный файл), который утилита установки и запустит в нужный момент.

В чем заключается регистрация пакета?

В директории /var/db/pkg создается директория с тем же названием, что и пакет, в которую помещаются несколько файлов. В этих файлах находится

  • краткое описание пакета;
  • список всех файлов из пакета, с указанием - где какой лежит;
  • дополнительные скрипты, исполняемые при инсталляции пакета и при удалении (если, конечно, таковые имеются);
  • и, если файлы этого пакета используются другими пакетами, то здесь же отмечается, кем пакет используется. (Естественно, эти записи появятся потом, когда вы будете устанавливать "подчиненные" пакеты).

Все эти данные используются соответствующими утилитами, которые

  • добавляют пакеты
  • удаляют пакеты
  • показывают всевозможную информацию об установленных пакетах

Однако, все эти файлы просто текстовые и их легко можно посмотреть любым редактором/просмотрщиком.

Как установить пакет?

Очень просто

pkg_add <имя архива>

Дальше все сделается автоматически. Хотя, если в пакете есть "инсталляционный скрипт", он, возможно, захочет задать вам несколько вопросов.

Еще, возможно, вам всетаки придется потом "вручную" отредактировать конфигурационные файлы. Но это уже зависит от той программы, которую вы ставите.

Как удалить пакет?

pkg_delete <имя пакета>

Точное имя пакета можно подсмотреть в /var/db/pkg. (Даже если вы каждый день пользуетесь программой elm, например, - это еще не значит, что вы безошибочно назовете имя пакета, откуда его поставили - elm-2.4ME+8 :-)

При удалении пакета могут возникнуть некоторые сложности.
Во-первых, если пакет используется другими пакетами, утилита откажется его удалять. Однако ее можно заставить это сделать с помощью ключа -f.
Во-вторых, если при установке пакета для него специально создавались какие-либо директории, обычно, при удалении пакета они не удаляются. Опять же, утилиту удаления можно заставить это делать ключем -d.
И, наконец, кое-какой "мусор" все равно может остаться. Например, если для какой-то программы каждый пользователь может иметь собственный конфиг в домашней директории, естественно, никто их подчищать не будет.

Что об этом еще почитать?

man pkg_add - установка пакетов
man pkg_delete - удаление пакетов
man pkg_info - вывод информации об установленных пакетах
Ну, и те, которые будут указаны в этих мануалах в разделе See Also (смотри также...).

В некоторых версиях FreeBSD есть еще утилита pkg_manage, которая должна была по замыслу авторов объединить в себе все функции вышеперечисленных. Но, потом от нее отказались (говорят, из-за повышенной глючности :-). Возможно, в последующих версиях она опять появится.

Обновлено: 12.03.2015