2012-11-15 24 views
5

たとえば、私はlibmemcachedを使用するアプリケーションを維持しています。 libmemcached5またはlibmemcached6を使ってコンパイルすることもできますし、libmemcached5、libmemcached6、またはlibmemcached5 | libmemcached6を依存関係とする.debパッケージをビルドすることもできますが、実際には私のバイナリは1つだけコンパイルされます。ユーザー側の依存関係をアップグレード/ダウングレードせずにパッケージを展開するためにこの問題を解決できる最良の方法は何ですか?異なるバージョンの1つの依存関係を持つパッケージをビルドおよびデプロイする方法は?

答えて

1

あなたのリポジトリを使用している場合、または複数のコンパイル済みバージョンのアプリケーションが受け入れられる場合は、アプリケーションを2回、libmemcached5で1回、libmemcached6で1回コンパイルし、別々のパッケージ名自動的に右のいずれかをインストールするには、仮想パッケージを使用します。

Package: myapplication-memchched5 
Version: 1.3.17-1 
Depends: libmemcached5 
Provides: myapplication 
Conflicts: myapplication 
Replaces: myapplication 

と今aptitude install myapplication

Package: myapplication-memchched6 
Version: 1.3.17-1 
Depends: libmemcached6 
Provides: myapplication 
Conflicts: myapplication 
Replaces: myapplication 

が自動的に選択するかmyapplication-memchched5または他の何がインストールされる必要があるかに基づいています。