IMPORTANT: Per accedir als fitxer de subversion: http://acacha.org/svn (sense password). Poc a poc s'aniran migrant els enllaços. Encara però funciona el subversion de la farga però no se sap fins quan... (usuari: prova i la paraula de pas 123456)

Instal·lació dels requeriments

$ sudo apt-get install binutils gcc libc6-dev make fakeroot dpkg-dev devscripts patch svn-buildpackage debian-policy developers-reference dh-make build-essential debhelper subversion

Pas a pas amb subversion

NOTA: Abans de fer aquest exemple instal·leu les dependències de l'apartat anterior

Podeu trobar els fitxer d'aquest apartat a:

Fitxers inicials:  https://www.iesebre.com/subversion/projectes/debianesqueleton_abanssvnbuilpackage/
Fitxers finals (després svn-buildpackage): http://www.iesebre.com/subversion/projectes/debianesqueleton

Els passos són els mateixos que amb un paquet que no vulgueu guardar a subversion més utilitzar les eines svn-inject i svn-buildpackage

El primer que heu de decidir és el nom del paquet. A l'exemple direm al paquet debianesqueleton. Ara creeu la carpeta on guardar els fitxers del paquet:

$ mkdir debianesqueleton-0.1 && cd debianesqueleton-0.1

IMPORTANT: Per que així ho obliga l'eina dh_make cal que la carpeta l'anomeneu nomdelpaquet-versio. Se sol començar per la versió 0.1

El nombre mínim de fitxers per crear un paquet és:

  • Fitxer Makefile: ha de tenir una tasca install.
  • Un fitxer qualsevol per instal·lar

Us podeu crear el Makefile vosaltres mateixos o utilitzar algun d'exemple. Consulteu:

Template Makefile per a creació de paquets Debian

O el podeu consultar a:

https://www.iesebre.com/subversion/projectes/debianesqueleton_abanssvnbuilpackage/Makefile

Aquest exemple només instal·la un fitxer de configuració:

$(ETC_APPLICATION_DIR)/$(APLICATION_NAME).conf

Al nostre exemple el fitxer és:

$ mkdir -p etc/debianesqueleton/
$ geany etc/debianesqueleton/debianesqueleton.conf

Poseu qualsevol cosa (per exemple TODO)

Adapteu les variables de l'inici del Makefile a les vostres necessitats.

Ara ja podem crear el paquet:

$ make build_workspace

NOTA: Aquesta tasca make executa dh_make

I ara creeu el paquet:

$ dpkg-buildpackage

Ara ja teniu el paquet:

$ ls -la ..
drwxrwxr-x  4 sergi sergi  4096 2012-01-31 12:52 debianesqueleton-0.1
-rw-rw-r--  1 sergi sergi  1602 2012-01-31 12:53 debianesqueleton_0.1-1_amd64.changes
-rw-r--r--  1 sergi sergi  2056 2012-01-31 12:53 debianesqueleton_0.1-1_amd64.deb
-rw-rw-r--  1 sergi sergi 10791 2012-01-31 12:53 debianesqueleton_0.1-1.debian.tar.gz
-rw-rw-r--  1 sergi sergi   834 2012-01-31 12:53 debianesqueleton_0.1-1.dsc
-rw-rw-r--  1 sergi sergi  1665 2012-01-31 12:52 debianesqueleton_0.1.orig.tar.gz

Ara ja podem crear el repositori svn amb:

$ svn-inject -c 2 ../debianesqueleton_0.1-1.dsc URL_DEL_REPOSITORI_SVN 

Per exemple:

$ svn-inject -c 2 ../debianesqueleton_0.1-1.dsc http://www.iesebre.com/subversion/projectes

O executeu la tasca:

$ make svn_inject 

El resultat el podeu trobar a:

http://www.iesebre.com/subversion/projectes/debianesqueleton/

Com podeu veure ja teniu l'esquema típic de subversion amb les carpetes trunk, branches i tags. Ara només us cal fer un checkout i començar a treballar:

$ cd ..
$ svn co http://www.iesebre.com/subversion/projectes/debianesqueleton
$ cd debianesqueleton/trunk

Ara el cicle de treball és:

$ svn ci
$ make create_package

On realment la tasca create_package executa:

create_package: createorig
	#create_package
	export DEBFULLNAME="$(DEBIAN_PACKAGE_CREATOR_FULLNAME)";export DEBEMAIL="$(DEBIAN_PACKAGE_CREATOR_EMAIL)";svn-buildpackage --svn-builder="debuild"

NOTA: Heu de tenir un usuari i la paraula de pas d'un usuari amb permisos per modificar el repositori

Pas a pas sense subversion

L'únic necessari per crear un paquet molt simple és un fitxers Makefile que faci de plantilla i com a mínim un fitxer a instal·lar amb el paquet. Podeu obtenir un exemple amb:

$ svn co http://www.iesebre.com/subversion/projectes/bashdebianesqueleton/

Un Makefile molt bàsic:

#!/usr/bin/make -f

