Voglio creare manualmente un file DEB. Vorrei solo fornire una cartella contenente i dati da installare e uno script da eseguire dopo l'installazione.
È possibile?
Voglio creare manualmente un file DEB. Vorrei solo fornire una cartella contenente i dati da installare e uno script da eseguire dopo l'installazione.
È possibile?
Risposte:
La mia raccomandazione è di creare un pacchetto sorgente. Installa build-essential , debhelper , dh-make . Passare alla directory in cui si trovano i file che si desidera installare (il nome della directory deve essere nel formato $PACKAGE-$VERSION
, ad es. myapp-4.2-1
Per il primo tentativo di impacchettare Myapp V4.2) ed eseguire dh_make --createorig
. Rispondi alle domande. Debhelper creerà l'infrastruttura di base necessaria per creare un pacchetto generando file in una sottodirectory denominata debian
, sia alcuni file obbligatori che modelli per file opzionali. Potrebbe essere necessario modificare alcuni di questi file:
debian/rules
per creare ciò di cui hai bisogno per creare e installare i file nel posto giusto. Se hai solo bisogno di copiare alcuni file e non compilare elementi, basta modificare il file debian/install
per specificare quali file devono essere installati dove.debian/copyright
per aggiungere informazioni sulla licenza del pacchetto e informazioni su dove ottenere l'ultima versione (se pertinente).debian/changelog
per rimuovere il riferimento a un ITP (questo è rilevante solo se stai lavorando per il progetto Debian). Rinominare debian/postinst.ex
per debian/postinst
e aggiungere i comandi di post-installazione lì. Se successivamente aggiorni il tuo pacchetto, esegui debchange -i
per aggiungere una voce di log o per modificare il file in Emacs (con dpkg-dev-el installato).Esegui dpkg-buildpackage -rfakeroot -us -uc
per compilare il .deb
pacchetto (rimuovilo -us -uc
se vuoi firmare il pacchetto con la tua chiave PGP).
Se decidi di creare un pacchetto binario direttamente senza crearlo da un pacchetto sorgente, il che non è molto più facile perché non ci sono tanti strumenti per facilitare il processo, avrai bisogno di familiarità di base con il formato dei pacchetti deb. È descritto nel Debian Policy Manual , in particolare cap. 3 (formato dei pacchetti binari) , cap. 5 (file di controllo) , cap. 6 (script di installazione) e appendice B (manipolazione del pacchetto binario) .
Assicurati che il tuo pacchetto installi i file previsti /usr/share/doc/copyright
(contenente la licenza del contenuto del pacchetto, nonché dove trovare l'ultima versione del pacchetto) e /usr/share/doc/changelog.Debian.gz
(contenente il log delle modifiche del pacchetto deb). Non hai bisogno di questi se intendi utilizzare il pacchetto solo internamente, ma è meglio averli.
Se hai gli strumenti Debian disponibili, usa dpkg-deb
per costruire il pacchetto. Nella directory contenente i dati da installare, aggiungere una directory chiamata DEBIAN
al livello superiore, contenente i file di controllo e gli script del manutentore.
$ ls mypackage-42
DEBIAN etc usr var
$ dpkg-deb -b mypackage-42
Se non si dispone degli strumenti Debian, creare un archivio dei file che si desidera pacchetto chiamato data.tar.gz
, un archivio separato dei file di controllo chiamato control.tar.gz
(nessuna sottodirectory) e un file di testo chiamato debian-binary
e contenente il testo 2.0
.
cd mypackage-42
tar czf ../data.tar.gz [a-z]*
cd DEBIAN
tar czf ../../control.tar.gz *
cd ../..
echo 2.0 > debian-binary
ar r mypackage-42.deb debian-binary control.tar.gz data.tar.gz
Avete bisogno di almeno un file di controllo con i campi Package
, Maintainer
, Priority
, Architecture
, Installed-Size
, Version
, e ogni dichiarazione di dipendenza necessaria.
Viene chiamato lo script da eseguire dopo l'installazione postinst
. Assicurati di renderlo eseguibile. Accanto control
.
Se hai già un pacchetto binario da un'altra distribuzione, puoi usare alien per convertirlo.
dch -i
.
ar
facendo che tar
non lo è?
dh_make --createorig
utilizzati, è necessario export DEBEMAIL="me@example.com"
e export DEBFULLNAME="Firstname Lastname"
prima.
Prima di tutto devi creare una cartella di build e un archivio dei tuoi file: tar czvf data.tar.gz files
Quindi nella cartella build è necessario creare un file di controllo con alcune informazioni desiderate:
Package: xxxxxx
Version: 0.0.1
Section: user/hidden
Priority: optional
Architecture: armel
Installed-Size: `du -ks usr|cut -f 1`
Maintainer: Your Name <xxx@xxx.xx>
Description: This is optional, but creates warnings if left out
Quindi è possibile aggiungere script di shell preinst, postint, prerm e postrm in modo indipendente per controllare il comportamento pre e post installazione e pre e post rimozione del file .deb e quindi è possibile creare l'archivio di controllo con tar: tar czvf control.tar.gz control preinst postinst prerm postrm
Allora avete bisogno di un file debian-binary: echo 2.0 > debian-binary
. Nella tua cartella di build dovresti ora avere questi file: debian-binary
control.tar.gz
e data.tar.gz
.
Infine è necessario il ar
pacchetto per creare il file .deb:ar -r xxx.deb debian-binary control.tar.gz data.tar.gz
ar -r xxx.deb debian-binary control.tar.gz data.tar.gz
ciò potrebbe valere la pena sottolineare che l'ordine è importante: il controllo deve venire prima dei dati.
Faccio molti pacchetti e farne uno completo non è cosa da poco. Sul versante positivo, i file e gli script richiedono molto meno lavoro. È possibile creare un tale pacchetto, molto semplicemente, con uno strumento noto come debreate .
Debreate è una GUI davvero semplice, per la creazione di semplici pacchetti DEB. Puoi semplicemente specificare quali file, dove vanno e se / cosa dovrebbe essere eseguito su post / preinstallazione / disinstallazione. Ero solito fare tutti i miei pacchetti nel modo standard, ma dopo aver iniziato a usare questo strumento, tornerò indietro solo quando necessario.
Vedi il Debian Wiki sul packaging , forse equivs
(vedi link) soddisfa già i tuoi requisiti.
La pagina di Wikipedia sul deb
formato del file include anche molti link utili.
Mi sono imbattuto in questo con Zimbra 7 su Debian usando i suoi pacchetti Ubuntu. (Sono testardo, mi piace Debian> bUbuntu nonostante Zimbra rilasci solo per Ubuntu.) Non sono sicuro di come ho lavorato prima, sono certo di non doverlo fare prima di averlo installato in precedenza!
mkdir new
for i in *.deb
do echo `date`: working on $i
ar x $i
cd control
rm * 2> /dev/null
tar -xzpvf ../control.tar.gz
tr "_" "-" < control > control2
mv -v control2 control
tar -czpvf ../control.tar.gz .
cd ..
ar r new/$i debian-binary control.tar.gz data.tar.gz
done
rm -rf debian-binary control.tar.gz data.tar.gz control
Tutti i tuoi nuovi file .deb saranno presenti new/
.
Nota : questo è stato su squeeze - dpkg su wheezy ha --force-bad-version ora.
Per una rapida creazione di pacchetti è possibile verificare il programma di installazione utente. Fa un'installazione del programma, guarda i cambiamenti e ne crea un pacchetto deb o rpm.
$ apt-get install build-essential dh-make debhelper devscripts
$ wget http://nmap.org/dist/nmap-LAST.tar.bz2
$ tar xf nmap-LAST.tar.bz2
$ cd nmap-LAST
$ dh_make -s -e youremail@site.org -f ../nmap-LAST.tar.bz2
$ apt-get install libgtk2.0-dev flex bison libpcap0.8-dev \
libpcre3-dev binutils-dev python-all-dev
$ dpkg-buildpackage