Naf*_*Kay 7 rpm packaging rhel centos shared-library
我在 RPM 包装中看到了一个有趣的模式。主库包将包含共享库本身:
/usr/lib64/libavcodec.so.54
Run Code Online (Sandbox Code Playgroud)
-devel 包将提供标题和符号链接:
/usr/include/libavcodec/libavcodec.h
/usr/lib64/libavcodec.so -> /usr/lib64/libavcodec.so.54
Run Code Online (Sandbox Code Playgroud)
为什么 libavcodec.so 符号链接由 devel 包提供,而不仅仅是包含在共享库包中?符号链接与开发人员想要的东西有什么关系?标头是有道理的,但为什么是共享对象的符号链接?
发行版中的软件始终机械地链接,并期望找到libavcodec.so.54,因此任何预构建的软件包都不需要未版本化的名称。
但是,如果您自己构建软件,则使用-lavcodec或类似的方法很常见,但会发现libavcodec.so未版本化。类似地,构建脚本可能期望这些名称存在。
分发包不需要未版本化的名称,因此默认情况下不包含它们,但由于它们在构建其他软件时很有用,因此它们包含在-devel包中。其他发行版进行了不同的描述,并.so在主包中包含了链接;两者都是合理的选择。