Поиск по сайту:

Как управлять пакетами с помощью диспетчера двоичных пакетов pkg во FreeBSD 12


На этой странице

  1. Предпосылки
  2. Порты и пакеты
  3. Диспетчер пакетов FreeBSD — pkg
  4. Как искать пакеты
  5. Как установить новые пакеты с помощью pkg
  6. Как просмотреть информацию об установленных пакетах
  7. Как удалить пакеты
  8. Как заблокировать пакеты
  9. Репозитории пакетов
  10. команды
  11. Заключение
  12. Ссылки

FreeBSD — это Unix-подобная операционная система с открытым исходным кодом, используемая для современных серверов, настольных компьютеров и встроенных платформ. Большое сообщество постоянно развивало его более тридцати лет. Расширенные возможности работы с сетью, безопасностью и хранением сделали FreeBSD предпочтительной платформой для многих самых загруженных веб-сайтов и самых распространенных встроенных сетевых устройств и устройств хранения. Такие гиганты, как Netflix, Yahoo!, WhatsApp, BBC и Sony, в той или иной форме используют FreeBSD. Система FreeBSD не так широко известна, как Linux, в основном потому, что Linux в течение многих лет ориентировался на настольные компьютеры, а проект FreeBSD, как правило, был больше основан на сервере.

В этом руководстве вы узнаете об управлении бинарными пакетами через pkg в операционной системе FreeBSD 12, которая является самой последней версией на момент написания этой статьи. Большая часть материала также применима к более ранней версии FreeBSD 11.

Предпосылки

  • Операционная система FreeBSD 12
  • Доступ к учетной записи root или sudo

Порты и пакеты

В системе FreeBSD у нас есть два разных метода установки дополнительного программного обеспечения: через ports и с помощью предварительно настроенных пакетов, которые большинство пользователей выберет установку и управление программным обеспечением.

Порты — это система для сборки дополнительного программного обеспечения на FreeBSD. С портами вы начинаете с исходного кода, предоставленного поставщиком программного обеспечения, и создаете программное обеспечение именно так, как вам нужно, включая и отключая функции по своему усмотрению.

Пакеты — это предварительно скомпилированное программное обеспечение, и они являются результатом создания портов с использованием опций, которые, по мнению сопровождающего порта, будут наиболее полезными для самого широкого круга людей, и объединения их в пакет, чтобы их было легко установить. Пакеты позволяют быстро устанавливать, удалять и обновлять дополнительное программное обеспечение. Это то, что будет использовать большинство пользователей. Система упаковки FreeBSD называется package или просто pkg. Информация о пакете сохраняется в базе данных SQLite, которую вы можете запросить о данных пакета.

Другой важной информацией об управлении пакетами FreeBSD является расположение двоичных файлов пакетов. Пакеты устанавливают двоичные файлы в /usr/local, и большинство файлов конфигурации заканчиваются в /usr/local/etc, а не в /etc. Если вы пришли из мира Linux, вы можете найти это очень необычным.

Менеджер пакетов FreeBSD — pkg

pkg — это замена следующего поколения традиционных инструментов управления пакетами FreeBSD, предлагающая множество функций, которые упрощают и ускоряют работу с бинарными пакетами. pkg — это самый простой способ установить программное обеспечение, которое еще не включено в базовую систему FreeBSD. pkg — это отдельная программа с множеством подкоманд. Вы будете использовать pkg практически для каждой операции с пакетами, такой как установка, удаление и исследование пакетов. Все операции с пакетами и изменения должны выполняться как root или через sudo.

Вот как вы можете установить пакет acme.sh на FreeBSD:

pkg install acme.sh

Вы можете ввести команду с помощью -y, чтобы избежать Продолжить это действие? [y/N]: вопрос при установке программного обеспечения, или вы можете настроить pkg так, чтобы в файле конфигурации всегда предполагалось -y.

Чтобы удалить пакет, вы должны использовать:

pkg delete acme.sh

Используйте pkg help для быстрого ознакомления с доступными подкомандами или команду pkg help для отображения справочной страницы для конкретной подкоманды.

pkg help pkg 
help install
pkg help delete

Установка пакета

Стандартная версия FreeBSD не поставляется с установленным менеджером пакетов pkg. Вам необходимо установить его. При первой попытке установить какой-либо пакет pkg предложит вам установить инструмент управления пакетами. Например, предположим, что первый пакет, который вы хотите установить на новую FreeBSD, — это wget, и вы увидите следующее приглашение в своем терминале:

The package management tool is not yet installed on your system.
Do you want to fetch and install it now? [y/N]: y

Нажмите Y и ВВОД на клавиатуре, после чего начнется установка инструмента управления пакетами. После установки системы упаковки будет установлен исходный программный пакет, который вы хотели установить (wget).

Вы также можете установить систему пакетов отдельно, без добавления других пакетов, запустив pkg bootstrap, но это редко используется, может быть, только в сценариях установки системы. pkg знает, как устанавливать и обновлять себя и другие пакеты.

Как искать пакеты

