web-dev-qa-db-ja.com

Gentooに同じパッケージの複数のバージョンをインストールするにはどうすればよいですか?

Gentooシステムに同じパッケージの2つ(またはそれ以上)のバージョンをインストールしたいと思います。インストールされているファイルは非常に少なく、それぞれの名前はバージョンにちなんで付けられているため、ファイルの衝突が発生しないことは確かです。

私はスロットについて知っていますが、これらはebuildファイルで指定されており、いくつかの理由でebuildファイルを編集したくないと仮定しましょう。

インストールされたバージョンをワールドパッケージの一部にして、通常どおり再インストールまたはアンインストールできるようにします。

同じパッケージの複数のバージョンをインストールする方法はありますか?それを達成するためのPortageのトリックを知っていますか?

9
Laurent Pireyn

それがスロットの目的です。パッケージがスロットに入れられていない場合、私が考えることができるのは、個人用オーバーレイとスロットに入れられた新しいパッケージ/ ebuildを作成することだけです。

9
Keith

これは古い質問ですが、それでも有効であり、次の簡単なアプローチを提案した人は誰もいません。

スロットを作成したくなく、ファイルが衝突しないことがわかっている場合は、ローカルオーバーレイに新しいebuildを作成し(make.confでローカルオーバーレイを設定した後)、別の名前を付けます。おそらく「mypkg.ebuild」のようなものです。 ebuildの名前とそれがインストールするファイルが同じ名前を共有しなければならないことを規定する法律はありません。 Portageのpkg.ebuildファイルを/usr/local/portage/app-class/mypkg-newversion.ebuildにコピーし、新しいバージョンに必要な変更を加え、ebuildして出現させます。

ソースをフェッチするときに、事前定義された変数名($ {P}など)の一部を使用できないことに注意してください。

1
Bob J

理論的には、次のようなばかげたことができると思います。

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

しかし、基本的にすべての非オーバーレイのものは、それほど多くの情報がないいくつかの追加の制限と要件の影響を非常に受けます。

1
lkraav

あなたが試みるかもしれないこと(それが期待通りに機能するかどうかはわかりません)は使用することです /etc/portage/env 特定のパッケージバージョンのスロットを設定します。ただし、メタデータのキャッシュが原因で機能しない場合があります。それが機能したとしても、これは手がかりであり、予期しない動作を引き起こす可能性があります。いつものように、それが壊れた場合、あなたは断片を保持することができます。

1
Paul de Vrieze

探索するもう1つの潜在的なことは Gentoo Prefix

「代替」パッケージを提供するためにGentooの2つのエコシステムを維持することを気にしないのであれば、これは実行可能な代替案かもしれません。

これは基本的に、特定のプロジェクトスコープに「サブスペース」を作成し、そのプロジェクトスコープでGentooを異なる方法で使用することです。

0
Kent Fredric