Domanda

Devo portare un RPM (creato per Fedora) su Ubuntu come pacchetto deb.

Nel file RSP .spec sto usando diverse variabili ( $ RPM_BUILD_ROOT,% {_ libdir},% {name},% {version} ) per creare un link simbolico:

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

(I link simbolici relativi sono vietati (per favore non chiedere perché) - ecco perché il comando ln sembra strano.)

Quindi, quali sono gli equivalenti di quelle variabili nel makefile debian / rules ?

Grazie in anticipo.

È stato utile?

Soluzione

(A parte: questo sembra qualcosa che dovrebbe fare il Makefile a monte, invece del packaging a valle.)

Dipende dal framework che stai usando per il tuo file rules .

In CDBS , qualcosa del genere dovrebbe funzionare ...

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

Se hai un modo migliore per ottenere la versione (per esempio, $ (shell cat version.txt)) ), usala. La versione Debian non è sempre la versione del pacchetto sorgente; qui, rimuovo l'epoca e l'eventuale versione del packaging, ma questo non è sempre corretto.

Altre classi CDBS potrebbero definire $$ {libdir} e $$ {bindir} , ma non ho visto nulla di comune.

Nota che dh_link creerà collegamenti relativi, se possibile, anche quando vengono dati percorsi assoluti. Se questo è un problema, potresti dover ricorrere a qualcosa di veramente brutto come

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

Altri suggerimenti

Nelle versioni più recenti di dpkg (1.17.0+), puoi ottenere la versione completa con:

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

E non è necessario usare sed per estrarre le parti, supponendo che tu abbia SHELL: = / bin / bash . Usa l'interpolazione della stringa bash in questo modo:

DEBVERSION := $(shell debver="$(DEBVER)"; echo "${debver%-*}")
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top