пакеты gentoo

      0

При установке пакетов в gentoo вы можете столкнуться с различного рода проблемами, которые обязательно рано или поздно появятся. Далее мы подробно разберем какие могут возникнуть ситуации и как с ними бороться.

Список установленных вами пакетов храниться в файле world, там будут отображаться только те пакеты которые вы устанавливали сами.

/var/lib/portage/world

Для установки пакетов используется менеджер «emerge»:
emerge имя_пакета

Для более детального контроля над установкой:

-a → Спрашивать перед установкой;
-v → Показать более подробную информацию;
-p → Не устанавливать пакет, только показать информацию;
-b → Только скомпилировать пакет без установки;
-O → Установить пакет, не учитывая зависимости;
-o → установить только зависимости пакета;
-l --oneshot → Установить пакет, но не добавлять его в файл world;

Например чтобы вывести всю информацию о пакете(use флаги, полное имя, размер а также задать вопрос устанавливать ли пакет) введите следующую команду:
sudo emerge -av имя_пакета

Здесь красным цветом отмечены активные USE флаги, синим неактивные, салатовым — те, которые будут активированы, например, при переустановке или обновлении.

Буква возле слова «ebuild» означает действие которое будет происходить с пакетом:

N → пакет будет установлен;
S → установка в новый слот;
U → обновление версии пакета;
D → установка более старой версии пакета;
R → переустановка;
F → необходима ручная загрузка исходников пакета;
f → то же самое, только файлы уже загружены;
B → пакет конфликтует с другими пакетами, но конфликт будет решен автоматически;
b → пакет конфликтует с другими пакетами, конфликт нужно решать вручную.

Если к пакету необходимо применить дополнительные USE флаги можно указать их прямо в команде с помощью локальной переменной:
USE="флаг1 флаг2" sudo emerge имя_пакета

Для установки 32-битных пакетов:
nano /etc/portage/package.use
категория_пакета/имя_пакета abi_x86_32

Если необходимо установить определенную версию пакета и не обновлять его. Необходимо скрыть все версии выше нужной, например все версии выше 14.0.3:
sudo nano /etc/portage/package.mask
>категория_пакета/имя_пакета-14.0.3

> -все, что новее указанной версии;
>= -все, что новее или равно указанной версии;
< -все, что старее указанной версии;
<= -все, что старее или равно указанной версии;
= -все, что равно указанной версии;

А затем устанавливаем пакет:
sudo emerge -av имя_пакета

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

Mistake keyword
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

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

Warning
Вводить нужно именно так, как указано в ошибке т.е =net-im/skype-4.3.0.37-r5 ~amd64 знак =, > или другие тоже нужно писать.
Mistake mask
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)

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

Mistake license
The following license changes are necessary to proceed:
(see «package.license» in the portage(5) man page for more details)
# required by app-emulation/virtualbox-bin (argument)
=app-emulation/virtualbox-bin-5.0.32.112930 PUEL

Это значит что пакету требуется лицензия которую он не может принять по умолчанию.
nano /etc/portage/package.license
категория_пакета/имя_пакета

Mistake
The following USE changes are necessary to proceed:
   (see «package.use» in the portage(5) man page for more details)
# required by www-client/firefox-45.8.0::gentoo
# required by www-client/conkeror-1.0_pre20140212::gentoo
# required by conkeror (argument)
>=dev-lang/python-2.7.12:2.7 sqlite

Данная ошибка говорит о следующем, чтобы собрать вышеуказанный список пакетов, нужно пакет >=dev-lang/python-2.7.12:2.7 собрать с юзфлагом «sqlite», для этого:
echo ">=dev-lang/python-2.7.12:2.7 sqlite" >> /etc/portage/package.use/custom

Mistake
!!! The following installed packages are masked:
— sys-power/cpufreqd-2.4.2::gentoo (masked by: package.mask)
/usr/portage/profiles/package.mask:
# Pacho Ramos (06 Apr 2014)
# Multiple issues and dead for ages (#327735).
# You can use cpupower (from sys-power/cpupower or
# sys-apps/linux-misc-apps). Removal in a month.

Данная ошибка означает, что пакет sys-power/cpufreqd, объявлен как плохой и будет удален через месяц, но он установлен в вашей системе, поэтому его необходимо удалить, а за место него установить предложенный пакет sys-power/cpupower или sys-apps/linux-misc-apps.

Изменение флагов в отдельных пакетах:
Например вы устанавливаете какую-либо программу, а она тянет за собой множество пакетов и вам необходимо изменить какой либо USE флаг.

[ebuild N ] app-doc/doxygen-1.8.13-r1::gentoo USE=»clang debug -doc -dot -doxysearch -latex -qt5 (-sqlite)» 4,784 KiB
[ebuild N ] dev-cpp/libcmis-0.5.2_pre20160820:0.5::gentoo USE=»-man -static-libs {-test}» 0 KiB
[ebuild N ] app-text/libwpg-0.3.1:0.3::gentoo USE=»-doc -static-libs» 0 KiB
[ebuild N ] app-text/libwps-0.4.4-r1::gentoo USE=»debug doc -static-libs -tools» 0 KiB
[ebuild N ] app-text/libmwaw-0.3.8::gentoo USE=»-doc -static-libs» 0 KiB
[ebuild N ] media-libs/libfreehand-0.1.1::gentoo USE=»-doc -static-libs» 0 KiB

Чтобы изменить флаги в отдельном пакете необходимо его добавить в package.use
При добавлении необходимо указать знаки <,>,=,(все, что старее, новеее или равно указанной версии)

Пример:

[ebuild N ] app-doc/doxygen-1.8.13-r1::gentoo USE=»clang debug -doc -dot -doxysearch -latex -qt5 (-sqlite)» 4,784 KiB

чтобы в этом пакете включить флаг doc и выключить флаг clang, необходимо прописать следующее:
echo '>=app-doc/doxygen-1.8.13-r1 doc -clang' >> /etc/portage/package.use

Частенько возникают конфликты USE флагов. Для их устранения нужно посмотреть какие пакеты конфликтуют и убрать или добавить к одному из пакетов нужные флаги с помощью

/etc/portage/package.use

REQUIRED_USE=»foo? ( bar )» Если foo установлен, то bar должен быть установлен.
REQUIRED_USE=»foo? ( !bar )» Если foo установлен, то bar не должен быть установлен.
REQUIRED_USE=»foo? ( || ( bar baz ) )» Если foo установлен, то bar или baz должен быть установлен.
REQUIRED_USE=»^^ ( foo bar baz )» Только один из foo, bar или baz должен быть установлен.
REQUIRED_USE=»|| ( foo bar baz )» Хотя бы один из foo bar или baz должен быть установлен (но можно больше).
REQUIRED_USE=»?? ( foo bar baz )» Установка необязательна, но только один из foo bar или baz может быть установлен.

Добавить комментарий