Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Gentoo_x86_Handbook.doc
Скачиваний:
25
Добавлен:
19.09.2019
Размер:
924.16 Кб
Скачать

1.D. Лицензии

Начиная с Portage версии 2.1.7, вы можете принять или отклонить приложения, в зависимости от его лицензии. Все пакеты в дереве содержат запись LICENSE в своих ебилдах. Запуск команды emerge --search имя_пакета покажет вам лицензию пакета.

по умолчанию, Portage разрешает все лицензии, кроме Соглашения с Конечным Пользователем (EULA), потому что она требует прочтения и соглашения с ней.

Переменная, которая контролирует разрешенные лицензии, называется ACCEPT_LICENSE, и ее можно установить в /etc/make.conf:

Код 4.1: Значение ACCEPT_LICENSE по умолчанию в /etc/make.conf

ACCEPT_LICENSE="* -@EULA"

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

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

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

Код 4.2: Определяем лицензию truecrypt в package.license

app-crypt/truecrypt truecrypt-2.7

Это разрешит установку версий truecrypt, имеющих лицензию truecrypt-2.7, но не версий с лицензией truecrypt-2.8.

Важно: Лицензии сохраняются в /usr/portage/licenses, а группы лицензий находятся в /usr/portage/profiles/license_groups. Первая запись на каждой строке (заглавными буквами) это имя группы лицензий, а затем каждая запись это индивидуальная лицензия.

Группы лицензий, определенные в ACCEPT_LICENSE, предваряются знаком @. Вот пример системы, которая глобально разрешает группу GPL-совместимых лицензий, а также несколько других групп и индивидуальных лицензий.

Код 4.3: ACCEPT_LICENSE в /etc/make.conf

ACCEPT_LICENSE="@GPL-COMPATIBLE @OSI-APPROVED @EULA atheros-hal BitstreamVera"

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

Код 4.4: Используем только свободные лицензии

ACCEPT_LICENSE="-* @FREE"

В данном случае «свободная» по определению FSF и OSI. Любой пакет, чья лицензия не отвечает этим требованиям, не будет установлен на вашей системе.

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

Про слоты, виртуальные пакеты, ветки, архитектуры и профили

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

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

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

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

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

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

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

Код 5.1: Portage предупреждает о блокированных пакетов (c --pretend)

[blocks B ] mail-mta/ssmtp (is blocking mail-mta/postfix-2.2.2-r1)

Код 5.2: Portage предупреждает о блокированных пакетов (без --pretend)

!!! Error: the mail-mta/postfix package conflicts with another package.

!!! both can't be installed on the same system together.

!!! Please use 'emerge --pretend' to determine blockers.

Ебилды содержат специфические поля, которые информируют Portage о своих зависимостях. Есть два вида зависимостей - «build»-зависимости, определяемые в DEPEND и «run-time»-зависимости, определяемые в RDEPEND. Когда одна из этих зависимостей явно помечает пакет (возможно виртуальный), как несовместимый, то включается блокировка.

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

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

Вы также можете увидеть блокирующие пакеты с определенной версией, например <media-video/mplayer-1.0_rc1-r2. В данном случае, обновление до более новой версии блокирующего пакета уберет блокировку.

