Установка пакетов в 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:

nano /etc/portage/package.use

категория_пакета/имя_пакета abi_x86_32

Еще такой случай, нужно установить только определенную версию пакета и не обновлять его, даже когда появиться новая. Тогда скрываем все версии выше нужной с помощью /etc/portage/package.mask, например, все версии выше 14.0.3:

sudo nano /etc/portage/package.mask

>категория_пакета/имя_пакета-14.0.3

А затем устанавливаем пакет:

sudo emerge - av имя_пакета

Решение проблем с установкой пакетов в Gentoo

Установка программ в Gentoo, которые очень редко используются или еще нестабильны и тем более при использовании различных оверлеев может вызвать различные ошибки. Начнем с самых простых и элементарных.

The following keyword changes are necessary to proceed:
(see "package.accept_keywords" in the portage(5) man page for more details)
# required by skype (argument)
=net-im/skype-4.3.0.37-r5 ~amd64

Это значит что пакет не был протестирован с вашей архитектурой или считается не совсем стабильным для нее, но это не повод его не использовать просто добавьте строчку в /etc/portage/package.keywords, разрешающую устанавливать этот пакет:

nano /etc/portage/package.keywords

категория_пакета/имя_пакета ~amd64

The following mask changes are necessary to proceed:
(see "package.unmask" in the portage(5) man page for more details)
# required by sun-jdk (argument)

Это значит что пакет считается еще нестабильным или уже устаревшим и замаскирован, или он несовместим с вашим профилем, если уверены что оно вам нужно, добавьте имя пакета в /etc/portage/package.unmask

nano /etc/portage/package.unmask

категория_пакета/имя_пакета

Часто возникают конфликты USE флагов, здесь даже не нужно ничего делать необычного, чтобы получить вот ошибку. Для ее устранения нужно посмотреть какие пакеты конфликтуют и убрать или добавить к одному из пакетов нужные флаги с помощью /etc/portage/package.use.

Creative Commons License
Статья Установка пакетов в Gentoo распространяется под лицензией Creative Commons ShareAlike 4.0 при копировании материала ссылка на источник обязательна.
Ваше имя тоже может быть здесь. Начните писать статьи для Losst. Это просто! Смотрите подробнее как начать писать статьи - Пишите для нас

Оцените статью:

Звёзд: 1Звёзд: 2Звёзд: 3Звёзд: 4Звёзд: 5 (4 оценок, среднее: 5,00 из 5)
Загрузка...

3 комментария

  1. Александр Ноябрь 26, 2017 Ответить
  2. Илья Декабрь 5, 2017 Ответить
  3. Taras Февраль 20, 2018 Ответить

Ответить

Сообщить об опечатке

Текст, который будет отправлен нашим редакторам: