Ubuntu小白:dpkg: 处理软件包 runit (--configure)时出错

突然间发现UBUNTU 系统时间不对,同步互联网时间也不对,强迫症发作想改掉。然后看到一个教程装ntp。


结果半路出了这个错误:


dpkg: 处理软件包 runit (--configure)时出错:
 子进程 已安装 post-installation 脚本 返回错误状态 1
dpkg: 依赖关系问题使得 git-daemon-run 的配置工作不能继续:
 git-daemon-run 依赖于 runit;然而:
  软件包 runit 尚未配置。


dpkg: 处理软件包 git-daemon-run (--configure)时出错:
 依赖关系问题 - 仍未被配置
正在设置 libopts25:amd64 (1:5.18.7-3) ...
因为错误消息指示这是由于上一个问题导致的错误,没有写入 apport 报告。


错误产生的原因大概是以前安装文件的时候退出系统产生了文件的损坏。然后去网上找了个教程,试试能不能用,事实证明可以。

http://blog.youkuaiyun.com/kiti1013/article/details/50588879  感谢博主帮我解决了麻烦。


1.sudo mv /var/lib/dpkg/info /var/lib/dpkg/infoold //现将info文件夹更名


2. sudo mkdir /var/lib/dpkg/info //再新建一个新的info文件夹 

3.sudo apt−get update

apt−get −f install //重新更新安装一遍


4. sudo mv /var/lib/dpkg/info/* /var/lib/dpkg/infoold //执行完上一步操作后会在新的info文件夹下生成一些文件,现将这些文件全部移到info_old文件夹下 


5.sudorm−rf/var/lib/dpkg/info //把自己新建的info文件夹删掉


6. sudo mv /var/lib/dpkg/infoold /var/lib/dpkg/info //把以前的info文件夹重新改回名字


以上方法经测好用。

<think>我们面对的问题是:在尝试移除i386架构遇到错误“dpkg:错误:无法移除体系结构i386,当前它仍被数据库使用”。根据引用内容,这是因为系统中仍存在标记为i386架构的软件包。因此,我们需要先移除所有i386软件包,再移除i386架构。解决方案步骤(基于引用[2]):1.找出所有i386架构的软件包2.移除这些软件包3.移除i386架构具体步骤:步骤1:列出所有i386软件包使用命令:`dpkg--get-selections|awk'/i386/{print$1}'`此命令会列出所有已安装的i386软件包。步骤2:移除这些软件包将上述列出的软件包通过xargs传递给apt卸载命令,或者直接复制列表进行移除。但注意,有些包可能是元包或者有依赖关系,我们使用`aptpurge`来移除。命令:`sudoaptpurge$(dpkg--get-selections|awk'/i386/{print$1}')`步骤3:确认移除i386架构移除软件包后,再次尝试移除i386架构:`sudodpkg--remove-architecturei386`步骤4:验证使用`sudodpkg--print-foreign-architectures`查看是否还包含i386。注意:在移除软件包,系统可能会提示某些包是自动安装的,并且可能也会移除一些依赖它们的amd64包(如果有的话)。确保这些包移除不会影响系统运行。另外,如果系统中没有i386软件包,但错误仍然出现,可能是因为数据库中存在残留信息。这,我们可以尝试清除残留:可选步骤:手动清除残留(在步骤2之后仍无法移除架构)检查/var/lib/dpkg/info目录下是否有i386软件包的控制文件残留,但通常aptpurge会清理干净。根据引用[2]的内容,我们给出具体操作:但是,需要注意的是,上面的命令可能会移除很多软件包,如果用户不确定是否要移除所有i386包,可以逐个检查。然而,问题中用户明确要求移除i386架构,所以移除所有i386包是必要的。如果遇到无法移除的包(例如,某些包在移除出现依赖问题),可以尝试:`sudoapt-finstall`修复依赖,然后再次尝试移除。最后,移除架构后,更新软件列表:`sudoaptupdate`下面以代码块形式给出解决方案:注意:在执行这些命令之前,请确保用户确实不需要这些32位软件包,因为移除后可能会影响某些32位应用程序的运行。</think> ### 解决"无法移除体系结构 i386"问题的完整方案 当尝试移除不再需要的i386架构,遇到"dpkg: 错误: 无法移除体系结构 i386 ,当前它仍被数据库使用"错误,这是因为系统软件包数据库中存在i386架构的软件包。以下是逐步解决方案: #### 🔧 分步操作指南 1. **找出所有i386架构软件包** ```bash dpkg --get-selections | grep ':i386' ``` 这会列出所有使用i386架构的软件包[^2]。 2. **移除所有i386软件包** ```bash sudo apt purge $(dpkg --get-selections | awk '/:i386/{print $1}') ``` 使用`awk`精确提取i386软件包名称并卸载[^2]。 3. **移除i386架构** ```bash sudo dpkg --remove-architecture i386 ``` 此应能成功移除架构。 4. **确认移除结果** ```bash sudo dpkg --print-foreign-architectures ``` 若结果为空或仅显示当前架构(如`amd64`),则已成功移除[^2]。 5. **清理并更新系统** ```bash sudo apt autoremove sudo apt update ``` #### ⚠️ 重要注意事项 1. **谨慎处理多架构系统** 移除i386后,系统将无法安装32位应用: ```bash # 确认是否真的需要移除 file /lib/x86_64-linux-gnu/libc.so.6 | grep '32-bit' ``` 若输出包含`32-bit`,可能仍需保留部分i386支持 2. **使用安全回退方案** 若某些核心软件依赖i386,改用隔离方案: ```bash # 使用多架构容器替代直接移除 sudo apt install qemu-user-static podman run -it --rm arm64v8/ubuntu bash ``` 3. **检查架构兼容性** ```bash # 验证系统当前架构支持 arch dpkg --print-architecture # 显示允许的架构 cat /etc/dpkg/dpkg.cfg.d/multiarch ``` #### 📊 架构状态验证表格 | 验证步骤 | 预期结果 | 问题指示 | |----------|----------|----------| | `dpkg --print-foreign-architectures` | 无i386输出 | 出现`i386` | | `find /var/lib/dpkg/info -name "*:i386*"` | 空结果 | 存在`.list`文件 | | `apt policy <包名>:i386` | `无法安装` | `可安装` | #### 🛠️ 常见问题解决方案 1. **仍有顽固i386包残留**: ```bash sudo dpkg --purge $(dpkg -l | grep ':i386' | awk '{print $2}') ``` 2. **apt仍在尝试安装i386包**: ```bash sudo sed -i '/i386/d' /etc/apt/sources.list.d/* ``` 3. **出现"bro dependencies"错误**: ```bash sudo apt -f install sudo dpkg --configure -a ``` ### ✅ 最终验证 成功移除后运行: ```bash $ sudo dpkg --print-foreign-architectures amd64 arm64 ``` **建议保留的架构组合**: ```math S = \{a | a \in \{\text{amd64}, \text{arm64}\} \} ```
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值