# This makefile has to be in a folder with name
#   APLICATIONNAME_in_lower_case-VERSION_in_lover_case
#   Example: bashdebianesqueleton-0.1
APLICATION_NAME=bashdebianesqueleton
VERSION=0.1

#DEVELOPER ENVIRONMENT VARIABLES:
DEBIAN_PACKAGE_CREATOR_FULLNAME=Sergi Tur Badenas
DEBIAN_PACKAGE_CREATOR_EMAIL=acacha@gmail.com
DEBIAN_PACKAGE_LICENSE=gpl3

#INSTALL OPTIONS
OWNER=root
GROUP=root
INSTALL=/usr/bin/install
SHAREDIR=usr/share/$(APLICATION_NAME)
DOCDIR=usr/share/doc/$(APLICATION_NAME)

#...

#TODO
clean: 

install: 
	mkdir -p $(DESTDIR)/$(DOCDIR)
	$(INSTALL) -o $(OWNER) -g $(GROUP) -m 644 $(DOCDIR)/TODO $(DESTDIR)/$(DOCDIR)

uninstall:
	rm -f $(DOCDIR)

install_dev_tools:
	/usr/bin/apt-get -y --force-yes install dh-make fakeroot \
	build-essential devscripts debhelper

build_workspace: 
	export DEBFULLNAME="$(DEBIAN_PACKAGE_CREATOR_FULLNAME)"; \
	/usr/bin/dh_make -e $(DEBIAN_PACKAGE_CREATOR_EMAIL) \
	-c $(DEBIAN_PACKAGE_LICENSE) --packagename $(APLICATION_NAME) \
	--createorig --single

debian:
	/usr/bin/dpkg-buildpackage

Primer executeu dh_make amb:

$ make build_workspace

Ara:

$ /usr/bin/dpkg-buildpackage

Publicació de paquets

El Makefile que us proporcionem:

http://www.iesebre.com/subversion/projectes/openfpnet-common/openfpnet-common/trunk/Makefile

Conté tasques (publish_package) per a publicar els paquets Debian en un repositori de paquets i també per a instal·lar-lo i provar-lo (test_package)

El que cal fer és configurar les variables del Makefile

#PUBLISH OPTIONS
SSH_USER=root
SSH_HOST=192.168.0.9
SSH_REMOTE_PATH=/mnt/sdb1/UbuntuMirror/custompackages
REMOTE_UPDATE_SCRIPT=update.sh

Per adaptar-les a les vostres dades de connexió per SSH al repositori. Per tal que no demani paraula de pas caldria crear claus SSH.

I executar:

$ ./makeall.sh

On l'script el podeu trobar a:

http://www.iesebre.com/subversion/projectes/openfpnet-common/openfpnet-common/trunk/makeall.sh

I realment executa:

$ svn ci -m "" && make create_package_all && make publish_package && sudo make test_package

Primers passos més habituals a la carpeta debian

$ rm -rf *.ex
$ rm -rf *.EX

O si treballeu amb una copia local de svn:

$ svn rm -rf *.ex
$ svn rm -rf *.EX

Editar el fitxer de control

$ joe control

Poseu una secció vàlida i poseu la homepage conjuntament amb la descripció curta i la llarga.

Ara cal modificar el fitxer de changelog. Elimineu:

(Closes: #nnnn)  <nnnn is the bug number of your ITP>

Modifiqueu el fitxer copyright:

This work was packaged for Debian by:

   Sergi Tur Badenas <sergi.tur@upc.edu> on Sat, 12 Nov 2011 08:03:59 +0100

It was downloaded from:

   http://www.iesebre.com/subversion/projectes/networkconfig
   http://acacha.org/mediawiki/index.php/Networkconfig

Upstream Author(s):

   Sergi Tur Badenas <sergi.tur@upc.edu>

Copyright:

   Copyright (C) 2011 Sergi Tur Badenas

License:

   This package is free software; you can redistribute it and/or modify
   it under the terms of the GNU General Public License version 2 as
   published by the Free Software Foundation.

   This package is distributed in the hope that it will be useful,
   but WITHOUT ANY WARRANTY; without even the implied warranty of
   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
   GNU General Public License for more details.

   You should have received a copy of the GNU General Public License
   along with this program. If not, see http://www.gnu.org/licenses/

On Debian systems, the complete text of the GNU General
Public License version 2 can be found in "/usr/share/common-licenses/GPL-2".

The Debian packaging is:

    Copyright (C) 2011 Sergi Tur Badenas <sergi.tur@upc.edu>

you can redistribute it and/or modify it under the terms of the GNU General
Public License version 2 as published by the Free Software Foundation.

Modifiqueu el fitxer README o elimeu-lo.

Resol·lució de problemes

Consulteu Creació_de_paquets_Debian#running_debsign_failed per a problemes signant els paquets i també

Creació_de_paquets_Debian#dpkg-source:_error:_can.27t_build_with_source_format_.273.0_.28quilt.29.27:_no_orig.tar_file_found per problemes amb els tar-.gz originals.

Vegeu també

Enllaços externs