Что такое portage linux

Содержание
  1. 1. Введение в Portage¶
  2. Добро пожаловать в Portage¶
  3. Дерево портежей¶
  4. Сборочные файлы ebuild¶
  5. Обновление дерева портежей¶
  6. Обслуживание программного обеспечения¶
  7. Поиск программ¶
  8. Установка программ¶
  9. Обнаружение документации к пакету¶
  10. Удаление пакета¶
  11. Обновление системы¶
  12. Метапакеты¶
  13. Когда Portage жалуется. ¶
  14. Слоты, виртуалы, ветви, архитектуры и профили¶
  15. Блокировка пакетов¶
  16. Маскировка пакетов¶
  17. Отсутствие нужных пакетов¶
  18. Неоднозначность названия пакета¶
  19. Циклические зависимости¶
  20. Ошибка извлечения¶
  21. Защита системного профиля¶
  22. Gentoo Linux. Portage: первые шаги
  23. Portage: Первые шаги
  24. Дерево Portage
  25. Ebuilds
  26. Обновление дерева Portage
  27. Поддержка программного обеспечения
  28. Поиск программного обеспечения
  29. Установка программного обеспечения
  30. Поиск документации для установленного пакета
  31. Удаление программного обеспечения
  32. Обновление системы
  33. Метапакеты
  34. Лицензии
  35. Когда Portage ругается
  36. Терминология
  37. Заблокированные пакеты
  38. Замаскированные пакеты
  39. Необходимые изменения USE флагов
  40. Недостающие зависимости
  41. Неоднозначное имя ебилда
  42. Циклические зависимости
  43. Ошибка загрузки
  44. Защита профилем
  45. Ошибка проверки digest

1. Введение в Portage¶

Добро пожаловать в Portage¶

Благодаря высокой гибкости и чрезвычайно богатым возможностям Portage можно признать одним из лучших средств управления программным обеспечением из существующих в Linux. Portage написана на Python и Bash.

Большинство пользователей взаимодействует с Portage с помощью команды emerge . Эта глава не призвана заменить страницу справки emerge . Просмотреть все возможные параметры команды emerge можно здесь.

Дерево портежей¶

Сборочные файлы ebuild¶

Говоря о пакетах, мы часто имеем в виду программы, доступные пользователям Calculate через дерево портежей. Дерево портежей — это набор сборочных файлов ebuild, содержащих всю информацию, необходимую Portage для управления программным обеспечением (установки, поиска, извлечения и т.п.) По умолчанию сборочные файлы находятся в /usr/portage и /var/lib/layman/calculate . По второму пути находится оверлей Calculate, который также содержит сборочные ebuild файлы.

Когда Portage выполняет любые действия над пакетами программ, эти действия опираются на сборочные файлы, имеющиеся в системе. Поэтому необходимо регулярно обновлять сборочные файлы, чтобы Portage знал о новых программах, обновлениях, связанных с безопасностью и т.д.

Обновление дерева портежей¶

Дерево портежей обычно обновляется с помощью rsync . Обновление выполнить довольно просто, так как запуск rsync обеспечивается командой emerge :

Если rsync выполнить невозможно из-за ограничений межсетевого экрана, дерево портежей все-таки можно обновить из ежедневных «снимков». Для автоматического извлечения и установки в системе новейшего снимка служит утилита emerge-webrsync :

Важно вместе с деревом портежей выполнять обновление оверлея Calculate. Оверлей хранится в Git, его обновление можно выполнить утилитой layman :

Выполнить обновление сразу дерева портежей и оверлея Calculate, а также базы данных программы eix можно одной командой:

Обслуживание программного обеспечения¶

Поиск программ¶

Для поиска программ в дереве портежей по названию можно использовать встроенные возможности команды emerge . По умолчанию команда emerge —search выдает названия пакетов, соответствующих (как полностью, так и частично) заданному условию поиска.

Например, чтобы найти все пакеты, содержащие «pdf» в названии:

Для поиска пакетов еще и по тексту описания можно использовать параметр —searchdesc (или -S ):

