سؤال

ولقد لميناء RPM واحد (مصنوعة لفيدورا) إلى أوبونتو كحزمة ديب.

في الملف .spec RPM أنا باستخدام العديد من المتغيرات ($RPM_BUILD_ROOT, %{_libdir}, %{name}, %{version}) لإنشاء الارتباط الرمزي:

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

و(يحظر على روابط الرمزية النسبية (من فضلك لا تسأل لماذا) - وهذا هو السبب يبدو الأمر غريبا ln)

وهكذا، ما هي المعادل لتلك المتغيرات في MAKEFILE debian/rules؟

وشكرا مقدما.

هل كانت مفيدة؟

المحلول

(وبصرف النظر: هذا يبدو وكأنه شيء أن ماكيفيلي المنبع يجب أن تقوم به، بدلا من التعبئة والتغليف المصب)

والذي يعتمد على الإطار الذي تستخدمه لملف 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)

إذا كان لديك وسيلة أفضل للحصول على النسخة (ويقول، $(shell cat version.txt)))، واستخدامها. نسخة ديبيان ليست دائما إصدار حزمة المصدر؛ هنا، وأنا خارج الشريط النسخة العصر والتعبئة والتغليف، إن وجدت، ولكن هذا ليس صحيحا دائما.

والطبقات CDBS أخرى قد تحدد $${libdir} و$${bindir}، لكني لم أر أي شيء مشترك.

لاحظ أن dh_link سيجعل الارتباطات النسبية إذا أمكن، حتى عندما تتاح مسارات مطلقة. إذا كانت هذه هي المشكلة، قد تضطر الى اللجوء الى شيء مقرف حقا مثل

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

نصائح أخرى

في إصدارات أحدث من نظام إدارة حزم دبيان (1.17.0+)، يمكنك الحصول على النسخة الكاملة مع:

DEBVER := $(shell dpkg-parsechangelog -SVersion)

وليس هناك حاجة لاستخدام الحوار الاقتصادي الاستراتيجي لاستخراج أجزاء، على افتراض لديك SHELL := /bin/bash. مجرد استخدام الاستيفاء سلسلة باش مثل ذلك:

DEBVERSION := $(shell debver="$(DEBVER)"; echo "$${debver%-*}")
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top