Creazione di un pacchetto debian .deb: Difference between revisions

From RVM Wiki
Jump to navigation Jump to search
mNo edit summary
proseguire con ilcontro file di backup-remoto
Line 1: Line 1:
{{stub}}
== Installazione pacchetti sviluppatore ==
== Installazione pacchetti sviluppatore ==


Line 13: Line 15:
Supponiamo che lo script si chiami  '''backup-remoto''' legga la sua configurazione da '''backup-remoto.con'''f e sia eseguito tutte le notti alle 20:00
Supponiamo che lo script si chiami  '''backup-remoto''' legga la sua configurazione da '''backup-remoto.con'''f e sia eseguito tutte le notti alle 20:00


=== Preparazione delle directory ==
=== Preparazione delle directory ===


<pre>
<pre>
Line 70: Line 72:
</pre>
</pre>


=== Creazione della tarball ===
<pre>
export PKGNAME="backup-remoto"
cd ..
tar cvzf $PKGNAME-1.0.0.tar.gz $PKGNAME-1.0.0
</pre>
Saltare a "Debianizzazione"


== Preparazione del pacchetto in formato tar.gz ==
== Preparazione del pacchetto in formato tar.gz ==
Line 83: Line 95:
wget http://plonk.de/sw/odmr/odmrspool.pl
wget http://plonk.de/sw/odmr/odmrspool.pl
</pre>
</pre>
== Debianizzazione ==
export DEBFULLNAME="Gabriele Vivinetto"
export DEBEMAIL=gabriele.mailing@rvmgroup.it
dh_make -e gabriele.mailing@rvmgroup.it -f ../odmrd09rc9.tar.gz


== Preparazione / Personalizzazione del Makefile ==
== Preparazione / Personalizzazione del Makefile ==
Line 108: Line 114:
                 addgroup --system odmr
                 addgroup --system odmr
EOFile
EOFile
</pre>
== Debianizzazione ==
<pre>
export PKGNAME="backup-remoto"
export DEBFULLNAME="Gabriele Vivinetto"
export DEBEMAIL=gabriele.mailing@rvmgroup.it
cd $PKGNAME-1.0.0
dh_make -e gabriele.mailing@rvmgroup.it -f ../$PKGNAME-1.0.0.tar.gz
</pre>
Ora la situazione dovrebbe essere:
<pre>
mnt.vvngrl@ergo:~/debian-packages/backup-remoto/backup-remoto-1.0.0$ ls
total 28
drwxr-xr-x  3 mnt.vvngrl mnt.vvngrl 4096 2006-03-16 19:58 .
drwxr-xr-x  3 mnt.vvngrl mnt.vvngrl 4096 2006-03-16 19:58 ..
-rwxr-xr-x  1 mnt.vvngrl mnt.vvngrl 2023 2006-03-16 19:43 backup-remoto
-rw-r--r--  1 mnt.vvngrl mnt.vvngrl 1158 2006-03-16 19:46 backup-remoto.conf
-rw-r--r--  1 mnt.vvngrl mnt.vvngrl  140 2006-03-16 19:47 backup-remoto.cron
drwxr-xr-x  2 mnt.vvngrl mnt.vvngrl 4096 2006-03-16 19:58 debian
-rw-r--r--  1 mnt.vvngrl mnt.vvngrl  452 2006-03-16 19:09 Makefile
</pre>
</pre>



Revision as of 19:01, 16 March 2006

Attenzione questo articolo è ancora incompleto.
Sentiti libero di contribuire cliccando sul tasto edit.

Installazione pacchetti sviluppatore

apt-get install dpkg-dev file gcc g++ libc6-dev make patch perl dh-make fakeroot devscripts lintian linda

Creazione di un pacchetto per uno script

Si supponga di voler installare:

  • uno script
  • un file di configurazione
  • un file di cron

Supponiamo che lo script si chiami backup-remoto legga la sua configurazione da backup-remoto.conf e sia eseguito tutte le notti alle 20:00

