Как установить несколько версий одного и того же пакета в Gentoo?

9

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

Я знаю о слотах, но они указаны в файлах ebuild, и давайте предположим, что я не хочу редактировать файлы ebuild по нескольким причинам.

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

Есть ли способ установить несколько версий одного и того же пакета? Знаете ли вы о некоторых хитростях Portage для достижения этой цели?

Лоран Пирейн
источник
Это то, что слоты для. Если пакет не имеет слотов, то единственное, о чем я могу подумать, - это создать персональный оверлей и новый пакет / ebuild, который слотится.
Кит
@Keith - Это правильный ответ, почему бы не опубликовать его как ответ?
HedgeMage
@Keith: Если это действительно единственный способ сделать это, то опубликуйте это как ответ, и я с радостью приму это.
Лоран Пирейн

Ответы:

9

Это то, что слоты для. Если пакет не имеет слотов, то единственное, о чем я могу подумать, - это создать персональный оверлей и новый пакет / ebuild, который слотится.

Кит
источник
2
Небольшой намек на прагматичный способ использования слотов поможет новичкам :)
Stefano
1

Я думаю, что в теории вы могли бы сделать что-то глупое, как:

$ ROOT=~/package-1.0 emerge =package-1

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

lkraav
источник
1

То, что вы можете попробовать (я не уверен, работает ли он так, как ожидалось), это использовать /etc/portage/envдля установки SLOT для определенных версий пакета. Это может не работать из-за кэширования метаданных. Даже если это работает, это - комок и может привести к неожиданному поведению. Как всегда, если он сломается, вы можете сохранить куски.

Поль де Вриз
источник
1

Это старый вопрос, но он все еще актуален, и никто не предложил следующий простой подход:

Если вы не хотите создавать слоты и знаете, что файлы не сталкиваются, просто создайте новый ebuild в локальном оверлее (после настройки локального оверлея в make.conf) и назовите его по-другому. Возможно, что-то вроде «mypkg.ebuild». Нет закона, который бы указывал имя ebuild и файлы, которые он устанавливает, должны иметь одинаковые имена. Скопируйте файл pkg.ebuild для portage в /usr/local/portage/app-class/mypkg-newversion.ebuild, внесите необходимые изменения для новой версии, создайте ebuild и запустите его.

Имейте в виду, что вы не сможете использовать некоторые предопределенные имена переменных ($ {P} и др.) При извлечении источников.

Боб Дж
источник
0

Еще одна потенциальная вещь для изучения - Gentoo Prefix

Это может быть жизнеспособной альтернативой, если вы не возражаете против поддержки двух экосистем Gentoo для предоставления «альтернативного» пакета.

По сути, это создает «подпространство» для заданной области проекта, а затем по-разному использует Gentoo в этой области проекта.

Кент Фредрик
источник