Frage

Ich habe zum Anschluss eines U / MIN (made for Fedora) zu Ubuntu als. deb-Paket.

In den U / MIN .spec-Datei ich bin mit mehreren Variablen ($RPM_BUILD_ROOT, %{_libdir}, %{name}, %{version}), um erstellen Sie einen symlink:

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

(Relative Verknüpfungen sind verboten (bitte Fragen Sie nicht warum) - das ist der Grund, warum ln Befehl sieht seltsam aus.)

Also, was sind die Entsprechungen dieser Variablen in debian/rules makefile?

Vielen Dank im Voraus.

War es hilfreich?

Lösung

(Beiseite:Dies scheint wie etwas, das die upstream Makefile machen sollte, anstelle der nachgelagerten Verpackung.)

Hängt davon ab, welche Rahmen Sie für Ihre rules Datei.

In CDBS, so etwas wie dies funktionieren sollte...

#!/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)

Wenn Sie haben eine bessere Weg, um die version (sagen, $(shell cat version.txt))), verwenden Sie es.Die Debian-version ist nicht immer die Quelle-Paket-version;hier habe ich Streifen aus der Epoche und Verpackung version, falls vorhanden, aber dies ist nicht immer korrekt.

Andere CDBS-Klassen definieren kann $${libdir} und $${bindir}, aber ich habe nicht gesehen, nichts gemeinsam.

Beachten Sie, dass dh_link machen verwandter links, wenn möglich, gegeben, auch wenn die absoluten Pfade.Wenn dies ein problem ist, haben Sie vielleicht zu greifen, um etwas wirklich böse wie

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

Andere Tipps

In neueren Versionen von dpkg (1.17.0+), können Sie die Vollversion mit:

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

Und es gibt keine Notwendigkeit, sed zu verwenden, um die Teile zu extrahieren, vorausgesetzt, Sie SHELL := /bin/bash haben. Bash String Interpolation Verwenden Sie einfach wie folgt:

DEBVERSION := $(shell debver="$(DEBVER)"; echo "$${debver%-*}")
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top