Creazione di un pacchetto debian .deb: Difference between revisions

From RVM Wiki
Jump to navigation Jump to search
mNo edit summary
Line 2: Line 2:


  apt-get install dpkg-dev file gcc g++ libc6-dev make patch perl dh-make fakeroot devscripts lintian linda
  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.con'''f e sia eseguito tutte le notti alle 20:00
=== Preparazione delle directory ==
<pre>
export $PKGNAME="backup-remoto"
cd debian-packages/
mkdir $PKGNAME
cd $PKGNAME
mkdir PKGNAME-1.0.0
cd PKGNAME1.0.0
</pre>
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 è:
<pre>
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
</pre>
=== Preparazione del file cron ===
Questo è un file di esempio:
<pre>
export PKGNAME=backup-remoto"
cat > $PKGNAME.cron <<EOFile
#m      h      dom    mon    dow    user    command
0      20      *      *      *      root    /usr/sbin/$PKGNAME > /dev/null
EOFile
</pre>


== Preparazione del pacchetto in formato tar.gz ==
== Preparazione del pacchetto in formato tar.gz ==

Revision as of 18:49, 16 March 2006

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


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

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

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


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