Существуют вспомогательные средства для ускорения и автоматизации стандартных задач типа поиска по дереву портежей, формирования списка установленных пакетов, принадлежащих какой-либо категории и т.д. Для выполнения быстрого поиска пакета используйте утилиту eix . Пример поиска браузера firefox :

Пример поиска всех пакетов, в описании которых присутствует слово «browser».

Установка программ¶

После того, как вы нашли нужное программное обеспечение, его можно легко установить с помощью команды emerge. Вот пример установки пакета gnumeric :

Так как множество приложений зависит друг от друга, любая попытка установить какой-либо пакет программ может повлечь за собой также установку дополнительных пакетов. Не беспокойтесь, Portage справится и с этим. Если вы захотите выяснить, что именно Portage собирается установить вместе с нужным вам пакетом, добавьте параметр -p (или —pretend ). Например:

После команды на установку пакета, Portage загружает из интернета необходимый исходный код (при необходимости), и по умолчанию сохраняет его в каталоге /var/calculate/remote/distfiles . После этого пакет распаковывается, компилируется и устанавливается. Если вы хотите, чтобы Portage только загрузил исходный код без его установки, добавьте к команде emerge параметр -f (или —fetchonly ):

Обнаружение документации к пакету¶

Многие пакеты содержат собственную документацию. Иногда USE-флаг doc определяет, следует ли устанавливать документацию к пакету. Проверить наличие USE-флага doc можно командой emerge -vp . Пример:

USE-флаг doc можно включить или отключить как глобально в файле /etc/portage/make.conf/custom, так и для отдельных пакетов, создав файл в директории /etc/portage/package.use и указать в нём флаг. В главе USE-флаги этот вопрос описывается более подробно.

Документация от вновь установленного пакета обычно находится в подкаталоге каталога /usr/share/doc , соответствующем названию пакета. Кроме того, можно вывести список всех установленных файлов утилитой equery . Примеры:

Удаление пакета¶

Когда вы захотите удалить пакет из системы, используйте команду emerge -C (или —unmerge ). Это приведет к удалению из системы всех файлов, установленных пакетом, кроме конфигурационных файлов приложения, изменявшихся после установки. Сохранение конфигурационных файлов позволяет вернуться к работе с пакетом, если вы когда-нибудь решите снова его установить.

Внимание: Portage не проверяет, зависят ли другие пакеты от удаляемого! Однако вы получите предупреждение, если удаление пакета приведет к неработоспособности системы.

После удаления пакета из системы, остаются пакеты, установленные по зависимостям. Чтобы Portage выявила все когда-то нужные пакеты, которые теперь можно удалить, используйте команду emerge -c (или —depclean ). Мы вернемся к этому ниже.

Обновление системы¶

Чтобы система сохранялась в отличной форме (не говоря уже об установке свежайших обновлений, связанных с безопасностью), ее нужно регулярно обновлять. Так как Portage просматривает сборочные файлы только в локальном дереве портежей и оверлее, сперва потребуется обновить их. Обновив дерево портежей, вы сможете обновить систему командой emerge -u world . В следующем примере мы также пользуемся параметром -a (или —ask ), который поручает Portage вывести список пакетов, которые она собирается обновить, и спросить вас, можно ли продолжать:

Portage будет искать более новые версии установленных приложений. Однако проверяется только версии приложений, явно установленных вами, а не тех, от которых они зависят. Если вы хотите обновить каждый пакет в системе, добавьте аргумент -D (или —deep ):

Поскольку обновления, относящиеся к безопасности, случаются и в пакетах, которые были установлены по зависимостям, рекомендуется изредка запускать эту команду.

Если вы меняли какие-либо из USE-флагов, возможно, потом вы также захотите добавить параметр -N (или —newuse ). Тогда Portage проверит, требует ли изменение установки новых пакетов или перекомпиляции существующих:

Метапакеты¶

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

Если вы когда-либо захотите удалить из системы такой пакет, запуск emerge —unmerge не возымеет должного эффекта, так как пакеты, от которых он зависит, останутся в системе.