Теперь, когда у вас установлен менеджер пакетов, вы можете устанавливать пакеты. Если вы являетесь системным администратором, вы знакомы с тем фактом, что разные операционные системы присваивают упакованным версиям одного и того же программного обеспечения разные имена. Например, пакет для веб-сервера Apache во FreeBSD будет иметь совершенно другое имя, чем упакованный Apache в других дистрибутивах Linux. Итак, прежде чем вы сможете что-либо установить, вам нужно выяснить, как называется пакет, который вы хотите установить.

Список доступных приложений FreeBSD постоянно растет. Проект FreeBSD предлагает несколько наборов пакетов в общедоступном репозитории, и они обновляются каждые несколько дней. В настоящее время существует более 25 000 пакетов.

Например, давайте попробуем найти веб-сервер Apache.

pkg search apache 
# apache24-2.4.38 Version 2.4.x of Apache web server

Он найдет все пакеты, в именах которых есть apache. Это вернет длинный список, но вы ищете пакет apache24. К каждому пакету есть краткое описание. Это должно помочь вам при выборе пакета для установки. Но это не всегда просто.

Некоторые поисковые запросы могут генерировать сотни результатов. Вам нужно будет использовать различные параметры командной строки, чтобы обрезать или настроить результаты поиска. Обратитесь к справочной странице pkg-search или справочной странице pkg help search, чтобы узнать больше об общих параметрах поиска.

Если вы не уверены, что пакет вам нужен, вы можете использовать следующую команду для поиска сведений о пакете:

pkg search -R apache24

# name: "apache24"
# origin: "www/apache24"
# version: "2.4.38"
# comment: "Version 2.4.x of Apache web server"
# maintainer: ""
# www: "https://httpd.apache.org/"
# abi: "FreeBSD:12:amd64"
# arch: "freebsd:12:x86:64"
# prefix: "/usr/local"
# . . .
# . . .

Эта команда даст вам много полезной информации о пакете.

Как установить новые пакеты с помощью pkg

Для установки программного обеспечения используйте подкоманду pkgs install и имя устанавливаемого пакета.

pkg install apache24

Когда вы устанавливаете пакеты с помощью pkg install, pkg обращается к локальному каталогу пакетов, а затем загружает запрошенный пакет из репозитория по адресу pkg.FreeBSD.org. . После установки пакет регистрируется в базе данных SQLite, хранящейся в /var/db/pkg/local.sqlite. Будьте осторожны, чтобы не удалить этот файл, иначе ваша система потеряет информацию о том, какие пакеты были установлены. Если программное обеспечение имеет зависимости, pkg обнаружит их и установит вместе с базовым пакетом. Пакеты, устанавливаемые как зависимости, называются автоматическими пакетами.

pkg позволяет просто загружать пакеты через Интернет, сохранять их в одном месте на диске и устанавливать в другое время. Вы можете использовать команду pkg fetch для загрузки пакета без его установки.

pkg fetch nginx 

Эта команда извлечет только пакет Nginx без его зависимостей. Вы можете использовать флаг -d, чтобы получить все зависимости, а также именованный пакет.

pkg fetch -d nginx 

Пакеты загружаются в каталог кэша пакетов /var/cache/pkg. После того, как вы получили пакеты, pkg прикрепит их к этому каталогу. Вы можете перечислить файлы, чтобы увидеть, что они содержат.

ls /var/cache/pkg 

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

Со временем каталог кэша пакетов может стать большим. Команда pkg clean удаляет все кэшированные пакеты, которые были заменены более новыми версиями, а также все файлы пакетов, которых больше нет в репозитории.

pkg clean 

Если вы хотите удалить все кешированные пакеты, используйте флаг -a.

pkg clean -a 

Если вы хотите автоматически очищать кеш пакетов после установки или обновления каждого пакета, установите для параметра pkg.conf AUTOCLEAN значение true.

Как настроить пакет

Программа pkg отличается высокой гибкостью. Каждая подкоманда имеет целую кучу опций. Вы можете настроить индивидуальное, но согласованное поведение для большинства программ с помощью общесистемного файла конфигурации для pkg, расположенного в /usr/local/etc/pkg.conf.

Файл pkg.conf содержит закомментированные значения по умолчанию для pkg. Просто прочитав этот файл, вы можете многое узнать о том, как ведет себя pkg. Конфигурация написана на универсальном языке конфигурации (UCL) и содержит множество закомментированных параметров конфигурации и довольно много псевдонимов. Переменные могут быть установлены как целое число, строка или логическое значение.

#PKG_DBDIR = "/var/db/pkg";
#PKG_CACHEDIR = "/var/cache/pkg";
#PORTSDIR = "/usr/ports";
#INDEXDIR = "";
#INDEXFILE = "INDEX-10";        # Autogenerated
#HANDLE_RC_SCRIPTS = false;
#DEFAULT_ALWAYS_YES = false;
#ASSUME_ALWAYS_YES = false;
. . .

Вы можете определить псевдонимы для подкоманд pkg в pkg.conf. В нижней части pkg.conf вы найдете раздел с пометкой ALIAS. Когда вы обнаружите, что постоянно запускаете сложные команды, вам следует добавить псевдонимы.

