Costruisci RPM usando la directory sorgente, non tarball


13

Nella mia organizzazione, implementiamo tutto il nostro software sui nostri macchinari di produzione utilizzando RPM. Il nostro processo di compilazione (che è automatizzato) prevede di estrarre l'origine dal controllo della versione, mettere in ordine la directory di origine e quindi eseguire rpmbuild usando quel tarball di origine. rpmbuild usa solo quel tarball per decomprimere le fonti per lavorarci sopra. Quindi, sembra che l'intera attività di taratura e di stallo sia solo un ulteriore passo non necessario nel processo di costruzione. Esiste un modo per specificare semplicemente la directory di origine nel file delle specifiche, evitando quei passaggi aggiuntivi?

Risposte:


5

Si, puoi farlo. Non elencare alcun Sources. Nella %prepsezione non utilizzare la %setupmacro (che annulla la fonte); piuttosto, basta controllare la fonte.

Si noti che non sarà possibile creare SRPM se si esegue questa operazione.


Questo lo fa. Devo solo modificare la procedura di compilazione per controllare invece le cose nella directory BUILD di rpm. Grazie!
Eddie,

10

Questa domanda è un po 'vecchia, ma nel caso in cui altre persone la trovino nella ricerca c'è un modo più corretto per farlo che consente anche la creazione di un SRPM.

Nella sezione prep, invece di utilizzare la macro di installazione , dovresti semplicemente digitare te stesso ciò che vuoi che faccia, vale a dire copiare la directory di origine da SOURCES a BUILD, invece di decomprimere un archivio. Ho scoperto che anche tu devi aggiungere un cd nella directory dei sorgenti nelle sezioni build e install.

Esempio di frammento

%prep
# Don't use the setup macro anymore, replace it with typed-out commands
#%setup -q -n myapp-%{version}
cd %{_topdir}/BUILD
rm -rf myapp-%{version}
cp -rf %{_topdir}/SOURCES/myapp-%{version} .
cd myapp-%{version}
/usr/bin/chmod -Rf a+rX,u+w,g-w,o-w .

%patch1 -p1 -b .cert-config
%patch2

%build
cd myapp-%{version}

%install
cd myapp-%{version}

Dovrebbe %{_topdir}/SOURCESessere %{_sourcedir}? E %{_topdir}/BUILDpotrebbe essere %{buildroot}? (A parte questo, per situazioni simili ma diverse in cui stai provando ad aggiungere file extra per sovrascrivere quelli estratti %setup, i documenti Fedora raccomandano di usare %{SOURCE2}etc - fedoraproject.org/wiki/Packaging:RPM_Source_Dir )
IBBoard
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.