programX.Yのdebパッケージを作成しようとしていますが、次の内容でdebパッケージを作成すると、ターゲットシステムに同じプログラムですが、異なるバージョン(programX.Z)が存在する可能性があります。
dpkg-buildpackage -us -uc --source-option=--include-binaries --source-option=-isession
異なるバージョンのプログラム(programX.Z)があるシステムにパッケージをインストールしようとすると、次のメッセージが表示されます。
dpkg: error processing programX.Y.deb (--install):
trying to overwrite `/usr/lib/XXX', which is also in package programX.Z
--force-overwriteを渡すことで問題を解決できることがわかりますが、その解決策は望ましくありません。
問題は、システムにインストールされ、プログラムのバージョンを自動的に強制的に無視できるdebパッケージを作成する方法です。代表的なのがPythonだ。 Python3にはさまざまなバージョン(3.1、3.2、3.3、3.4、3.5...)があります。 python3.4がすでにインストールされているシステムにカスタムPythonパッケージバージョン3.6をインストールしたいと思います。
可能ですか?
答え1
同等のパッケージを作成することはできませんが、--force-overwrite
他の解決策があります。
- パッケージは、競合するファイルを別の場所に移動することができ、それをトランスポートと呼び、以下を使用して処理されます。
dpkg-divert
。 - 2つのパッケージに共通のファイル(衝突させる)は、通常3番目のパッケージで提供されます(同じと仮定)。これは
/usr/lib/XXX
あなたの問題に適した解決策かもしれません。 - 複数のバージョンのパッケージを同時にインストールでき、必要に応じて代替パッケージまたは「デフォルト」パッケージを使用してデフォルト値を選択できます。これはPythonインタプリタパッケージであるGCCコンパイラが取るアプローチです。現在、Debian が不安定な状態では Python 3.5 と 3.6 を使用でき、並べてインストールできます。デフォルトのPython 3(3.5)は、
python3
パッケージのシンボリックリンクを使用して決定されます。セット。