Для получения дополнительной информации о формате файла и параметрах вы можете обратиться к справочной странице pkg.conf(5).

man pkg.conf

Как просмотреть информацию об установленных пакетах

Если вы забыли, какие пакеты вы установили в системе, вы можете использовать команду pkg info, чтобы получить полный список установленного программного обеспечения.

pkg info
# atk-2.28.1 GNOME accessibility toolkit (ATK)
# avahi-app-0.7_2 Service discovery on a local network
# ca_root_nss-3.42.1 Root certificate bundle from the Mozilla Project
# . . .
# . . .

Если вам нужна дополнительная информация об установленном пакете, используйте pkg info и имя пакета. Это показывает детали установки пакета в удобном для человека отчете.

pkg info nginx
# nginx-1.14.2_3,2
# Name : nginx
# Version : 1.14.2_3,2
# . . .
# . . .

Вы можете увидеть много полезной информации, такой как версия программного обеспечения, время установки программного обеспечения, лицензия на программное обеспечение, флаги времени компиляции и т. д. Полную информацию см. на справочной странице pkg-info.

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

Чтобы удалить или деинсталлировать бинарные пакеты, используйте подкоманду pkg delete. Он также доступен как pkg remove.

pkg delete nginx
# or
pkg remove nginx

Вы получите список пакетов, которые нужно удалить, и сколько места они освободят.

Если вы удаляете пакет, от которого зависят другие пакеты, pkg также удаляет зависимые пакеты.

Как заблокировать пакеты

Может быть время, когда вы хотите, чтобы пакет на вашем сервере никогда не обновлялся. Когда вы блокируете пакет, pkg не будет его обновлять, понижать, удалять или переустанавливать. Он применяет одни и те же правила к зависимостям пакета и программам, от которых он зависит.

Используйте pkg lock, чтобы заблокировать пакет.

pkg lock openssl 

Этот пакет openssl теперь заблокирован.

Чтобы вывести список всех заблокированных на данный момент пакетов в системе, используйте флаг -l.

pkg lock -l 

Чтобы снять блокировку, используйте команду pkg unlock.

pkg unlock openssl 

Чтобы заблокировать или разблокировать все пакеты в системе одновременно, используйте флаг -a.

pkg lock -a
pkg unlock -a

Репозитории пакетов

pkg поддерживает репозитории пакетов, которые представляют собой именованные наборы пакетов. Вы можете добавлять, удалять, включать и отключать репозитории. Вы должны настроить каждый репозиторий в отдельном файле, используя формат UCL. Официальные репозитории FreeBSD находятся в каталоге /etc/pkg. FreeBSD поставляется с включенным репо \FreeBSD\. Вы найдете его файл конфигурации в /etc/pkg/FreeBSD.conf.

FreeBSD: {
  url: "pkg+http://pkg.FreeBSD.org/${ABI}/quarterly",
  mirror_type: "srv",
  signature_type: "fingerprints",
  fingerprints: "/usr/share/keys/pkg",
  enabled: yes
}

Вы можете добавлять и удалять репозитории по мере необходимости. Поскольку /etc/pkg зарезервирован для официальных репозиториев FreeBSD, вам понадобится другой каталог. Традиционное расположение — /usr/local/etc/pkg/repos. Если вы хотите использовать другой каталог, вам нужно указать его в pkg.conf с опцией REPO_DIRS. Каталог локального репозитория не существует по умолчанию, поэтому вам нужно создать его с помощью mkdir -p /usr/local/etc/pkg/repos. Поместите свои собственные конфигурации репозитория в этот каталог

Примеры команд pkg

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

# Installs a package without asking any questions
pkg install -y package

# Makes a backup of the local package database
pkg backup

# Lists all installed packages
pkg info

# Shows extended information for a package
pkg info package

# Searches package repository
pkg search -i package

# Shows packages with known security vulnerabilities
pkg audit -F

# Shows which package owns the named file
pkg which file

# Removes unused packages
pkg autoremove

# Uninstalls a package
pkg delete package

# Removes cached packages from /var/cache/pkg
pkg clean -ay

# Updates local copy of the package catalog
pkg update

# Upgrades installed packages to their latest version
pkg upgrade

# Checks the integrity of all your packages
pkg check -saq

# Verifies that a package's files are unaltered
pkg check -s nginx

# Shows what files came with the package
pkg info -l nginx

# Lists non-automatic packages
pkg prime-list

Заключение

FreeBSD реализует две сопутствующие технологии для установки стороннего программного обеспечения: Коллекция портов FreeBSD для установки из исходного кода и пакеты для установки из готовых двоичных файлов. Но поскольку FreeBSD все более решительно продвигает систему в сторону универсального управления пакетами, вам следует стараться управлять сторонним программным обеспечением с помощью pkg, насколько это возможно . Избегайте использования портов, за исключением случаев, когда нужное вам программное обеспечение не имеет упакованной версии или если вам необходимо настроить параметры времени компиляции.

Ссылки

  • https://www.freebsd.org/doc/handbook/pkgng-intro.html