解决E: Unable to correct problems, you have held broken packages.(亲测有效)

在阿里云服务器上安装Ubuntu18.04时遇到‘youhaveheldbrokenpackages’错误,原因是镜像源过旧。解决办法是替换为新的镜像源,如阿里云、中科大、163和清华源。通过编辑/etc/apt/sources.list文件,将新镜像源添加到原有文件底部,然后更新并安装ubuntu-desktop。

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

问题描述:

今天买了阿里云服务器,装的ubuntu18.04系统。
在图形界面安装的过程中,需要执行命令:

sudo apt-get install ubuntu-desktop

但是会报错:

E: Unable to correct problems, you have held broken packages

原因分析:

是云服务器自带的是老的镜像源。需要更换新的镜像源。

解决办法:

添加新的镜像源(镜像源我放在下面了,可自己选择用哪个,或者都用)。
如果无法复制粘贴的话,需要自己一行一行地把代码敲进去,我是自己敲进去的。

具体步骤:
先输入如下命令:

vi /etc/apt/sources.list

然后把其他的镜像源放进去,放在原来的文件的最下面。

#添加阿里源
deb http://mirrors.aliyun.com/ubuntu/ bionic main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ bionic-security main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ bionic-updates main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ bionic-proposed main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ bionic-backports main restricted universe multiverse

#中科大源
deb https://mirrors.ustc.edu.cn/ubuntu/ bionic main restricted universe multiverse
deb https://mirrors.ustc.edu.cn/ubuntu/ bionic-updates main restricted universe multiverse
deb https://mirrors.ustc.edu.cn/ubuntu/ bionic-backports main restricted universe multiverse
deb https://mirrors.ustc.edu.cn/ubuntu/ bionic-security main restricted universe multiverse
deb https://mirrors.ustc.edu.cn/ubuntu/ bionic-proposed main restricted universe multiverse
 
#163源
deb http://mirrors.163.com/ubuntu/ bionic main restricted universe multiverse
deb http://mirrors.163.com/ubuntu/ bionic-security main restricted universe multiverse
deb http://mirrors.163.com/ubuntu/ bionic-updates main restricted universe multiverse
deb http://mirrors.163.com/ubuntu/ bionic-proposed main restricted universe multiverse
deb http://mirrors.163.com/ubuntu/ bionic-backports main restricted universe multiverse
 
