2012-06-12 9 views
5

sarebbe stato creato un pacchetto Debian Semplice nella seguente procedura, le seguenti operazioni sarebbero tutorial per principianticome includere una directory nel pacchetto debuild

considerare Ho un file consente di dire test.sh che basta stampare di prova sullo schermo

#!/bin/sh 
set -e 
echo "this is sample debian package created " >&2 

Quale dovrebbe essere l'output dopo l'installazione del pacchetto debian? A) Voglio inserire il file sopra che ho chiamato come test.sh in/home/bla/Desktop/dopo aver installato il pacchetto usando "dpkg -i test-1.0.deb"

Al fine di ottenere il suddetto processo seguire i passaggi di seguito indicati come

mkdir test-1.0 
cd test-1.0 
#in order to place test.sh in /home/bla/Desktop, simply create the same directory structure in the test folder using this command 

mkdir -p home/bla/Desktop/ 
cp test.sh home/bla/Desktop/ 
cd .. 
cd .. 
cd .. 
mkdir DEBIAN 
cd DEBIAN 

aggiungere il file di controllo con i seguenti contenuti

Package: test 
Version: 1.0 
Section: devel 
Priority: optional 
Architecture: all 
Essential: no 
Depends: bash 
Pre-Depends: no 
Recommends: no 
Maintainer: test <[email protected]> 
Replaces: no 
Provides: no 
Description: A sample testpackage in order to demonstrate how to create debian packages 

pacchetto è pronto venire al di fuori della cartella di prova e immettere dpkg --build test-1.0/

il pacchetto è pronto ed è possibile installarlo utilizzando dpkg -i test-1.0.deb

Se voglio fare lo stesso processo con dh_make e debuild, sono stato in grado di aggiungere la struttura di directory in cui volevo che il mio test.sh da collocare dopo l'installazione

passi che ho seguito:

  1. mkdir test-1.0
  2. copiare la struttura di directory come sopra

    cd test-1.0/ && mkdir -p home/bla/Desktop/ 
    cp test.sh home/bla/Desktop/ 
    
  3. dh_make -n -s -e [email protected]

  4. cd debian
  5. rm *.ex *.EX
  6. cd ..
  7. debuild -us -uc

non mater ciò che il mio test.sh non è affatto incluso nel pacchetto dopo, i donot sapere qual è la ragione è quello che ho capito dal manuale debian

qualcuno può farlo, per favore fatemelo al più presto .., Voglio solo sapere come posso includere i file nel pacchetto quando si costruisce pacchetto Debian usando debuild/dpkg-buildpackage come ho fatto nel primo processo che è molto semplice

+0

Non includere home directory degli utenti nel pacchetto stesso (è un'idea orribile), metti il ​​tuo eseguibile nella posizione standard (per esempio. '/ usr/bin') e creare un collegamento ad esso (o meglio creare file .desktop) con invece lo script' postinst'. –

+0

che era un esempio, ho bisogno di creare un pacchetto che collochi tutti i file nelle rispettive cartelle come test1 in/tmp/test, test2 in/usr/test2 –

risposta

11

AQ/D esempio utilizzando dh *e dpkg-buildpackage:

1) pepare directory di lavoro e file di prova (che stiamo per confezionare "foo" script che dovrebbe essere installato a "/ qualsiasi/dir"):

mkdir test-0.0.1 
cd test-0.0.1 
echo -e "#\!/bin/sh\necho \"hi, i'm foo\"" > foo 
chmod +x foo 

2) creare semplici Makefile che gestirà installazione:

binary: 
    # we are not going to build anything 

install: 
    mkdir -p $(DESTDIR)/any/dir 
    cp foo $(DESTDIR)/any/dir 

3) Genera pacchetto di scheletro:

dh_make -i --createorig 

3a) Optionall y regolare file di controllo debian

4) costruire il pacchetto:

dpkg-buildpackage -A -uc 

5) test generati Contenuto della confezione:

dpkg-deb -c ../test_0.0.1-1_all.deb | grep any 

drwxr-xr-x root/root   0 2012-06-12 20:54 ./any/ 
drwxr-xr-x root/root   0 2012-06-12 20:54 ./any/dir/ 
-rwxr-xr-x root/root  30 2012-06-12 20:54 ./any/dir/foo 

Edit: Esempio senza usare Makefile (se non stanno andando a accumulo nulla):

1) creare dati di test:

mkdir test-0.0.1 
cd test-0.0.1 
mkdir contents 
touch contents/a 
touch contents/b 

2) Creare pacchetto di scheletro:

dh_make -i --createorig 

3) Crea debian/test.installare file con seguente contenuto:

contents/ /usr/share/mycontents 

4) pacchetto build:

dpkg-buildpackage -A -uc 

5) Esaminare pacchetto di costruzione:

dpkg-deb -c ../test_0.0.1-1_all.deb | grep contents 

drwxr-xr-x root/root   0 2012-06-13 11:44 ./usr/share/mycontents/ 
drwxr-xr-x root/root   0 2012-06-13 11:38 ./usr/share/mycontents/contents/ 
-rw-r--r-- root/root   0 2012-06-13 11:37 ./usr/share/mycontents/contents/a 
-rw-r--r-- root/root   0 2012-06-13 11:38 ./usr/share/mycontents/contents/b 
+0

grazie mille, e se ho centinaia di file posso includere una sfera tar di contenuti e successivamente copiare il contenuto in script postinst .. altra alternativa ad eccezione di Makefile –

+0

@ user1430462: aggiungi 'cp yourdir/* $ (DESTDIR) /' a Makefile o vedi modifica per esempio senza Makefile :) –

+0

Sono un po 'infantile posso usare qualsiasi altro file di makefile, in qualche modo ho paura di makefile ho esattamente 1145 file da copiare, stavo pensando di copiare il contenuto nella cartella tmp in seguito copiare tutti i file nelle rispettive posizioni usando gli script postinst, ma preoccupandomi di cosa devo fare se ho bisogno di aggiornare i file, ho bisogno di considerare alcune cose in cui ho perso l'aggiornamento di default del pacchetto debian, in ogni caso grazie per l'eccellente tutorial –