【发布时间】:2021-10-28 18:03:31
【问题描述】:
我在翻译的 RPM 中遇到了一个问题,因为我在翻译 RPM 时会影响到其他功能正常的 jFrog artifactory debian 软件包 repo。
我正在将一些 RPM 重新构建为 DEB 并推送到我的工件,以便我可以根据需要进行安装。
- 获取 RPM
- 转换为 .deb:
fpm --name ${name} -s rpm -t deb
- 推向人工制品
新包添加到工件后,apt update 开始失败:
Hit:6 https://myjfrog/platform-debian-remote bionic-updates InRelease
Get:7 https://myjfrog/artifactory/xxx-debian xxx-5.4 InRelease [5894 B]
Get:8 https://myjfrog/artifactory/xxx-debian xxx-5.4/snapshot amd64 Packages [8521 B]
Fetched 14.4 kB in 3s (5332 B/s)
Reading package lists... Error!
E: Problem parsing dependency 21
E: Error occurred while processing oracle-instantclient12.2-devel (NewVersion2)
E: Problem with MergeList /var/lib/apt/lists/myjfrog.io_artifactory_xxx-debian_dists_xxx_snapshot_binary-amd64_Packages
E: The package lists or status file could not be parsed or opened.
Apt 然后被破坏,直到我从工件存储库中清除文件,并删除 /var/lib/apt/lists/*
我在添加包之前和之后对上述 apt 列表文件进行了比较,差异只是为该包添加的节:
root@xxx-sbox2-pipeline:/var/lib/apt/lists# diff /tmp/*amd64-Packages
1332,1353d1331
< Package: xxx-oracle-instantclient12.2-basic
< Version: 12.2.0.1.0-1
< License: Oracle
< Vendor: Oracle Corporation
< Architecture: amd64
< Maintainer: <@a15566901d8d>
< Installed-Size: 216337
< Depends: libaio, rpmlib(FileDigests) <= 4.6.0-1, rpmlib(PayloadFilesHavePrefix) <= 4.0-1, rpmlib(CompressedFileNames) <= 3.0.4-1, rpmlib(PayloadIsXz) <= 5.2-1
< Conflicts: oracle-instantclient12.2-basiclite
< Provides: libclntsh.so.12.1, oracle-instantclient12.2-basic, oracle-instantclient12.2-basic(x86-64)
< Section: Applications/File
< Priority: extra
< Homepage: http://www.oracle.com/
< Description: Instant Client allows you to run your applications without installing the standard Oracle client or having an ORACLE_HOME. OCI, OCCI, ODBC, and JDBC applications work without modification, while using significantly less disk space than before. No recompile, no hassle.
< .
< This is the Basic package, supporting OCI, OCCI, and JDBC-OCI with all
< languages.
< Filename: pool/snapshot/xxx-oracle-instantclient12.2-basic/xxx-oracle-instantclient12.2-basic_12.2.0.1.0-1_amd64.deb
< SHA1: 74843aefc7f559b40e1b6cacf96397b7a047bd12
< SHA256: 1e9e1e592f21edf12703d93e56b58ca5c30a329659456bdfaf0ffa39b13784ce
< Size: 68889880
<
此时所有 apt 命令都会失败,更新、安装……直到我重复 repo purge/rebuild index 和 rm /var/lib/apt/lists/* 过程。
我的包构建/上传到工件过程已经使用了很长时间。我一直使用它作为我唯一的包分发机制,直到现在才遇到任何问题。 正是这组 oracle instantclient12.2 包可以做到这一点。
相当 PITA,因为它需要手动修复任何实例,当该文件存在于存储库中时,它碰巧更新了它的包缓存。
我看到过与“MergeList 出现问题...(NewVersion2)”错误相关的类似报告,但它们似乎涉及 /var/lib/apt/lists/ 损坏,这显然是自己造成的。
https://askubuntu.com/questions/443244/eerror-occurred-while-processing-iw-newversion2 https://www.linuxquestions.org/questions/debian-26/apt-get-problem-problem-parsing-dependency-depends-906264/
尝试fpm 和alien 进行rpm-> deb 转换,没有区别。 (实际上,生成的 debs 的有效载荷和 DEBIAN/ 是相同的。很高兴知道两者之间的差异为零)
是什么导致“MergeList 出现问题”? 为什么这种情况是“特殊的”,而所有其他包都很好? 为什么只使用“转换后的”RPM? 里面有“甲骨文”这个词吗?在这一点上,我几乎会相信。
【问题讨论】:
-
jFrog 承认这是一个问题,并将得到解决。当我得到它们时会发布更新。仍然没有关于元数据中究竟是什么问题导致工件出错的消息。这是我真正想知道的,所以我可以避免它。
标签: linux ubuntu artifactory apt jfrog