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

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 флаги, полное имя, размер, категорию и т д. А затем спросит нужно ли его устанавливать:

emerge

Здесь красным цветом отмечены активные 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, которые очень редко используются или еще нестабильны и тем более при использовании различных оверлеев может вызвать различные ошибки. Начнем с самых простых и элементарных.