apt で google の更新に失敗する + 「破損パッケージ」
Linux Mint 18.2 でパッケージのアップデートに失敗します。
署名照合中にエラーが発生しました。リポジトリは更新されず、過去のインデックスファイルが使われます。GPG エラー: http://dl.google.com/linux/chrome/deb stable Release: 公開鍵を利用できないため、以下の署名は検証できませんでした: NO_PUBKEY 6494C6D6997C215Ehttp://dl.google.com/linux/chrome/deb/dists/stable/Release.gpg の取得に失敗しました 公開鍵を利用できないため、以下の署名は検証できませんでした: NO_PUBKEY 6494C6D6997C215Eいくつかのインデックスファイルのダウンロードに失敗しました。 これらは無視されるか、古いものが代わりに使われます。
これは例えばここなどにあるとおり、
$ wget -q -O - https://dl.google.com/linux/linux_signing_key.pub | sudo apt-key add -
で OK なようです。
しかしこれでシステムをアップデートしようとすると、
システム上に 1 個の破損パッケージがあります! それを特定するために"破損"フィルタを使用してください。
というエラーがでます。「"破損"フィルタ」というのがよくわからないが、Synaptic の「カスタムフィルタ」の「破損」を適用すると vlc が壊れているようである。ここで「破損パッケージの修復」というのがあるので実行。すると「依存問題の修復に成功しました」とあるのでいいかなという感じ。で、「適用」を選択すると
E: /var/cache/apt/archives/vlc-bin_2.2.6-3~xenial1_amd64.deb: '/usr/bin/rvlc' を上書きしようとしています。これはパッケージ vlc-nox 2.2.2-5ubuntu0.16.04.3 にも存在します
というエラーが出て意味不明。
なので、もういちどコマンドラインで
$ sudo apt-get -f install
をすると
.../vlc-bin_2.2.6-3~xenial1_amd64.deb を展開する準備をしています ... vlc-bin (2.2.6-3~xenial1) を展開しています... dpkg: アーカイブ /var/cache/apt/archives/vlc-bin_2.2.6-3~xenial1_amd64.deb の処理中にエラーが発生しました (--unpack): '/usr/bin/rvlc' を上書きしようとしています。これはパッケージ vlc-nox 2.2.2-5ubuntu0.16.04.3 にも存在します dpkg-deb: エラー: サブプロセス ペースト がシグナル (Broken pipe) によって強制終了されました 処理中にエラーが発生しました: /var/cache/apt/archives/vlc-bin_2.2.6-3~xenial1_amd64.deb E: Sub-process /usr/bin/dpkg returned an error code (1)
でダメ。
$ sudo aptitude install vlc-bin
も
.../vlc-bin_2.2.6-3~xenial1_amd64.deb を展開する準備をしています ... vlc-bin (2.2.6-3~xenial1) を展開しています... dpkg: アーカイブ /var/cache/apt/archives/vlc-bin_2.2.6-3~xenial1_amd64.deb の処理中にエラーが発生しました (--unpack): '/usr/bin/rvlc' を上書きしようとしています。これはパッケージ vlc-nox 2.2.2-5ubuntu0.16.04.3 にも存在します dpkg-deb: エラー: サブプロセス ペースト がシグナル (Broken pipe) によって強制終了されました 処理中にエラーが発生しました: /var/cache/apt/archives/vlc-bin_2.2.6-3~xenial1_amd64.deb E: Sub-process /usr/bin/dpkg returned an error code (1) Failed to perform requested operation on package. Trying to recover: dpkg: 依存関係の問題により vlc の設定ができません: vlc は以下に依存 (depends) します: vlc-bin (= 2.2.6-3~xenial1) ...しかし: パッケージ vlc-bin はまだインストールされていません。 dpkg: パッケージ vlc の処理中にエラーが発生しました (--configure): 依存関係の問題 - 設定を見送ります 処理中にエラーが発生しました: vlc
となってダメ。これで詰みました。もう少し情報が出てくるのを待つしかないみたい。
続き
再チャレンジ。
vlc-bin, vlc-nox あたりが問題源だとわかったので、次のコマンドを実行。
$ dpkg -s vlc-bin Package: vlc-bin Status: install ok not-installed Priority: optional Section: video Architecture: amd64 $ dpkg -s vlc-nox Package: vlc-nox Status: deinstall ok installed Priority: optional Section: video Installed-Size: 9266 Maintainer: Ubuntu Developers <ubuntu-devel-discuss@lists.ubuntu.com> Architecture: amd64 Source: vlc Version: 2.2.2-5ubuntu0.16.04.3 Provides: mp3-decoder Depends: liba52-0.7.4, ...
なるほど、vlc-nox を deinstall すればいいと。しかし deinstall って何だということで、$ man dpkg を実行。すると
deinstall The package is selected for deinstallation (i.e. we want to remove all files, except configuration files).
とある。コンフィグファイル以外は消せと。さらに見てみると
ACTIONS -r, --remove package...|-a|--pending Remove an installed package. This removes everything except conffiles, which may avoid having to reconfigure the package if it is reinstalled later (conffiles are configuration files that are listed in the DEBIAN/conffiles control file). If -a or --pending is given instead of a package name, then all packages unpacked, but marked to be removed in file /var/lib/dpkg/status, are removed. Removing of a package consists of the following steps: 1. Run prerm script 2. Remove the installed files 3. Run postrm script
どうやらこれのようだ。
なので
$ sudo dpkg -r vlc-nox (データベースを読み込んでいます ... 現在 873604 個のファイルとディレクトリがインストールされています。) vlc-nox (2.2.2-5ubuntu0.16.04.3) を削除しています ... man-db (2.7.5-1) のトリガを処理しています ...
うまくいったっぽい。で、
$ sudo apt-get -f install
をしたら vlc-bin がインストールされた。これで OK!
あとは $ sudo apt-get upgrade でおしまい。