Возможно также, чт одва пакета, которые только должны установиться, блокируют друг друга. В этом редком случае, вы должны определить, почему вам необходимы именно оба. В большинстве случаев вы можете обойтись и одним из пакетов. Если же это не так, отправьте баг в систему багтрекинга Gentoo (http://bugs.gentoo.org/)

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

Код 5.3: Portage предупреждает о замаскированных пакетах

!!! all ebuilds that could satisfy "bootsplash" have been masked.

Код 5.4: Portage предупреждает о замаскированных пакетах - причина

!!! possible candidates are:

- 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 означает, что приложение недостаточно протестировано, чтобы поместить его в стабильную ветку. Подождите несколько дней или недель, и попробуйте снова.

  • Ключевое слово -arch или -* означает, что приложение не работает на вашей архитектуре. Если вы верите, что пакет работает, напишите баг на нашем сайте (http://bugs.gentoo.org)

  • Ключевое слово missing означает, что приложение не было протестировано для вашей архитектуры. Попросите команду портирование архитектуры протестировать пакет, либо протестируйте сами и доложите о ваших находках на нашем сайте (http://bugs.gentoo.org)

  • package.mask означает, что пакет был определен как нерабочий, нестабильный, и был помечен как «лучше не использовать»

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

  • license означает, что лицензия приложения не совместима с вашей настройкой ACCEPT_LISENSE. Вы должны явно разрешить лицензию или группу лицензий приложения, прописав ее в /etc/make.conf, либо в /etc/portage/package.license. Обратитесь к разделу «Лицензии» для того, чтобы понять, как работают лицензии.

Необходимость изменить USE-флаги

Код 5.5: Portage предупреждает о необходимости изменить USE-флаг

The following USE changes are necessary to proceed:

#required by app-text/happypackage-2.0, required by happypackage (argument)

>=app-text/feelings-1.0.0 test

Ошибка может быть показана и так, если флаг --autounmask не установлен:

Код 5.6: Portage показывает ошибку, требующую изменить USE-флаг

emerge: there are no ebuilds built with USE flags to satisfy "app-text/feelings[test]".

!!! One of the following packages is required to complete your request:

- app-text/feelings-1.0.0 (Change USE: +test)

(dependency required by "app-text/happypackage-2.0" [ebuild])

(dependency required by "happypackage" [argument])

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

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

Отсутствующие зависимости

Код 5.7: Portage предупреждает об отсутствующей зависимости

emerge: there are no ebuilds to satisfy ">=sys-devel/gcc-3.4.2-r4".

!!! Problem with ebuild sys-devel/gcc-3.4.2-r2

!!! Possibly a DEPEND/*DEPEND problem.

Приложение, которое вы пытаетесь установить, зависит от другого пакета, который не существует для вашей системы. Пожалуйста, проверьте список багов (http://bugs.gentoo.org/), чтобы определить, известно ли об этой ошибке, и если нет, то сообщите об этом. Если только вы не смешиваете различные ветки, это не должно произойти, и, поэтому, является багом.

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

Код 5.8: Portage предупреждает о неоднозначном имени ебилда

[ Results for search key : listen ]

[ Applications found : 2 ]

* dev-tinyos/listen [ Masked ]

Latest version available: 1.1.15

Latest version installed: [ Not Installed ]

Size of files: 10,032 kB

Homepage: http://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: http://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 сообщит вам о возможных совпадениях, из которых можно выбрать.

Круговые зависимости

Код 5.9: Portage предупреждает о круговых зависимостях

!!! Error: circular dependencies:

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

Два (или более) пакетов, которые вы хотите установить, зависят друг от друга, и, поэтому, не могут быть установлены. Скорее всего это баг в дереве Portage. Пожалуйста, обновите дерево после небольшой паузы, и попробуйте снова. Вы можете также проверить наш сайт (http://bugs.gentoo.org/), чтобы узнать, знают ли про этот случай, и если нет, то сообщить о нем.

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

Код 5.10: Portage предупреждает об ошибке загрузки

!!! Fetch failed for sys-libs/ncurses-5.4-r5, continuing...

(...)

!!! Some fetch errors were encountered. Please see above for details.

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

Повторите попытку через час, чтобы посмотреть, осталась ли проблема.

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

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

!!! Trying to unmerge package(s) in system profile. 'sys-apps/portage'

!!! This could be damaging to your system.

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

Ошибки проверки дайджеста

Иногда, когдла вы пытаетесь установить пакет, этого не происходит, и появляется ошибка:

Код 5.12: Ошибка проверки дайджеста

>>> checking ebuild checksums

!!! Digest verification failed:

Это является знаком, что с деревом Portage что-то не так — часто это потому, что разработчик допустил ошибку при коммите пакета в дерево.

Когда проверка дайджеста не проходит, не пробуйте обновить дайджест пакета сами. Запуск «ebuild foo manifest» не починит проблему, а почти наверняка сделает еще хуже!

Вместо этого, подождите час или два, чтобы дерево обновилось. Скорее всего, ошибку уже заметили, но может понадобиться некоторое время, чтобы починить дерево Portage. Пока вы ждете, проверьте страницу с багами (http://bugs.gentoo.org/), и посмотреть, не написал ли кто-нибудь про этот баг. Если нет, не стесняйтесь, и напишите баг для сломанного пакета.

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

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

2. USE-флаги

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]