Preparazione delle directory

export $PKGNAME="backup-remoto"
cd debian-packages/
mkdir $PKGNAME
cd $PKGNAME
mkdir PKGNAME-1.0.0
cd PKGNAME1.0.0

Copiare in questa directory lo script ed il file di configurazione.

Preparazione del Makefile

Occorre creare un Makefile funzionante per l'installazione, in quanto viene usate da dpkg per installare il pacchetto.

Un esempio è:

cat > Makefile <<'EOFile'
SBIN    = $(DESTDIR)/usr/sbin
ETC     = $(DESTDIR)/etc
DOC     = $(DESTDIR)/usr/share/doc
PKG     = backup-remoto

.PHONY: all install clean
all:    ;
clean:  ;
install:
                install -d $(SBIN)
                install -m 755 ./$(PKG) $(SBIN)/$(PKG)
                # installa l'eseguibile
                install -d $(DOC)/$(PKG)
                install -m 644 ./README $(DOC)/$(PKG)/README
                # installa la documentazione
                install -d $(ETC)/$(PKG)
                install -m 644 ./$(PKG).conf $(ETC)/$(PKG)/$(PKG).conf
                installa il file di configurazione
                install -d $(ETC)/cron.d
                install -m 644 ./$(PKG).cron $(ETC)/cron.d/$(PKG)
                installa il file di cron
EOFile

Preparazione del file cron

Questo è un file di esempio:

export PKGNAME=backup-remoto"
cat > $PKGNAME.cron <<EOFile
#m      h       dom     mon     dow     user    command
0      20       *       *       *       root    /usr/sbin/$PKGNAME > /dev/null
EOFile


Creazione della tarball

export PKGNAME="backup-remoto"
cd ..
tar cvzf $PKGNAME-1.0.0.tar.gz $PKGNAME-1.0.0

Saltare a "Debianizzazione"

Preparazione del pacchetto in formato tar.gz

lynx plonk.de
mkdir odmrd09rc9
cd odmrd09rc9
tar xvzf ../odmrd09rc9.tar.gz
cd ..
mv odmrd09rc9 odmrd-0.9.0rc9
cd odmrd-0.9.0rc9
wget http://plonk.de/sw/odmr/odmrspool.pl

Preparazione / Personalizzazione del Makefile

cat > Makefile <<'EOFile'
SBIN    = $DESTDIR/usr/sbin
ETC     = $DESTDIR/etc
DOC     = $DESTDIR/usr/share/doc

install:        odmrd-target
                install -d $(SBIN)
                install -m755 ./odmrd09rc9.pl $(SBIN)/odmrd
                install -m755 ./odmrspool $(SBIN)/odmrspool
                install -d ./odmrd.conf $(ETC)/odmrd/odmrd.conf
                install -d $(DESTDIR)/usr/share/doc/odmrd
                cp -a readme.html $(DESTDIR)/usr/share/doc/odmrd
                adduser --system odmr
                addgroup --system odmr
EOFile



Debianizzazione

export PKGNAME="backup-remoto"
export DEBFULLNAME="Gabriele Vivinetto"
export DEBEMAIL=gabriele.mailing@rvmgroup.it
cd $PKGNAME-1.0.0
dh_make -e gabriele.mailing@rvmgroup.it -f ../$PKGNAME-1.0.0.tar.gz

Ora la situazione dovrebbe essere:

mnt.vvngrl@ergo:~/debian-packages/backup-remoto/backup-remoto-1.0.0$ ls
total 28
drwxr-xr-x  3 mnt.vvngrl mnt.vvngrl 4096 2006-03-16 19:58 .
drwxr-xr-x  3 mnt.vvngrl mnt.vvngrl 4096 2006-03-16 19:58 ..
-rwxr-xr-x  1 mnt.vvngrl mnt.vvngrl 2023 2006-03-16 19:43 backup-remoto
-rw-r--r--  1 mnt.vvngrl mnt.vvngrl 1158 2006-03-16 19:46 backup-remoto.conf
-rw-r--r--  1 mnt.vvngrl mnt.vvngrl  140 2006-03-16 19:47 backup-remoto.cron
drwxr-xr-x  2 mnt.vvngrl mnt.vvngrl 4096 2006-03-16 19:58 debian
-rw-r--r--  1 mnt.vvngrl mnt.vvngrl  452 2006-03-16 19:09 Makefile


Creazione del control file

cd debian 
cat > control <<'EOFile'
Source: odmrd
Section: mail
Priority: extra
Maintainer: Gabriele Vivinetto <gabriele.mailing@rvmgroup.it-f>
Build-Depends: debhelper (>= 4.0.0)
Standards-Version: 3.6.1

Package: odmrd
Architecture: all
Depends: postfix (>= 2.1.5-9), libmime-perl (>= 5.417-1), libdbd-mysql-perl (>= 2.9006-1) ${shlibs:Depends}, ${misc:Depends}
Description: An On Demad Mail Relay Daemon that uses ATRN to deliver Mail
 ODMR is "SMTP with Dynamic IP Addresses". It uses an "Authenticated TURN"
 (ATRN) to deliver queued mail to a mailserver with a dynamic IP address.
 It works with Postfix (and Exim too).
EOFile

Preparazione degli altri file

cat >copyright <<'EOFile'
This package was debianized by Gabriele Vivinetto <gabriele.mailing@rvmgroup.it-f> on
Fri, 17 Jun 2005 17:12:48 +0200.

It was downloaded from http://plonk.de/sw/odmr/

Copyright Holder: Jakob Hirsch <odmrd@plonk.de>

License: GNU GPL
EOFile

Creazione del pacchetto

cd ..
dpkg-buildpackage -rfakeroot


Aggiornamento del pacchetto

Aggiornamento in caso di correzione BUG

Modificare il Changelog:

export DEBFULLNAME="Gabriele Vivinetto"
export DEBEMAIL=gabriele.mailing@rvmgroup.it
dch -i


Applicare le correzioni necessarie ai sorgenti.

Riscostruire il pacchetto:

dpkg-buildpackage -rfakeroot

Ora si può caricare nel repository il pacchetto costruito, che avrà versione x.y.z-+1


Script di upload dei pacchetti

Questo script è utile per caricare via scp i pacchetti creati sl proprio repository.

#!/bin/bash
test $1 || {
        echo "Usage: upload-debrvm package.deb"
        exit 1
}
SHORTNAME=$(echo $1 | cut -f 1 --delim="_")
echo "* Uploading $SHORTNAME"
scp -pq $1 support.rvmgroup.it:/var/www/rvmgroup.it/support/html/debian/binary
echo "* Cleaning upd and updating repository"
#scp -pq /home/mnt.vvngrl/bin/update_repository support.rvmgroup.it:/var/www/rvmgroup.it/support/html/debian/
cat | ssh support.rvmgroup.it "
        cat > /var/www/rvmgroup.it/support/html/debian/update_repository;
        cd /var/www/rvmgroup.it/support/html/debian;
        chmod +x ./update_repository;
        ./update_repository $SHORTNAME;
        rm -f ./update_repository;
        dpkg-scanpackages binary/ /dev/null | gzip -9c > binary/Packages.gz" <<'EOFile'
#!/bin/bash
cd /var/www/rvmgroup.it/support/html/debian
SHORTNAME=$1
RIGHE=$(/bin/ls -1 binary/$SHORTNAME* | wc -l)
RIGHE_DA_CANC=$(($RIGHE - 1))
if (( $RIGHE > 0 ))
        then
                for DATA in $( find . -name  $SHORTNAME\* | head -n $RIGHE_DA_CANC)
                do
                        echo "* Deleting $DATA"
                        rm -f $DATA
                done
fi
EOFile