壊れたパッケージを無視するようにaptitudeに指示する


9

私はKarmicにLucidのAmsynthをインストールしました:

dpkg --force-depends-version -i amsynth_1.2.2-1_i386.deb

Lucidバージョンをインストールする理由は、Karmicバージョンが3年前のものであり、私のマシンでクラッシュするためです。Lucid Amsynthパッケージは、Karmicよりも新しいバージョンのlibatk1とlibjack0に依存していますが、私はリスクを冒すだろうと思い、Amsynthは問題なく動作することがわかりました。

ただし、aptitudeはアップグレードを行うたびにAmsynthをアンインストールしようとします。なんとかそれを保留にできたと思うが、今はaptitudeが中止されます。壊れたパッケージを無視して続行するようにaptitudeに指示するにはどうすればよいですか。


今のところ、アンインストールしました。再インストールするたびに再インストールします。再コンパイルするのに十分なバグが発生するまで、それほど時間がかかりません。

新しいリリースから何かが必要で、新しいライブラリが必要な場合は、通常、それらを単にプルするか、ソースパッケージをダウンロードしてシステムで再ビルドします。しかし、サードパーティのパッケージを使用しようとしてこれに遭遇したので、ハックが必要です。
Jan Hudec、2014

回答:


7

deb-fileとdpkgを介してプログラムをインストールした場合は、インストールされた.debファイルの依存関係を手動で変更することもできます。私はかつてこの極端な措置に駆り立てられました...

ar x foo.deb
vim control.tar.xz  # see below
ar r foo.deb control.tar.xz
dpkg -i foo.deb

そしてdpkgはfooの依存関係をもう知りません。vimで./controlを選択し(私はvimを使用してパックされたファイルを読み取ります-解凍して別のエディターを使用し、必要に応じて再パックします)、不要な依存関係を行から削除します

Depends: foo bar

1
を使用するdpkg-debよりも、使用するほうがよいですarar将来変更される可能性のあるdpkg実装の詳細です。
jmtd 2013

おかげで、このソリューションはうまくいきましたが、apt-get upgradeを実行すると、「次のパッケージは保持されています:numptyphysics:i386」というメッセージが表示されます(apt-get dist-upgradeは何も言わない)。このメッセージは正常ですか、それを取り除くことはできませんか?
baptx

7

Ubuntuforumsにはハッキングされたソリューションがあります。〜quackのソリューションの方が優れていますが、より多くの作業が必要です。

私はこれについてグーグルで何も見つけることができませんでした。自分の「ダミーパッケージ」をコンパイルして保存します(壊れたパッケージをアンインストールしないと不可能です。幸い、すでにツールを持っているので十分な運がなければ)、自分のハードドライブを検索すると、答えは最終的に!

知りたい方のために、synaptic / aptitude / apt-getのパッケージをアンインストールせずに「解除」する方法を示します。

まず最初に、インストールしたパッケージと、それが依存しているパッケージが破損していることをメモします。リポジトリにない古いパッケージに依存するリンゴのインストールを強制したとしましょう:

端末タイプコード:

sudo gedit /var/lib/dpkg/status

次のようなものが見つかるまで、ファイルでリンゴを検索します。

コード:

Package: apples
Status: install ok installed
Priority: optional
Section: libs
Installed-Size: 316
Maintainer:
Architecture: i386
Source: applesauce
Version: 1.0.10-1
Depends: packageA, packageB, obsolete
Description: Apples on your desktop!

Depends:行から古くなったものを削除し、ファイルを保存すれば完了です。これが一部の人々に役立つことを願っています。


病気。良い発見ですが、私はパッケージマネージャーに嘘をついているのは好きではありません(これは基本的にハックが行うことです)。APTをまったく使わないほうが、無茶苦茶にぶらぶら走り回るよりはましです。これが、独自のパッケージをコンパイルすることが良いことである理由です。依存関係が壊れたり、パッケージマネージャーに嘘をついたりすることはありません。
quack quixote、2014年

特に数か月以内にOSを再インストールするため、パッケージマネージャーに嘘をついても問題はありませんが、スレッドで参照されているファイルが見つかりませんでした。

変。そこにあるはずです。「cd / var / lib / dpkg」を実行してから、「sudo nano status」を実行してください。
Iain

1
リンクは機能しなくなります。これが、リンクのみの回答がこの辺りで嫌われている正確な理由です。ここで説明すると正解になります。
Jan Hudec、2014

これが永続的であるかどうかはわかりませんが、Javaのもはや利用できないバージョンにハード依存しているパッケージをインストールするためのこれまでのところ、まともな修正のようです。
クリスピー

2

aptitudeの設定セクション(メニューに入るにはCtrl-T、オプションの下)で、「依存関係の処理」セクションの「インストールまたは削除前に自動的に壊れたパッケージを修正するというオプションのチェックを外します。これにより、他のパッケージを変更するたびにaptitudeがパッケージの修正を停止するようになります。

より永続的な修正として、インストールしたLucid Amsynthパッケージのソースパッケージ、およびlibatk1libjack0のソースパッケージを取得し、独自の更新済みパッケージをビルドする必要があります。他に何がこれらのライブラリを使用するかによって、他のパッケージも更新する必要があるかもしれませんが、おそらくそれらだけで済むでしょう。(これは基本的にされてバックポートあなたは誰のは、すでにこれを行ってかどうかを確認するためにリポジトリまたはPPAのカルマ-backportsのを確認してくださいあなたの新しいパッケージの作業は、使用に他人のためにカルマ-backportsのに送信考慮すれば- 。明晰からカルマにこれらのパッケージを。 )


おかげで最初の提案を試してみましたが、違いはありませんでした。更新は単に中止されます。Lucidパッケージをインストールする前にコンパイルも試みましたが、うまくいきませんでした。後でもう一度やり直すかもしれません。
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.