#清华源
deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ bionic main restricted universe multiverse
deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ bionic-updates main restricted universe multiverse
deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ bionic-backports main restricted universe multiverse
deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ bionic-security main restricted universe multiverse
deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ bionic-proposed main restricted universe multiverse
<think>嗯,用户的问题是关于树莓派上使用apt安装软件时遇到的“Unable to correct problems, you have held broken packages”错误。首先,我需要回忆一下这个错误的常见原因和解决方法。根据之前学过的知识,这个错误通常是因为系统中存在依赖关系冲突或者有被保留的软件包,导致apt无法自动解决依赖问题。 用户提到的是树莓派,可能运行的是Raspbian系统,基于Debian的,所以解决方法应该和Ubuntu类似。不过树莓派有时候会有特定的软件源或硬件相关包,可能需要特别注意。 首先,我需要考虑引用中的解决方案。例如,引用[2]和[5]提到更新软件源和更换最佳服务器,这可能解决源的问题。引用[3]建议使用aptitude,因为它能提供更多的解决方案选项。引用[4]提到检查特定依赖项的版本,比如init-system-helpers,可能需要手动安装更高版本。 接下来,步骤应该包括: 1. 更新系统,确保所有包都是最新的,可能修复一些依赖问题。 2. 使用apt-get的-f install选项尝试修复损坏的依赖。 3. 清理可能损坏的包缓存。 4. 使用aptitude工具,因为它可能提供不同的解决方案。 5. 检查是否有被阻止升级的包(held back),可能需要手动处理。 6. 更换软件源,使用raspi-sources或者其他镜像。 7. 如果问题依旧,可能需要手动安装缺失的依赖或降级某些包。 8. 清除配置残留,特别是之前安装失败的包。 需要注意的是,树莓派可能有自己的软件源,所以在更换源的时候要确认是否支持arm架构。例如,使用清华大学的镜像站或者阿里云的源,是否有针对树莓派的版本。 另外,用户可能之前尝试过安装某些软件,导致依赖冲突,所以需要检查具体的错误信息中的包名,是否有版本冲突。比如引用[4]中提到的init-system-helpers版本过低,需要升级到1.54以上。 在指导用户时,需要分步骤说明,确保命令正确,并且提醒用户谨慎操作,特别是在使用aptitude时选择正确的解决方案,避免破坏系统。同时,更换源后要记得update,可能还需要upgrade。 可能还需要提醒用户备份重要数据,或者在操作前创建系统快照,以防万一。此外,如果问题涉及特定的包,可能需要单独处理,比如Jenkins或其他软件的特殊依赖。 最后,生成的相关问题需要覆盖常见的后续疑问,比如如何更换软件源、如何使用aptitude、如何清理残留等。</think>### 树莓派上解决 `apt unable to correct problems held broken packages` 的步骤 #### 1. **更新软件源和系统** 首先更新软件包列表并升级现有软件,修复可能的依赖冲突: ```bash sudo apt update sudo apt upgrade sudo apt dist-upgrade # 处理更复杂的依赖关系 ``` #### 2. **尝试自动修复依赖** 使用 `-f` 参数修复损坏的依赖关系: ```bash sudo apt install -f ``` #### 3. **清理包缓存** 删除旧的或损坏的包缓存: ```bash sudo apt clean # 清理下载的包文件 sudo apt autoremove # 移除无用的依赖 ``` #### 4. **使用 `aptitude` 解决复杂依赖** `aptitude` 提供更灵活的依赖解决方案: ```bash sudo apt install aptitude sudo aptitude install <目标包名> # 替换为实际包名 ``` 根据提示选择解决方案(例如按数字键接受或拒绝操作)[^3]。 #### 5. **检查被保留的包(Held Packages)** 查看是否有被标记为“禁止升级”的包: ```bash sudo apt-mark showhold ``` 若存在,取消保留: ```bash sudo apt-mark unhold <包名> ``` #### 6. **更换软件源** 树莓派默认源可能不稳定,切换到国内镜像(如清华大学源): ```bash sudo sed -i 's|raspbian.raspberrypi.org|mirrors.tuna.tsinghua.edu.cn/raspbian|g' /etc/apt/sources.list sudo sed -i 's|archive.raspberrypi.org|mirrors.tuna.tsinghua.edu.cn/raspberrypi|g' /etc/apt/sources.list.d/raspi.list sudo apt update ``` #### 7. **手动安装缺失依赖** 若错误提示中明确缺少某个依赖(如 `init-system-helpers>=1.54`): ```bash sudo apt install <依赖包名>=<版本号> # 例如 init-system-helpers=1.56 ``` #### 8. **强制降级冲突包** 如果存在版本冲突,可尝试降级: ```bash sudo apt install <包名>=<旧版本号> ``` #### 9. **清除残留配置** 修复残留的配置问题: ```bash sudo dpkg --configure -a ``` #### 10. **检查日志定位问题** 查看详细错误日志: ```bash tail -n 100 /var/log/apt/term.log ``` --- ### 关键操作示例 若安装 `jenkins` 时因 `init-system-helpers` 版本过低报错: ```bash # 手动安装高版本依赖 wget http://ftp.debian.org/debian/pool/main/i/init-system-helpers/init-system-helpers_1.60_all.deb sudo dpkg -i init-system-helpers_1.60_all.deb sudo apt install jenkins # 重试安装 ``` ---
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值