dpkg 被中断、sudo apt-get upgrade失败

本文详细记录了解决Linux系统中dpkg中断及apt-get升级失败的问题过程,包括清理dpkg缓存、修复预设配置错误、处理依赖关系问题等步骤,最终成功完成系统更新。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

  1. 写了个小插件,服务器部署的时候发现少了一些依赖,果断apt-get,然而失败了:
    E: dpkg 被中断,您必须手工运行 ‘sudo dpkg --configure -a’ 解决此问题。
    
  2. 找到解决办法:
    sudo rm /var/lib/dpkg/updates/*
    sudo apt-get update
    sudo apt-get upgrade
    
  3. 解决了么?并没有…。在sudo apt-get upgrade的时候失败了:
    您希望继续执行吗? [Y/n] y
    正在预设定软件包 ...
    /tmp/console-setup.config.XTxu0f: 1: eval: Syntax error: Unterminated quoted string
    预设定 console-setup 失败,退出状态为 2
    /tmp/keyboard-configuration.config.lBbgUO: 1: eval: Syntax error: Unterminated quoted string
    预设定 keyboard-configuration 失败,退出状态为 2
    正在设置 install-info (6.1.0.dfsg.1-5) ...
    
  4. 继续找解决办法:
    sudo mv /var/lib/dpkg/info /var/lib/dpkg/info_old   # 将info文件夹更名
    sudo mkdir /var/lib/dpkg/info  # 再新建一个新的info文件夹
    sudo apt-get update
    sudo apt-get -f install  # **这一句如果有问题请看第5步**
    sudo mv /var/lib/dpkg/info/* /var/lib/dpkg/info_old   # 执行完上一步操作后会在新的info文件夹下生成一些文件,现将这些文件全部移到info_old文件夹下
    sudo rm -rf /var/lib/dpkg/info  # 把自己新建的info文件夹删掉
    sudo mv /var/lib/dpkg/info_old /var/lib/dpkg/info   # 把以前的info文件夹重新改回名字
    
  5. sudo apt-get -f install的时候又碰到了一次E: dpkg 被中断,您必须手工运行 ‘sudo dpkg --configure -a’ 解决此问题。
    # 删除一下updates,重新来
    sudo rm /var/lib/dpkg/updates/*
    sudo apt-get -f install
    
  6. 终于弄完了,再来sudo apt-get upgrade,然鹅,有失败了:
    ...
    ...
    正在设置 keyboard-configuration (1.108ubuntu15.5) ...
    /var/lib/dpkg/info/keyboard-configuration.config: 1: eval: Syntax error: Unterminated quoted string
    dpkg: 处理软件包 keyboard-configuration (--configure)时出错:
     子进程 已安装 post-installation 脚本 返回错误状态 2
    dpkg: 依赖关系问题使得 console-setup-linux 的配置工作不能继续:
     console-setup-linux 依赖于 keyboard-configuration (= 1.108ubuntu15.5);然而:
      软件包 keyboard-configuration 尚未配置。
    ...
    ...
    dpkg: 依赖关系问题使得 ubuntu-minimal 的配置工作不能继续:
     ubuntu-minimal 依赖于 console-setup;然而:
      软件包 console-setup 尚未配�因为错误消息指示这是由于上一个问题导致的错误,没有写入 apport 报告。
                                                                                                      因为错误消息指示这是由于上一个问题导致的错误,没有写入 apport 报告。
                                      由于已经达到 MaxReports 限制,没有写入 apport 报告。
                                                                                          �。
    
    dpkg: 处理软件包 ubuntu-minimal (--configure)时出错:
     依赖关系问题 - 仍未被配置
    ...
    ...
    W: mdadm: /etc/mdadm/mdadm.conf defines no arrays.
    正在处理用于 libc-bin (2.23-0ubuntu11) 的触发器 ...
    在处理时有错误发生:
     keyboard-configuration
     console-setup-linux
     console-setup
     ubuntu-minimal
    E: Sub-process /usr/bin/dpkg returned an error code (1)
    
  7. 有点无奈,是我的操作有问题么?继续解决:
    再把第4步来一遍!!!
    
  8. 再来sudo apt-get upgrade
    终于搞定了
    
  9. 最后试一下:
    sudo apt-get install python-pip
    # 其实我就是为了安装一个pip
    

本文链接:时光不写博客-dpkg 被中断、sudo apt-get upgrade失败
参考:
https://blog.youkuaiyun.com/zjwson/article/details/78239265
https://blog.youkuaiyun.com/ycl295644/article/details/44536297

<think>好的,我现在需要帮助用户解决在终端中执行sudo apt-get update && sudo apt-get upgrade -y时出现的“命令未找到”的问题。首先,我得分析可能的原因。 用户提到的是“命令未找到”,这通常意味着系统找不到该命令的可执行文件。apt-get是Debian/Ubuntu系的包管理工具,所以可能用户使用的不是基于Debian的系统,比如CentOS或Fedora,这些系统使用yum或dnf。这时候用户如果运行apt-get命令自然会报错。但用户可能不知道自己系统的版本,或者可能系统环境有问题。 另一个可能性是apt包管理器没有安装或被破坏。虽然这在标准Debian/Ubuntu系统中很少见,但如果是自定义安装或最小化安装,可能没有预装。这时候需要检查apt是否存在,可以用which apt-get或者command -v apt-get来确认是否存在。 还有可能是用户的PATH环境变量被错误配置,导致系统找不到apt-get的位置。不过这种情况比较少见,通常系统核心命令的路径都在默认PATH里。 接下来,我需要根据这些可能的原因给出解决方案。首先,确认系统类型,如果是非Debian系,应该使用对应的包管理命令。例如,CentOS使用sudo yum update && sudo yum upgrade,Fedora用dnf。如果是Arch,用pacman -Syu。如果是openSUSE,用zypper update。这部分需要用户先检查系统类型,可以用cat /etc/os-release或者lsb_release -a命令查看。 如果系统确实是Debian/Ubuntu,但apt-get命令不存在,可能需要安装apt包管理器。不过这种情况比较少见,可能需要从源码或通过其他方式安装,但步骤会比较复杂。或者,用户可能使用的是较新的系统,已经用apt代替了apt-get,虽然通常apt-get仍然存在,但可以建议用户尝试sudo apt update && sudo apt upgrade -y试试看,看是否可行。 另外,检查是否拼写错误,比如是否输入了正确的命令名称。有时候用户可能不小心打错了命令,比如aptget而不是apt-get,这时候需要提醒用户检查拼写。 还有可能是用户的权限问题,虽然错误提示是“命令未找到”而不是权限不足,所以这个可能性较低,但可以建议用户使用sudo来执行命令,但用户已经加了sudo,所以可能不是这个问题。 总结下来,可能的解决方案步骤是: 1. 确认操作系统类型,如果不是Debian/Ubuntu,改用对应的包管理器。 2. 如果是Debian/Ubuntu,检查apt-get是否安装,路径是否正确。 3. 尝试使用apt代替apt-get,看是否存在。 4. 修复或安装apt包管理器(可能需要下载deb包手动安装)。 5. 检查环境变量PATH是否包含/usr/bin,因为apt-get通常在这里。 然后根据这些步骤,写出具体的解决方法,同时引用用户提供的参考内容,比如关于update和upgrade的区别,可能不需要,但可以提到更新软件源列表和升级软件包的关系,但用户的问题是关于命令找不到,所以重点在系统类型和包管理器的存在性上。 最后生成相关问题,比如如何检查系统类型、其他包管理器使用方法,或者修复损坏的APT等。</think>### 解决方案:解决`sudo apt-get update`命令未找到问题 #### 1. 确认操作系统类型 该错误通常发生在非Debian/Ubuntu系统(如CentOS、Fedora、Arch Linux等)。不同Linux发行版使用不同的包管理工具: - **Debian/Ubuntu系**:`apt-get`或`apt` - **CentOS/RHEL系**:`yum`或`dnf` - **Arch Linux系**:`pacman` - **openSUSE系**:`zypper` **操作步骤**: ```bash cat /etc/os-release # 查看系统信息 lsb_release -a # 若已安装lsb-core,可显示详细信息 ``` #### 2. 根据系统类型选择正确命令 - **若为CentOS/RHEL**: ```bash sudo yum update && sudo yum upgrade # 或新版本系统 sudo dnf update ``` - **若为Fedora**: ```bash sudo dnf upgrade ``` - **若为Arch Linux**: ```bash sudo pacman -Syu ``` - **若为openSUSE**: ```bash sudo zypper update ``` #### 3. 修复Debian/Ubuntu系统中的APT工具(若确认系统类型正确) 若系统为Debian/Ubuntu但命令仍不可用,可能是APT未安装或损坏: - **检查APT是否存在**: ```bash which apt-get # 查看路径是否存在 ``` - **手动安装APT**(需使用其他包管理器或离线包): ```bash sudo wget http://archive.ubuntu.com/ubuntu/pool/main/a/apt/apt_2.4.9_amd64.deb sudo dpkg -i apt_*.deb ``` #### 4. 检查环境变量配置 若系统路径异常,可能导致命令无法识别: ```bash echo $PATH # 确认包含/usr/bin export PATH=$PATH:/usr/bin # 临时修复路径 ``` #### 5. 尝试使用简化的`apt`命令 新版Ubuntu中推荐使用`apt`替代`apt-get`: ```bash sudo apt update && sudo apt upgrade -y ``` --- ### 关键知识点 - `apt-get update`更新软件源列表,`apt-get upgrade`升级已安装软件[^3][^4] - 使用国内镜像源可加速更新过程[^2] - 若系统为容器或精简版(如Alpine Linux),需使用`apk`包管理器 ---
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

时光不写代码

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值