tizen.moe

tizen.moe

apt --fix-broken installしろと言われた場合の対応

取得:1 http://download.tizen.org/tools/latest-release/Ubuntu_20.04  createrepo-c 0.10.3 [39.9 kB]
39.9 kB を 0秒 で取得しました (84.6 kB/s)
(データベースを読み込んでいます ... 現在 344995 個のファイルとディレクトリがインストールされています。)
.../createrepo-c_0.10.3_amd64.deb を展開する準備をしています ...
createrepo-c (0.10.3) を展開しています...
dpkg: アーカイブ /var/cache/apt/archives/createrepo-c_0.10.3_amd64.deb の処理中にエラーが発生しました (--unpack):
 '/usr/share/man/man8/createrepo.8.gz' を上書きしようとしています。これはパッケージ createrepo 0.10.9 にも存在します
処理中にエラーが発生しました:
 /var/cache/apt/archives/createrepo-c_0.10.3_amd64.deb
E: Sub-process /usr/bin/dpkg returned an error code (1)

tizenのビルド環境とか入れてるせいなので普通はこんな引っかかり方しないと思われますが。。

結論から言うと
debian-handbook.info
dpkgの--force-overwriteオプションで/var/cache/apt/archives/配下にいる関連debを上書きインストールして無理やり解決しました。

$ sudo dpkg -i --force-overwrite /var/cache/apt/archives/createrepo-c_0.10.3_amd64.deb /var/cache/apt/archives/createrepo-c-devel_0.10.3_amd64.deb /var/cache/apt/archives/libcreaterepo-c_0.10.3_amd64.deb

(※ 厳密には1パッケージずつインストールしたら依存関係が解決されてないとエラーになって1つずつ何度か--force-overwriteで-iしていったらインストールできたので↑をそのままやってもダメかも。。)

一旦↑で解決したあとで↓で--fix-brokenしてあげると取りあえずエラーでずにapt upgrade出来るようになりました

$ sudo apt --fix-broken install


余談:色々やったこと。。。
素直に--fix-brokenしてもNG。どうも複数パッケージが同じファイル名のファイルをコピーしようとしている(と思って)エラーになっていて、名前だけ見るとcreaterepoというパッケージがcreaterepo-cという名前に変わっておかしな競合をしている(とaptに思われてしまっている)っぽい。しみじみ優しくない作り、、、

$ sudo apt --fix-broken install
パッケージリストを読み込んでいます... 完了
依存関係ツリーを作成しています
状態情報を読み取っています... 完了
依存関係を解決しています ... 完了
以下のパッケージが自動でインストールされましたが、もう必要とされていません:
  createrepo deltarpm
これを削除するには 'sudo apt autoremove' を利用してください。
以下の追加パッケージがインストールされます:
  createrepo-c
以下のパッケージが新たにインストールされます:
  createrepo-c
アップグレード: 0 個、新規インストール: 1 個、削除: 0 個、保留: 0 個。
31 個のパッケージが完全にインストールまたは削除されていません。
39.9 kB 中 0 B のアーカイブを取得する必要があります。
この操作後に追加で 173 kB のディスク容量が消費されます。
続行しますか? [Y/n]
(データベースを読み込んでいます ... 現在 344995 個のファイルとディレクトリがインストールされています。)
.../createrepo-c_0.10.3_amd64.deb を展開する準備をしています ...
createrepo-c (0.10.3) を展開しています...
dpkg: アーカイブ /var/cache/apt/archives/createrepo-c_0.10.3_amd64.deb の処理中にエラーが発生しました (--unpack):
 '/usr/share/man/man8/createrepo.8.gz' を上書きしようとしています。これはパッケージ createrepo 0.10.9 にも存在します
処理中にエラーが発生しました:
 /var/cache/apt/archives/createrepo-c_0.10.3_amd64.deb
E: Sub-process /usr/bin/dpkg returned an error code (1)

パッケージが作成するファイルの強制上書きオプションかエラーを無視するオプションが無いかなと思ったのですが見つけられず。--fix-missingなら行けるかなと思ったけどダメだった

$ sudo apt --fix-missing install
パッケージリストを読み込んでいます... 完了
依存関係ツリーを作成しています
状態情報を読み取っています... 完了
これらを直すためには 'apt --fix-broken install' を実行する必要があるかもしれません。
以下のパッケージには満たせない依存関係があります:
 depanneur : 依存: createrepo-c しかし、インストールされていません
E: 未解決の依存関係です。'apt --fix-broken install' を実行してみてください (または解法を明示してください)

結局dpkg --force-overwrite -i で/var/cache/apt/archive/...で上書きインストールできたんですが、、、某社にはこういうのを起こさずに何とかするようなツールメンテのエンジニアは居ないんだろうか。。