当前位置: 首页 > news >正文

pacman 升级软件包提示 “failed to commit transaction (invalid or corrupted package)“

很久没打开 WSL 2 里面的 Arch Linux, 想着更新一下软件包, 执行 pacman -Syu, 遇到 “signature is marginal trust” “failed to commit transaction (invalid or corrupted package)” 等错误.

执行 pacman -Syu 报错 "Failed to commit transaction (invalid or corrupted package)"
观察输出的信息, 似乎提到了 “签名” “信任” 的问题 (signature … is marginal trust).

可能当时自己搜索时关键字没提供完整或是什么问题, 总之没能解决问题, 于是可怜兮兮去问友人, 然后被告知 ArchWiki 上就有, 还被责怪为什么不先去看 Wiki.

友人回复挺快, 而且 ArchWiki 的 Pacman 页面 上边 Troubleshooting 章节下的第二点就是, 估计也是常见的问题. ArchWiki 上边的其他记录也挺全面详实的.

果然遇事还是应该先看 Wiki, 写这篇博文也是为了记录这个教训.

总之, 在 ArchWiki 的对应部分, 也就是 “Failed to commit transaction (invalid or corrupted package)” error, 可以看到这样一段话:

That same error may also appear if archlinux-keyring is out-of-date, preventing pacman from verifying signatures. See Pacman/Package signing#Upgrade system regularly for the fix and how to avoid it in the future.

大概意思是说:

同样的错误也可能是 archlinux-keyring 这个软件包过时所导致的, 使得 pacman 无法进行签名验证. 参考 Pacman/关于软件包签名#定期更新系统 以获得问题的解决方案以及如何避免在未来遇到同样问题.

点进文字中链接的这个页面可以看到:

Upgrading the system regularly via pacman#Upgrading packages prevents most signing errors. If delay is unavoidable and system upgrade gets delayed for an extended period, manually sync the package database and upgrade the archlinux-keyring package before system upgrade:

# pacman -Sy archlinux-keyring && pacman -Su

This command is not considered a partial upgrade since it syncs the package database and upgrades the keyring package first. Both must be processed just before starting system upgrade to ensure signatures of all upgraded packages can be properly verified.

大概意思是说:

根据 pacman#升级软件包 中的内容定期升级系统可以避免大部分的签名错误. 如果遇到了不可避免的延迟, 导致系统升级 (system upgrade) 比平时延迟了更长一段时间, 则需要使用如下命令, 在系统升级前手动同步软件包数据库并升级 archlinux-keyring 软件包:

pacman -Sy archlinux-keyring && pacman -Su

这个命令并不会被视作一次 “部分升级”, 因为它在同步了软件包数据库后只是首先安装了 keyring 软件包. 在进行系统升级前, 两项工作都必须进行, 以确保所有被升级的软件包的签名都能被正确验证.

如上, 签名无法验证导致软件包提示损坏的问题应该就能够解决了.

相关文章:

  • 大家都在“跪求”的Spring响应式微服务PDF蓝光版,简直羡慕了!
  • 屏蔽搜索引擎的无用蜘蛛,减轻服务器压力
  • 微信小程序开发开篇词 自顶向下,云端赋能:小程序的高效开发之道
  • Docker的常用命令
  • MySQL高级篇03【逻辑架构】
  • 云原生之容器编排实践-阿里云私有容器镜像仓库
  • 对二维数组从两个维度进行排序(Arrays.sort()方法使用Lambada表达式)
  • SpringBoot 接口整理
  • SpringBoot工程打包与发布运行
  • 芒格-“永远不要有受害者心态”
  • 【位运算】leetcode 190. 颠倒二进制位
  • nexus on k8s最佳实战
  • LeetCode 每日一题 2022/8/29-2022/9/4
  • webpack定制化 高级配置[热更新、热打包、别名、调试]
  • 外贸员需要知道的那些事儿
  • JS 中的深拷贝与浅拷贝
  • 【跃迁之路】【641天】程序员高效学习方法论探索系列(实验阶段398-2018.11.14)...
  • Android开源项目规范总结
  • angular组件开发
  • canvas绘制圆角头像
  • CentOS从零开始部署Nodejs项目
  • Effective Java 笔记(一)
  • Elasticsearch 参考指南(升级前重新索引)
  • flutter的key在widget list的作用以及必要性
  • go append函数以及写入
  • Golang-长连接-状态推送
  • Java 9 被无情抛弃,Java 8 直接升级到 Java 10!!
  • Java应用性能调优
  • maven工程打包jar以及java jar命令的classpath使用
  • MySQL Access denied for user 'root'@'localhost' 解决方法
  • Terraform入门 - 3. 变更基础设施
  • vue-cli在webpack的配置文件探究
  • 分类模型——Logistics Regression
  • 基于Mobx的多页面小程序的全局共享状态管理实践
  • 为物联网而生:高性能时间序列数据库HiTSDB商业化首发!
  • 一起参Ember.js讨论、问答社区。
  • 2017年360最后一道编程题
  • 基于django的视频点播网站开发-step3-注册登录功能 ...
  • ​软考-高级-系统架构设计师教程(清华第2版)【第20章 系统架构设计师论文写作要点(P717~728)-思维导图】​
  • ### Error querying database. Cause: com.mysql.jdbc.exceptions.jdbc4.CommunicationsException
  • (1)Map集合 (2)异常机制 (3)File类 (4)I/O流
  • (android 地图实战开发)3 在地图上显示当前位置和自定义银行位置
  • (第一天)包装对象、作用域、创建对象
  • (二)七种元启发算法(DBO、LO、SWO、COA、LSO、KOA、GRO)求解无人机路径规划MATLAB
  • (附源码)springboot家庭财务分析系统 毕业设计641323
  • (附源码)ssm跨平台教学系统 毕业设计 280843
  • (排序详解之 堆排序)
  • (三)Pytorch快速搭建卷积神经网络模型实现手写数字识别(代码+详细注解)
  • (三分钟)速览传统边缘检测算子
  • (十)c52学习之旅-定时器实验
  • (一)基于IDEA的JAVA基础12
  • (转)用.Net的File控件上传文件的解决方案
  • (转)原始图像数据和PDF中的图像数据
  • .net core 6 集成 elasticsearch 并 使用分词器
  • .NET/C# 使用反射注册事件