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:
nano /etc/portage/package.use
Еще такой случай, нужно установить только определенную версию пакета и не обновлять его, даже когда появиться новая. Тогда скрываем все версии выше нужной с помощью /etc/portage/package.mask, например, все версии выше 14.0.3:
sudo nano /etc/portage/package.mask
А затем устанавливаем пакет:
sudo emerge - av имя_пакета
Решение проблем с установкой пакетов в Gentoo
Установка программ в Gentoo, которые очень редко используются или еще нестабильны и тем более при использовании различных оверлеев может вызвать различные ошибки. Начнем с самых простых и элементарных.
Это значит что пакет не был протестирован с вашей архитектурой или считается не совсем стабильным для нее, но это не повод его не использовать просто добавьте строчку в /etc/portage/package.keywords, разрешающую устанавливать этот пакет:
nano /etc/portage/package.keywords
Это значит что пакет считается еще нестабильным или уже устаревшим и замаскирован, или он несовместим с вашим профилем, если уверены что оно вам нужно, добавьте имя пакета в /etc/portage/package.unmask
nano /etc/portage/package.unmask
Часто возникают конфликты USE флагов, здесь даже не нужно ничего делать необычного, чтобы получить вот ошибку. Для ее устранения нужно посмотреть какие пакеты конфликтуют и убрать или добавить к одному из пакетов нужные флаги с помощью /etc/portage/package.use.
Anubis – это максимально легкое open-source решение, созданное специально для защиты небольших веб-ресурсов от бесконечного потока запросов от ботов и AI парсеров. Этот инструмент можно считать "ядерным вариантом", потому что он заставляет ботов выполнять вычисления похожие на майнинг криптовалюты. Но это неплохая альтернатива для тех, кто не может или не хочет использовать Cloudflare. Посмотреть детали





Как установить skype в calculate. Подскажите пошагово.
https://wiki.gentoo.org/wiki/Skype
Ну или просто в терминале
emerge —ask net-im/skypeforlinux
-l —oneshot — Установить пакет, но не добавлять его в файл world;
-l надо заменить на -1
не указано в явном виде главной проблемы при установке : практически все 95 процентов устанавливаемых программ или их компонент помечены как masked и установка не производится
и получается надо куда то сотню зависимостей вбивать и снимать маскирование со всех?