Creazione di un pacchetto debian .deb: Difference between revisions
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> | ||
== 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