在 Ubuntu 上运行更新时出错

在 Ubuntu 上运行更新时出错

我在 Ubuntu 服务器上通过命令行运行 dpkg update 时收到以下错误,我不知道如何解决它

2019-02-03 06:25:32 INFO: no packages to update
E:Sub-process /usr/bin/dpkg returned an error code (1)
2019-02-03 06:26:01 ERROR: installArchives() failed
2019-02-03 06:26:01 ERROR: Exited with returncode 1.

运行 dpkg -l 时,我看到以下坏包

ii  linux-image-4.15.0-42-generic      4.15.0-42.45                                amd64        Signed kernel image generic
iF  linux-image-4.15.0-43-generic      4.15.0-43.46                                amd64        Signed kernel image generic
iF  linux-image-4.15.0-44-generic      4.15.0-44.47                                amd64        Signed kernel image generic
iF  linux-image-4.15.0-45-generic      4.15.0-45.48                                amd64        Signed kernel image generic

如果这有用的话,我正在 Ubuntu 18.04 上运行 Plesk 服务器


df 结果

Filesystem      Size  Used Avail Use% Mounted on
udev            478M     0  478M   0% /dev
tmpfs            99M  716K   98M   1% /run
/dev/vda1        25G  7.2G   17G  30% /
tmpfs           493M  8.0K  493M   1% /dev/shm
tmpfs           5.0M     0  5.0M   0% /run/lock
tmpfs           493M     0  493M   0% /sys/fs/cgroup
/dev/vda15      105M  3.6M  101M   4% /boot/efi
/dev/sda         25G   14G   11G  57% /mnt/volume_sfo2_01
tmpfs            99M     0   99M   0% /run/user/0

删除软件包

dpkg: error processing package linux-image-4.15.0-45-generic (--remove):
 installed linux-image-4.15.0-45-generic package post-removal script subprocess returned error exit status 1
Errors were encountered while processing:
 linux-image-4.15.0-43-generic
 linux-image-4.15.0-44-generic
 linux-image-4.15.0-45-generic

审计输出

# sudo dpkg --audit linux-image-4.15.0-45-generic
The following packages are only half configured, probably due to problems
configuring them the first time.  The configuration should be retried using
dpkg --configure <package> or the configure menu option in dselect:
 linux-image-4.15.0-45-generic Signed kernel image generic

清除输出

# sudo dpkg --purge linux-image-4.15.0-45-generic
dpkg: dependency problems prevent removal of linux-image-4.15.0-45-generic:
 linux-image-virtual depends on linux-image-4.15.0-45-generic.

dpkg: error processing package linux-image-4.15.0-45-generic (--purge):
 dependency problems - not removing
Errors were encountered while processing:
 linux-image-4.15.0-45-generic

以下是安装后脚本。我检查了提到的目录,它们都存在,但是列出的某些模块缺失,正如您在底部附近的 ls 中看到的那样

cat /var/lib/dpkg/info/linux-image-4.15.0-45-generic.postrm
#!/bin/sh
set -e

version=4.15.0-45-generic
image_path=/boot/vmlinuz-$version

rm -f /lib/modules/$version/.fresh-install

if [ "$1" != upgrade ] && command -v linux-update-symlinks >/dev/null; then
    linux-update-symlinks remove $version $image_path
fi

if [ -d /etc/kernel/postrm.d ]; then
    # We cannot trigger ourselves as at the end of this we will no longer
    # exist and can no longer respond to the trigger.  The trigger would
    # then become lost.  Therefore we clear any pending trigger and apply
    # postrm directly.
    if [ -f /usr/lib/linux/triggers/$version ]; then
    echo "$0 ... removing pending trigger"
    rm -f /usr/lib/linux/triggers/$version
    rmdir --ignore-fail-on-non-empty /usr/lib/linux/triggers
    fi
    DEB_MAINT_PARAMS="$*" run-parts --report --exit-on-error --arg=$version \
          --arg=$image_path /etc/kernel/postrm.d
fi

if [ "$1" = purge ]; then
    for extra_file in modules.dep modules.isapnpmap modules.pcimap \
                      modules.usbmap modules.parportmap \
                      modules.generic_string modules.ieee1394map \
                      modules.ieee1394map modules.pnpbiosmap \
                      modules.alias modules.ccwmap modules.inputmap \
                      modules.symbols modules.ofmap \
                      modules.seriomap modules.\*.bin \
              modules.softdep modules.devname; do
    eval rm -f /lib/modules/$version/$extra_file
    done
    rmdir /lib/modules/$version || true
fi

exit 0
root@serv1:~# cd /lib/modules/4.15.0-45-generic
root@serv1:/lib/modules/4.15.0-45-generic# ls
build          modules.alias.bin    modules.dep.bin  modules.symbols
initrd         modules.builtin      modules.devname  modules.symbols.bin
kernel         modules.builtin.bin  modules.order    vdso
modules.alias  modules.dep          modules.softdep
root@serv1:/lib/modules/4.15.0-45-generic# 

答案1

dpkg 列表第二列的“F”表示“已配置一半”。常见原因是“磁盘空间太小”。

检查输出:
sudo df -h | grep -v loop
...并查找高使用率百分比。

我还会尝试一次性删除半配置的包:

sudo apt-get purge linux-image-4.15.0-45-通用 linux-image-4.15.0-44-通用 linux-image-4.15.0-43-通用

留意任何发生的删除停止错误,如果是,则将其包括在上面,然后重新检查df上面的内容,看看情况是否发生变化。

是否需要做更多事情取决于您的发现。您需要在原始帖子中附加相关的新信息。单击edit,然后<hr>在末尾键入 a,并在其后粘贴新信息。


如果上述方法没有帮助,则执行下一步:
sudo dpkg --audit linux-image-4.15.0-45-generic
...并以与上述相同的方式添加输出。

根据结果​​,以下步骤可能是:
sudo dpkg --purge linux-image-4.15.0-45-generic
...对每个剩余的有问题的包重复相同的操作。


正如我们所见:
“... linux-image-virtual 依赖于 linux-image-4.15.0-45-generic。”
尝试:
sudo apt-get purge linux-image-virtual linux-image-4.15.0-45-generic


仍然是相同的错误:那么,尝试使用 -f (修复)标志稍微加强一下删除尝试:
sudo apt-get -f purge linux-image-virtual
sudo apt-get -f purge linux-image-4.15.0-45-generic

如果这不起作用,那么请尝试使用“较低级别”的 dpkg:
sudo dpkg --remove linux-image-virtual
sudo dpkg --remove linux-image-4.15.0-45-generic

如果其中任何一个错误包可能需要实际清理,请对其他错误包重复此操作。

显然,如果其中之一是正在使用中;并且确实有效;该包不是要尝试删除的包。

此外,通过检查删除后脚本的实际位置(显然它们没有列为软件包的一部分),locate我得出了以下结论:

cat /var/lib/dpkg/info/linux-image-4.15.0-45-generic.postrm

... 通读该脚本并检查您的文件系统,检查脚本中提到的文件夹是否缺失,或者是否存在其他可能导致故障的奇怪事物。


一般信息:处理与内核相关的软件包
uname -r # 这将打印当前处于活动状态的内核名称;无法删除!

sudo apt-get purge linux-image-x.x.x.x-generic# 删除一个内核

sudo update-initramfs -u# 重新制作启动 ramdisk
sudo update-grub2 # 重新创建启动菜单
最后两个对于恢复启动菜单并使条目在下次重启时真正起作用至关重要。

相关内容