Gentoo – особенный дистрибутив Linux, и выделяется он именно установкой программного обеспечения. Здесь реализована собственная система управления пакетами – portage, которая в отличие от других систем, таких как deb или rpm, предоставляет не полностью собранные, настроенные и готовые для установки пакеты, а только файлы со скриптами компиляции, установки, и последующей настройки.
Пакетный менеджер на основе этих файлов загружает исходники пакетов, накладывает необходимые патчи, компилирует программу с указанными вами флагами и устанавливает ее. На первый взгляд все очень сложно, но на самом деле это не так. Вот увидите. В этой статье мы рассмотрим установку пакетов в Gentoo, некоторые особенности работы с пакетным менеджером в Gentoo, а также ошибки во время установки и способы их решения.
Немного о Portage
Система portage очень похожа на систему портов FreeBSD, а еще чем-то напоминает работу pacman’а в ArchLinux. Как я сказал, здесь нет собранных пакетов, есть только исходники, патчи и файлы, описывающие что с этим всем делать. Такие файлы имеют расширение *.ebuild. По сути, база данных пакетов это система подкаталогов в /usr/protage. При обновлении базы данных просто скачиваться ее новая версия с серверов Gentoo, а старая, используемая в системе удаляется.
Список всех установленных вами пакетов хранится в файле /var/lib/portage/world. Здесь будут только те пакеты, которые вы явно устанавливали с помощью менеджера пакетов. Очень удобная вещь, можно всегда определить что в системе лишнее.
Система флагов Gentoo это отдельная и очень длинная история, но скажу об этом пару слов на всякий случай. В других дистрибутивах дополнительная функциональность для программ подключается установкой дополнительных пакетов, здесь же в этом нет необходимости, мы просто перед компиляцией указываем с какими функциями нужно собирать пакет.
Это было немного матчасти, теперь перейдем непосредственно к теме статьи – установка пакетов в Gentoo.
Установка пакетов в Gentoo
Для управления пакетами в Gentoo используется собственный менеджер пакетов – emerge. Чтобы установить пакет Gentoo достаточно набрать:
emerge имя_пакета имя_пакета2
Но это самый простой вариант, emerge поддерживает множество параметров, рассмотрим только те, которые касаются установки пакетов:
- -a – Спрашивать перед установкой;
- -v – Показать более подробную информацию;
- -p – Не устанавливать пакет, только показать информацию;
- -b – Только скомпилировать пакет без установки;
- -O – Установить пакет, не учитывая зависимости;
- -o – установить только зависимости пакета;
- -l –oneshot – Установить пакет, но не добавлять его в файл world;
Например, самой популярной командой, с помощью которой выполняется установка пакетов в Gentoo есть:
sudo emerge -av имя_пакета
Программа выведет всю доступную информацию о пакете, USE флаги, полное имя, размер, категорию и т д. А затем спросит нужно ли его устанавливать:
Здесь красным цветом отмечены активные USE флаги, синим неактивные, салатовым – те, которые будут активированы, например, при переустановке или обновлении.
Буква возле слова ebuild значит действие с пакетом:
- N – будет установлен;
- S – установка в новый слот;
- U – обновление версии пакета;
- D – установка более старой версии пакета;
- R – переустановка;
- F – необходима ручная загрузка исходников пакета;
- f – то же самое, только файлы уже загружены;
- B – пакет конфликтует с другими пакетами, но конфликт будет решен автоматически;
- b – пакет конфликтует с другими пакетами, конфликт нужно решать вручную.
Дальше мы видим количество обрабатываемых пакетов и количество данных которые необходимо скачать в килобайтах.
Если установка программ в Gentoo не нужна, а нужно только посмотреть информацию о пакете можно использовать опцию -p:
sudo emerge -pv имя_пакета
Для ручного обновления системных библиотек лучше использовать опцию -l, чтобы не засорять файл world лишними записями:
sudo emerge -avl имя_пакета
Если к пакету необходимо применить дополнительные USE флаги можно указать их прямо в команде с помощью локальной переменной:
USE=”флаг1 флаг2″ sudo emerge имя_пакета
Но лучше так не делать, так как эти флаги будут применены только сейчас, и при следующем обновлении просто слетят.
Иногда необходимо установить в 64х битной системе 32 битную программу или библиотеку. Например, Skype и Wine, тянут в зависимостях 32-битные библиотеки, а некоторые программы и вовсе существуют только в 32 битных версиях. Для установки 32-битных пакетов в Gentoo с недавних времен используется USE флаг – abi_x86_32. Достаточно добавить строчку в /etc/portage/package.use, и установить пакет Gentoo:
Еще такой случай, нужно установить только определенную версию пакета и не обновлять его, даже когда появиться новая. Тогда скрываем все версии выше нужной с помощью /etc/portage/package.mask, например, все версии выше 14.0.3:
sudo nano /etc/portage/package.mask
А затем устанавливаем пакет:
sudo emerge – av имя_пакета
Решение проблем с установкой пакетов в Gentoo
Установка программ в Gentoo, которые очень редко используются или еще нестабильны и тем более при использовании различных оверлеев может вызвать различные ошибки. Начнем с самых простых и элементарных.