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-1Per 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/rulesper 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/installper specificare quali file devono essere installati dove.debian/copyrightper aggiungere informazioni sulla licenza del pacchetto e informazioni su dove ottenere l'ultima versione (se pertinente).debian/changelogper rimuovere il riferimento a un ITP (questo è rilevante solo se stai lavorando per il progetto Debian). Rinominare debian/postinst.exper debian/postinste aggiungere i comandi di post-installazione lì. Se successivamente aggiorni il tuo pacchetto, esegui debchange -iper aggiungere una voce di log o per modificare il file in Emacs (con dpkg-dev-el installato).Esegui dpkg-buildpackage -rfakeroot -us -ucper compilare il .debpacchetto (rimuovilo -us -ucse 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-debper costruire il pacchetto. Nella directory contenente i dati da installare, aggiungere una directory chiamata DEBIANal 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-binarye 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.
arfacendo che tarnon lo è?
dh_make --createorigutilizzati, è 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.gze data.tar.gz.
Infine è necessario il arpacchetto 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.gzciò 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 debformato 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