В Portage существует возможность удаления остаточных зависимосей, но так как зависимости программ меняются со временем, доступность программного обеспечения, прежде всего требуется полностью обновить всю систему, включая реализацию изменений, произведенных путем модификации USE-флагов. После этого можно запустить emerge -c (или —depclean ), чтобы удалить остаточные зависимости. Когда это сделано, вам потребуется пересобрать приложения, ранее динамически связанные с удаленными пакетами, в которых они теперь не нуждаются.

Читайте также:  Windows 10 перенести системный диск

Со всем этим управляются следующие три команды:

Когда Portage жалуется. ¶

Слоты, виртуалы, ветви, архитектуры и профили¶

Как уже сказано, Portage — чрезвычайно мощная система, поддерживающая множество возможностей, не хватающих другим системам управления программами. Чтобы это стало понятно, разберем несколько аспектов Portage, не вникая в подробности.

С помощью Portage разные версии отдельного пакета могут сосуществовать в одной системе. В то время, как другие системы управления стремятся называть пакеты в соответствии с версией (например freetype и freetype2 ), в Portage используется технология слотов (SLOT), или областей. Пакет присваивает определенный слот своей версии. Пакеты с разными слотами способны сосуществовать в одной системе. Например, у пакета freetype есть ebuild как со SLOT=»1″ , так и со SLOT=»2″ .

Существуют также пакеты, выполняющие одни и те же функции, но отличающиеся в реализации. Например metalogd , sysklogd и syslog-ng являются системными службами журналирования. Приложения, использующие «системный журнал», не могут зависеть от одной конкретной программы, например от metalogd , так как остальные программы ничем не хуже. В Portage предусмотрены виртуальные пакеты: каждая служба журналирования предоставляет virtual/syslog , и в результате в приложениях можно указывать зависимость от virtual/syslog .

Программное обеспечение может располагаться в различных ветвях дерева портежей. По умолчанию в системе разрешено только использование стабильных пакетов. Большинство новых программ при поступлении включаются в тестовую ветвь, что указывает на необходимость дополнительного тестирования перед тем, как включить их в стабильные. Хотя в дереве портежей и видны сборочные файлы для таких программ, Portage не станет обновлять их до тех пор, пока они не будут помещены в стабильную ветвь.

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

Каждая установка Gentoo придерживается определенного профиля, который содержит, помимо прочего, список пакетов, необходимых для работоспособности системы.

Блокировка пакетов¶

Пример предупреждения о заблокированных пакетах (с —pretend)

В файлах ebuild есть специальные поля, сообщающие Portage о зависимостях. Возможны два вида зависимости: зависимость сборки, объявленная в DEPEND , и зависимость выполнения, объявленная в RDEPEND . Когда одна из этих зависимостей явно указывает на несовместимость пакета или виртуального пакета, это вызывает блокировку.

Для разблокировки можно отказаться от установки пакета или предварительно удалить конфликтующий пакет. В данном примере можно отказаться от установки postfix или сначала удалить ssmtp .

Также возможно, что два пакета, подлежащие установке, блокируют друг друга. В этом редчайшем случае следует определить, зачем вам устанавливать оба пакета. В большинстве случаев можно обойтись одним.

Маскировка пакетов¶

Пример предупреждения о замаскированных пакетах:

Пример предупреждения о замаскированных пакетах с указанием причины:

Когда вы собираетесь установить пакет, не предназначенный для вашей системы, выдается ошибка маскировки. Нужно попытаться установить другую программу, существующую для вашей системы, или дождаться, пока пакет станет доступным. Всегда есть причина, по которой пакет замаскирован:

arch: пакет недостаточно проверен для помещения в стабильную ветвь. Подождите несколько дней или недель и попробуйте установить его еще раз.

  • ключ -arch или ключ —*: пакет не работоспособен в вашей архитектуре. Если вы полагаете, что он работает, сообщите об этом в bugzilla.
  • ключ отсутствует: пакет еще не тестировался в вашей архитектуре. Попросите группу портирования в архитектуру проверить пакет, или протестируйте его за них и сообщите о своих изысканиях в bugzilla.
  • package.mask: обнаружено повреждение пакета, нестабильность или что-то худшее, и пакет заблокирован специально.
  • profile: пакет считается не предназначенным для вашего профиля. В случае установки приложение может вызвать сбой системы или просто несовместимо с используемым профилем.
  • Отсутствие нужных пакетов¶

    Пример предупреждения об отсутствии пакета:

    Приложение, которое вы пытаетесь установить, зависит от другого пакета, недоступного вашей системе. Пожалуйста, проверьте, есть ли такой запрос в bugzilla , а если нет, сообщите об ошибке. Если вы не смешиваете ветви, такого не должно происходить, и это — явная ошибка.

    Неоднозначность названия пакета¶

    Пример предупреждения о повторяющихся именах ebuild:

    Название приложения, которое вы собираетесь установить, соответствует более чем одному пакету. Требуется также указать название категории. Portage предложит вам возможные варианты.

    Циклические зависимости¶

    Пример предупреждения Portage о циклических зависимостях:

    Два или более пакета, которые вы хотите установить, взаимно зависимы, и в результате их установка невозможна. Скорее всего, это ошибка в дереве портежей. Пожалуйста, выждав время, обновите дерево портежей, и попытайтесь снова. Вы можете также проверить, есть ли эта ошибка в bugzilla , и если нет, сообщить о ней.

    Ошибка извлечения¶

    Пример предупреждения Portage об ошибке извлечения:

    Portage не смогла загрузить исходный код данного приложения и попытается продолжить установку других приложений (если запланирована). Эта ошибка может произойти из-за неправильно синхронизированного зеркала, или из-за того, что ebuild указывает на неверное место. Сервер, где находятся исходные коды, также может почему-либо не работать.

    Повторите действие через час, чтобы посмотреть, повторится ли эта ошибка.

    Защита системного профиля¶

    Пример предупреждения Portage о пакете, защищенном профилем:

    Вы попросили удалить пакет, входящий в состав базовых пакетов вашей системы. Он отмечен в вашем профиле как обязательный, и его не следует удалять из системы.

    Источник

    Gentoo Linux. Portage: первые шаги

    Portage: Первые шаги

    Portage является одним из самых заметных нововведений Gentoo в управлении программным обеспечением. Благодаря высокой гибкости и чрезвычайно богатым возможностям, Portage зачастую считается лучшим средством управления программным обеспечением для Linux.

    Portage полностью написана на Python и Bash, и в результате полностью прозрачна для пользователей, поскольку это языки сценариев.

    Большинство пользователей будут работать с Portage посредством утилиты emerge . Для просмотра всех доступных опций, обратитесь к странице руководства :

    Дерево Portage

    Ebuilds

    Когда в документации Gentoo говорится о пакетах (packages), подразумеваются названия программного обеспечения, которое доступно для пользователей Gentoo в дереве portage. Дерево portage — это коллекция ебилдов (ebuilds), файлов, содержащих всю необходимую для поддержки программного обеспечения информацию (установка, поиск, запрос, . ). По умолчанию, эти ебилды находятся в директории /usr/portage .

    Каждый раз, при работе portage с программным обеспечением, будет использоваться база ебилдов. Поэтому, важно регулярно обновлять дерево portage, так-как там содержится информация о новых программах, обновлениях безопасности и т.д.

    Обновление дерева Portage

    Обычно дерево portage обновляется с помощью rsync (программа для UNIX-подобных систем, которая выполняет синхронизацию файлов и каталогов в двух местах с минимизированием трафика, используя кодирование данных при необходимости). Обновление выполняется довольно просто, потому как emerge умеет работать с rsync:

    В случае, если обновить дерево с помощью rsync не удается (например, шлюз блокирует порт rsync 873/tcp), можно использовать emerge-webrsync для обновления с помощью снапшотов (snapshots). Это — ежедневно генерируемые Gentoo снимки дерева portage:

    Поддержка программного обеспечения

    Поиск программного обеспечения

    Есть несколько способов поиска программ в дереве portage. Одним из способов является использование emerge. По умолчанию, emerge —search возвращает имена пакетов, названия которых удовлетворяют (полностью или частично) заданное условие поиска .

    Читайте также:  Mac os перенести образ

    Например, чтобы найти все пакеты, содержащие «pdf» в названии:

    Для поиска по описаниям, используйте —searchdesc ( или -S) :

    Обратите внимание, что результат содержит подробную информацию. Поля довольно информативны, поэтому вдаваться в подробности их значения не имеет смысла :

    vrbehr/cups-pdf/
    Description: Provides a virtual printer for CUPS to produce PDF files.
    License: GPL-2

    Установка программного обеспечения

    Когда название требуемого программного обеспечения уже известно, установка его не составляет труда. Производится она всего одной командой emerge. Например, для установки gnumeric:

    Поскольку многие приложения зависят от других, попытка установить определенный пакет программного обеспечения так-же может привести к установке нескольких зависимостей. Не волнуйтесь, portage умеет обрабатывть зависимости. Чтобы выяснить, что portage будет устанавливать, добавьте аргумент —pretend . Например:

    Во время установки пакета, Portage скачивает необходимый исходный код из интернета (если необходимо) и по умолчанию сохраняет его в каталоге /usr/portage/distfiles/ . После этого пакет будет распаковываться, компилироваться и затем устанавливаться. Для загрузки исходного кода без его установки, добавьте аргумент —fetchonly к команде emerge:

    Поиск документации для установленного пакета

    Многие пакеты содержат собственную документацию. Устанавливать пакет документации или нет определяет USE флаг doc . Чтобы посмотреть, используется флаг doc для пакета или нет, используйте emerge -pv ИМЯ_ПАКЕТА :

    Чтобы включить установку документации только для некоторых пакетов, внесите требуемый пакет в /etc/portage/package.use с указанием использовать флаг doc.

    После установки пакета, его документацию, как правило, можно найти в подкаталоге с именем пакета в каталоге /usr/share/doc/ . Также, список всех установленных файлов можно вывести с помощью команды equery , которая является частью пакета app-portage/gentoolkit .

    Удаление программного обеспечения

    Для удаления программного обеспечения из системы, используется emerge —unmerge . Эта команда удалит все файлы, установленные с указанным пакетом, из системы. Одним исключением из этого являются файлы конфигурации этого приложения, если они были изменены пользователем. Сохранение конфигурационных файлов позволяет пользователям продолжать работать с пакетом, без необходимости реконфигурации при повторной установке пакета.

    Внимание: Portage не проверяет зависимость остальных пакетов от удаляемого пакета, но предупреждает при попытке удаления важного для системы пакета.

    Когда пакет будет удален из системы, зависимости этого пакета, которые были установлены автоматически при его установке, останутся в системе. Чтобы Portage мог найти и удалить все ненужные зависимости, используйте emerge —depclean , функциональность которого описана далее.

    Обновление системы

    Для поддержания системы в актуальном состоянии (не говоря уже об установке последних обновлений безопасности), необходимо регулярно ее обновлять. Так как Portage работает на основании ебилдов в дереве portage, первым что нужно сделать — это обновить дерево портежей. Когда дерево обновлено, система может быть обновлена с помощью: emerge —update @world . В следующем примере, аргумент —ask используется для отображения списка пакетов, которые будут обновляться, и запроса подтверждения на их обновление:

    Portage будет искать более новые версии установленных приложений. Тем не менее, он будет проверять только версии явно установленных пакетов (перечисленных в /var/lib/portage/world) — это не полная проверка их зависимостей. Чтобы обновить пакеты вместе с из зависимостями — добавьте аргумент —deep :

    Тем не менее, это не означает «все пакеты»: некоторые пакеты в системе требуются во время процесса компиляции и сборки пакетов. Но, как только пакет будет установлен, эти зависимости станут не актуальны. Portage называет их «зависимостями сборки» (build dependencies). Чтобы включить их в цикл обновления, добавьте —with-bdeps=у :

    Поскольку обновления безопасности, случаются и в пакетах явно не установленных в системе (но которые установлены в качестве зависимостей других программ), рекомендуется время от времени запускать эту команду.

    Если были изменены параметры USE, рекомендуется также добавить аргумент —newuse . Portage проверит требуется ли установка новых пакетов или перекомпиляця существующих:

    Метапакеты

    Некоторые пакеты в дереве портежей не имеют реального содержания, но используются для установки набора других пакетов. Например, пакет kde-base/kde-meta полностью устанавливает среду KDE, устанавливая различные пакеты kde в качестве зависимостей.

    Удаление такого пакет из системы с использованием emerge —unmerge не будет иметь большого эффекта, так как все зависимости останутся в системе.

    Portage также имеет функционал для удаления ненужных зависимостей. Но, поскольку доступность программного обеспечения динамически зависима, важно, чтобы сначала была обновлена вся система полностью, в том числе и новые изменения, применяемые при изменении USE флагов. После этого можно запустить emerge —depclean и удалить ненужные зависимости. По завершении, возможно будет необходимо пересобрать пакеты, динамически связанные с удаленными пакетами.

    Все это осуществляется следующими тремя командами:

    revdep-rebuild является частью пакета app-portage/gentoolkit . Не забудьте его установить:

    Лицензии

    Начиная с версии 2.1.7 Portage, можно разрешать или запрещать установку программного обеспечения на основании требуемой лицензии. Все пакеты в дереве содержат запись, указывающую на лицензию их ебилдов. Запуск emerge —search PACKAGENAME покажет информацию о лицензии пакета.

    По умолчанию, Portage разрешает все лицензии, за исключением End User License Agreements (EULAs), которая требует чтения и подписания соглашения о принятии.

    Переменная, которая управляет разрешенными лицензиями, называется ACCEPT_LICENSE . Установить ее значение можно в файле /etc/portage/make.conf . В следующем примере, показано ее значение по умолчанию:

    При этой конфигурации, пакеты, требующие EULA, не будут устанавливаться.

    ACCEPT_LICENSE можно установить глобально в файле /etc/portage/make.conf или для отдельного пакета в /etc/portage/package.license .

    Например, для того чтобы разрешить для app-crypt/truecrypt использовать лицензию truecrypt-2.7, добавьте в файл /etc/portage/package.license следующее:

    В этом примере разрешается установка версий app-crypt/truecrypt требующих лицензию truecrypt-2.7, но не версий с лицензией truecrypt-2.8.

    Важно: Лицензии хранятся в /usr/portage/licenses/, а группы лицензий в /usr/portage/profiles/license_groups. Первая запись каждой строки ПРОПИСНЫЕ буквы названия группы лицензий, и каждая последующая запись это индивидуальная лицензия.

    Группы лицензий, определенные в ACCEPT_LICENSE начинаются со знака @. Обычно требуется разрешать установку только свободного программного обеспечения и документации . Для этого удалите все принятые в настоящее время лицензии (с помощью — * ), а затем разрешите лицензии только из группы @FREE следующим образом:

    В этом случае, «FREE», в основном, определяется FSF и OSI. Пакеты, лицензии которых не соответствует этим требованиям, не будут установлены.

    Когда Portage ругается

    Терминология

    Как отмечалось ранее, Portage чрезвычайно мощный инструмент и поддерживает множество функций, которые отсутствуют в других инструментах управления ПО. Чтобы понять это, мы объясним некоторые аспекты Portage, не вдаваясь в излишние подробности.

    С помощью Portage разные версии отдельного пакета могут сосуществовать в одной системе. В то время как другие системы управления стремятся называть пакеты в соответствии с версией (например freetype и freetype2), Portage использует технологию под названием SLOTs (слоты). Пакет присваивает определенный слот своей версии. Пакеты с разными слотами способны сосуществовать в одной системе. Например, пакет freetype имеет ебилды с SLOT=»1″ и SLOT=»2″.

    Есть также пакеты, выполняющие одинаковые функции, но различающиеся реализацией. Например, metalogd, sysklogd и syslog-ng являются системными службами журналирования. Приложение, которое полагается на наличие в системе «системного журнала» не может зависеть, например от metalogd, а остальные программы от syslog-ng. В Portage предусмотрены виртуальные пакеты: каждая служба журналирования числится как «исключительная» зависимость службы журналирования в виртуальном пакете журналирования ( virtual/logger ). Так что приложения могут зависеть от пакета virtual/logger. При установке пакета virtual/logger будет устанавливаться служба журналирования, указанная первой в его списке, если конечно пакет службы журналирования еще не был установлен.

    Читайте также:  У линукса нет будущего

    Программное обеспечение в дереве портежей может располагаться в различных ветвях. По умолчанию система принимает только те пакеты, которые Gentoo считает стабильными. Большинство новых пакетов при добавлении в дерево, будут помещены в тестовую ветвь. Это значит, что для них требуется дополнительное тестирование, прежде чем они будут отмечены как стабильные. Несмотря на то, что сборочные файлы для такого программного обеспечения есть в дереве портежей, Portage не станет обновлять их, прежде чем они будут помещены в стабильную ветвь.

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

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

    Заблокированные пакеты

    В файлах ebuild содержатся определенные поля, сообщающие Portage о зависимостях. Есть два возможных вида зависимостей: «зависимость сборки», объявленная в DEPEND и «зависимость выполнения», объявленная в RDEPEND. Когда одна из них явно помечает пакет или виртуальный пакет как несовместимый, возникает блокировка.

    Последние версии Portage достаточно умны, чтобы обойти незначительные блокировки без вмешательства пользователя. Но иногда такие блокировки должны быть решены вручную.

    Для решения блокировки, пользователи могут или не устанавливать пакет, или удалить конфликтующий пакет. В данном примере, можно отказаться от установки postfix или удалить ssmtp.

    Иногда бывают также блокирующие пакеты с конкретными атомами, например . В этом случае, обновление до более новой версии блокирующего пакета снимет блокировку.

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

    Замаскированные пакеты

    — gnome-base/gnome-2.8.0_pre1 (masked by:

    x86 keyword)
    — lm-sensors/lm-sensors-2.8.7 (masked by: -sparc keyword)
    — sys-libs/glibc-2.3.4.20040808 (masked by: -* keyword)
    — dev-util/cvsd-1.0.2 (masked by: missing keyword)
    — games-fps/unreal-tournament-451 (masked by: package.mask)
    — sys-libs/glibc-2.3.2-r11 (masked by: profile)
    — net-im/skype-2.1.0.81 (masked by: skype-eula license(s))

    При попытке установить пакет, который не доступен для системы, происходит ошибка маскировки. Пользователи должны попытаться установить другую программу, которая доступна для системы, или дождаться, пока пакет не будет отмечен как доступный. Всегда существует причина маскировки пакета:

    arch keyword Приложение не протестировано для помещения в стабильную ветвь. Подождите несколько дней или недель и попробуйте еще раз. -arch keyword или -* keyword Приложение не работает на вашей архитектуре. Если вы считаете, что оно работает, сообщите об ошибке на нашем сайте Bugzilla. missing keyword Приложение не было проверено на вашей архитектуре. Попросите группу портирования в архитектуру проверить пакет, или протестируйте его за них и представьте свои выводы на нашем сайте Bugzilla. package.mask В пакете было обнаружено повреждение, нестабильность или уязвимость, и он был намеренно отмечен как do-not-use (не для использования). profile Пакет не подходит для текущего профиля. Установка приложения может повредить систему, или просто несовместима с профилем, используемым настоящее время . license Лицензия пакета не совместима с настройками ACCEPT_LICENSE. Добавьте лицензию или группу лицензий в принятые, в /etc/portage/make.conf или /etc/portage/package.license

    Необходимые изменения USE флагов

    Такое предупреждение или ошибка возникает, когда пакет, требуемый для установки, зависит не только от другого пакета, но и требует, чтобы пакет был собран с особым USE флагом (или набором USE флагов). В данном примере, пакет app-text/feelings должен быть собран с USE=»test», но этот USE флаг не установлен в системе.

    Для решения этой проблемы, добавьте требуемый USE флаг в глобальные USE флаги в /etc/portage/make.conf, или установите его для конкретного пакета в /etc/portage/package.use.

    Недостающие зависимости

    . Problem with ebuild sys-devel/gcc-3.4.2-r2
    . Possibly a DEPEND/*DEPEND problem.

    Приложение для установки зависит от другого пакета, который не доступен для системы. Пожалуйста, проверьте Bugzilla на наличие решения проблемы. Если решения нет, пожалуйста, сообщите об этом. Если система не настроена на смешение ветвей, этого не должно происходить, и это ошибка .

    Неоднозначное имя ебилда

    * dev-tinyos/listen [ Masked ]
    Latest version available: 1.1.15
    Latest version installed: [ Not Installed ]
    Size of files: 10,032 kB
    Homepage: https://www.tinyos.net/
    Description: Raw listen for TinyOS
    License: BSD

    * media-sound/listen [ Masked ]
    Latest version available: 0.6.3
    Latest version installed: [ Not Installed ]
    Size of files: 859 kB
    Homepage: https://www.listen-project.org
    Description: A Music player and management for GNOME
    License: GPL-2

    . The short ebuild name «listen» is ambiguous. Please specify
    . one of the above fully-qualified ebuild names instead.

    Приложение, которое выбрано для установки, имеет имя соответствующее более чем одному пакету. Для решения этого — укажите наименование категории. Portage будет информировать пользователя о возможных совпадениях для выбора одного из них.

    Циклические зависимости

    ebuild / net-print/cups-1.1.15-r2 depends on ebuild / app-text/ghostscript-7.05.3-r1
    ebuild / app-text/ghostscript-7.05.3-r1 depends on ebuild / net-print/cups-1.1.15-r2

    Два (или более) устанавливаемых пакета зависят друг от друга и поэтому не могут быть установлены. Это, скорее всего, ошибка в одном из пакетов в дереве портежей. Пожалуйста, через некоторое время заново синхронизируйте дерево портов и попробуйте снова. Также может быть полезным проверить Bugzilla на решение возникшей проблемы, и если его нет, сообщить об ошибке.

    Ошибка загрузки

    Portage не смог загрузить исходный код данного приложения и попытается продолжить установку других приложений (если возможно). Эта ошибка может быть из-за неправильно синхронизированного зеркала или потому что неверно указан источник загрузки в ебилде. Сервер, где находятся исходные коды, также может почему-то сломаться.

    Повторите действие через некоторое время, возможно проблема исчезнет.

    Защита профилем

    Пользователь запросил удаление пакета, входящего в состав базовых пакетов системы. Он включен в профиле как обязательный, и, следовательно, не может быть удален из системы.

    Ошибка проверки digest

    digest — md5 сумма файлов, необходимых для установки пакетов.

    Это признак того, что что-то не так с деревом Portage. Зачастую это происходит потому, что разработчик совершил небольшую ошибку при добавлении пакета в дерево.

    Когда проверка digest не удается, не пытайтесь пересоздать его для пакета лично. Это не решит проблему, а почти наверняка сделает только хуже!

    Вместо этого, подождите несколько часов пока дерево не обновится. Вполне вероятно, что ошибка была замечена сразу, но ее исправление может занять некоторое время для синхронизации дерева портежей на зеркалах. Проверьте Bugzilla и посмотрите, есть ли сообщения о возникшей проблеме или поспрашивайте на IRC канале #gentoo. Если упоминаний нет, нужно сообщить о нерабочем пакете.

    После того, как ошибка будет исправлена, повторно синхронизируйте дерево портежей, чтобы обновить исправленный digest.

    Важно: Это не означает повторную синхронизацию дерева несколько раз в течение короткого периода времени! Как указано в политике Rsync (а также при работе «emerge —sync»), пользователи, которые синхронизируются слишком часто будут заблокированы! На самом деле, лучше подождать до следующей плановой синхронизации, и не перегружать rsync сервера ресинхронизациями.

    Источник

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