【问题标题】:dh_link not overwriting symlink of another packagedh_link 不覆盖另一个包的符号链接
【发布时间】:2018-07-04 19:49:49
【问题描述】:

我有两个包:

  • libsai-A
  • libsai-B

这两个包都“提供”了一个名为“libsai”的虚拟包,但 libsai-B 可以“替换”(复制)libsai-A。出于某种原因,安装 libsai-B 时,并非 libsai-A 中的所有符号链接都会被覆盖。

libsai-A .deb 包中的符号链接: ./usr/lib/x86_64-linux-gnu/libsai-0.9.6.so -> libsai-0.9.6.so.1.0.0 ./usr/lib/x86_64-linux-gnu/libsai-0.9.6.so.1 -> libsai-0.9.6.so.1.0.0

libsai-B .deb 包中的符号链接: ./usr/lib/x86_64-linux-gnu/libsai-0.9.6.so -> ../test/dist/libsai-B-test.so ./usr/lib/x86_64-linux-gnu/libsai-0.9.6.so.1 -> ../test/dist/libsai-B-test.so

第一个符号链接 (libsai-0.9.6.so) 被正确覆盖。但第二个没有(libsai-0.9.6.so.1): root@TB:~# ls -alt /usr/lib/x86_64-linux-gnu/libsai* /usr/lib/x86_64-linux-gnu/libsai-0.9.6.so.1 -> libsai-0.9.6.so.1.0.0 <<<== WRONG LOCATION /usr/lib/x86_64-linux-gnu/libsai-0.9.6.so.1.0.0 /usr/lib/x86_64-linux-gnu/libsai-0.9.6.la /usr/lib/x86_64-linux-gnu/libsai-0.9.6.so -> ../test/dist/libsai-B-test.so
root@TB:~# dpkg -S /usr/lib/x86_64-linux-gnu/libsai-0.9.6.so.1 libsai-B: /usr/lib/x86_64-linux-gnu/libsai-0.9.6.so.1 root@TB:~# dpkg -S /usr/lib/x86_64-linux-gnu/libsai-0.9.6.so.1.0.0 libsai-A: /usr/lib/x86_64-linux-gnu/libsai-0.9.6.so.1.0.0

看起来符号链接 (libsai-0.9.6.so.1) 已更新为归 libsai-B 所有,但该符号链接的目标仍指向旧位置(libsai-A 拥有的文件)。

这是我的 libsai-B.link 文件的样子: usr/lib/test/dist/libsai-B-test.so usr/lib/x86_64-linux-gnu/libsai-0.9.6.so.1 usr/lib/test/dist/libsai-B-test.so usr/lib/x86_64-linux-gnu/libsai-0.9.6.so

我正在使用 Autotools 来触发所有 dh_helper 东西来创建我的包。知道我做错了什么吗?

谢谢!

【问题讨论】:

  • 如果你的包有Replaces: 行,它应该触发删除它替换的包。卸载软件包时 A 是否正确删除其符号链接? (对不起,当你最初发布你的问题时,我不知何故忽略了这个细节。)

标签: debian deb debhelper


【解决方案1】:

覆盖另一个软件包的符号链接违反了 Debian 政策。如果你想替换某些东西,你必须明确地覆盖它,或者使用类似替代品的工具。

【讨论】:

猜你喜欢
  • 1970-01-01
  • 2019-03-31
  • 2011-07-12
  • 1970-01-01
  • 2021-06-10
  • 1970-01-01
  • 2021-12-19
  • 2012-11-15
  • 1970-01-01
相关资源
最近更新 更多