Debian: dpkg を使用して破損した apt を修正

Debian: dpkg を使用して破損した apt を修正

私のRaspberry Pi(OSMCを実行しているPi 2)の1つで更新エラーが発生します。 aptパッケージ自体に疑わしいエラーが発生し、手動distアップグレードを実行しようとすると失敗します。

Preconfiguring packages ...
/tmp/ca-certificates.config.M9vjue: 70: /tmp/ca-certificates.config.M9vjue: uniq: not found
ca-certificates failed to preconfigure, with exit status 127
(Reading database ... 30176 files and directories currently installed.)
Preparing to unpack .../archives/apt_1.4.11_armhf.deb ...
/usr/bin/dpkg-maintscript-helper: 588: /usr/bin/dpkg-maintscript-helper: basename: not found
dpkg: warning: subprocess old pre-removal script returned error exit status 127
dpkg: trying script from the new package instead ...
/usr/bin/dpkg-maintscript-helper: 588: /usr/bin/dpkg-maintscript-helper: basename: not found
dpkg: error processing archive /var/cache/apt/archives/apt_1.4.11_armhf.deb (--unpack):
 subprocess new pre-removal script returned error exit status 127
Failed to try-restart apt-daily-upgrade.timer: Unit apt-daily-upgrade.timer is masked.
Failed to try-restart apt-daily.timer: Unit apt-daily.timer is masked.
/usr/bin/dpkg-maintscript-helper: 588: /usr/bin/dpkg-maintscript-helper: basename: not found
dpkg: error while cleaning up:
 subprocess installed post-installation script returned error exit status 127
Errors were encountered while processing:
 /var/cache/apt/archives/apt_1.4.11_armhf.deb
E: Sub-process /usr/bin/dpkg returned an error code (1)

さらなる検査により、aptが破損していることが確認された。

$ sudo dpkg --configure -a
Processing triggers for libc-bin (2.24-11+deb9u4) ...
dpkg: error processing package apt (--configure):
 package is in a very bad inconsistent state; you should
 reinstall it before attempting configuration
Errors were encountered while processing:
 apt

再インストールするためにAPT(例えばdpkg -r)を削除することは実際にはオプションではありません。rbp2-デバイス-osmcに依存する適切なユーティリティ、システムクラッシュが発生します。

インストール全体を消去せずに適切に復元する方法は?

答え1

ランニング:

sudo dpkg --unpack /var/cache/apt/archives/apt_1.4.11_armhf.deb
sudo dpkg --configure apt

または再インストールしてくださいapt

wget http://ftp.univ-nantes.fr/debian-security/pool/updates/main/a/apt/apt_1.4.11_armhf.deb
sudo dpkg -i apt_1.4.11_armhf.deb

man dpkg:

--unpack package-file...
      Unpack the package, but don't configure it. If --recursive or -R 
      option is  specified,  package-file  must  refer  to  a  directory instead.

答え2

ABが正しいことが判明しました。 coreutilsに問題があり、再インストールすると問題が解決しました。

# dpkg -i /var/cache/apt/archives/coreutils_8.26-3_armhf.deb
(Reading database ... 30176 files and directories currently installed.)
Preparing to unpack .../coreutils_8.26-3_armhf.deb ...
Unpacking coreutils (8.26-3) over (8.26-3) ...
Setting up coreutils (8.26-3) ...

次のapt-get dist-upgradeは非常に成功しました。私の考えでは、Kodiの悲しい顔のループを引き起こしたのと同じ問題がmicroSDファイルシステムを破損する可能性があり、これは定期的な自動セルフテスト中に多くのブロックが失われ、いくつかのcoreutilが欠落している可能性があります。

ありがとう、AB! !

関連情報