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


9

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

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

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

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


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

@Keith - Это правильный ответ, почему бы не опубликовать его как ответ?
HedgeMage

@Keith: Если это действительно единственный способ сделать это, то опубликуйте это как ответ, и я с радостью приму это.
Лоран Пирейн

Ответы:


9

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


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

1

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

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

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


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 в этой области проекта.

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.