gpt4 book ai didi

ubuntu - debian/rules makefile 中的变量

转载 作者:太空宇宙 更新时间:2023-11-03 16:55:11 25 4
gpt4 key购买 nike

我必须将一个 RPM(为 Fedora 制作)作为 deb 包移植到 Ubuntu。

在 RPM .spec 文件中,我使用了几个变量($RPM_BUILD_ROOT, %{_libdir}, %{name}, %{version})来创建符号链接(symbolic link):

%install
...
(cd $RPM_BUILD_ROOT/%{_bindir}; ln -sf %{_libdir}/%{name}-%{version}/%{name} . )

(禁止相对符号链接(symbolic link)(请不要问为什么)——这就是为什么 ln 命令看起来很奇怪。)

那么,debian/rules makefile 中那些变量的等价物是什么?

提前致谢。

最佳答案

(旁白:这似乎是上游 Makefile 应该做的事情,而不是下游打包。)

取决于您为规则文件使用的框架。

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)

如果您有更好的获取版本的方法(例如,$(shell cat version.txt))),请使用它。 Debian 版本并不总是源码包版本;在这里,我去掉了纪元和包装版本(如果有的话),但这并不总是正确的。

其他 CDBS 类可能定义了 $${libdir}$${bindir},但我没有看到任何共同点。

请注意,dh_link 将尽可能创建相对链接,即使在给定绝对路径时也是如此。如果这是一个问题,您可能不得不求助于一些非常讨厌的东西,比如

        cd debian/$(cdbs_curpkg) && ln -s ...

关于ubuntu - debian/rules makefile 中的变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/804948/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com