
私は、次のようにインストールしたサーバーのアプリケーションの 1 つを実行するために必要な rubygems のバージョンを使用しています。
dpkg --install /tmp/rubygems1.8_1.3.7-2_all.deb
使用するたびに、aptitude は rubygems の古いバージョン (リポジトリに保存されている) にロールバックしようとします。
この問題を無視するように 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
不足しているパッケージを提供するダミー パッケージを作成します。
もちろん、これはインストールされたパッケージ間に競合がない場合にのみ機能します。