dpkgエラー:「…にもあるファイルを上書きしようとしています」


108

例えば:

$ sudo apt-get install curl
Reading package lists... Done
Building dependency tree
Reading state information... Done
You might want to run 'apt-get -f install' to correct these:
The following packages have unmet dependencies:
bsh : Depends: libjline-java but it is not going to be installed
groovy : Depends: libjline-java but it is not going to be installed
rhino : Depends: libjline-java but it is not going to be installed
E: Unmet dependencies. 

Try 'apt-get -f install' with no packages (or specify a solution).

clojure1.3、leiningen、および他のいくつかのパッケージをインストールしようとすると、同じまたは同様のエラーが発生します。

エラーメッセージで提案された内容を試してみると、次のようになります。

$ sudo apt-get -f install 
Reading package lists... Done
Building dependency tree       
Reading state information... Done
Correcting dependencies... Done
The following packages were automatically installed and are no longer required:
  diffstat linux-headers-3.2.0-26-generic linux-headers-3.2.0-26 dh-apparmor dkms html2text libmail-sendmail-perl libsys-hostname-long-perl
Use 'apt-get autoremove' to remove them.
The following extra packages will be installed:
  libjline-java
Suggested packages:
  libjline-java-doc
The following NEW packages will be installed:
  libjline-java
0 upgraded, 1 newly installed, 0 to remove and 0 not upgraded.
23 not fully installed or removed.
Need to get 0 B/72.0 kB of archives.
After this operation, 129 kB of additional disk space will be used.
Do you want to continue [Y/n]? Y
(Reading database ... 226243 files and directories currently installed.)
Unpacking libjline-java (from .../libjline-java_1.0-1_all.deb) ...
dpkg: error processing /var/cache/apt/archives/libjline-java_1.0-1_all.deb (--unpack):
 trying to overwrite '/usr/share/java/jline.jar', which is also in package scala 2.9.2-400
Errors were encountered while processing:
 /var/cache/apt/archives/libjline-java_1.0-1_all.deb
E: Sub-process /usr/bin/dpkg returned an error code (1)

$ sudo apt-get upgrade
Reading package lists... Done
Building dependency tree       
Reading state information... Done
You might want to run 'apt-get -f install' to correct these.
The following packages have unmet dependencies:
 bsh : Depends: libjline-java but it is not installed
 groovy : Depends: libjline-java but it is not installed
 rhino : Depends: libjline-java but it is not installed
E: Unmet dependencies. Try using -f.

また、Javaをインストールするために必要なライブに見える、ソフトウェアセンターで検索
Mark Kirby

1
おそらくこのQ&Aの複製または少なくとも解決策が役立つはず
です-danjjl

@markkirby、私はsudo apt-get updateそれがあなたが求めていることなら実行しました。
missingfaktor

@ markkirby、JDKはすでにインストールされています。
missingfaktor

回答:


72

danjjlの答えに直接行かないでください。この種の「上書きしよう」エラーに直面した場合、最初に解決する必要のある競合するパッケージがある可能性があります。

問題の即時修正は、望ましくない競合パッケージを削除することです。この場合scala

sudo dpkg -P scala

次に、それぞれのパッケージメンテナーにバグレポートを提出することをお勧めします。これは通常Conflict: package、制御ファイルに行を追加することを意味します。

このエラーの詳細については、この回答も参照してください。


3
このアドバイスについてはよくわかりません。状況次第だと思います。以前の投稿へのリンクに、同じソフトウェアの2つのバージョンからの競合があります。そこで、古いソフトウェアを最初に削除する必要があることに同意します。ただし、2つの異なるプログラムのパッケージ方法に問題があり、上書きされるファイルが同一または無害である場合、アドバイスに問題はありません。いいえ、理想的ではないが...しかし、それは別の問題はバグ修正されるまで待つのであれば、特定の答えのために行くしないように、誰かに聞いて、おそらく少し極端だ...
レイ

@Rayの場合、バグレポートが正常に機能している可能性があります...しかし、Ubuntuリポジトリのソフトウェアは、この種の問題を徹底的にDebianおよびDebianテストから取得しているため、その問題があるとは思いません。
Braiam

1
@Braiam Debianを使用してから長い時間が経ちました。おそらく今はもっと良いかもしれませんが、Debianでも同様の問題が見られました。徹底的なテストがないからではありませんが、可能なシナリオをすべてテストするのは難しい場合があります。テストがどれだけ実行されても、何かがすり抜けることがあります。私はバグレポートを書くことに反対ではありませんが、「簡単だと言った」と言っています。結局のところ、競合するすべてのパッケージを要約するのは難しいかもしれません。また、バグが「ホット」でない場合(つまり、バグが多くの人に影響を与えない場合)、ただ待っているだけです。
レイ

おそらく、元の回答を修正して、「(何らかの理由)のためにやらないでください」と言った方が良いでしょう。誰かが長所と短所を知ったら無視することを選択できるように。現状では、上記の答えは「やらない」とだけ言っています。
レイ

@Ray umm ...パッケージを構築するとき、dpkgはファイルのリスト(dpkg -Lパッケージ)を保存し、衝突を探すだけで最初の測定に十分です。そして徹底的なテストによって私が不安定とテストが原料のこの種のために正確にある現実世界のテスト、意味
Braiam

97

問題を解決するには

sudo dpkg -i --force-overwrite /var/cache/apt/archives/libjline-java_1.0-1_all.deb

以下を実行して、すべてが修正されていることを確認します。 sudo apt-get -f install

それでも問題が解決しない場合は、dpkg: error processing (...)残りの最初のステップを再実行します

webupd8で見つかったソリューション


9
これにより、パッケージが効果的にインストールされますが、両方のパッケージが同じライブラリ/ファイル/バイナリを使用しようとすると、問題が残ります。
Braiam

11
良さ

odroid Plexメディアサーバーの更新を修正しました。
マーク

私のために働いた、おかげで
ミゲル・モタ

44

@danjjlのコマンドは.debファイルに対して機能します。このコマンドはapt/で機能することがわかりましたapt-get

sudo apt-get -o Dpkg::Options::="--force-overwrite" install <package-name>

4
素晴らしいヒント。ただし、ファイルが異なる場合、物事を上書きすると深刻な問題を引き起こす可能性があります。競合するパッケージの1つが正しく機能しなくなります。
ポタイト

1
sudo apt-get -o Dpkg::Options::="--force-overwrite" install -f同様の問題
-user2205916

@Cat:「グレートハック」に似ています。;-]
デビッドフォースター

1

私が同じ問題を抱えていたのでそれがグローバルな修正であるかどうかはわかりませんが、キャッシュ内のlibglx-mesaファイルがNvidia-390と競合しています。私は、ファイルを削除し、発行されapt install -f -y、それが完成させ、その後を進めapt updateupgradeそしてautoremoveそのシーケンスインチ

apt dist-upgradeUbuntu 18.04でを実行中にエラーが発生し、プロセスを再度続行しました。これ以上の問題はなく、「私の」修正のようです。

コマンド:

sudo su -
mv /var/cache/apt/archives/libglx-mesa0_18.0.0~rc5-1ubuntu1_amd64.deb ~
apt install -f -y
apt update -y
apt upgrade -y
apt autoremove -y
apt dist-upgrade

PS:上書きを強制することは、私が試した悪い考えであり、幸運になりました。しかし、根本的な原因を見つけて修正する方が良いでしょう。まだ調査する必要がありますが、エラーが原因でファイルを移動できます。

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