我必须将一个 RPM(为 Fedora 制作)作为 deb 包移植到 Ubuntu。
在 RPM .spec 文件中,我使用几个变量 ( $RPM_BUILD_ROOT, %{_libdir}, %{name}, %{version}) 创建符号链接:
%install
...
(cd $RPM_BUILD_ROOT/%{_bindir}; ln -sf %{_libdir}/%{name}-%{version}/%{name} . )
Run Code Online (Sandbox Code Playgroud)
(禁止使用相对符号链接(请不要问为什么)——这就是为什么ln命令看起来很奇怪。)
那么,debian/rulesmakefile中这些变量的等价物是什么?
提前致谢。
(旁白:这似乎是上游 Makefile 应该做的事情,而不是下游包装。)
取决于您的rules文件使用哪个框架。
在CDBS中,类似的东西应该有效......
#!/usr/bin/make -f
include /usr/share/cdbs/1/rules/debhelper.mk
# probably what you want (automagic happens),
# but I don't know details of your package
#include /usr/share/cdbs/1/class/automake.mk
DEBVERS := $(shell dpkg-parsechangelog | sed -n -e 's/^Version: //p')
VERSION := $(shell echo '$(DEBVERS)' | sed -e 's/^[[:digit:]]*://' -e 's/[~-].*//')
install/$(DEB_ALL_PACKAGES)::
dh_link -p$(cdbs_curpkg) \
/usr/lib/$(cdbs_curpkg)-$(VERSION)/$(cdbs_curpkg) \
/usr/bin/$(cdbs_curpkg)
Run Code Online (Sandbox Code Playgroud)
如果您有更好的获取版本的方法(例如,$(shell cat version.txt))),请使用它。Debian版本并不总是源码包版本;在这里,我删除了时代和包装版本(如果有),但这并不总是正确的。
其他 CDBS 类可能定义$${libdir}和$${bindir},但我没有看到任何常见的东西。
请注意,dh_link如果可能,即使给定绝对路径,也会建立相对链接。如果这是一个问题,你可能不得不诉诸一些非常讨厌的东西,比如
cd debian/$(cdbs_curpkg) && ln -s ...
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
6647 次 |
| 最近记录: |