最近,我发现 Ubuntu 出现了一些奇怪的行为。首先也是最重要的一点是它无法安装更新。它给出软件包安装错误,并且根本无法工作。
之前我尝试通过软件中心安装 TeamViewer,但遇到了同样的软件包错误。我也感觉连接速度比正常速度慢——不知道这是否与此案例有关。
我的安装出了什么问题?如何修复这些软件包安装错误?
答案1
这是 Ubuntu 上一个非常常见的问题。这个问题有很多种问法。然而,答案总是相同的。我经常在软件包损坏时遇到这个问题。我查看了以下链接:
https://askubuntu.com/questions/461975/i-cant-edit-update-remove-or-install-my-broken-packages
$ sudo apt-get autoremove
$ sudo apt-get --purge remove && sudo apt-get autoclean
$ sudo apt-get -f install
$ sudo apt-get update
$ sudo apt-get upgrade && sudo apt-get dist-upgrade
$ sudo dpkg-reconfigure -a
$ sudo dpkg --configure -a
您已完成大部分操作。还有几个可以添加。但到目前为止,列表中的操作已修复了我损坏的 Ubuntu 损坏软件包问题。
就 Teamviewer 安装而言,在您修复了损坏的软件包问题后,请尝试以下操作:
$ sudo apt-get install lib32z1 lib32ncurses5 lib32bz2-1.0
$ sudo dpkg --add-architecture i386
$ sudo apt-get update
## (Download the latest 32-Bit / 64-Bit Multiarch go to the download and run)
$ sudo dpkg -i teamviewer_linux.deb
答案2
分区可能/boot
已满,因此安装和更新将失败。
要检查该分区是否已满,请打开终端并输入命令df
,它将显示类似以下内容:
Filesystem 1K-blocks Used Available Use% Mounted on
/dev/mapper/ubuntu-root 959421896 379475996 531218164 42% /
udev 832664 4 832660 1% /dev
tmpfs 168352 576 167776 1% /run
none 5120 0 5120 0% /run/lock
none 841752 0 841752 0% /run/shm
cgroup 841752 0 841752 0% /sys/fs/cgroup
/dev/sda1 233191 27581 193169 13% /boot <==== Note this line
如果使用率/boot
达到 99%,则需要清除旧包备份。/boot
使用命令检查文件夹中的内容ls /boot
。如果您看到很多文件initrd.img-3.2.0-##-generic
vmlinuz-3.2.0-##-generic
(其中 ## 是版本号,如 40、41、42、43,您可能会发现数十个副本),则删除一些旧副本实际上是安全的。
使用以下命令删除旧副本:
dpkg --get-selections|grep 'linux-image*'|awk '{print $1}'|egrep -v "linux-image-$(uname -r)|linux-image-generic" |while read n;do sudo apt-get -y remove $n;done
(归功于此链接,经过修改以使其在 ubuntu 中工作)
然后运行sudo apt-get autoremove
清理依赖项。
答案3
这听起来像我今天早些时候遇到的内核问题。我遇到了本网站这确实修复了问题。我不得不通过编辑 dpkg 状态文件来手动修复它。
但在执行任何操作之前,请先备份原始文件地位文件,这样如果这不能解决问题,您可以恢复到它。
sudo gedit /var/lib/dpkg/status
Then locate the corrupted package. Remove the whole block of information pertaining to it, save then exit.
如果您不知道哪个包导致此问题,您可以运行:
sudo apt-get 更新
sudo apt-get 升级
这可能会告诉你哪些包有问题,例如
处理/var/cache/apt/archives/(此处为包名称)时遇到错误
E:子进程 /usr/bin/dpkg 返回错误代码 (1)
我真的说不准,因为我不知道你在终端中收到什么错误消息。但如果这听起来可能有帮助,那就值得一试。另外,如果没有用,你总是可以恢复备份文件。有一件事,我不会重启,直到我知道它是否有效。祝你好运!