壊れたパッケージを修復する適性を回避するにはどうすればよいでしょうか?

壊れたパッケージを修復する適性を回避するにはどうすればよいでしょうか?

私は、次のようにインストールしたサーバーのアプリケーションの 1 つを実行するために必要な ruby​​gems のバージョンを使用しています。

dpkg --install /tmp/rubygems1.8_1.3.7-2_all.deb

使用するたびに、aptitude は ruby​​gems の古いバージョン (リポジトリに保存されている) にロールバックしようとします。

この問題を無視するように aptitude に指示するにはどうすればよいでしょうか?

私はサーバー (Ubutun 10.04) を使用しているため、コマンドライン ソリューションが必要です。これは次のものと重複しません。壊れたパッケージを無視するようにaptitudeに指示する

答え1

aptの外で必要なバージョンのgemをインストールするだけです。これは実際にはより良いなぜなら、それはディストリビューション用(ダウンロード元のリポジトリで構築されたもの)/usr/local/binではなく、(インストールしたもの)/usr/binに含まれることになるからです。この場合、ディストリビューションは明らかにあなたのバージョンの gem を拒否しようとしています。

さらに、Ruby Gemsのバージョンでインストールされたものは、おそらく別のディレクトリの上位にあるでしょう。インクルードパス/usr/local/shareではなく のようにします/usr/lib。つまり、 で何かをインストールすると、/usr/local/bin/gemでインストールされるものと干渉しない特別な場所に が配置されることになります/usr/bin/gem

答え2

私は を使用してパッケージを保持していますaptitude hold <package>。ロールバックの防止にも機能するかどうかはわかりませんが、試してみる価値はあります。

dpkg を使用することもできます: echo “<package> hold” | dpkg --set-selections

参照

答え3

私なら、依存関係が壊れないようにパッケージを再コンパイル(変更)します。

なぜなら、dpkg/apt に、満たされていない依存関係や壊れた依存関係を許容するように指示する適切な方法はないと思うからです。基本的に、それがそれらの目的だからです。

答え4

使用できますequivs不足しているパッケージを提供するダミー パッケージを作成します。

もちろん、これはインストールされたパッケージ間に競合がない場合にのみ機能します。

関連情報