インストールされているパッケージバージョンを偽造する方法


23

早期導入者であり、11.04デイリービルドを使用している場合、一部のパッケージがインストールしたパッケージよりも前のバージョンのパッケージを必要とする場合があります。通常、必要なパッケージの新しい(ただし拒否された)バージョンは、古いバージョンのすべての機能を提供します。

dpkg -i --force-depends-version依存パッケージのインストールに使用すると、すべてが正常に機能し、問題が発生したことはありません。

すべてのパッケージを手動でダウンロードしてインストールする代わりに、新しいパッケージがあるときに特定のパッケージバージョンがインストールされているようにシステムに見せかけることはできますか?またはに--force-depends-version相当するキーはありapt-getますか?

回答:


16

あなたは使用することができますequivs equivsをインストールする偽にインストールされている特定のパッケージをダミーパッケージを作成するために、パッケージを。ここにいくつかの指示。


これで十分ですが。しかし、リンクは遅かれ早かれ壊れる可能性があります。回答内で少なくとも指導を再開する方が良い。私の答えはここaskubuntu.com/a/1181415/26246に役立つかもしれませ。それで、私たちはこの問題を参照することができます。
user.dz

23

回答はすでに受け入れられていますが、受け入れられたものをインライン化することでプロセスがわかりやすくなります。

  1. equivsダミーパッケージを作成できるというDebianパッケージがあります。実行してインストールするsudo apt-get install -y equivs

  2. インストールしたら、次のコマンドを使用してテンプレート「コントロール」ファイルを生成します:(パッケージ名にequivs-control postfix置き換えpostfixます)。私の場合、代替パッケージ名を使用する場合があります。たとえばpostfix-custom、カスタムパッケージが満たされているかProvides、インストールの依存関係がありますpostfix(再度、postfix必要なパッケージに置き換えます)。

  3. テンプレート制御ファイルが生成されたら、通常、コメントアウトされたステートメント(で始まるステートメント#)の多くを削除します。私が特に保持したいのは、Provides:私のパッケージが偽造しようとしている他のパッケージによって提供される機能を提供すると言うことができるステートメントです。たとえばProvides: postfix、Debian / Ubuntu依存関係解決メカニズムにターゲットパッケージと同じ機能を再度、postfixまたは何でも提供します。これにより、混乱を避けるために、ターゲットパッケージとは別にパッケージに名前を付けることができます。Erlang Factoryは、これをesl-erlang提供しますerlang

  4. 最後に、テンプレート制御ファイルが作成されたら、などを使用equivs-buildして偽のパッケージを生成しますequivs-build /path/to/generated/control/file

  5. パッケージのビルドには数秒かかり、実行できます sudo dpkg -i my_package_name*.deb

上級ユーザーの場合、テンプレート制御ファイルにRequires:依存関係の行がある場合、依存関係gdebiとして宣言するさまざまなパッケージだけでなく、パッケージのインストールなどのツールを使用することもできます。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.