Interested Article - Portage
- 2021-09-22
- 1
Portage — основная система управления пакетами в Gentoo Linux . Аналог системы портов FreeBSD . Представляет собой набор утилит на Python и Bash , призванных облегчить и упорядочить установку программного обеспечения из исходных кодов или бинарных пакетов, с учётом всех зависимостей.
Основной пользовательский интерфейс Portage — консольная программа
emerge
, которая позволяет устанавливать новые пакеты с учётом зависимостей и с возможностью управления вариантами установки — например с поддержкой определённых функций или без поддержки ненужных функций (управление параметрами сборки осуществляется через так называемые USE-флаги), удалять ненужные пакеты, обновлять установленные пакеты, проводить синхронизацию с
(по протоколу
rsync
) и т. д. Программа
ebuild
служит интерфейсом низкого уровня к Portage, а
emerge
— высокоуровневая оболочка для неё.
Главный конфигурационный файл системы Portage —
/etc/portage/make.conf
. В нём настраиваются основные параметры
компиляторов
и дополнительные возможности их использования (например, применением
ccache
,
distcc
), установки USE-флагов,
HTTP
-
прокси
,
FTP
-прокси, SYNC, ACCEPT_KEYWORDS и других, необходимых для работы системы Portage.
Другие конфигурационные файлы системы находятся в
/etc/portage/
и позволяют более тонко конфигурировать различные аспекты системы portage.
Дерево портежей
Дерево портежей обычно располагается в каталоге
/usr/portage/
и представляет собой упорядоченную систему каталогов-категорий пакетов (вида
app-emacs
,
dev-php
), в каждом из которых содержатся каталоги отдельных пакетов. В дереве каждый пакет состоит из набора
ebuild
-файлов, файла
Changelog
данного пакета, файла
metadata.xml
c
метаданными
о пакете и, возможно, нескольких других некрупных файлов, нужных для сборки пакета (например,
патчей
).
Кроме того, в дереве портежей хранятся все лицензии , которые используются пакетами.
В каталог
/usr/portage/distfiles/
обычно помещаются файлы
дистрибутивов
программ, скачиваемые во время установки пакетов.
Оверлеи
Оверлеи представляют собой хранилища пакетов, не включённые в основное дерево портежей. Обычно туда включают более новые версии программ или те программы, которых ещё нет в официальном дереве, live-версии, нестандартные расширения и патчи. Оверлеи могут быть локальными — присутствовать только на компьютере пользователя. Один из вариантов применения локального оверлея — установка ebuild -файлов, не включённых в какой-либо публичный оверлей, либо тестирование ebuild -файлов. Для упрощения работы с оверлеями служит утилита .
live-пакеты
Обычно при установке некоторой версии программы скачивается архив с исходными кодами, соответствующий устанавливаемой версии. В случае с live-пакетами исходные коды получаются из системы контроля версий данной программы. Таким образом, live-пакеты позволяют иметь самую что ни на есть свежую программу. Такие пакеты, как правило, имеют версию 9999.
В случае, если есть несколько веток разработки программы, live-пакет может также использовать не основную ветку. Например, для библиотеки Qt есть live-пакеты, берущие исходные коды из ветки на официальные версии 4.6, 4.7 и самую «передовую» ветку. Такие пакеты имеют версии 4.6.9999, 4.7.9999 и 4.9999 соответственно.
Утилиты
revdep-rebuild
revdep-rebuild из пакета gentoolkit — служит для проверки целостности динамического связывания . При обновлении библиотек нередка ситуация, когда программа или другая библиотека, зависящая от обновлённой, продолжает ссылаться на предыдущую версию. Таким образом, нарушается работоспособность программ. Утилита revdep-rebuild позволяет автоматически найти подобные «сломанные» программы и перекомпилировать их.
layman
служит для упрощения работы с оверлеями, позволяя добавлять, удалять и синхронизировать оверлеи одной командой.
equery, eix, q
Программы equery и q , а также набор программ eix служит для ускорения и автоматизации стандартных задач вроде поиска по дереву портежей, формирования списка установленных пакетов, принадлежащих какой-либо категории, и т. д.
Пример
Пример работы программы emerge:
# emerge -pv postfix
These are the packages that would be merged, in order:
Calculating dependencies... done!
[ebuild N ] mail-mta/postfix-2.3.6 USE="hardened mysql pam ssl -cdb -dovecot-sasl -ipv6 -ldap -mailwrapper -mbox -nis -postgres
-sasl (-selinux) -vda" 2,719 kB
[blocks B ] mail-mta/ssmtp (is blocking mail-mta/postfix-2.3.6)
Total: 1 package (1 new, 1 block), Size of downloads: 2,719 kB
FrontEnd
См. также
Ссылки
- (рус.)
- . Дата обращения: 25 января 2023. 25 января 2023 года.
- (рус.)
- от 17 января 2014 на Wayback Machine (англ.)
- (рус.)
- (рус.)
- 2021-09-22
- 1