尝试升级时如何修复 Ubuntu 18.04 中 libc6-dev-armhf-cross 的错误?

Uri*_*res 27 upgrade apt 18.04

今天尝试根据 Ubuntu 软件建议进行升级时,我看到以下错误。这是我第一次看到这个错误。我的 18.04 系统已经运行了好几个月了。

任何帮助表示赞赏。

$ cat /etc/lsb-release
DISTRIB_ID=Ubuntu 
DISTRIB_RELEASE=18.04 
DISTRIB_CODENAME=bionic 
DISTRIB_DESCRIPTION="Ubuntu 18.04.1 LTS"



$ sudo apt upgrade
Reading package lists... Done
Building dependency tree       
Reading state information... Done
Calculating upgrade... Done
The following packages will be upgraded:
  libc6-armel-cross libc6-armhf-cross libc6-dev-armel-cross libc6-dev-armhf-cross
4 upgraded, 0 newly installed, 0 to remove and 0 not upgraded.
Need to get 0 B/5,871 kB of archives.
After this operation, 0 B of additional disk space will be used.
Do you want to continue? [Y/n] y
(Reading database ... 388166 files and directories currently installed.)
Preparing to unpack .../libc6-dev-armel-cross_2.27-3ubuntu1cross1.1_all.deb ...
Unpacking libc6-dev-armel-cross (2.27-3ubuntu1cross1.1) over (2.27-3ubuntu1cross1) ...
dpkg: error processing archive /var/cache/apt/archives/libc6-dev-armel-cross_2.27-3ubuntu1cross1.1_all.deb (--unpack):
 unable to open '/usr/arm-linux-gnueabi/lib/Mcrt1.o.dpkg-new': No such file or directory
No apport report written because the error message indicates an issue on the local system
                                                                                         Preparing to unpack .../libc6-armel-cross_2.27-3ubuntu1cross1.1_all.deb ...
Unpacking libc6-armel-cross (2.27-3ubuntu1cross1.1) over (2.27-3ubuntu1cross1) ...
dpkg: error processing archive /var/cache/apt/archives/libc6-armel-cross_2.27-3ubuntu1cross1.1_all.deb (--unpack):
 unable to open '/usr/arm-linux-gnueabi/lib/ld-2.27.so.dpkg-new': No such file or directory
No apport report written because the error message indicates an issue on the local system
                                                                                         Preparing to unpack .../libc6-dev-armhf-cross_2.27-3ubuntu1cross1.1_all.deb ...
Unpacking libc6-dev-armhf-cross (2.27-3ubuntu1cross1.1) over (2.27-3ubuntu1cross1) ...
dpkg: error processing archive /var/cache/apt/archives/libc6-dev-armhf-cross_2.27-3ubuntu1cross1.1_all.deb (--unpack):
 unable to open '/usr/arm-linux-gnueabihf/lib/Mcrt1.o.dpkg-new': No such file or directory
No apport report written because the error message indicates an issue on the local system
                                                                                         Preparing to unpack .../libc6-armhf-cross_2.27-3ubuntu1cross1.1_all.deb ...
Unpacking libc6-armhf-cross (2.27-3ubuntu1cross1.1) over (2.27-3ubuntu1cross1) ...
dpkg: error processing archive /var/cache/apt/archives/libc6-armhf-cross_2.27-3ubuntu1cross1.1_all.deb (--unpack):
 unable to open '/usr/arm-linux-gnueabihf/lib/ld-2.27.so.dpkg-new': No such file or directory
No apport report written because MaxReports is reached already
                                                              Errors were encountered while processing:
 /var/cache/apt/archives/libc6-dev-armel-cross_2.27-3ubuntu1cross1.1_all.deb
 /var/cache/apt/archives/libc6-armel-cross_2.27-3ubuntu1cross1.1_all.deb
 /var/cache/apt/archives/libc6-dev-armhf-cross_2.27-3ubuntu1cross1.1_all.deb
 /var/cache/apt/archives/libc6-armhf-cross_2.27-3ubuntu1cross1.1_all.deb
E: Sub-process /usr/bin/dpkg returned an error code (1)
Run Code Online (Sandbox Code Playgroud)

Ole*_*nar 50

我能够通过Gen.Stack使用的方法的变体干净地解决这个问题。已接受的解决方案的问题在于它删除了相关包的依赖项,但无法恢复它们。此解决方案可防止出现该问题。

首先,删除有问题的包并清除它们的配置而不删除依赖项:

sudo dpkg -P --force-depends libc6-armel-cross libc6-armhf-cross libc6-dev-armel-cross libc6-dev-armhf-cross
Run Code Online (Sandbox Code Playgroud)

清理包缓存:

sudo apt clean
Run Code Online (Sandbox Code Playgroud)

更新包列表:

sudo apt update
Run Code Online (Sandbox Code Playgroud)

修复损坏的依赖项(应自动安装两个已删除的包):

sudo apt -f install
Run Code Online (Sandbox Code Playgroud)

最后,安装剩下的两个包:

sudo apt install libc6-dev-armel-cross libc6-dev-armhf-cross
Run Code Online (Sandbox Code Playgroud)

这将使您的系统恢复工作状态。

  • 谢谢,我也解决了同样的问题 Ubuntu 14.04、16.04 到 18.04。 (4认同)
  • 惊人的。从 Ubuntu 16.04 升级到 18.04 后,我的包管理器坏了。我尝试了命令行推荐的所有内容以及各种其他在线解决方案。这个似乎工作得很好。谢谢奥莱克·沃伊纳尔!! (4认同)
  • 工作正常。从 ubuntu 14.04 升级到 ubuntu 18.04 (3认同)

Ruf*_*fus 19

尝试重新安装libc6-dev-armhf-cross(对 执行相同操作libc6-dev-armel-cross

sudo apt remove libc6-dev-armhf-cross 其次是 sudo apt install libc6-dev-armhf-cross

apt install --reinstall似乎不起作用)

请注意,运行sudo apt remove可能会删除依赖于它的包。请参阅下面Olek Wojnar 的回答,了解如何在不删除依赖包的情况下执行此操作