SlideShare una empresa de Scribd logo
1 de 116
Descargar para leer sin conexión
Empaquetado para Debian y Canaima
                                                       Versión 3.0




                      Ernesto Nadir Crespo Avila
                      ecrespo@gmail.com
                      @_seraph1



Presentación liberada bajo licencia Creative Commons
Dennis Ritchie
Dennis Ritchie
Agenda
Fundamentos básicos
Empaquetar
Crear parches
Empaquetado usando SCV
Paquetes Backports
Metapaquetes
Repositorio local de paquetes
Fundamentos Básicos
Historia del S.O. Unix y GNU/Linux
●A finales de 1960 los Laboratorios Bell trabajan en un S.O.
Multics
●En 1969 Ken Thompson y Dennis Ritchie lideraron un grupo

de programadores para desarrollar un S.O. Que fuera
multiusuario y mutitarea que al principio se llamo Unics y
luego fue Unix, este fue desarrollado en lenguaje
ensamblador.
●En 1972 se reescribe Unix en lenguaje C e incorporando el

stack TCP/IP
●En 1975 la Universidad de California creo su propio Unix

llamado BSD, siendo una fuerte competencia para el Unix de
AT&T.
●En 1991 un estudiante de Finlandia llamado Linux Torvalds

crea un clon de Unix basandose en Minix de Andrew
Tanenbaum.
●En el año 1983, Richard Stallman crea El proyecto GNU para

crear un S.O. Libre que fuera como Unix, ya se tenía un
interpretador de comandos, compilador, un sistema de
archivos y un editor, sólo faltaba el kernel del Sistema
operativo y fue gracias al Kernel de Linux que hoy en día se
tiene a GNU/Linux.
●En 1993 Ian Murdock se encarga de una iniciativa que nace de

la FSF y su proyecto GNU para crear un Sistema Operativo
totalmente libre y Universal. Debian es la contracción del
nombre de la ex-esposa Debra e Ian.
Historia del S.O. Unix y GNU/Linux
Distribuciones de GNU/Linux
Hitos importantes en los 20 años de Linux
Estructura de GNU/Linux

  Hardware


 Kernel


  Shell




Aplicaciones
Programas Fuentes y binarios. Compilación
 Programa Fuente: es un conjunto de líneas de texto que son las
 instrucciones que debe seguir la computadora para ejecutar dicho
 programa. Por tanto, en el código fuente de un programa está
 descrito por completo su funcionamiento. El código fuente de un
 programa está escrito por un programador en algún lenguaje de
 programación, pero en este primer estado no es directamente
 ejecutable por la computadora, sino que debe ser traducido a otro
 lenguaje.

 Programa Binario o ejecutable: Es la conversión del código fuente
 (serie de instrucciones) escrita por el programador a lenguaje de
 máquina que entiende el computador.

 Existen los lenguajes compilados e interpretados.

 Interpretados: Perl, python, php, ruby, entre otros.
 Compilados: C, Pascal.

 Para instalar un programa fuente es necesario normalmente seguir
 los siguientes pasos:
 Configurar el programa: ./configure
 Compilar el programa: make
 Instalar el programa: make install
Paquete

 Un paquete contiene instrucciones en donde tienen que
 estar ubicados (en tu sistema de archivo) los archivos a
 instalar, dependencias de librerías u otros programas (si
 es que existe dependencias), instrucciones para la
 instalación, y scripts básicos de configuración.

 Un paquete usualmente contiene software precompilado
 (o llamados “binarios”), pero también puede empaquetar
 código fuente.
Bajar un paquete fuente y compilarlo
 El siguiente es un ejercicio para que conozcan el
 procedimiento de instalación de un programa fuente.

 Bajar el programa sshguard:
 wget http://hivelocity.dl.sourceforge.net/sourceforge/sshguard/sshguard-1.4rc3.tar.bz2


 Descomprimir y desempaquetar el paquete:
 tar -xvjf shguard-1.4rc3.tar.bz2

 Cambiarse al directorio:
 cd sshguard-1.4rc3

 Listar las opciones de configuración con ./configure –
 help.
 SshGuard necesita definirle en la configuración cual
 firewall se va a usar, esto es con la opción
 –with-firewall=iptables.
 Ejecutar la configuración:
 ./configure –with-firewall=iptables
 Compilar:
 make
 Instalar:
 make install
Sistemas de gestión de paquetes

 Es una colección de herramientas que sirven para automatizar el
 proceso instalación, actualización y eliminación de paquetes.

 Maneja una base de datos de paquetes instalados y facilita la
 remoción limpia de dichos paquetes.
Objetivos de Debian y Canaima
Debian
●Mejor sistema operativo libre posible

●Asegurar que todo el software funciona

●Facilitar la desintalación de software

●Que paquete es el responsable de cada archivo

●Facilitar la instalación de software:

● Precompilado,configurado,legal y libre

● Dependencias, actualizaciones y seguridad




Canaima
● ¿Por qué Venezuela DEBE Y TIENE que utilizar Software Libre?

●Decreto 3390.

●Que es la Meta Distribución Canaima.

●¿Por qué la Meta Distribución Canaima?
Ciclo de desarrollo de Canaima
Lo necesario para ser desarrollador Debian
Desarrolladores Debian a nivel mundial




Desarrolladores en Venezuela: Eloy París, Cesar Mendoza,
Muammar El Khatib y José Luis Rivas.
Mantenedores de paquetes: Christian Sanchez, Ernesto
Hernández Novich, Gerardo Curiel, Manuel García, Alejandro
Garrido, Juan Angulo Moreno, Ernesto Crespo y Carlos
Alberto Silombria Ibarra.
Normativas y lineamientos de Debian
 ●Debian Policy : http://www.debian.org/doc/debian-policy/
 ●Sistema de archivos estandar: http://www.pathname.com/fhs/

 ●Menú policy:http://www.debian.org/doc/packaging-manuals/menu-policy/

 ●Mime policy: http://www.debian.org/doc/packaging-manuals/mime-policy/

 ●Emac policy:

 http://www.debian.org/doc/packaging-manuals/debian-emacs-policy
 ●Java policy:http://www.debian.org/doc/packaging-manuals/java-policy/

 ●Perl policy:http://www.debian.org/doc/packaging-manuals/perl-policy/

 ●Python policy:

 http://www.debian.org/doc/packaging-manuals/python-policy/
 ●CLI policy:http://pkg-mono.alioth.debian.org/cli-policy/

 ●Debconf:

 http://www.debian.org/doc/packaging-manuals/debconf_specification.html
 ●Webapp policy:http://webapps-common.alioth.debian.org/draft/html/

 ●Php policy:http://webapps-common.alioth.debian.org/draft-php/html/

 ●DB policy:http://people.debian.org/~seanius/policy/dbapp-policy.html/

 ●TCL/TK policy:http://pkg-tcltk.alioth.debian.org/tcltk-policy.html/

 ●Guía del mantenedor:http://www.debian.org/doc/maint-guide/

 ●Referencia del desarrollador:

 http://www.debian.org/doc/manuals/developers-reference/
 ●Guía de empaquetado de librerías:

 http://www.netfort.gr.jp/~dancer/column/libpkg-guide/libpkg-guide.html
 ●Manual de make: http://www.gnu.org/software/make/manual/make.html
¿Donde buscar paquetes?
●Paquetes en Debian que necesitan ayuda:
  ● Paquetes

    huérfanos:http://www.debian.org/devel/wnpp/orphaned
  ● Paquetes por dejar

    libres:http://www.debian.org/devel/wnpp/rfa_bypackage
  ● Paquetes en

    adopción:http://www.debian.org/devel/wnpp/being_adopted
●Repositorio de proyectos:

  ● Google code: http://code.google.com/hosting/

  ● Sourceforge: http://sourceforge.net/index.php

  ● Gitorius: http://gitorius.org

  ● GitHub: http://www.github.com

  ● Bitbucket: http://www.bitbucket.org

  ● Freshmeat: http://freshmeat.net/

  ● Savannah: http://savannah.gnu.org/
Paquetes disponibles para ser adoptados
Paquetes huérfanos
Paquete en adopción
WNPP

En wnpp se tiene una descripción del proceso de reporte de
fallos:
http://www.debian.org/devel/wnpp/

También se maneja una descripción de las etiquetas manejadas:
●O: Paquete ha sido abandonado y necesita nuevo responsable.

●RFA: Petición por adopción, debido a falta de tiempo, recursos o

interés la persona encargada a dejado libre el paquete.
●RFH: Petición de ayuda, el responsable actual quiere seguir

manteniendo el paquete pero necesita ayuda en el mismo.
●ITP: Intento de empaquetado, es un paquete nuevo que no se

encuentra en Debian y alguien está empaquetandolo para Debian.
●RFP: Petición de empaquetado, alguien ha encontrado un

programa interesante y desea que un mantenedor o desarrollador
lo suba a Debian.
WNPP
Procedimiento para eliminar los errores:
●O: Si va a adoptar un paquete retitule el error reemplazando O por

ITA.
●RFA: Si va a adoptar un paquete retirule el error reemplazando RFA

por ITA.
●RFP: Si va a empaquetar este programa, cambie el error

reemplazando RFP por ITP y así las personas pueden saber que este
paquete está siendo empaquetado.

El correo a enviar debería tener la siguiente estructura:

To: control@bugs.debian.org
From: nombre-apellidos <nombre@example.com>

retitle NNNNNN ITA: nombre-paquete -- descripcion-paquete
owner NNNNNN !
Thanks

Donde NNNNN es el número de bug para O ó RFA.
Más información de los comandos en:
http://www.debian.org/Bugs/server-control
Adoptar un paquete huérfano
Intención de empaquetar
Paquetes Fuente en Debian
Un paquete fuente contiene archivos independientes de la
arquitectura y tienen todo lo necesario para la construcción de
un paquete binario:

Se puede ejecutar para tener los fuentes del paquete hello:
apt-get source hello

●Hellhello_2.2-3.dsco-2.2: Directorio con las fuentes del
paquete hello para debian.
●hello_2.2-3.dsc: Contiene el archivo de control del paquete

hello con información de firma del empaquetador y
verificación hash de las fuentes del paquete.
●hello_2.2.orig.tar.gz: Paquete fuente original.

●hello_2.2-3.diff.gz: Contiene todos los cambios aplicados por

Debian.
Para paquetes nativos no se maneja el orig ni el diff.
Contenido del directorio del paquete fuente
Contenido del directorio del paquete fuente
Contenido del directorio del paquete fuente
Contenido del directorio del paquete fuente
Contenido del directorio del paquete fuente
Estructura de un paquete Binario
 Un paquete Binario en Debian es un archivo con
 extensión .deb por la unión de 3 archivos (empaquetados
 con el comando ar):
 ●data.tar.gz: Archivos para el Sistema de archivos.

 ●control.tar.gz:Scripts de mantenimiento y metadatos.

 ●Debian-binary: Versión del paquete, actualmente 2.0.




 Una vez instalados los archivos de control residen en
 /var/lib/dpkg/info.

 Se realizan operaciones sobre el paquete .deb con el
 comando dpkg:
 ●Dpkg –info hello_2.2-3_i386.deb:Examina los metadatos del

 paquete.
 ●Dpkg –contents hello_2.2-3_i386.deb: Lista los archivos.

 ●Dpkg –unpack hello_2.2-3_i386.deb:Extrae los paquetes

 localmente.
 ●Dpkg -i hello_2.2-3_i386.deb:Extrae e instala el paquete

 junto con sus archivos de configuración

 Ejercicio:
 Descargar el paquete hello:
 aptitude download hello
 Se desempaqueta el paquete hello:
 ar -x hello_2.2-3_i386.deb
 Revisar el contenido de cada archivo desempaquetado.
Metadato de un paquete
La información de los metadatos de un paquete binario que
muestra el comando dpkg –info es la siguiente:




Package: El nombre del paquete.
Source: El nombre del paquete fuente la cual este binario fue
compilado.
Version: La version del paquete incluyendo la versión
upstream (antes del -) y la versión Debian (después del -).
Architecture: El tipo de CPU para la cual fue hecho el paquete.
Depends, Recommends, Suggests, Replaces, Conflicts,
Enhances: Relaciones con otros paquetes.
Scripts de mantenimiento
 Scripts de mantenimiento son ejecutado cuando se instala y
 remueve un paquete. Estos están tipicamente codificados en
 BASH o Perl.


  Los scripts estándares son:
 ●preinst: Ejecuta antes de extracción de los archivos.

 ●postinst: Ejecuta después de extracción de los archivos.

 ●prerm: Ejecuta antes de remoción de los archivos.

 ●postrm: Ejecuta después de remoción de los archivos.




 Para estandarizar la configuración se puede utilizar el archivo:
 config: Hace preguntas a otros scripts de mantenimiento.
Secuencia de instalación
Secuencia de desintalación
Secuencia de purga
Secuencia de remoción y purga
Secuencia de actualización
Proceso de empaquetado
Proceso de empaquetado
¿Build o Binary?
Herramientas o programas necesarios...
 Existen también varios paquetes que serán necesarios para
 crear paquetes en un sistema Debian. La mayoría ya deben de
 estar instalado por defecto, como dpkg, gcc, make, dpkg-dev.

 Instalar los siguientes programas:
 ●dh_make :

 ●Build-essential: Paquetes esenciales para la construcción de

 paquetes.
 ●Debhelper: Herramienta que facilita la creación de debian/rules.

 ●Devscripts:Paquetes para desarrollo contiene dch, debuild,

 uscan, uupdate entre otros.
 ●Fakeroot: Permite compilar e instalar sin ser root.

 ●Lintian: Paquete que verifica la buena construcción de un

 paquete y que cumpla las normativas de Debian.
 ●Pbuilder: Ambiente que permite probar paquetes o empaquetar.

 ●Piuparts: Herramienta de verificación de la correcta instalación

 de paquetes.
 ●Dpatch,Patch, diff,patchutils: Programa que se usa para aplicar

 parches.
 ●Quilt: Herramienta para aplicar parches.

 ●Manedit:Programa para la edición de archivos de manual.

 aptitude install build-essential dh-make debhelper devscripts
 dpkg-dev fakeroot lintian pbuilder piuparts dpatch diff quilt
 manedit patchutils
Entorno de empaquetado
 Herramientas de Debian para empaquetar en un entorno
 distinto al de usuario .
 Debian tiene varias herramientas para crear un entorno
 para empaquetar:
 ●Debootstrap y chroot: Con estas herramientas se puede

 tener un entorno sid o lenny/etch para empaquetar.
 ●Pbuilder: Está herramienta automatiza el proceso de

 creación del entorno con chroot.



 Otra opción es usar máquinas virtuales como:
 ●Qemu

 ●Kvm

 ●OpenVZ

 ●Xen

 ●User mode linux

 ●VirtualBox

 ●VMWare
Entorno de empaquetado
 Debootstrap y chroot:
 Crear el directorio de trabajo:
 mkdir /home/sid
 cd /home/sid
 Crear el sistema sid:
 debootstrap sid /home/sid
 http://debian.velug.org.ve/debian/
 Entrar en el entorno sid:
 chroot /home/sid

 pbuilder:
 Crear un pbuilder:
 pbuilder create
 Actualizar pbuilder del chroot:
 pbuilder update
 Para generar paquetes binarios:
 pbuilder build <fichero .dsc>

 Más información en:
 http://people.debian.org/~anibal/talks/20050910-debian-peru.txt
¿Qué es Debhelper?

 El sistema de build help mas común es debhelper, el cual
 provee una buena cantidad de comandos
 dh_* para la mayoría de las tareas a realizar.

 apt-get install debhelper dh-make

 Otros componentes utiles de debhelper son:
 dh-make-perl y dh-make-php.

 Escribir todos los comandos de debian/rules pueden ser
 tedioso y repetitivo.
 ●Además, a veces cambia la “policy” y los archivos rules

 deben ser actualizados.
 ● debhelper es un conjunto de programas para realizar

 tareas comunes.
    ● dh_installman instala paginas de manual en el

      directorio adecuado con los nombres correctos.
    ● Saber que esta haciendo es bueno.
¿Qué es CDBS?

  Incluso con debhelper la mayoría de los paquetes
 comparten gran parte del código de los
 archivos debian/rules.


 ●cdbs es un sistema de construcción de paquetes Debian
 basado en la herencia entre Makefiles.
 ●Proporciona reglas estándar que pueden se fácilmente

 extendidas o reemplazadas.
Empaquetar
Empaquetar un paquete sin ayuda
 Bajar y descomprimir el paquete fuente:
 mkdir roaddemo
 cd roaddemo
 wget -t 0 -c
 http://rhk.dataslab.com/roaddemo/roaddemo-1.0.1.tar.gz

 Descomprimir y cambiar el nombre del paqueta a orig:
 tar xvfz roaddemo-1.0.1.tar.gz
  mv roaddemo-1.0.1.tar.gz roaddemo_1.0.1.orig.tar.gz
 cd roaddemo-1.0.1

 Probar la configuración, compilación e instalación del paquete:
 ./configure --prefix=/usr --mandir=$${prefix}/share/man –
 infodir=$${prefix}/share/info
 make
 mkdir tmp
 make install DESTDIR=`pwd`/tmp LIBTOOL=libtool

 Borrar todo lo creado hasta el momento:
 make distclean
 rm -rf tmp

 Reparar algunos bugs:
 grep road.bmp *.h *.c *.cpp *.cc *.hpp
 roaddemo.cc: if (load_texture("road.bmp", &road_tex_id) < 0)
 Cambiar el archivo a /usr/share/roaddemo/road.bmp
Empaquetar un paquete sin ayuda
 Crear archivos necesarios para debianizar:
 mkdir debian
 touch debian/control
 touch debian/changelog
 touch debian/rules
 touch debian/copyright
 touch debian/roaddemo.menu
 Colocar el siguiente contenido en debian/control:
 Source: roaddemo
  Section: games
  Priority: optional
  Maintainer: Miriam Ruiz <little_miry@yahoo.es>
  Build-Depends: libsdl1.2-dev, libgl-dev
  Standards-Version: 3.8.0

 Package: roaddemo
 Architecture: any
 Depends: ${shlibs:Depends}
 Description: Simple demo using opengl and SDL
 Bezier-road demo ported from glut to SDL.
 .
 Use the right mouse button to select one of the
 endpoints or control points, then click and drag
 with the left mouse button to move the point.
Empaquetar un paquete sin ayuda
 Colocar el siguiente contenido en debian/copyright:
 This package was debianized by Miriam Ruiz <little_miry@yahoo.es> on
 Sat, 8 Jan 2005 20:09:28 +0000.

 It was downloaded from http://www.newimage.com/~rhk/roaddemo/

 Upstream Author: Ray Kelm <rhk@newimage.com>

 License:

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

   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 package; if not, write to the Free Software
   Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
   02111-1307, USA.

 On Debian GNU/Linux systems, the complete text of the GNU General
 Public License can be found in `/usr/share/common-licenses/GPL'.
Empaquetar un paquete sin ayuda
 Colocar el siguiente contenido en debian/rules:
 #!/usr/bin/make -f

 # Debian Rules by Miriam Ruiz <little_miry@yahoo.es>
 # January 2005
 #
 # Thanks for their help and for some of their code go to:
 # * Manoj Srivastava
 # * Helen Faulkner
 # * Dafydd Harries
 # * Gregory Pomerantz


 ######################################################################
 #########
  ##
  ## This program is free software; you can redistribute it and/or modify
  ## it under the terms of the GNU General Public License as published by
  ## the Free Software Foundation; either version 2 of the License, or
  ## (at your option) any later version.
  ##
  ## This program 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, write to the Free Software
  ## Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
  ##

 ######################################################################
 #########
Empaquetar un paquete sin ayuda
 Colocar el siguiente contenido en debian/rules:
 # Name of the package
 package=roaddemo

 # Function to check if we're in the correct dir (thanks Manoj)
 define checkdir
      @test -f debian/rules -a -f roaddemo.cc || 
      (echo Not in correct source directory; exit 1)
 endef

 # Function to check if we're root (thanks Manoj)
 define checkroot
      @test $$(id -u) = 0 || (echo need root priviledges; exit 1)
 endef

 # Top directory of the source code (thanks Manoj)
 SRCTOP := $(shell if [ "$$PWD" != "" ]; then echo $$PWD; else pwd; fi)
 # Destination directory where files will be installed
 DESTDIR = $(SRCTOP)/debian/$(package)

 # Definition of directories
 BIN_DIR = $(DESTDIR)/usr/bin
 GAMES_DIR = $(DESTDIR)/usr/games
 SHARE_DIR = $(DESTDIR)/usr/share/roaddemo
 DOCS_DIR = $(DESTDIR)/usr/share/doc/roaddemo
 MAN_DIR = $(DESTDIR)/usr/share/man/man1
 MAN_GAMES_DIR = $(DESTDIR)/usr/share/man/man6
 MENU_DIR = $(DESTDIR)/usr/lib/menu
 PIXMAPS_DIR = $(DESTDIR)/usr/share/pixmaps

 # Stamp Rules

  configure-stamp:
       $(checkdir)
       ./configure --host=$(DEB_HOST_GNU_TYPE) --build=$(DEB_BUILD_GNU_TYPE) --prefix=/usr --mandir=$$
 {prefix}/share/man --infodir=$${prefix}/share/info
       touch configure-stamp

 build-stamp: configure-stamp
      $(checkdir)
      -rm -f build-stamp
      $(MAKE)
      touch build-stamp

 # Debian rules
Empaquetar un paquete sin ayuda
 Colocar el siguiente contenido en debian/rules:
 build: build-stamp

 clean: stamp-configure
     $(checkdir)
     -rm -f *-stamp
     $(MAKE) distclean
     -rm -rf debian/$(package)
     -rm -f debian/files
     -rm -f debian/substvars

 binary-indep: build

 # Definitions for install
 INST_OWN = -o root -g root
 MAKE_DIR = install -p -d $(INST_OWN) -m 755
 INST_FILE = install -c $(INST_OWN) -m 644
 INST_PROG = install -c $(INST_OWN) -m 755 -s
 INST_SCRIPT = install -c $(INST_OWN) -m 755
Empaquetar un paquete sin ayuda
Colocar el siguiente contenido en debian/rules:
binary-arch: build
     $(checkdir)
     $(checkroot)

     # Install Program
     $(MAKE) install DESTDIR=$(DESTDIR) LIBTOOL=libtool

     # Install Program Resources
     $(MAKE_DIR) $(SHARE_DIR)
     $(INST_FILE) road.bmp $(SHARE_DIR)

     $(MAKE_DIR) $(DESTDIR)/DEBIAN

     # Install Docs
     $(MAKE_DIR) $(DOCS_DIR)
     $(INST_FILE) debian/copyright $(DOCS_DIR)/copyright
     $(INST_FILE) debian/changelog $(DOCS_DIR)/changelog.Debian
     $(INST_FILE) README $(DOCS_DIR)/README

     # Install Manpages
     #$(MAKE_DIR) $(MAN_GAMES_DIR)
     #$(INST_FILE) roaddemo.6 $(MAN_GAMES_DIR)

     # Install Menu and Icon
     #$(MAKE_DIR) $(MENU_DIR)
     #$(INST_FILE) debian/menu $(MENU_DIR)/roaddemo
     #$(MAKE_DIR) $(PIXMAPS_DIR)
     #$(INST_FILE) debian/roaddemo.xpm $(PIXMAPS_DIR)

     # Install Package Scripts
     #$(INST_SCRIPT) debian/postinst $(DESTDIR)/DEBIAN
     #$(INST_SCRIPT) debian/postrm $(DESTDIR)/DEBIAN

     # Compress Docs (thanks Helen)
     gzip -9 $(DOCS_DIR)/changelog.Debian
     #gzip -9 $(MAN_GAMES_DIR)/roaddemo.6

     # Strip the symbols from the executable (thanks Helen)
     # TODO: the stripping part in binary-arch should honor the DEB_BUILD_OPTIONS environment variable
and not strip stuff when it
Empaquetar un paquete sin ayuda
 Colocar el siguiente contenido en debian/rules:
 includes 'nostrip'
      strip -R .comment $(BIN_DIR)/roaddemo

      # Work out the shared library dependancies (thanks Helen)
      dpkg-shlibdeps $(package)

      # Generate the control file (thanks Helen)
      dpkg-gencontrol -isp -P$(DESTDIR)

     # Make DEBIAN/md5sums (thanks Helen)
     cd $(DESTDIR) && find . -type f ! -regex '.*DEBIAN/.*' -printf '%P0' | xargs -r0 md5sum >
 DEBIAN/md5sums

      # Create the .deb package (thanks Helen)
      dpkg-deb -b $(DESTDIR) ../

 # Below here is fairly generic really

 binary: binary-indep binary-arch

 .PHONY: binary binary-arch binary-indep clean build
Empaquetar un paquete con debhelper
  Bajar el paquete fuente sshguard:
  wget http://hivelocity.dl.sourceforge.net/sourceforge/sshguard/sshguard-1.4rc3.tar.bz2

  Descomprimir el paquete y cambiarse al directorio del paquete fuente:
  tar -xvjf sshguard-1.4rc3.tar.bz2
  cd sshguard-1.4rc3¡
  Crear las variables de entorno:
  export DEBEMAIL=nombre@example.com
  export DEBFULLNAME='nombre-apellidos'
  Ejecutar dh_make:
  dh_make -f ../sshguard-1.4rc3.tar.bz2 -c BSD -s
  Con este comando se define la licencia del paquete, que va a ser un sólo paquete
  binario y la ruta del paquete fuente del upstream.
  El resultado es un escritorio debian/* dentro de los fuentes y un paquete orig:
  ls ../
  sshguard-1.4rc3 sshguard_1.4rc3.orig.tar.gz sshguard-1.4rc3.tar.bz2

  ls debian/*
  debian/changelog debian/dirs          debian/init.d.ex     debian/menu.ex
  debian/README.Debian
  debian/compat debian/docs             debian/init.d.lsb.ex debian/postinst.ex
  debian/rules
  debian/control debian/emacsen-install.ex debian/manpage.1.ex debian/postrm.ex
    debian/sshguard.default.ex
  debian/copyright debian/emacsen-remove.ex debian/manpage.sgml.ex
  debian/preinst.ex debian/sshguard.doc-base.EX
  debian/cron.d.ex debian/emacsen-startup.ex debian/manpage.xml.ex
  debian/prerm.ex debian/watch.ex
Empaquetar un paquete con debhelper
  Renombrar los archivos watch.ex y sshguard.1.ex a watch y sshguard.1
  respectivamente.
  Eliminar el resto de archivos README.Debian, .ex y .EX .
  Ahora sólo quedan los archivos: copyright, rules, changelog, compat control,
  dirs, docs, watch y sshguard.1.
  El archivos dirs contendrá la ruta donde se instalará el binario: usr/sbin.
  El archivo docs contendrá la do cumentación que viene con el programa, en
  este caso sólo README.
  El archivo compat tiene el número de versión de debhelper.
  El archivo watch contedrá la versión del paquete y la ruta de donde se puede
  bajar el paquete:
  version=3
  http://sf.net/sshguard/sshguard-(.*).tar.gz
  Para verificar la validez del archivo watch se prueba uscan:
  uscan --verbose –no-download
  -- Scanning for watchfiles in .
  -- Found watchfile in ./debian
  -- In debian/watch, processing watchfile line:
     http://sf.net/sshguard/sshguard-(.*).tar.bz2
  -- Found the following matching hrefs:
      /sites/download.sourceforge.net/pub/sourceforge/s/ss/sshguard/sshguard-0.91.tar.bz2
      /sites/download.sourceforge.net/pub/sourceforge/s/ss/sshguard/sshguard-0.91.tar.bz2
      /sites/download.sourceforge.net/pub/sourceforge/s/ss/sshguard/sshguard-1.0.tar.bz2
      /sites/download.sourceforge.net/pub/sourceforge/s/ss/sshguard/sshguard-1.0.tar.bz2
      /sites/download.sourceforge.net/pub/sourceforge/s/ss/sshguard/sshguard-1.1.tar.bz2
      /sites/download.sourceforge.net/pub/sourceforge/s/ss/sshguard/sshguard-1.1.tar.bz2
      /sites/download.sourceforge.net/pub/sourceforge/s/ss/sshguard/sshguard-1.1beta3.tar.bz2
      /sites/download.sourceforge.net/pub/sourceforge/s/ss/sshguard/sshguard-1.1beta3.tar.bz2
      /sites/download.sourceforge.net/pub/sourceforge/s/ss/sshguard/sshguard-1.1beta4.tar.bz2
         /sites/download.sourceforge.net/pub/sourceforge/s/ss/sshguard/sshguard-1.1beta4.tar.bz2
      /sites/download.sourceforge.net/pub/sourceforge/s/ss/sshguard/sshguard-1.1rc1.tar.bz2
      /sites/download.sourceforge.net/pub/sourceforge/s/ss/sshguard/sshguard-1.1rc1.tar.bz2
      /sites/download.sourceforge.net/pub/sourceforge/s/ss/sshguard/sshguard-1.2.tar.bz2
      /sites/download.sourceforge.net/pub/sourceforge/s/ss/sshguard/sshguard-1.2.tar.bz2
      /sites/download.sourceforge.net/pub/sourceforge/s/ss/sshguard/sshguard-1.3.tar.bz2
      /sites/download.sourceforge.net/pub/sourceforge/s/ss/sshguard/sshguard-1.3.tar.bz2
      /sites/download.sourceforge.net/pub/sourceforge/s/ss/sshguard/sshguard-1.4rc1.tar.bz2
      /sites/download.sourceforge.net/pub/sourceforge/s/ss/sshguard/sshguard-1.4rc1.tar.bz2
      /sites/download.sourceforge.net/pub/sourceforge/s/ss/sshguard/sshguard-1.4rc2.tar.bz2
      /sites/download.sourceforge.net/pub/sourceforge/s/ss/sshguard/sshguard-1.4rc2.tar.bz2
      /sites/download.sourceforge.net/pub/sourceforge/s/ss/sshguard/sshguard-1.4rc3.tar.bz2
      /sites/download.sourceforge.net/pub/sourceforge/s/ss/sshguard/sshguard-1.4rc   3.tar.bz2
  Newest version on remote site is 1.4rc3, local version is 1.4rc3
   => Package is up to date
  -- Scan finished

  ~
Empaquetar un paquete con debhelper
  Archivo copyright:
  This package was debianized by Ernesto Nadir Crespo Avila <ecrespo@debianvenezuela.org> on
  Fri, 03 Apr 2009 14:32:21 -0430.

  It was downloaded from http://sshguard.sourceforge.net/

  Upstream Author:

    sshguard maintainers <sshguard-maintainers@lists.sourceforge.net>

  Copyright:

    Copyright (C) 2007 sshguard Team

  License:

    Redistribution and use in source and binary forms, with or without
    modification, are permitted under the terms of the BSD License.

    THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
    ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
    IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
    ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
    FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
    DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
    OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
    HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
    LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
    OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
    SUCH DAMAGE.

  On Debian systems, the complete text of the BSD License can be
  found in `/usr/share/common-licenses/BSD'.


  The Debian packaging is copyright 2009, Ernesto Nadir Crespo Avila <ecrespo@debianvenezuela.org>
  and
  is licensed under the GPL, see `/usr/share/common-licenses/GPL'.
Empaquetar un paquete con debhelper
 Archivo control:
 Source: sshguard
 Section: net
 Priority: optional
 Maintainer: Ernesto Nadir Crespo Avila <ecrespo@debianvenezuela.org>
 Build-Depends: debhelper (>= 7), autotools-dev, iptables
 Standards-Version: 3.8.0
 Homepage: http://sshguard.sourceforge.net/

 Package: sshguard
 Architecture: any
 Depends: ${shlibs:Depends}, ${misc:Depends}
 Description: Protects from brute force attacks against ssh
 Protects networked hosts from the today's widespread
 brute force attacks against ssh servers. It detects such attacks
 and blocks the author's address with a firewall rule
Empaquetar un paquete con debhelper
 Archivo changelog:
 sshguard (1.4rc3-1) unstable; urgency=low

  * Initial release (Closes: #428214).
  * Improve:
      - man page
      - Add configure option --with-firewall=iptables in debian/rules

  -- Ernesto Nadir Crespo Avila <ecrespo@debianvenezuela.org> Fri, 03 Apr 2009
 14:32:21 -0430




 Este archivo se puede editar con cualquier editor pero es preferible utilizar la
 herramienta dch:
 dch --increment "New maintainer. Closes: #NNNNNN"
 Para el caso de nuevo mantenedor.
Empaquetar un paquete con debhelper
 Archivo rules:
 #!/usr/bin/make -f
 # -*- makefile -*-
 # Sample debian/rules that uses debhelper.
 # This file was originally written by Joey Hess and Craig Small.
 # As a special exception, when this file is copied by dh-make into a
 # dh-make output file, you may use that output file without restriction.
 # This special exception was added by Craig Small in version 0.37 of dh-make.

 # Uncomment this to turn on verbose mode.
 #export DH_VERBOSE=1


 # These are used for cross-compiling and for saving the configure script
 # from having to guess our platform (since we know it already)
 DEB_HOST_GNU_TYPE ?= $(shell dpkg-architecture -qDEB_HOST_GNU_TYPE)
 DEB_BUILD_GNU_TYPE ?= $(shell dpkg-architecture -qDEB_BUILD_GNU_TYPE)
 ifneq ($(DEB_HOST_GNU_TYPE),$(DEB_BUILD_GNU_TYPE))
 CROSS= --build $(DEB_BUILD_GNU_TYPE) --host $(DEB_HOST_GNU_TYPE)
 else
 CROSS= --build $(DEB_BUILD_GNU_TYPE)
 endif



 config.status: configure
       dh_testdir
       # Add here commands to configure the package.
 ifneq "$(wildcard /usr/share/misc/config.sub)" ""
       cp -f /usr/share/misc/config.sub config.sub
 endif
 ifneq "$(wildcard /usr/share/misc/config.guess)" ""
       cp -f /usr/share/misc/config.guess config.guess
 endif
       ./configure $(CROSS) --prefix=/usr --mandir=$${prefix}/share/man --with-firewall=iptables
 --infodir=$${prefix}/share/info CFLAGS="$(CFLAGS)" LDFLAGS="-Wl,-z,defs"
Empaquetar un paquete con debhelper
  Archivo rules:
  build: build-stamp

  build-stamp: config.status
       dh_testdir

      # Add here commands to compile the package.
      $(MAKE)
      #docbook-to-man debian/sshguard.sgml > sshguard.1

      touch $@

  clean:
      dh_testdir
      dh_testroot
      rm -f build-stamp

      # Add here commands to clean up after the build process.
      [ ! -f Makefile ] || $(MAKE) distclean
      rm -f config.sub config.guess

      dh_clean

  install: build
       dh_testdir
       dh_testroot
       dh_prep
       dh_installdirs

      # Add here commands to install the package into debian/sshguard.
      $(MAKE) DESTDIR=$(CURDIR)/debian/sshguard install


  # Build architecture-independent files here.
  binary-indep: install
  # We have nothing to do by default.
Empaquetar un paquete con debhelper
 Archivo rules:
 # Build architecture-dependent files here.
 binary-arch: install
     dh_testdir
     dh_testroot
     dh_installchangelogs Changes
     dh_installdocs
     dh_installexamples
 #    dh_install
 #    dh_installmenu
 #    dh_installdebconf
 #    dh_installlogrotate
 #    dh_installemacsen
 #    dh_installpam
 #    dh_installmime
 #    dh_python
 #    dh_installinit
 #    dh_installcron
 #    dh_installinfo
     dh_installman debian/sshguard.1
     dh_link
     dh_strip
     dh_compress
     dh_fixperms
 #    dh_perl
 #    dh_makeshlibs
     dh_installdeb
     dh_shlibdeps
     dh_gencontrol
     dh_md5sums
     dh_builddeb

 binary: binary-indep binary-arch
 .PHONY: build clean binary-indep binary-arch binary install
Empaquetar un paquete con debhelper
  Archivo de man sshguard.1:
  Para editar este archivo se usa la aplicación manedit sshguard.1
Empaquetar un paquete con CDBS
  Bajar el paquete fuente sshguard:
  wget http://hivelocity.dl.sourceforge.net/sourceforge/sshguard/sshguard-1.4rc3.tar.bz2

  Descomprimir el paquete y cambiarse al directorio del paquete fuente:
  tar -xvjf sshguard-1.4rc3.tar.bz2
  cd sshguard-1.4rc3¡
  Crear las variables de entorno:
  export DEBEMAIL=nombre@example.com
  export DEBFULLNAME='nombre-apellidos'
  Ejecutar dh_make:
  ecrespo@canaima:~/empaquetado/Ejercicios/fuentes/sshguard/sshguard-1.4rc3$
  dh_make -f ../sshguard-1.4rc3.tar.bz2 -c BSD -s -b
  Maintainer name : Ernesto Nadir Crespo Avila
  Email-Address : ecrespo@debianvenezuela.org
  Date          : Sat, 11 Apr 2009 16:43:08 -0430
  Package Name : sshguard
  Version        : 1.4rc3
  License         : bsd
  Using dpatch : no
  Using quilt : no
  Type of Package : cdbs
  Hit <enter> to confirm:
Empaquetar un paquete con CDBS
  Archivo debian/rulesl:
  #!/usr/bin/make -f

  include /usr/share/cdbs/1/rules/debhelper.mk
  include /usr/share/cdbs/1/class/autotools.mk


  # Add here any variable or target overrides you need.
  DEB_CONFIGURE_EXTRA_FLAGS := --with-firewall=iptables
Construir el paquete binario
  Para construir el paquete se tienen los siguientes
  comandos:
  ●dpkg-buildpackage -rfakeroot : Construye el paquete sin

  firmar, pero devuelve el mensaje de error que no se firmó el
  paquete.
  ●dpkg-buildpackage -rfakeroot -k<llave-gpg> si se va a firmar

  el paquete.
  ●dpkg-buildpackage -us -uc -rfakeroot : De esta forma se le

  dice que no firme el paquete.
  ●Debuild: Es otra herramienta de empaquetado, la diferencia

  es que hace la verificación de lintian de una vez, sin opción
  devuelve un mensaje de error que no se firmó el paquete.
  ●Debuild -k<llave-gpg> : Con esta opción se le pasa la llave

  gpg y pediré la clave de la llave secreta.
  ●debuild-pbuilder:Igual que debuild sólo que maneja las

  dependencias y crea una bitacora.
Verificar los paquetes
  Las herramientas para la verificación de paquetes son:
  ●Lintian

  lintian -i ../nombre-paquete_version-paquete_arch-paquete.
  [changes][dsc][deb]

   Pruebas de instalación:
  - Instalar en un sistema nuevo, eliminar
   -Actualizar desde versión anterior
  - Actualizar a una versión anterior, si es posible
   -Posiblemente usar un entorno chroot (ver debootstrap) o
  qemu, pero puede esperar (avanzado)
Crear Parches
Crear parches con dpatch
 Versión con CDBS
 dh_make -f ../sshguard-1.4rc3.tar.bz2 -c BSD -s -b --dpatch
 Maintainer name : Ernesto Nadir Crespo Avila
 Email-Address : ecrespo@debianvenezuela.org
 Date        : Sat, 11 Apr 2009 18:55:20 -0430
 Package Name : sshguard
 Version       : 1.4rc3
 License       : bsd
 Using dpatch : yes
 Using quilt : no
 Type of Package : cdbs
 Hit <enter> to confirm:
 Versión con Debhelper
 ecrespo@canaima:~/empaquetado/Ejercicios/fuentes/sshguar
 d/sshguard-1.4rc3$ dh_make -f ../sshguard-1.4rc3.tar.bz2 -c
 BSD -s --dpatch
 Maintainer name : Ernesto Nadir Crespo Avila
 Email-Address : ecrespo@debianvenezuela.org
 Date        : Sat, 11 Apr 2009 18:58:02 -0430
 Package Name : sshguard
 Version       : 1.4rc3
 License       : bsd
 Using dpatch : yes
 Using quilt : no
 Type of Package : Single
 Hit <enter> to confirm
Crear parches con dpatch
  El debian/rules para debhelper con dptach:
  Lo más relevante del rules es este include:
  include /usr/share/dpatch/dpatch.make


  Para el caso de CDBS es lo siguiente:
  include /usr/share/cdbs/1/rules/dpatch.mk

  Para colocar los patch simplemente se crea un directorio
  debian/patched y ahí se ubicarán los parches:

  Un ejemplo de creación de parches a continuación:
  cd udev*/
  cp -a . /tmp/old
  pushd /tmp/old
  debian/rules patch
  cp -a . /tmp/new; cd ../new
  sed -i 's/Linux/Penguin/g' README
  cd ..
  diff -Nurp old new > 90_penguins.patch
  popd
  mv /tmp/90_penguins.patch debian/patches
  rm -rf /tmp/old /tmp/new
Empaquetar con SCV
Empaquetar con Herramientas CV. subversion
  Existe el repositorio de subversion de paquetes en
  /var/repo/ .
  Para migrar el paquete se hace necesario ejecutar svn-
  inject que crea los módulos y directorios necesarios.
  svn-inject -o -c 2 /ruta/al/paquete/antiguo/pyhello.dsc
  ffile:///var/deb-repo

  A parte de crear los módulos y directorios el comando ha
  hecho un checkout:
  ~/prj$ ls pyhello
  tags
  trunk
  ~/prj$ svn info pyhello
  Ruta: pyhello
  URL: file:///var/deb-repo/pyhello
  Raíz del repositorio: file:///var/deb-repo
  UUID del repositorio: 57189996-dc92-4614-af31-
  cdb96cf453dc
  Revisión: 1
  Tipo de nodo: directorio
Empaquetar con Herramientas CV. subversion
 Svn-buildpackage tiene 2 modos:
 ●Manteniendo el repo y los archivos de upstream. Opción por

 defecto.
 ●Manteniendo sólo los archivos de gestión del paquete, se

 puede activar con la opción -o en svn-inject.

 Compilando el paquete:
 Desde el directorio trunk ejecutar:
 svn-buildpackage -us -uc -rfakeroot
 Si además se quiere verificar los errores con linda o lintian
 svn-buildpackage -us -uc —svn-lintian —svn-linda -rfakeroot

 Cerrar un bug:
 Si se existe un bug en el programa sin que exista un nuevo
 upstream se hace necesario regenerar el paquete para su
 distribución. Para crear una liberación menor se ejecuta el
 comando:
 ~/prj/pyhello/trunk$ svn-buildpackage —svn-tag-only

 Esto crea una entrada en debian/changelog que se debe editar
 para luego compilar el paquete.

 Cuando todo este bien se sube los cambios al repo:
 ~/prj/pyhello$ svn ci
 Ahora existe un nuevo directorio en pyhello/tags/0.1-1. Esto es
 equivalente a usar dch -i sin usar svn-buildpackage.
Empaquetar con Herramientas CV. subversion
 Nueva versión del upstream:

 Cuando el autor del software crea una nueva versión es
 necesario como mantenedor empaquetarla.

 Para ello descargar el paquete tar.gz de internet o del sitio
 del programador.

 Ejecutar el siguiente comando para subir la nueva versión
 ~/prj/pyhello$ svn ci

 Luego ejecutar los mismos pasos para cerrar un bug.

 Este proceso es equivalente a usar a mano el comando
 uupdate -u.
Empaquetar con Herramientas CV. mercurial
 Mercurial es un sistema de control de versiones distribuido
 desarrollado en python. Tiene la facilidad de subversion con el
 poder de otro control de versiones distribuido llamado git.
 Más información en:
 http://www.selenic.com/mercurial/wiki/index.cgi/SpanishTutorial


 Se debe crear un repositorio mercurial:
 hg repositorio
 Luego crear 2 repositorios, uno para el paquete Debian y el
 otro para el paquete fuente:
 cd repositorio
 hg init sshguard
 hg init sshguard.upstream

 A continuación se importa las fuentes del paquete:
 hg-importdsc
 /home/ecrespo/paquetes/sshguard/sshguard_1.3-1.dsc
Empaquetar con Herramientas CV. mercurial
 Modificar los archivos debian/rules, debian/control para que
 soporte tcpd en vez de iptables el programa sshguard:
 ./configure $(CROSS) --prefix=/usr --mandir=$$
 {prefix}/share/man --with-firewall=hosts --infodir=$$
 {prefix}/share/info CFLAGS="$(CFLAGS)" LDFLAGS="-Wl,-
 z,defs"

 Archivo debian/control:
 Source: sshguard
 Section: net
 Priority: optional
 Maintainer: Ernesto Nadir Crespo Avila
 Build-Depends: debhelper (>= 7), autotools-dev
 Standards-Version: 3.8.0
 Homepage: http://sshguard.sourceforge.net/

 Package: sshguard
 Architecture: any
 Depends: ${shlibs:Depends}, ${misc:Depends}, tcpd
 Description: Protects from brute force attacks against ssh
 Protects networked hosts from the today's widespread
 brute force attacks against ssh servers. It detects such attacks
 and blocks the author's address with a firewall rule.
Empaquetar con Herramientas CV. mercurial
 Se hacen los cambios en el archivo debian/changelog con el
 comando dch -i:
 sshguard (1.3-2) unstable; urgency=low

 * Remove iptables depend in build-depends in debian/control
 file.
 * Add tcpd depend in depends in debian/control file.
 * Change configure option in debian/rules to hosts.

 -- Ernesto Nadir Crespo Avila Tue, 14 Apr 2009 14:06:01 -0430


 Al ejecutar el comando hg status apareceran los cambios
 realizados a los archivos:
 ecrespo@canaima:~/repositorio/repositorio/sshguard/debian$
 hg status
 M debian/changelog
 M debian/control
 M debian/rules
Empaquetar con Herramientas CV. mercurial
 Para agregar los cambios al repositorio se ejecuta un commit:
 ecrespo@canaima:~/repositorio/repositorio/sshguard$ hg
 commit -m"Change control and rules files" -u "Ernesto Nadir
 Crespo Avila "

 Al ejecutar hg log se muestra los cambios realizados:
 changeset: 5:7a64e00a1c05
 tag: tip
 user: Ernesto Nadir Crespo Avila
 date: Tue Apr 14 14:11:19 2009 -0430
 summary: Change control and rules files

 changeset: 4:19b2688f71ec
 user: ecrespo@canaima
 date: Tue Apr 14 13:57:26 2009 -0430
 summary: Added tag DEBIAN_sshguard_1.3-1 for changeset a7094766c4e6

 changeset: 3:a7094766c4e6
 tag: DEBIAN_sshguard_1.3-1
 user: ecrespo@canaima
 date: Tue Apr 14 13:57:25 2009 -0430
 summary: Import Debian sshguard 1.3-1

 changeset: 2:85a24e090d85
 user: ecrespo@canaima
 date: Tue Apr 14 13:57:24 2009 -0430
 summary: Added tag UPSTREAM_sshguard_1.3_TAG for changeset f61bc4db3564

 changeset: 1:f61bc4db3564
 tag: UPSTREAM_sshguard_1.3_TAG
 user: ecrespo@canaima
 date: Tue Apr 14 13:57:24 2009 -0430
 summary: Added tag UPSTREAM_sshguard_1.3 for changeset b438c8517fe7

 changeset: 0:b438c8517fe7
 tag: UPSTREAM_sshguard_1.3
 user: ecrespo@canaima
 date: Tue Apr 14 13:57:24 2009 -0430
 summary: Import upstream sshguard version 1.3

 Se jalan los cambios al repositorio:
 ecrespo@canaima:~/repositorio/repositorio$ hg pull sshguard
 pulling from sshguard
 requesting all changes
 adding changesets
 adding manifests
 adding file changes
 added 7 changesets with 66 changes to 60 files
 (run 'hg update' to get a working copy)
Empaquetar con Herramientas CV. mercurial
   Se actualiza el repositorio:
   ecrespo@canaima:~/repositorio/repositorio$ hg update
   60 files updated, 0 files merged, 0 files removed, 0 files
   unresolved

   Ahora se crea el paquete:
   ecrespo@canaima:~/repositorio/repositorio$ hg-buildpackage
   -rfakeroot -k
En este momento se tiene el paquete .deb yylos archivos creados
 En este momento se tiene el paquete .deb los archivos creados
en el momento del empaquetado:
 en el momento del empaquetado:
ecrespo@canaima:~/repositorio$ ls
 ecrespo@canaima:~/repositorio$ ls
sshguard_1.3-2.diff.gz sshguard_1
 sshguard_1.3-2.diff.gz sshguard_1
.3-2_i386.build sshguard_1.3-2_i386.deb
 .3-2_i386.build sshguard_1.3-2_i386.deb
repositorio sshguard_1.3-2.dsc sshguard_1.3-2_i386.changes
 repositorio sshguard_1.3-2.dsc sshguard_1.3-2_i386.changes
sshguard_1.3.orig.tar.gz
 sshguard_1.3.orig.tar.gz
Crear Paquetes Backports
Backport
 a razón que existe backports es el lento mecanismo de
“release” de Debian. Al utilizar backports
se pierde la ventaja que ofrece Debian de estabilidad (IE se
necesitaran hacer backports de parches
de seguridad).

La opción que se tiene es crear una jaula con chroot de la
versión de lenny o etch.
Mkdir /home/usuario/etch
 debootstrap etch /home/usuario/etch
http://debian.dst.pdvsa.com/debian/

Luego entrar a la jaula:
chroot /home/usuario/etch/

Modificar el archivo sources.list para que tenga el repositorio
backport.
deb http://www.backports.org/debian lenny-backports main
contrib non-free
Instalar las llaves del backport:
apt-get install debian-backports-keyring


Actualizar la lista de paquetes y bajar sshguard del backport.
Backport
 Condiciones para crear un backport:
 Los paquetes tienen que estar en testing.

 Agregar en el changelog el número de paquete :
 “~bpo${debian_release}+${build_int}”
 Ejemplo : “1.2.3-4”
 pasa a “1.2.3-4~bpo50+1”
 o para paquetes nativos:
  “1.2.3”
 pasa a “1.2.3~bpo50+1”

 Ejemplo:
 sshguard (1.0-2~bpo40+1) etch-backports; urgency=low

  * Rebuild for etch-backports.

  -- Mohammed Adnène Trojette <adn+deb@diwi.org> Sun, 29
 Jun 2008 14:00:42 +0200

 sshguard (1.0-2) unstable; urgency=low
Backport
 Las dependencias se tienen que manejar de la versión del
 backport, igualmente para el policy de Debian.
 Archivo debian/control:
 Source: sshguard
 Section: net
 Priority: optional
 Maintainer: Ernesto Nadir Crespo Avila
 <ecrespo@debianvenezuela.org>
 Build-Depends: debhelper (>= 5), autotools-dev, iptables
 Standards-Version: 3.7.3
 Homepage: http://sshguard.sourceforge.net/

 Package: sshguard
 Architecture: any
 Depends: ${shlibs:Depends}, ${misc:Depends}
 Description: protects from brute force attacks against ssh
  Protects networked hosts from the today's widespread
  brute force attacks against ssh servers. It detects such
 attacks
  and blocks the author's address with a firewall rule.
Metapaquetes
Paquetes virtuales, metapaquetes y dummy
  Un paquete virtual es un nombre genérico que aplica a
  cualquiera grupo de paquetes que proveen
  la misma funcionalidad. Por ejemplo, los programas tin y trn
  son lectores de noticias, y por ende
  deben satisfacer cualquier dependencias que requieran un
  lector de noticias en el sistema, para
  poder funcionar. Por ende ambos se le dice que son
  “paquetes virtuales” llamados news-readers
  (lectores-de-noticias).
  Tipos de paquetes:
  ●Paquetes de dependencias,

  ●Paquetes de cambios de configuración.




  Un ejemplo es crear el paquete accesibilidad, este manejará
  las dependencias de todos los paquetes que se necesiten para
  darle accesibilidad a un computador.

  O crear un paquete que realice los cambios necesarios en la
  configuración de los usuarios para que soporte accesibilidad.
Equivs
 Crear metapaquete con equivs.

 Este paquete maneja dos programas:

 ● equivs-control: Crea un archivo como el archivo control de
 los paquetes de debian donde se maneja la información del
 mantenedor, versión del paquete, dependencias entre otras
 cosas.
 ● equivs-build: Crea el metapaquete del archivo que crea

 equivs-control.
Equivs
 Para crear la plantilla se ejecuta el comando con el nombre del
 paquete: equivs-control accesibilidad.
 Esto crea la siguiente plantilla:
 ### Commented entries have reasonable defaults.
 ### Uncomment to edit them.
 Section: misc
 Priority: optional
 Standards-Version: 3.6.2

 Package:
 # Version:
 # Maintainer: Your Name
 # Pre-Depends:
 # Depends:
 # Recommends:
 # Suggests:
 # Provides:
 # Replaces:
 # Architecture: all
 # Copyright:
 # Changelog:
 # Readme:
 # Extra-Files:
 Description:
 long description and info
 .
 second paragraph
Equivs
 Section: misc
 Priority: optional
 Standards-Version: 3.8.0

 Package: accesibilidad
 Version: 1.0
 Maintainer: Ernesto Nadir Crespo Avila
 Depends: brltty, brltty-x11, libcolorblind-dev, libcolorblind0,
 gnome-orca
 Architecture: all
 Description: Metapaquete para la instalacion de aplicaciones
 de accesibilidad
 Metapaquete para la instalacion de aplicaciones de
 accesibilidad para personas invidentes
Equivs
 Para crear el paquete se ejecuta el comando equivs-build
 accesibilidad.
 ecrespo@canaima:~/canaima2/accesibilidad$ equivs-build
 accesibilidad
 dh_testdir
 dh_testroot
 dh_clean -k
 dh_testdir
 dh_testroot
 dh_install
 dh_installdocs
 dh_installchangelogs
 dh_compress
 dh_fixperms
 dh_installdeb
 dh_gencontrol
 dh_md5sums
 dh_builddeb
 dpkg-deb: construyendo el paquete `accesibilidad' en
 `../accesibilidad_1.0_all.deb'.

 The package has been created.
 Attention, the package has been created in the current
 directory,
 not in ".." as indicated by the message above!
Equivs
 Si se desea firmar el metapaquete con la llave GPG se usa la
 opción -f claro se debe tener la llave del usuario en el equipo.


 El comando
 equivs-build -f canaima-caribay-radio
 ...
 Necesita una frase contraseña para desbloquear la clave secreta
 del usuario: "Ernesto Nadir Crespo Avila (seraph1)
 <ecrespo@debian.org.ve>"
 clave DSA de 1024 bits, ID C97E7015, creada el 2005-08-15


 dpkg-genchanges >../canaima-caribay-radio_1.0_amd64.changes
 dpkg-genchanges: incluyendo el código fuente completo en la subida
 signfile canaima-caribay-radio_1.0_amd64.changes

 Necesita una frase contraseña para desbloquear la clave secreta
 del usuario: "Ernesto Nadir Crespo Avila (seraph1)
 <ecrespo@debian.org.ve>"
 clave DSA de 1024 bits, ID C97E7015, creada el 2005-08-15


  dpkg-source --after-build equivs.nAXaSZ
 dpkg-buildpackage: subida completa; paquete nativo de Debian (se incluye
 la fuente completa)

 The package has been created.
 Attention, the package has been created in the current directory,
 not in ".." as indicated by the message above!
Equivs
 Crear metapaquete con Archivo de configuración (equivs)

 El programa gnome-orca crea un perfil de configuración para
 cada usuario. La forma de copiar dichos archivos a los
 usuarios creados es copiar toda la configuración en el
 directorio /etc/skell/ .



 Se creará el metapaquete canaima-accesibilidad-escritorio:
 equivs-control canaima-accesibilidad-escritorio
Equivs
 El archivo control de canaima-accesibilidad-escritorio
 contendrá lo siguiente:
 Section: misc
 Priority: optional
 Homepage: http://canaima.softwarelibre.gob.ve
 Standards-Version: 3.9.1

 Package: canaima-accesibilidad-visual-escritorio
 Version: 1:0.1
 Maintainer: Ernesto Nadir Crespo Avila <ecrespo@centitel.gob.ve>
 Depends: at-spi, brltty, brltty-flite, brltty-speechd, brltty-x11, listen, espeak,
 festival, festvox-sflpc16k, festvox-palpc16k, gnome-orca, gnome-accessibility-
 themes, gnome-accessibility, libcolorblind0, gnome-mag, libgail-common,
 mousetweaks, dots, ${misc:Depends}
 Architecture: any
 Copyright: copyright
 Changelog: changelog
 Files: ./conf/.orca/user-settings.py /etc/skell/.orca/user-settings.py
      ./conf/.orca/app-settings/__init__.py /etc/skell/.orca/app-settings/__init__.py
      ./conf/.orca/orca-scripts/__init__.py /etc/skell/.orca/orca-scripts/__init__.py
      ./conf/.orca/user-settings.pyc /etc/skell/.orca/user-settings.pyc
      ./conf/.orca/app-settings/__init__.pyc /etc/skell/.orca/app-
 settings/__init__.pyc
      ./conf/.orca/orca-scripts/__init__.pyc /etc/skell/.orca/orca-
 scripts/__init__.pyc
 Description: Programas de Accesibilidad para Canaima GNU/Linux
  Este metapaquete provee los programas de accesibilidad y configuraciones
 para que las personas con discapacidad puedan utilizar canaima GNU/Linux.
Equivs
 El archivo Changelog contendrá lo siguiente:


 canaima-accesibilidad-visual-escritorio (1.0:0.1) unstable; urgency=low


  * First release.

  -- Ernesto Nadir Crespo Avila <ecrespo@cenditel.gob.ve> Thu, 22 Sep 2011
 22:33:15 -0430
Equivs
 El archivo Copyright contendrá lo siguiente:
 Authors:


   Copyright (C) 2011 Ernesto Nadir Crespo Avila <ecrespo@cenditel.gob.ve>


 License:


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


  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, write to the Free Software
  Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA


 On Debian GNU/Linux systems, the complete text of the GNU General
 Public License can be found in `/usr/share/common-licenses/GPL-2'
Equivs
 Luego de crear el metapaquete con equivs-buid:
 equivs-build -f canaima-accesibiliad-escritorio

 Se puede revisar el contenido del paquete binario:
 dpkg -c canaima-accesibilidad-visual-escritorio_0.1_amd64.deb
 drwxr-xr-x root/root      0 2011-09-23 08:41 ./
 drwxr-xr-x root/root      0 2011-09-23 08:41 ./usr/
 drwxr-xr-x root/root      0 2011-09-23 08:41 ./usr/share/
 drwxr-xr-x root/root      0 2011-09-23 08:41 ./usr/share/doc/
 drwxr-xr-x root/root      0 2011-09-23 08:41 ./usr/share/doc/canaima-
 accesibilidad-visual-escritorio/
 -rw-r--r-- root/root  1044 2011-09-23 08:41 ./usr/share/doc/canaima-
 accesibilidad-visual-escritorio/README.Debian
 -rw-r--r-- root/root   171 2011-09-23 08:41 ./usr/share/doc/canaima-
 accesibilidad-visual-escritorio/changelog.gz
 -rw-r--r-- root/root   896 2011-09-23 08:41 ./usr/share/doc/canaima-
 accesibilidad-visual-escritorio/copyright
 drwxr-xr-x root/root      0 2011-09-23 08:41 ./etc/
 drwxr-xr-x root/root      0 2011-09-23 08:41 ./etc/skell/
 drwxr-xr-x root/root      0 2011-09-23 08:41 ./etc/skell/.orca/
 drwxr-xr-x root/root      0 2011-09-23 08:41 ./etc/skell/.orca/app-settings/
 -rwxr-xr-x root/root     0 2011-09-23 08:41 ./etc/skell/.orca/app-
 settings/__init__.py
 -rw-r--r-- root/root   111 2011-09-23 08:41 ./etc/skell/.orca/app-
 settings/__init__.pyc
 -rw-r--r-- root/root  7291 2011-09-23 08:41 ./etc/skell/.orca/user-settings.py
 -rw-r--r-- root/root  6193 2011-09-23 08:41 ./etc/skell/.orca/user-settings.pyc
 drwxr-xr-x root/root      0 2011-09-23 08:41 ./etc/skell/.orca/orca-scripts/
 -rwxr-xr-x root/root     0 2011-09-23 08:41 ./etc/skell/.orca/orca-
 scripts/__init__.py
 -rw-r--r-- root/root   111 2011-09-23 08:41 ./etc/skell/.orca/orca-
 scripts/__init__.pyc
Equivs
 Crear metapaquete con archivos postinst y prerm (equivs).
 Ahora aparte de colocar los archivos en /etc/skell para los copiar la
 configuración en los usuarios que se creen a continuación es necesario copiar
 la configuración a los usuarios ya existentes.



 En este caso se muestra la creación del metapaquete canaima-radiotray-conf:

 $equivs-control canaima-radiotray-conf

 El archivo control contendrá:

 Section: misc
 Priority: optional
 Homepage: http://canaima.softwarelibre.gob.ve
 Standards-Version: 3.9.1

 Package: canaima-radiotray-conf
 Version: 0.1
 Maintainer: Ernesto Nadir Crespo Avila <ecrespo@cenditel.gob.ve>
 Pre-Depends: radiotray
 Depends: ${misc:Depends}
 Architecture: all
 Copyright: copyright
 Changelog: changelog
 Files: ./radiotray/radiotray.desktop /etc/skel/.config/autostart/radiotray.desktop
     ./radiotray/bookmarks.xml /etc/skel/.local/share/radiotray/bookmarks.xml
 ...
Equivs
 ...
 File: postinst
  #!/bin/sh -e
  # preinst for main-package-config. Divert some configuration file of main-package.
  .
  set -e
  .
  PKG=canaima-radiotray-conf
     if [ "$1" = configure ] ; then
    for usuario in /home/*? ; do
        usuario_min=$(basename $usuario)
        case $(grep "${usuario_min}:.*:.*:.*:.*:.*:::" /etc/shadow ) in
             '')
             #no se hace nada
             ;;
             *)
             usuario=${usuario_min}
             if [ -f /home/${usuario}/.config/autostart/radiotray.desktop ];
             then
                    cp -r /etc/skel/.config/autostart/radiotray.desktop /home/${usuario}/.config/autostart/radiotray.desktop
                    chown ${usuario}.${usuario} /home/${usuario}/.config/autostart/radiotray.desktop
             else
                    mkdir -p /home/${usuario}/.config; chown -R ${usuario}.${usuario} /home/${usuario}/.config
                    mkdir -p /home/${usuario}/.config/autostart; chown -R ${usuario}.${usuario} /home/${usuario}/.config/autostart
                    cp -r /etc/skel/.config/autostart/radiotray.desktop /home/${usuario}/.config/autostart/radiotray.desktop
                    chown ${usuario}.${usuario} /home/${usuario}/.config/autostart/radiotray.desktop
             fi
             if [ -f /home/${usuario}/.local/share/radiotray/bookmarks.xml ];
             then
                    cp -r /etc/skel/.local/share/radiotray/bookmarks.xml /home/${usuario}/.local/share/radiotray/bookmarks.xml
                    chown ${usuario}.${usuario} /home/${usuario}/.local/share/radiotray/bookmarks.xml
             else
                    mkdir -p /home/${usuario}/.local; chown -R ${usuario}.${usuario} /home/${usuario}/.local
                    mkdir -p /home/${usuario}/.local/share; chown -R ${usuario}.${usuario} /home/${usuario}/.local/share
                    mkdir -p /home/${usuario}/.local/share/radiotray; chown -R ${usuario}.${usuario} /home/$
 {usuario}/.local/share/radiotray
                    cp -r /etc/skel/.local/share/radiotray/bookmarks.xml /home/${usuario}/.local/share/radiotray/bookmarks.xml
                    chown ${usuario}.${usuario} /home/${usuario}/.local/share/radiotray/bookmarks.xml
             fi
        esac
    done
     fi
    Exit 0
 ...
Equivs
 ...
 File: prerm
 #!/bin/sh -e
 set -e
 PKG=canaima-radiotray-conf
    if [ "$1" = configure ] ; then
        for usuario in /home/*? ; do
          usuario_min=$(basename $usuario)
           case $(grep "${usuario_min}:.*:.*:.*:.*:.*:::" /etc/shadow ) in
             '')
                 #no se hace nada
                 ;;.
                 *)
                 usuario=${usuario_min}
                 if [ -f /home/${usuario}/.config/autostart/radiotray.desktop ];
                     then
                        rm -f /home/${usuario}/.config/autostart/radiotray.desktop
                 fi
                 if [ -f /home/${usuario}/.local/share/radiotray/bookmarks.xml ];
                     then
                        rm -f /home/${usuario}/.local/share/radiotray/bookmarks.xml
             fi
          esac
        done
    fi

    exit 0
 Description: Radiotray bookmarks to Venezuelan radio streaming
 Radiotray config to autostart in gnome and radio stream bookmark
Equivs
 Dentro del directorio de trabajo se crea el directorio radiotray
 $mkdir radiotray

 El directorio contendrá 2 archivos: radiotray.desktop y bookmarks.html:
 radiotray.desktop:
 [Desktop Entry]
 Type=Application
 Exec=radiotray
 Hidden=false
 X-GNOME-Autostart-enabled=true
 Name[es_VE]=radiotray
 Name=radiotray
 Comment[es_VE]=Cliente de radio por internet
 Comment=Cliente de radio por internet

 bookmarks.html:
 <bookmarks>
   <group name="Venezuela">
        <bookmark name="RNV Canal Clásico" url="http://www.telepuertovirtual2.tv/rnvclasico "/>
        <bookmark name="AlbaCiudad 96.3" url="http://albaciudad96.org/radio/"/>
        <bookmark name="RNV noticias" url="http://www.telepuertovirtual2.tv/rnvnoticias"/>
        <bookmark name="Radio Mágica 106.3 FM"
 url="http://resorte.solve.web.ve:8000/magicafm.ogg "/>

   </group>
   <group name="Linux">
        <bookmark name="SOLVE" url="http://resorte.solve.web.ve:8000/RadioSolve.ogg"/>
        <bookmark name="Radio Cooperativa Tecnológica Somos Libre Barinas"
 url="http://resorte.solve.web.ve:8000/RadioSLBarinas.ogg"/>
        <bookmark name="Radio entreHackes"
 url="http://resorte.solve.web.ve:8000/entrehackers.ogg"/>
        <bookmark name="Radio enredate" url="http://resorte.solve.web.ve:8000/enredate.ogg"/>
   </group>
 </bookmarks>
Equivs
 Luego se ejecuta el comando equivs-build y se instala la
 aplicación.
 En la figura se muestra el radiotray en el escritorio del usuario
Paquetes de configuración
  El programa config-package-dev permite crear paquetes de
  configuración que sobre escriben configuraciones ya
  existentes en el directorio /etc/ .

  El paquete que se le sobre escribirá su configuración es el openssh-server. Este
   programa tiene su archivo de configuración como servidor en
  /etc/ssh/sshd_config.


  La configuración por defecto permite que el usuario root acceda a equipos de
  forma remota y se permite reenviar paquetes de conexiones gráficas.
Paquetes de configuración
  El archivo sshd_config contiene lo siguiente:
  Port 22
  Protocol 2
  HostKey /etc/ssh/ssh_host_rsa_key
  HostKey /etc/ssh/ssh_host_dsa_key
  HostKey /etc/ssh/ssh_host_ecdsa_key
  UsePrivilegeSeparation yes
  KeyRegenerationInterval 3600
  ServerKeyBits 768
  SyslogFacility AUTH
  LogLevel INFO
  LoginGraceTime 120
  PermitRootLogin yes
  StrictModes yes
  RSAAuthentication yes
  PubkeyAuthentication yes
  IgnoreRhosts yes
  RhostsRSAAuthentication no
  HostbasedAuthentication no
  PermitEmptyPasswords no
  ChallengeResponseAuthentication no
  X11Forwarding yes
  X11DisplayOffset 10
  PrintMotd no
  PrintLastLog yes
  TCPKeepAlive yes
  AcceptEnv LANG LC_*
  Subsystem sftp /usr/lib/openssh/sftp-server

  Se cambia a no ambas opciones de configuración.
Paquetes de configuración
  Crear el directorio de trabajo:
  mkdir canaima-sshd-config-0.1

  Dentro del directorio de trabajo se crea los directorios debian y files:
  cd canaima-sshd-config-0.1
  mkdir -p debian files

  En el directorio files se creará el directorio etc, dentro de el se crea el directorio
  ssh y se copiará el archivo sshd_config a ese directorio:
  mkdir -p files/etc
  mkdir -p files/etc/ssh
  cp /etc/ssh/sshd_config ./files/etc/ssh/sshd_config.canaima

  Se modifica el archivo sshd_config.canaima para que los parámetros de acceso
  como root y reenviar paquetes X11 aparezcan como no:
  PermitRootLogin no
  X11Forwarding no

  Se crea el archivo debian/copyright y debian/changelog como se ha explicado
  anteriormente.

  Se crea el archivo debian/compat conteniendo el valor 7 (según versión de
  políticas de Debian).
Paquetes de configuración
  Se crea el archivo debian/control y debian/control.in con el
  siguiente contenido:
  Source: canaima-sshd-config
  Section: config
  Priority: extra
  Maintainer: Ernesto Nadir Crespo Avila <ecrespo@gmail.com>
  Build-Depends: cdbs (>= 0.4.23-1.1), debhelper (>= 4.2.0), config-package-dev
  (>= 4.5~)
  Standards-Version: 3.9.2

  Package: canaima-sshd-config
  Architecture: all
  Pre-Depends: openssh-server
  Depends: cdbs, ${misc:Depends}
  Provides: ${diverted-files}
  Conflicts: ${diverted-files}
  Description: Archivo de configuracion de ssh
  Archivo de configuracion del servidor ssh.


  Se crea el archivo debian/canaima-sshd-config.install con la ruta donde se
  encuentran los archivos de configuración:
  files/* /
Paquetes de configuración
  Se crea el archivo debian/rules, en este archivo se define la
  extensión .canaima la cual permite diferenciar los paquetes base
  de Debian de la distribución Canaima, además se define el archivo
  a modificar y se incluye los cdbs necesarios:
  #!/usr/bin/make -f

  DEB_DIVERT_EXTENSION = .canaima
  # Replace some base files with simple replacements.
  DEB_DIVERT_FILES_canaima-sshd-config += 
       /etc/ssh/sshd_config.canaima
  # These files are installed via dh_install from the files/ directory
  # (see debian/canaima-sshd-config.install)

  include /usr/share/cdbs/1/rules/debhelper.mk
  include /usr/share/cdbs/1/rules/config-package.mk



  Para crear el paquete se ejecuta el comando dpkg-buildpackage:
  dpkg-buildpackage -rfakeroot -k<Llave GPG>
Paquetes de configuración
  Verificar la instalación del paquete:
  dpkg -i canaima-sshd-config_0.1_all.deb

  Selecting previously unselected package canaima-sshd-config.
  (Leyendo la base de datos ... 418546 ficheros o directorios instalados actualmente.)
  Desempaquetando canaima-sshd-config (de canaima-sshd-config_0.1_all.deb) ...
  Configurando canaima-sshd-config (0.1) ...
  Añadiendo `desviación de /etc/ssh/sshd_config a /etc/ssh/sshd_config.canaima-orig por
  canaima-sshd-config'




  Al listar los archivos /etc/ssh/sshd_config*

  ls -l /etc/ssh/sshd_config*

  lrwxrwxrwx 1 root root 19 nov 13 16:16 sshd_config -> sshd_config.canaima
  -rw-r--r-- 1 root root 2487 nov 13 10:15 sshd_config.canaima
  -rw-r--r-- 1 root root 2489 nov 13 13:20 sshd_config.canaima-orig


  Al remover el paquete se elimina los enlaces y queda el archivo original del
  sshd_config.
Repositorio local de paquetes
Repositorio local de paquetes
 Debido a que los paquetes virtuales, dummies o metapaquetes
 no se pueden instalar con el comando dpkg por que no
 resuelve dependencias se hace necesario crear un repositorio
 personal de paquetes de Debian.

 Es necesario tener un servidor web: apache2, lighttpd o
 cherokee.

 Se necesita instalar el paquete reprepo:
 aptitude install reprepo

 La estructura del repositorio es la siguiente:
 ●Conf: Donde estará el archivo de configuración distribution.

 ●Dists:Se tiene un directorio por cada versión de la

 distribución.
 ●Pool: Se encuentran los paquetes clasificados por sección y

 en orden alfabético.
Repositorio local de paquetes
 Archivo conf/distribution:
 Origin: Paquetes Ernesto
 Label: Paquetes Ernesto
 Suite: unstable
 Codename: sid
 Architectures: i386 source
 Components: main
 Description: Paquetes elaborados por Ernesto Crespo

 Origin: Paquetes Ernesto
 Label: Paquetes Ernesto
 Suite: testing
 Codename: lenny
 Architectures: i386 source
 Components: main
 Description: Paquetes elaborados por Ernesto Crespo


 Origin: Paquetes Ernesto
 Label: Paquetes Ernesto
 Suite: stable
 Codename: etch
 Architectures: i386 source
 Components: main
 Description: Paquetes elaborados por Ernesto Crespo
Repositorio local de paquetes
 Para subir un paquete binario se ejecuta el comando reprepo
 con las siguientes opciones:

 reprepro -b . -V -C main includedeb sid
 accesibilidad_1.0_all.deb

 Para subir las fuentes de un paquete se ejecuta:
 reprepro -b . -V -C main includedsc sid sshguard_1.4rc3-1.dsc

 Y su binario:
 reprepro -b . -V -C main includedeb sid sshguard_1.4rc3-
 1_i386.deb


 Para eliminar un paquete del repositorio se ejecuta:
 reprepro -b . -V -C main remove sid sshguard_1.4rc3-
 1_i386.deb

 Para utilizar el repositorio se modifica el archivo
 /etc/apt/sources.list
 deb http://midominio/repo/ sid main
 Luego se ejecuta aptitude update y listo.
Referencias:
●Adoptar un paquete:http://wiki.debian.org/AdoptarUnPaquete
●Completa guía de empaquetado:https://wiki.ubuntu.com/PackagingGuide/Complete
●Tutorial de empaquetado:http://women.debian.org/wiki/English/PackagingTutorial

●CDBS:https://perso.duckcorp.org/duck/cdbs-doc/cdbs-doc.xhtml

●Mantener un paquete con subversion:http://crysol.org/es/node/620

●Paquetes de configuración:http://debathena.mit.edu/config-packages/

●Paquete de configuración:http://wiki.debian.org/ConfigPackages

●Como usar dpatch:http://matrixhasu.altervista.org/index.php?view=use_dpatch

●Empaquetar con git:http://wiki.debian.org/PackagingWithGit

●Empaquetar con mercurial:

http://ernesto-ecrespo.blogspot.com/2009/04/subir-un-paquete-debian-pyching-al.html
●Scripts de mantenimiento:http://women.debian.org/wiki/English/MaintainerScripts

●Sistema de parches:https://wiki.ubuntu.com/PackagingGuide/PatchSystems

●Quilt:http://pkg-perl.alioth.debian.org/howto/quilt.html

●Guía de empaquetado de aplicaciones en python:

https://wiki.ubuntu.com/PackagingGuide/Python
●Empaquetado:http://women.debian.org/wiki/English/BuildingTutorial

●Empaquetar sin ayuda:http://women.debian.org/wiki/English/BuildingWithoutHelper

●Guía para empaquetar aplicaciones de kde:

https://wiki.ubuntu.com/PackagingGuide/KDE?action=show&redirect=KubuntuPackagingGuide
●Guía de empaquetado:

https://help.ubuntu.com/6.10/ubuntu/packagingguide/C/index.html
●Libro de bolsillo:https://wiki.ubuntu.com/PackagingGuide/HandsOn

●Crear un metapaquete:

http://blog.ibeentoubuntu.com/2008/08/howto-create-debian-metapackage.html
●dpath:

http://blog.orebokech.com/2007/08/converting-debian-packages-from-dpatch.html
●Metapaquete con equivs:

http://ernesto-ecrespo.blogspot.com/2009/03/como-crear-un-metapaquete.html
●Mensajes de lintian:http://lintian.debian.org/tags.html

●Backport: http://www.backports.org/dokuwiki/doku.php?id=contribute
Contacto:




 Ernesto Crespo
 Correo: ecrespo@gmail.com
 Twitter: @_seraph1
 Blog: http://ernesto-ecrespo.blogspot.com
Derechos:
  Está presentación está basada en:
 ●Presentación de Empaquetado de Isaac Clerencia DD
 ●Presentación de Empaquetado de Larz Wirzenius

 ●Presentación de J. Feliz Ontañón

 ●Tutorial de empaquetado sin ayuda de Debian-Women (Miriam Ruiz)

 ●Tutoriales de Mario Izquierdo (Mario Debian) de su blog http://mariodebian.com/

 ●Tutoriales de empaquetado del http://blog ernesto-ecrespo.blogspot.com

Más contenido relacionado

La actualidad más candente

Curso Basico Ponencia 1
Curso Basico Ponencia 1Curso Basico Ponencia 1
Curso Basico Ponencia 1Antonio Durán
 
Os unix versiones-tipos de particiones-formatos
Os unix versiones-tipos de particiones-formatosOs unix versiones-tipos de particiones-formatos
Os unix versiones-tipos de particiones-formatosJuanaalfaro15
 
Software libre, open source y histroia de linux
Software libre, open source y histroia de linuxSoftware libre, open source y histroia de linux
Software libre, open source y histroia de linuxMeiil Hernandez
 
gestio de paquetes linux
gestio de paquetes linuxgestio de paquetes linux
gestio de paquetes linuxPablo Mamani
 
Criminalística Cibernética
Criminalística CibernéticaCriminalística Cibernética
Criminalística CibernéticaAlonso Caballero
 
2.10 instalacionyconfiguraciondeservicios
2.10 instalacionyconfiguraciondeservicios2.10 instalacionyconfiguraciondeservicios
2.10 instalacionyconfiguraciondeserviciosFernando Solis
 
Instalar programas en linux
Instalar programas en linuxInstalar programas en linux
Instalar programas en linuxMila Coderque
 
Instalar unix Euller Yugsan 108 bb72
Instalar unix Euller Yugsan 108 bb72Instalar unix Euller Yugsan 108 bb72
Instalar unix Euller Yugsan 108 bb72Euller108BB72
 
Sandra saldaña instalarunix
Sandra saldaña instalarunixSandra saldaña instalarunix
Sandra saldaña instalarunixsandrasal23
 

La actualidad más candente (16)

Curso Basico Ponencia 1
Curso Basico Ponencia 1Curso Basico Ponencia 1
Curso Basico Ponencia 1
 
Taller basico GNU / Linux
Taller basico GNU / LinuxTaller basico GNU / Linux
Taller basico GNU / Linux
 
Os unix versiones-tipos de particiones-formatos
Os unix versiones-tipos de particiones-formatosOs unix versiones-tipos de particiones-formatos
Os unix versiones-tipos de particiones-formatos
 
todo sobre linux
todo sobre linuxtodo sobre linux
todo sobre linux
 
Software libre, open source y histroia de linux
Software libre, open source y histroia de linuxSoftware libre, open source y histroia de linux
Software libre, open source y histroia de linux
 
gestio de paquetes linux
gestio de paquetes linuxgestio de paquetes linux
gestio de paquetes linux
 
Criminalística Cibernética
Criminalística CibernéticaCriminalística Cibernética
Criminalística Cibernética
 
Que Es Gnu/Linux
Que Es Gnu/LinuxQue Es Gnu/Linux
Que Es Gnu/Linux
 
2.10 instalacionyconfiguraciondeservicios
2.10 instalacionyconfiguraciondeservicios2.10 instalacionyconfiguraciondeservicios
2.10 instalacionyconfiguraciondeservicios
 
Linux
LinuxLinux
Linux
 
Julissa
JulissaJulissa
Julissa
 
Linux
LinuxLinux
Linux
 
Instalar programas en linux
Instalar programas en linuxInstalar programas en linux
Instalar programas en linux
 
Instalar unix Euller Yugsan 108 bb72
Instalar unix Euller Yugsan 108 bb72Instalar unix Euller Yugsan 108 bb72
Instalar unix Euller Yugsan 108 bb72
 
Sandra saldaña instalarunix
Sandra saldaña instalarunixSandra saldaña instalarunix
Sandra saldaña instalarunix
 
Instalar unixElvis Urquizo
Instalar unixElvis UrquizoInstalar unixElvis Urquizo
Instalar unixElvis Urquizo
 

Destacado

como instalar canaima 3.0 linux en tu equipo
como instalar canaima 3.0 linux en tu equipocomo instalar canaima 3.0 linux en tu equipo
como instalar canaima 3.0 linux en tu equipokkulzi1
 
Panadería-Ingreso de datos
Panadería-Ingreso de datosPanadería-Ingreso de datos
Panadería-Ingreso de datosasesorvirtual
 
La revue de presse de la semaine du 23 au 29 mai 2016
La revue de presse de la semaine du 23 au 29 mai 2016La revue de presse de la semaine du 23 au 29 mai 2016
La revue de presse de la semaine du 23 au 29 mai 2016Caroline PILATO
 
Krishna voice april 2016 Magazine
Krishna voice april 2016 MagazineKrishna voice april 2016 Magazine
Krishna voice april 2016 MagazineISKCON Bangalore
 
18. fuentes de energia
18. fuentes de energia18. fuentes de energia
18. fuentes de energiaTalanton S.C.
 
2010 05 14 liderar61
2010 05 14 liderar612010 05 14 liderar61
2010 05 14 liderar61PSOE Alaquàs
 
swissQprint Product portfolio en_us
swissQprint Product portfolio en_usswissQprint Product portfolio en_us
swissQprint Product portfolio en_usMichael B. Frawley
 
Evolution Factory - Cambiar el Mundo a través de los Negocios Responsables y ...
Evolution Factory - Cambiar el Mundo a través de los Negocios Responsables y ...Evolution Factory - Cambiar el Mundo a través de los Negocios Responsables y ...
Evolution Factory - Cambiar el Mundo a través de los Negocios Responsables y ...Evolution Factory
 
Datacare Company Profile Sept 2010
Datacare  Company Profile   Sept 2010Datacare  Company Profile   Sept 2010
Datacare Company Profile Sept 2010Fredrick Kariuki
 
Desarrolla tus áreas de mayor productividad
Desarrolla tus áreas de mayor productividadDesarrolla tus áreas de mayor productividad
Desarrolla tus áreas de mayor productividadRoberto Miramontes
 
Pay at-the-Table / Bringing Payments to the Consumer
Pay at-the-Table / Bringing Payments to the ConsumerPay at-the-Table / Bringing Payments to the Consumer
Pay at-the-Table / Bringing Payments to the ConsumerIngenico Group
 
2012 America's Golf Team Fact Sheet
2012 America's Golf Team Fact Sheet2012 America's Golf Team Fact Sheet
2012 America's Golf Team Fact SheetMyra Blackwelder
 
Efficience et Bonnes Pratiques de monitoring hospitalier - Rencontres de la R...
Efficience et Bonnes Pratiques de monitoring hospitalier - Rencontres de la R...Efficience et Bonnes Pratiques de monitoring hospitalier - Rencontres de la R...
Efficience et Bonnes Pratiques de monitoring hospitalier - Rencontres de la R...PharmaSuccess
 

Destacado (20)

como instalar canaima 3.0 linux en tu equipo
como instalar canaima 3.0 linux en tu equipocomo instalar canaima 3.0 linux en tu equipo
como instalar canaima 3.0 linux en tu equipo
 
Manueal instalar canaima
Manueal instalar canaimaManueal instalar canaima
Manueal instalar canaima
 
Panadería-Ingreso de datos
Panadería-Ingreso de datosPanadería-Ingreso de datos
Panadería-Ingreso de datos
 
La revue de presse de la semaine du 23 au 29 mai 2016
La revue de presse de la semaine du 23 au 29 mai 2016La revue de presse de la semaine du 23 au 29 mai 2016
La revue de presse de la semaine du 23 au 29 mai 2016
 
Krishna voice april 2016 Magazine
Krishna voice april 2016 MagazineKrishna voice april 2016 Magazine
Krishna voice april 2016 Magazine
 
Basem Curriculum Vitae
Basem Curriculum VitaeBasem Curriculum Vitae
Basem Curriculum Vitae
 
18. fuentes de energia
18. fuentes de energia18. fuentes de energia
18. fuentes de energia
 
jeetu cv
jeetu cvjeetu cv
jeetu cv
 
2010 05 14 liderar61
2010 05 14 liderar612010 05 14 liderar61
2010 05 14 liderar61
 
swissQprint Product portfolio en_us
swissQprint Product portfolio en_usswissQprint Product portfolio en_us
swissQprint Product portfolio en_us
 
Evolution Factory - Cambiar el Mundo a través de los Negocios Responsables y ...
Evolution Factory - Cambiar el Mundo a través de los Negocios Responsables y ...Evolution Factory - Cambiar el Mundo a través de los Negocios Responsables y ...
Evolution Factory - Cambiar el Mundo a través de los Negocios Responsables y ...
 
Datacare Company Profile Sept 2010
Datacare  Company Profile   Sept 2010Datacare  Company Profile   Sept 2010
Datacare Company Profile Sept 2010
 
Joint venture
Joint ventureJoint venture
Joint venture
 
Roddy Macías
Roddy MacíasRoddy Macías
Roddy Macías
 
Desarrolla tus áreas de mayor productividad
Desarrolla tus áreas de mayor productividadDesarrolla tus áreas de mayor productividad
Desarrolla tus áreas de mayor productividad
 
The Power of Social Media for School Leaders
The Power of Social Media for School LeadersThe Power of Social Media for School Leaders
The Power of Social Media for School Leaders
 
11.interfaz de usuario en java
11.interfaz de usuario en java11.interfaz de usuario en java
11.interfaz de usuario en java
 
Pay at-the-Table / Bringing Payments to the Consumer
Pay at-the-Table / Bringing Payments to the ConsumerPay at-the-Table / Bringing Payments to the Consumer
Pay at-the-Table / Bringing Payments to the Consumer
 
2012 America's Golf Team Fact Sheet
2012 America's Golf Team Fact Sheet2012 America's Golf Team Fact Sheet
2012 America's Golf Team Fact Sheet
 
Efficience et Bonnes Pratiques de monitoring hospitalier - Rencontres de la R...
Efficience et Bonnes Pratiques de monitoring hospitalier - Rencontres de la R...Efficience et Bonnes Pratiques de monitoring hospitalier - Rencontres de la R...
Efficience et Bonnes Pratiques de monitoring hospitalier - Rencontres de la R...
 

Similar a Taller de Empaquetado para Debian y Canaima

Similar a Taller de Empaquetado para Debian y Canaima (20)

Linux Intro
Linux IntroLinux Intro
Linux Intro
 
Linux Intro
Linux IntroLinux Intro
Linux Intro
 
Taller canaima
Taller canaimaTaller canaima
Taller canaima
 
Introduccion UNIX/LINUX
Introduccion UNIX/LINUXIntroduccion UNIX/LINUX
Introduccion UNIX/LINUX
 
Linux debian 6
Linux debian 6 Linux debian 6
Linux debian 6
 
Debian
DebianDebian
Debian
 
Instalación de un sistema operativo linux
Instalación de un sistema operativo linuxInstalación de un sistema operativo linux
Instalación de un sistema operativo linux
 
S.o linux
S.o linuxS.o linux
S.o linux
 
Curso basico de linux(guadalinex)
Curso basico de linux(guadalinex)Curso basico de linux(guadalinex)
Curso basico de linux(guadalinex)
 
Compilación del kernel en Linux Mint 20.2 "Uma" 2021
Compilación del kernel en Linux Mint 20.2 "Uma" 2021Compilación del kernel en Linux Mint 20.2 "Uma" 2021
Compilación del kernel en Linux Mint 20.2 "Uma" 2021
 
Sandra saldaña instalarunix
Sandra saldaña instalarunixSandra saldaña instalarunix
Sandra saldaña instalarunix
 
Historia De Linux
Historia De LinuxHistoria De Linux
Historia De Linux
 
Algunas preguntas de Linux
Algunas preguntas de LinuxAlgunas preguntas de Linux
Algunas preguntas de Linux
 
Jadira palta
Jadira paltaJadira palta
Jadira palta
 
Como instalar unix ...lili
Como instalar unix ...liliComo instalar unix ...lili
Como instalar unix ...lili
 
Estructura básica general del sistema unix
Estructura básica general del sistema unixEstructura básica general del sistema unix
Estructura básica general del sistema unix
 
Linux - Programas de utilería linux
Linux - Programas de utilería linuxLinux - Programas de utilería linux
Linux - Programas de utilería linux
 
Viviana medina
Viviana medinaViviana medina
Viviana medina
 
Viviana medina MATERIA
Viviana medina MATERIAViviana medina MATERIA
Viviana medina MATERIA
 
Sistema linux
Sistema linuxSistema linux
Sistema linux
 

Más de Ernesto Crespo

Matemáticas Aplicadas usando Python
Matemáticas Aplicadas   usando    PythonMatemáticas Aplicadas   usando    Python
Matemáticas Aplicadas usando PythonErnesto Crespo
 
Usando Django con Docker
Usando Django con DockerUsando Django con Docker
Usando Django con DockerErnesto Crespo
 
Desarrollo de aplicaciones multiplataforma con python y Kivy
Desarrollo de aplicaciones multiplataforma con python y KivyDesarrollo de aplicaciones multiplataforma con python y Kivy
Desarrollo de aplicaciones multiplataforma con python y KivyErnesto Crespo
 
Extracción de datos de páginas web con Python (webscraping)
Extracción de datos de páginas web con Python (webscraping)Extracción de datos de páginas web con Python (webscraping)
Extracción de datos de páginas web con Python (webscraping)Ernesto Crespo
 
"Ley de Infogobierno: antecedentes, situación actual y lo que se espera a fu...
 "Ley de Infogobierno: antecedentes, situación actual y lo que se espera a fu... "Ley de Infogobierno: antecedentes, situación actual y lo que se espera a fu...
"Ley de Infogobierno: antecedentes, situación actual y lo que se espera a fu...Ernesto Crespo
 
Python en Android,Charla del FUDcon Latam 2012
Python en Android,Charla del FUDcon Latam 2012Python en Android,Charla del FUDcon Latam 2012
Python en Android,Charla del FUDcon Latam 2012Ernesto Crespo
 
Sistema de Mensajeria de Colas con ZeroMQ y Python
Sistema de Mensajeria de Colas con ZeroMQ y PythonSistema de Mensajeria de Colas con ZeroMQ y Python
Sistema de Mensajeria de Colas con ZeroMQ y PythonErnesto Crespo
 
Gestión de configuración distribuída para la plataforma de Canaima
Gestión de configuración distribuída para la plataforma de Canaima Gestión de configuración distribuída para la plataforma de Canaima
Gestión de configuración distribuída para la plataforma de Canaima Ernesto Crespo
 
Gestión de configuración con mercurial y etckeeper
Gestión de configuración con mercurial y etckeeperGestión de configuración con mercurial y etckeeper
Gestión de configuración con mercurial y etckeeperErnesto Crespo
 
Empaquetar un paquete Debian por medio de mercurial
Empaquetar un paquete Debian por medio de mercurialEmpaquetar un paquete Debian por medio de mercurial
Empaquetar un paquete Debian por medio de mercurialErnesto Crespo
 
¿Como colaborar en Debian?
¿Como colaborar en Debian?¿Como colaborar en Debian?
¿Como colaborar en Debian?Ernesto Crespo
 

Más de Ernesto Crespo (15)

Matemáticas Aplicadas usando Python
Matemáticas Aplicadas   usando    PythonMatemáticas Aplicadas   usando    Python
Matemáticas Aplicadas usando Python
 
Internet de las cosas
Internet  de las cosasInternet  de las cosas
Internet de las cosas
 
Usando Django con Docker
Usando Django con DockerUsando Django con Docker
Usando Django con Docker
 
Desarrollo de aplicaciones multiplataforma con python y Kivy
Desarrollo de aplicaciones multiplataforma con python y KivyDesarrollo de aplicaciones multiplataforma con python y Kivy
Desarrollo de aplicaciones multiplataforma con python y Kivy
 
Extracción de datos de páginas web con Python (webscraping)
Extracción de datos de páginas web con Python (webscraping)Extracción de datos de páginas web con Python (webscraping)
Extracción de datos de páginas web con Python (webscraping)
 
"Ley de Infogobierno: antecedentes, situación actual y lo que se espera a fu...
 "Ley de Infogobierno: antecedentes, situación actual y lo que se espera a fu... "Ley de Infogobierno: antecedentes, situación actual y lo que se espera a fu...
"Ley de Infogobierno: antecedentes, situación actual y lo que se espera a fu...
 
Colaborar debian
Colaborar debianColaborar debian
Colaborar debian
 
Python en Android,Charla del FUDcon Latam 2012
Python en Android,Charla del FUDcon Latam 2012Python en Android,Charla del FUDcon Latam 2012
Python en Android,Charla del FUDcon Latam 2012
 
Sistema de Mensajeria de Colas con ZeroMQ y Python
Sistema de Mensajeria de Colas con ZeroMQ y PythonSistema de Mensajeria de Colas con ZeroMQ y Python
Sistema de Mensajeria de Colas con ZeroMQ y Python
 
Gestión de configuración distribuída para la plataforma de Canaima
Gestión de configuración distribuída para la plataforma de Canaima Gestión de configuración distribuída para la plataforma de Canaima
Gestión de configuración distribuída para la plataforma de Canaima
 
Colaborar en Debian
Colaborar en DebianColaborar en Debian
Colaborar en Debian
 
Gestión de configuración con mercurial y etckeeper
Gestión de configuración con mercurial y etckeeperGestión de configuración con mercurial y etckeeper
Gestión de configuración con mercurial y etckeeper
 
Python en Android
Python en AndroidPython en Android
Python en Android
 
Empaquetar un paquete Debian por medio de mercurial
Empaquetar un paquete Debian por medio de mercurialEmpaquetar un paquete Debian por medio de mercurial
Empaquetar un paquete Debian por medio de mercurial
 
¿Como colaborar en Debian?
¿Como colaborar en Debian?¿Como colaborar en Debian?
¿Como colaborar en Debian?
 

Último

Buenos_Aires_Meetup_Redis_20240430_.pptx
Buenos_Aires_Meetup_Redis_20240430_.pptxBuenos_Aires_Meetup_Redis_20240430_.pptx
Buenos_Aires_Meetup_Redis_20240430_.pptxFederico Castellari
 
infor expo AVANCES TECNOLOGICOS DEL SIGLO 21.pptx
infor expo AVANCES TECNOLOGICOS DEL SIGLO 21.pptxinfor expo AVANCES TECNOLOGICOS DEL SIGLO 21.pptx
infor expo AVANCES TECNOLOGICOS DEL SIGLO 21.pptxgustavovasquezv56
 
Innovaciones tecnologicas en el siglo 21
Innovaciones tecnologicas en el siglo 21Innovaciones tecnologicas en el siglo 21
Innovaciones tecnologicas en el siglo 21mariacbr99
 
investigación de los Avances tecnológicos del siglo XXI
investigación de los Avances tecnológicos del siglo XXIinvestigación de los Avances tecnológicos del siglo XXI
investigación de los Avances tecnológicos del siglo XXIhmpuellon
 
Guia Basica para bachillerato de Circuitos Basicos
Guia Basica para bachillerato de Circuitos BasicosGuia Basica para bachillerato de Circuitos Basicos
Guia Basica para bachillerato de Circuitos BasicosJhonJairoRodriguezCe
 
Resistencia extrema al cobre por un consorcio bacteriano conformado por Sulfo...
Resistencia extrema al cobre por un consorcio bacteriano conformado por Sulfo...Resistencia extrema al cobre por un consorcio bacteriano conformado por Sulfo...
Resistencia extrema al cobre por un consorcio bacteriano conformado por Sulfo...JohnRamos830530
 
How to use Redis with MuleSoft. A quick start presentation.
How to use Redis with MuleSoft. A quick start presentation.How to use Redis with MuleSoft. A quick start presentation.
How to use Redis with MuleSoft. A quick start presentation.FlorenciaCattelani
 
Avances tecnológicos del siglo XXI 10-07 eyvana
Avances tecnológicos del siglo XXI 10-07 eyvanaAvances tecnológicos del siglo XXI 10-07 eyvana
Avances tecnológicos del siglo XXI 10-07 eyvanamcerpam
 
presentacion_desamblado_de_una_computadora_base_a_las_normas_de_seguridad.pdf
presentacion_desamblado_de_una_computadora_base_a_las_normas_de_seguridad.pdfpresentacion_desamblado_de_una_computadora_base_a_las_normas_de_seguridad.pdf
presentacion_desamblado_de_una_computadora_base_a_las_normas_de_seguridad.pdfaxelv9257
 
Generaciones de las Computadoras..pdf...
Generaciones de las Computadoras..pdf...Generaciones de las Computadoras..pdf...
Generaciones de las Computadoras..pdf...solanocortezluisalfr
 
EVOLUCION DE LA TECNOLOGIA Y SUS ASPECTOSpptx
EVOLUCION DE LA TECNOLOGIA Y SUS ASPECTOSpptxEVOLUCION DE LA TECNOLOGIA Y SUS ASPECTOSpptx
EVOLUCION DE LA TECNOLOGIA Y SUS ASPECTOSpptxJorgeParada26
 
redes informaticas en una oficina administrativa
redes informaticas en una oficina administrativaredes informaticas en una oficina administrativa
redes informaticas en una oficina administrativanicho110
 
presentación del desensamble y ensamble del equipo de computo en base a las n...
presentación del desensamble y ensamble del equipo de computo en base a las n...presentación del desensamble y ensamble del equipo de computo en base a las n...
presentación del desensamble y ensamble del equipo de computo en base a las n...axelv9257
 
Avances tecnológicos del siglo XXI y ejemplos de estos
Avances tecnológicos del siglo XXI y ejemplos de estosAvances tecnológicos del siglo XXI y ejemplos de estos
Avances tecnológicos del siglo XXI y ejemplos de estossgonzalezp1
 

Último (14)

Buenos_Aires_Meetup_Redis_20240430_.pptx
Buenos_Aires_Meetup_Redis_20240430_.pptxBuenos_Aires_Meetup_Redis_20240430_.pptx
Buenos_Aires_Meetup_Redis_20240430_.pptx
 
infor expo AVANCES TECNOLOGICOS DEL SIGLO 21.pptx
infor expo AVANCES TECNOLOGICOS DEL SIGLO 21.pptxinfor expo AVANCES TECNOLOGICOS DEL SIGLO 21.pptx
infor expo AVANCES TECNOLOGICOS DEL SIGLO 21.pptx
 
Innovaciones tecnologicas en el siglo 21
Innovaciones tecnologicas en el siglo 21Innovaciones tecnologicas en el siglo 21
Innovaciones tecnologicas en el siglo 21
 
investigación de los Avances tecnológicos del siglo XXI
investigación de los Avances tecnológicos del siglo XXIinvestigación de los Avances tecnológicos del siglo XXI
investigación de los Avances tecnológicos del siglo XXI
 
Guia Basica para bachillerato de Circuitos Basicos
Guia Basica para bachillerato de Circuitos BasicosGuia Basica para bachillerato de Circuitos Basicos
Guia Basica para bachillerato de Circuitos Basicos
 
Resistencia extrema al cobre por un consorcio bacteriano conformado por Sulfo...
Resistencia extrema al cobre por un consorcio bacteriano conformado por Sulfo...Resistencia extrema al cobre por un consorcio bacteriano conformado por Sulfo...
Resistencia extrema al cobre por un consorcio bacteriano conformado por Sulfo...
 
How to use Redis with MuleSoft. A quick start presentation.
How to use Redis with MuleSoft. A quick start presentation.How to use Redis with MuleSoft. A quick start presentation.
How to use Redis with MuleSoft. A quick start presentation.
 
Avances tecnológicos del siglo XXI 10-07 eyvana
Avances tecnológicos del siglo XXI 10-07 eyvanaAvances tecnológicos del siglo XXI 10-07 eyvana
Avances tecnológicos del siglo XXI 10-07 eyvana
 
presentacion_desamblado_de_una_computadora_base_a_las_normas_de_seguridad.pdf
presentacion_desamblado_de_una_computadora_base_a_las_normas_de_seguridad.pdfpresentacion_desamblado_de_una_computadora_base_a_las_normas_de_seguridad.pdf
presentacion_desamblado_de_una_computadora_base_a_las_normas_de_seguridad.pdf
 
Generaciones de las Computadoras..pdf...
Generaciones de las Computadoras..pdf...Generaciones de las Computadoras..pdf...
Generaciones de las Computadoras..pdf...
 
EVOLUCION DE LA TECNOLOGIA Y SUS ASPECTOSpptx
EVOLUCION DE LA TECNOLOGIA Y SUS ASPECTOSpptxEVOLUCION DE LA TECNOLOGIA Y SUS ASPECTOSpptx
EVOLUCION DE LA TECNOLOGIA Y SUS ASPECTOSpptx
 
redes informaticas en una oficina administrativa
redes informaticas en una oficina administrativaredes informaticas en una oficina administrativa
redes informaticas en una oficina administrativa
 
presentación del desensamble y ensamble del equipo de computo en base a las n...
presentación del desensamble y ensamble del equipo de computo en base a las n...presentación del desensamble y ensamble del equipo de computo en base a las n...
presentación del desensamble y ensamble del equipo de computo en base a las n...
 
Avances tecnológicos del siglo XXI y ejemplos de estos
Avances tecnológicos del siglo XXI y ejemplos de estosAvances tecnológicos del siglo XXI y ejemplos de estos
Avances tecnológicos del siglo XXI y ejemplos de estos
 

Taller de Empaquetado para Debian y Canaima

  • 1. Empaquetado para Debian y Canaima Versión 3.0 Ernesto Nadir Crespo Avila ecrespo@gmail.com @_seraph1 Presentación liberada bajo licencia Creative Commons
  • 3. Agenda Fundamentos básicos Empaquetar Crear parches Empaquetado usando SCV Paquetes Backports Metapaquetes Repositorio local de paquetes
  • 5. Historia del S.O. Unix y GNU/Linux ●A finales de 1960 los Laboratorios Bell trabajan en un S.O. Multics ●En 1969 Ken Thompson y Dennis Ritchie lideraron un grupo de programadores para desarrollar un S.O. Que fuera multiusuario y mutitarea que al principio se llamo Unics y luego fue Unix, este fue desarrollado en lenguaje ensamblador. ●En 1972 se reescribe Unix en lenguaje C e incorporando el stack TCP/IP ●En 1975 la Universidad de California creo su propio Unix llamado BSD, siendo una fuerte competencia para el Unix de AT&T. ●En 1991 un estudiante de Finlandia llamado Linux Torvalds crea un clon de Unix basandose en Minix de Andrew Tanenbaum. ●En el año 1983, Richard Stallman crea El proyecto GNU para crear un S.O. Libre que fuera como Unix, ya se tenía un interpretador de comandos, compilador, un sistema de archivos y un editor, sólo faltaba el kernel del Sistema operativo y fue gracias al Kernel de Linux que hoy en día se tiene a GNU/Linux. ●En 1993 Ian Murdock se encarga de una iniciativa que nace de la FSF y su proyecto GNU para crear un Sistema Operativo totalmente libre y Universal. Debian es la contracción del nombre de la ex-esposa Debra e Ian.
  • 6. Historia del S.O. Unix y GNU/Linux
  • 8. Hitos importantes en los 20 años de Linux
  • 9. Estructura de GNU/Linux Hardware Kernel Shell Aplicaciones
  • 10. Programas Fuentes y binarios. Compilación Programa Fuente: es un conjunto de líneas de texto que son las instrucciones que debe seguir la computadora para ejecutar dicho programa. Por tanto, en el código fuente de un programa está descrito por completo su funcionamiento. El código fuente de un programa está escrito por un programador en algún lenguaje de programación, pero en este primer estado no es directamente ejecutable por la computadora, sino que debe ser traducido a otro lenguaje. Programa Binario o ejecutable: Es la conversión del código fuente (serie de instrucciones) escrita por el programador a lenguaje de máquina que entiende el computador. Existen los lenguajes compilados e interpretados. Interpretados: Perl, python, php, ruby, entre otros. Compilados: C, Pascal. Para instalar un programa fuente es necesario normalmente seguir los siguientes pasos: Configurar el programa: ./configure Compilar el programa: make Instalar el programa: make install
  • 11. Paquete Un paquete contiene instrucciones en donde tienen que estar ubicados (en tu sistema de archivo) los archivos a instalar, dependencias de librerías u otros programas (si es que existe dependencias), instrucciones para la instalación, y scripts básicos de configuración. Un paquete usualmente contiene software precompilado (o llamados “binarios”), pero también puede empaquetar código fuente.
  • 12. Bajar un paquete fuente y compilarlo El siguiente es un ejercicio para que conozcan el procedimiento de instalación de un programa fuente. Bajar el programa sshguard: wget http://hivelocity.dl.sourceforge.net/sourceforge/sshguard/sshguard-1.4rc3.tar.bz2 Descomprimir y desempaquetar el paquete: tar -xvjf shguard-1.4rc3.tar.bz2 Cambiarse al directorio: cd sshguard-1.4rc3 Listar las opciones de configuración con ./configure – help. SshGuard necesita definirle en la configuración cual firewall se va a usar, esto es con la opción –with-firewall=iptables. Ejecutar la configuración: ./configure –with-firewall=iptables Compilar: make Instalar: make install
  • 13. Sistemas de gestión de paquetes Es una colección de herramientas que sirven para automatizar el proceso instalación, actualización y eliminación de paquetes. Maneja una base de datos de paquetes instalados y facilita la remoción limpia de dichos paquetes.
  • 14. Objetivos de Debian y Canaima Debian ●Mejor sistema operativo libre posible ●Asegurar que todo el software funciona ●Facilitar la desintalación de software ●Que paquete es el responsable de cada archivo ●Facilitar la instalación de software: ● Precompilado,configurado,legal y libre ● Dependencias, actualizaciones y seguridad Canaima ● ¿Por qué Venezuela DEBE Y TIENE que utilizar Software Libre? ●Decreto 3390. ●Que es la Meta Distribución Canaima. ●¿Por qué la Meta Distribución Canaima?
  • 15. Ciclo de desarrollo de Canaima
  • 16. Lo necesario para ser desarrollador Debian
  • 17. Desarrolladores Debian a nivel mundial Desarrolladores en Venezuela: Eloy París, Cesar Mendoza, Muammar El Khatib y José Luis Rivas. Mantenedores de paquetes: Christian Sanchez, Ernesto Hernández Novich, Gerardo Curiel, Manuel García, Alejandro Garrido, Juan Angulo Moreno, Ernesto Crespo y Carlos Alberto Silombria Ibarra.
  • 18. Normativas y lineamientos de Debian ●Debian Policy : http://www.debian.org/doc/debian-policy/ ●Sistema de archivos estandar: http://www.pathname.com/fhs/ ●Menú policy:http://www.debian.org/doc/packaging-manuals/menu-policy/ ●Mime policy: http://www.debian.org/doc/packaging-manuals/mime-policy/ ●Emac policy: http://www.debian.org/doc/packaging-manuals/debian-emacs-policy ●Java policy:http://www.debian.org/doc/packaging-manuals/java-policy/ ●Perl policy:http://www.debian.org/doc/packaging-manuals/perl-policy/ ●Python policy: http://www.debian.org/doc/packaging-manuals/python-policy/ ●CLI policy:http://pkg-mono.alioth.debian.org/cli-policy/ ●Debconf: http://www.debian.org/doc/packaging-manuals/debconf_specification.html ●Webapp policy:http://webapps-common.alioth.debian.org/draft/html/ ●Php policy:http://webapps-common.alioth.debian.org/draft-php/html/ ●DB policy:http://people.debian.org/~seanius/policy/dbapp-policy.html/ ●TCL/TK policy:http://pkg-tcltk.alioth.debian.org/tcltk-policy.html/ ●Guía del mantenedor:http://www.debian.org/doc/maint-guide/ ●Referencia del desarrollador: http://www.debian.org/doc/manuals/developers-reference/ ●Guía de empaquetado de librerías: http://www.netfort.gr.jp/~dancer/column/libpkg-guide/libpkg-guide.html ●Manual de make: http://www.gnu.org/software/make/manual/make.html
  • 19. ¿Donde buscar paquetes? ●Paquetes en Debian que necesitan ayuda: ● Paquetes huérfanos:http://www.debian.org/devel/wnpp/orphaned ● Paquetes por dejar libres:http://www.debian.org/devel/wnpp/rfa_bypackage ● Paquetes en adopción:http://www.debian.org/devel/wnpp/being_adopted ●Repositorio de proyectos: ● Google code: http://code.google.com/hosting/ ● Sourceforge: http://sourceforge.net/index.php ● Gitorius: http://gitorius.org ● GitHub: http://www.github.com ● Bitbucket: http://www.bitbucket.org ● Freshmeat: http://freshmeat.net/ ● Savannah: http://savannah.gnu.org/
  • 20. Paquetes disponibles para ser adoptados
  • 23. WNPP En wnpp se tiene una descripción del proceso de reporte de fallos: http://www.debian.org/devel/wnpp/ También se maneja una descripción de las etiquetas manejadas: ●O: Paquete ha sido abandonado y necesita nuevo responsable. ●RFA: Petición por adopción, debido a falta de tiempo, recursos o interés la persona encargada a dejado libre el paquete. ●RFH: Petición de ayuda, el responsable actual quiere seguir manteniendo el paquete pero necesita ayuda en el mismo. ●ITP: Intento de empaquetado, es un paquete nuevo que no se encuentra en Debian y alguien está empaquetandolo para Debian. ●RFP: Petición de empaquetado, alguien ha encontrado un programa interesante y desea que un mantenedor o desarrollador lo suba a Debian.
  • 24. WNPP Procedimiento para eliminar los errores: ●O: Si va a adoptar un paquete retitule el error reemplazando O por ITA. ●RFA: Si va a adoptar un paquete retirule el error reemplazando RFA por ITA. ●RFP: Si va a empaquetar este programa, cambie el error reemplazando RFP por ITP y así las personas pueden saber que este paquete está siendo empaquetado. El correo a enviar debería tener la siguiente estructura: To: control@bugs.debian.org From: nombre-apellidos <nombre@example.com> retitle NNNNNN ITA: nombre-paquete -- descripcion-paquete owner NNNNNN ! Thanks Donde NNNNN es el número de bug para O ó RFA. Más información de los comandos en: http://www.debian.org/Bugs/server-control
  • 25. Adoptar un paquete huérfano
  • 27. Paquetes Fuente en Debian Un paquete fuente contiene archivos independientes de la arquitectura y tienen todo lo necesario para la construcción de un paquete binario: Se puede ejecutar para tener los fuentes del paquete hello: apt-get source hello ●Hellhello_2.2-3.dsco-2.2: Directorio con las fuentes del paquete hello para debian. ●hello_2.2-3.dsc: Contiene el archivo de control del paquete hello con información de firma del empaquetador y verificación hash de las fuentes del paquete. ●hello_2.2.orig.tar.gz: Paquete fuente original. ●hello_2.2-3.diff.gz: Contiene todos los cambios aplicados por Debian. Para paquetes nativos no se maneja el orig ni el diff.
  • 28. Contenido del directorio del paquete fuente
  • 29. Contenido del directorio del paquete fuente
  • 30. Contenido del directorio del paquete fuente
  • 31. Contenido del directorio del paquete fuente
  • 32. Contenido del directorio del paquete fuente
  • 33. Estructura de un paquete Binario Un paquete Binario en Debian es un archivo con extensión .deb por la unión de 3 archivos (empaquetados con el comando ar): ●data.tar.gz: Archivos para el Sistema de archivos. ●control.tar.gz:Scripts de mantenimiento y metadatos. ●Debian-binary: Versión del paquete, actualmente 2.0. Una vez instalados los archivos de control residen en /var/lib/dpkg/info. Se realizan operaciones sobre el paquete .deb con el comando dpkg: ●Dpkg –info hello_2.2-3_i386.deb:Examina los metadatos del paquete. ●Dpkg –contents hello_2.2-3_i386.deb: Lista los archivos. ●Dpkg –unpack hello_2.2-3_i386.deb:Extrae los paquetes localmente. ●Dpkg -i hello_2.2-3_i386.deb:Extrae e instala el paquete junto con sus archivos de configuración Ejercicio: Descargar el paquete hello: aptitude download hello Se desempaqueta el paquete hello: ar -x hello_2.2-3_i386.deb Revisar el contenido de cada archivo desempaquetado.
  • 34. Metadato de un paquete La información de los metadatos de un paquete binario que muestra el comando dpkg –info es la siguiente: Package: El nombre del paquete. Source: El nombre del paquete fuente la cual este binario fue compilado. Version: La version del paquete incluyendo la versión upstream (antes del -) y la versión Debian (después del -). Architecture: El tipo de CPU para la cual fue hecho el paquete. Depends, Recommends, Suggests, Replaces, Conflicts, Enhances: Relaciones con otros paquetes.
  • 35. Scripts de mantenimiento Scripts de mantenimiento son ejecutado cuando se instala y remueve un paquete. Estos están tipicamente codificados en BASH o Perl. Los scripts estándares son: ●preinst: Ejecuta antes de extracción de los archivos. ●postinst: Ejecuta después de extracción de los archivos. ●prerm: Ejecuta antes de remoción de los archivos. ●postrm: Ejecuta después de remoción de los archivos. Para estandarizar la configuración se puede utilizar el archivo: config: Hace preguntas a otros scripts de mantenimiento.
  • 44. Herramientas o programas necesarios... Existen también varios paquetes que serán necesarios para crear paquetes en un sistema Debian. La mayoría ya deben de estar instalado por defecto, como dpkg, gcc, make, dpkg-dev. Instalar los siguientes programas: ●dh_make : ●Build-essential: Paquetes esenciales para la construcción de paquetes. ●Debhelper: Herramienta que facilita la creación de debian/rules. ●Devscripts:Paquetes para desarrollo contiene dch, debuild, uscan, uupdate entre otros. ●Fakeroot: Permite compilar e instalar sin ser root. ●Lintian: Paquete que verifica la buena construcción de un paquete y que cumpla las normativas de Debian. ●Pbuilder: Ambiente que permite probar paquetes o empaquetar. ●Piuparts: Herramienta de verificación de la correcta instalación de paquetes. ●Dpatch,Patch, diff,patchutils: Programa que se usa para aplicar parches. ●Quilt: Herramienta para aplicar parches. ●Manedit:Programa para la edición de archivos de manual. aptitude install build-essential dh-make debhelper devscripts dpkg-dev fakeroot lintian pbuilder piuparts dpatch diff quilt manedit patchutils
  • 45. Entorno de empaquetado Herramientas de Debian para empaquetar en un entorno distinto al de usuario . Debian tiene varias herramientas para crear un entorno para empaquetar: ●Debootstrap y chroot: Con estas herramientas se puede tener un entorno sid o lenny/etch para empaquetar. ●Pbuilder: Está herramienta automatiza el proceso de creación del entorno con chroot. Otra opción es usar máquinas virtuales como: ●Qemu ●Kvm ●OpenVZ ●Xen ●User mode linux ●VirtualBox ●VMWare
  • 46. Entorno de empaquetado Debootstrap y chroot: Crear el directorio de trabajo: mkdir /home/sid cd /home/sid Crear el sistema sid: debootstrap sid /home/sid http://debian.velug.org.ve/debian/ Entrar en el entorno sid: chroot /home/sid pbuilder: Crear un pbuilder: pbuilder create Actualizar pbuilder del chroot: pbuilder update Para generar paquetes binarios: pbuilder build <fichero .dsc> Más información en: http://people.debian.org/~anibal/talks/20050910-debian-peru.txt
  • 47. ¿Qué es Debhelper? El sistema de build help mas común es debhelper, el cual provee una buena cantidad de comandos dh_* para la mayoría de las tareas a realizar. apt-get install debhelper dh-make Otros componentes utiles de debhelper son: dh-make-perl y dh-make-php. Escribir todos los comandos de debian/rules pueden ser tedioso y repetitivo. ●Además, a veces cambia la “policy” y los archivos rules deben ser actualizados. ● debhelper es un conjunto de programas para realizar tareas comunes. ● dh_installman instala paginas de manual en el directorio adecuado con los nombres correctos. ● Saber que esta haciendo es bueno.
  • 48. ¿Qué es CDBS? Incluso con debhelper la mayoría de los paquetes comparten gran parte del código de los archivos debian/rules. ●cdbs es un sistema de construcción de paquetes Debian basado en la herencia entre Makefiles. ●Proporciona reglas estándar que pueden se fácilmente extendidas o reemplazadas.
  • 50. Empaquetar un paquete sin ayuda Bajar y descomprimir el paquete fuente: mkdir roaddemo cd roaddemo wget -t 0 -c http://rhk.dataslab.com/roaddemo/roaddemo-1.0.1.tar.gz Descomprimir y cambiar el nombre del paqueta a orig: tar xvfz roaddemo-1.0.1.tar.gz mv roaddemo-1.0.1.tar.gz roaddemo_1.0.1.orig.tar.gz cd roaddemo-1.0.1 Probar la configuración, compilación e instalación del paquete: ./configure --prefix=/usr --mandir=$${prefix}/share/man – infodir=$${prefix}/share/info make mkdir tmp make install DESTDIR=`pwd`/tmp LIBTOOL=libtool Borrar todo lo creado hasta el momento: make distclean rm -rf tmp Reparar algunos bugs: grep road.bmp *.h *.c *.cpp *.cc *.hpp roaddemo.cc: if (load_texture("road.bmp", &road_tex_id) < 0) Cambiar el archivo a /usr/share/roaddemo/road.bmp
  • 51. Empaquetar un paquete sin ayuda Crear archivos necesarios para debianizar: mkdir debian touch debian/control touch debian/changelog touch debian/rules touch debian/copyright touch debian/roaddemo.menu Colocar el siguiente contenido en debian/control: Source: roaddemo Section: games Priority: optional Maintainer: Miriam Ruiz <little_miry@yahoo.es> Build-Depends: libsdl1.2-dev, libgl-dev Standards-Version: 3.8.0 Package: roaddemo Architecture: any Depends: ${shlibs:Depends} Description: Simple demo using opengl and SDL Bezier-road demo ported from glut to SDL. . Use the right mouse button to select one of the endpoints or control points, then click and drag with the left mouse button to move the point.
  • 52. Empaquetar un paquete sin ayuda Colocar el siguiente contenido en debian/copyright: This package was debianized by Miriam Ruiz <little_miry@yahoo.es> on Sat, 8 Jan 2005 20:09:28 +0000. It was downloaded from http://www.newimage.com/~rhk/roaddemo/ Upstream Author: Ray Kelm <rhk@newimage.com> License: This package is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; version 2 dated June, 1991. 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 package; if not, write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. On Debian GNU/Linux systems, the complete text of the GNU General Public License can be found in `/usr/share/common-licenses/GPL'.
  • 53. Empaquetar un paquete sin ayuda Colocar el siguiente contenido en debian/rules: #!/usr/bin/make -f # Debian Rules by Miriam Ruiz <little_miry@yahoo.es> # January 2005 # # Thanks for their help and for some of their code go to: # * Manoj Srivastava # * Helen Faulkner # * Dafydd Harries # * Gregory Pomerantz ###################################################################### ######### ## ## This program is free software; you can redistribute it and/or modify ## it under the terms of the GNU General Public License as published by ## the Free Software Foundation; either version 2 of the License, or ## (at your option) any later version. ## ## This program 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, write to the Free Software ## Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA ## ###################################################################### #########
  • 54. Empaquetar un paquete sin ayuda Colocar el siguiente contenido en debian/rules: # Name of the package package=roaddemo # Function to check if we're in the correct dir (thanks Manoj) define checkdir @test -f debian/rules -a -f roaddemo.cc || (echo Not in correct source directory; exit 1) endef # Function to check if we're root (thanks Manoj) define checkroot @test $$(id -u) = 0 || (echo need root priviledges; exit 1) endef # Top directory of the source code (thanks Manoj) SRCTOP := $(shell if [ "$$PWD" != "" ]; then echo $$PWD; else pwd; fi) # Destination directory where files will be installed DESTDIR = $(SRCTOP)/debian/$(package) # Definition of directories BIN_DIR = $(DESTDIR)/usr/bin GAMES_DIR = $(DESTDIR)/usr/games SHARE_DIR = $(DESTDIR)/usr/share/roaddemo DOCS_DIR = $(DESTDIR)/usr/share/doc/roaddemo MAN_DIR = $(DESTDIR)/usr/share/man/man1 MAN_GAMES_DIR = $(DESTDIR)/usr/share/man/man6 MENU_DIR = $(DESTDIR)/usr/lib/menu PIXMAPS_DIR = $(DESTDIR)/usr/share/pixmaps # Stamp Rules configure-stamp: $(checkdir) ./configure --host=$(DEB_HOST_GNU_TYPE) --build=$(DEB_BUILD_GNU_TYPE) --prefix=/usr --mandir=$$ {prefix}/share/man --infodir=$${prefix}/share/info touch configure-stamp build-stamp: configure-stamp $(checkdir) -rm -f build-stamp $(MAKE) touch build-stamp # Debian rules
  • 55. Empaquetar un paquete sin ayuda Colocar el siguiente contenido en debian/rules: build: build-stamp clean: stamp-configure $(checkdir) -rm -f *-stamp $(MAKE) distclean -rm -rf debian/$(package) -rm -f debian/files -rm -f debian/substvars binary-indep: build # Definitions for install INST_OWN = -o root -g root MAKE_DIR = install -p -d $(INST_OWN) -m 755 INST_FILE = install -c $(INST_OWN) -m 644 INST_PROG = install -c $(INST_OWN) -m 755 -s INST_SCRIPT = install -c $(INST_OWN) -m 755
  • 56. Empaquetar un paquete sin ayuda Colocar el siguiente contenido en debian/rules: binary-arch: build $(checkdir) $(checkroot) # Install Program $(MAKE) install DESTDIR=$(DESTDIR) LIBTOOL=libtool # Install Program Resources $(MAKE_DIR) $(SHARE_DIR) $(INST_FILE) road.bmp $(SHARE_DIR) $(MAKE_DIR) $(DESTDIR)/DEBIAN # Install Docs $(MAKE_DIR) $(DOCS_DIR) $(INST_FILE) debian/copyright $(DOCS_DIR)/copyright $(INST_FILE) debian/changelog $(DOCS_DIR)/changelog.Debian $(INST_FILE) README $(DOCS_DIR)/README # Install Manpages #$(MAKE_DIR) $(MAN_GAMES_DIR) #$(INST_FILE) roaddemo.6 $(MAN_GAMES_DIR) # Install Menu and Icon #$(MAKE_DIR) $(MENU_DIR) #$(INST_FILE) debian/menu $(MENU_DIR)/roaddemo #$(MAKE_DIR) $(PIXMAPS_DIR) #$(INST_FILE) debian/roaddemo.xpm $(PIXMAPS_DIR) # Install Package Scripts #$(INST_SCRIPT) debian/postinst $(DESTDIR)/DEBIAN #$(INST_SCRIPT) debian/postrm $(DESTDIR)/DEBIAN # Compress Docs (thanks Helen) gzip -9 $(DOCS_DIR)/changelog.Debian #gzip -9 $(MAN_GAMES_DIR)/roaddemo.6 # Strip the symbols from the executable (thanks Helen) # TODO: the stripping part in binary-arch should honor the DEB_BUILD_OPTIONS environment variable and not strip stuff when it
  • 57. Empaquetar un paquete sin ayuda Colocar el siguiente contenido en debian/rules: includes 'nostrip' strip -R .comment $(BIN_DIR)/roaddemo # Work out the shared library dependancies (thanks Helen) dpkg-shlibdeps $(package) # Generate the control file (thanks Helen) dpkg-gencontrol -isp -P$(DESTDIR) # Make DEBIAN/md5sums (thanks Helen) cd $(DESTDIR) && find . -type f ! -regex '.*DEBIAN/.*' -printf '%P0' | xargs -r0 md5sum > DEBIAN/md5sums # Create the .deb package (thanks Helen) dpkg-deb -b $(DESTDIR) ../ # Below here is fairly generic really binary: binary-indep binary-arch .PHONY: binary binary-arch binary-indep clean build
  • 58. Empaquetar un paquete con debhelper Bajar el paquete fuente sshguard: wget http://hivelocity.dl.sourceforge.net/sourceforge/sshguard/sshguard-1.4rc3.tar.bz2 Descomprimir el paquete y cambiarse al directorio del paquete fuente: tar -xvjf sshguard-1.4rc3.tar.bz2 cd sshguard-1.4rc3¡ Crear las variables de entorno: export DEBEMAIL=nombre@example.com export DEBFULLNAME='nombre-apellidos' Ejecutar dh_make: dh_make -f ../sshguard-1.4rc3.tar.bz2 -c BSD -s Con este comando se define la licencia del paquete, que va a ser un sólo paquete binario y la ruta del paquete fuente del upstream. El resultado es un escritorio debian/* dentro de los fuentes y un paquete orig: ls ../ sshguard-1.4rc3 sshguard_1.4rc3.orig.tar.gz sshguard-1.4rc3.tar.bz2 ls debian/* debian/changelog debian/dirs debian/init.d.ex debian/menu.ex debian/README.Debian debian/compat debian/docs debian/init.d.lsb.ex debian/postinst.ex debian/rules debian/control debian/emacsen-install.ex debian/manpage.1.ex debian/postrm.ex debian/sshguard.default.ex debian/copyright debian/emacsen-remove.ex debian/manpage.sgml.ex debian/preinst.ex debian/sshguard.doc-base.EX debian/cron.d.ex debian/emacsen-startup.ex debian/manpage.xml.ex debian/prerm.ex debian/watch.ex
  • 59. Empaquetar un paquete con debhelper Renombrar los archivos watch.ex y sshguard.1.ex a watch y sshguard.1 respectivamente. Eliminar el resto de archivos README.Debian, .ex y .EX . Ahora sólo quedan los archivos: copyright, rules, changelog, compat control, dirs, docs, watch y sshguard.1. El archivos dirs contendrá la ruta donde se instalará el binario: usr/sbin. El archivo docs contendrá la do cumentación que viene con el programa, en este caso sólo README. El archivo compat tiene el número de versión de debhelper. El archivo watch contedrá la versión del paquete y la ruta de donde se puede bajar el paquete: version=3 http://sf.net/sshguard/sshguard-(.*).tar.gz Para verificar la validez del archivo watch se prueba uscan: uscan --verbose –no-download -- Scanning for watchfiles in . -- Found watchfile in ./debian -- In debian/watch, processing watchfile line: http://sf.net/sshguard/sshguard-(.*).tar.bz2 -- Found the following matching hrefs: /sites/download.sourceforge.net/pub/sourceforge/s/ss/sshguard/sshguard-0.91.tar.bz2 /sites/download.sourceforge.net/pub/sourceforge/s/ss/sshguard/sshguard-0.91.tar.bz2 /sites/download.sourceforge.net/pub/sourceforge/s/ss/sshguard/sshguard-1.0.tar.bz2 /sites/download.sourceforge.net/pub/sourceforge/s/ss/sshguard/sshguard-1.0.tar.bz2 /sites/download.sourceforge.net/pub/sourceforge/s/ss/sshguard/sshguard-1.1.tar.bz2 /sites/download.sourceforge.net/pub/sourceforge/s/ss/sshguard/sshguard-1.1.tar.bz2 /sites/download.sourceforge.net/pub/sourceforge/s/ss/sshguard/sshguard-1.1beta3.tar.bz2 /sites/download.sourceforge.net/pub/sourceforge/s/ss/sshguard/sshguard-1.1beta3.tar.bz2 /sites/download.sourceforge.net/pub/sourceforge/s/ss/sshguard/sshguard-1.1beta4.tar.bz2 /sites/download.sourceforge.net/pub/sourceforge/s/ss/sshguard/sshguard-1.1beta4.tar.bz2 /sites/download.sourceforge.net/pub/sourceforge/s/ss/sshguard/sshguard-1.1rc1.tar.bz2 /sites/download.sourceforge.net/pub/sourceforge/s/ss/sshguard/sshguard-1.1rc1.tar.bz2 /sites/download.sourceforge.net/pub/sourceforge/s/ss/sshguard/sshguard-1.2.tar.bz2 /sites/download.sourceforge.net/pub/sourceforge/s/ss/sshguard/sshguard-1.2.tar.bz2 /sites/download.sourceforge.net/pub/sourceforge/s/ss/sshguard/sshguard-1.3.tar.bz2 /sites/download.sourceforge.net/pub/sourceforge/s/ss/sshguard/sshguard-1.3.tar.bz2 /sites/download.sourceforge.net/pub/sourceforge/s/ss/sshguard/sshguard-1.4rc1.tar.bz2 /sites/download.sourceforge.net/pub/sourceforge/s/ss/sshguard/sshguard-1.4rc1.tar.bz2 /sites/download.sourceforge.net/pub/sourceforge/s/ss/sshguard/sshguard-1.4rc2.tar.bz2 /sites/download.sourceforge.net/pub/sourceforge/s/ss/sshguard/sshguard-1.4rc2.tar.bz2 /sites/download.sourceforge.net/pub/sourceforge/s/ss/sshguard/sshguard-1.4rc3.tar.bz2 /sites/download.sourceforge.net/pub/sourceforge/s/ss/sshguard/sshguard-1.4rc 3.tar.bz2 Newest version on remote site is 1.4rc3, local version is 1.4rc3 => Package is up to date -- Scan finished ~
  • 60. Empaquetar un paquete con debhelper Archivo copyright: This package was debianized by Ernesto Nadir Crespo Avila <ecrespo@debianvenezuela.org> on Fri, 03 Apr 2009 14:32:21 -0430. It was downloaded from http://sshguard.sourceforge.net/ Upstream Author: sshguard maintainers <sshguard-maintainers@lists.sourceforge.net> Copyright: Copyright (C) 2007 sshguard Team License: Redistribution and use in source and binary forms, with or without modification, are permitted under the terms of the BSD License. THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. On Debian systems, the complete text of the BSD License can be found in `/usr/share/common-licenses/BSD'. The Debian packaging is copyright 2009, Ernesto Nadir Crespo Avila <ecrespo@debianvenezuela.org> and is licensed under the GPL, see `/usr/share/common-licenses/GPL'.
  • 61. Empaquetar un paquete con debhelper Archivo control: Source: sshguard Section: net Priority: optional Maintainer: Ernesto Nadir Crespo Avila <ecrespo@debianvenezuela.org> Build-Depends: debhelper (>= 7), autotools-dev, iptables Standards-Version: 3.8.0 Homepage: http://sshguard.sourceforge.net/ Package: sshguard Architecture: any Depends: ${shlibs:Depends}, ${misc:Depends} Description: Protects from brute force attacks against ssh Protects networked hosts from the today's widespread brute force attacks against ssh servers. It detects such attacks and blocks the author's address with a firewall rule
  • 62. Empaquetar un paquete con debhelper Archivo changelog: sshguard (1.4rc3-1) unstable; urgency=low * Initial release (Closes: #428214). * Improve: - man page - Add configure option --with-firewall=iptables in debian/rules -- Ernesto Nadir Crespo Avila <ecrespo@debianvenezuela.org> Fri, 03 Apr 2009 14:32:21 -0430 Este archivo se puede editar con cualquier editor pero es preferible utilizar la herramienta dch: dch --increment "New maintainer. Closes: #NNNNNN" Para el caso de nuevo mantenedor.
  • 63. Empaquetar un paquete con debhelper Archivo rules: #!/usr/bin/make -f # -*- makefile -*- # Sample debian/rules that uses debhelper. # This file was originally written by Joey Hess and Craig Small. # As a special exception, when this file is copied by dh-make into a # dh-make output file, you may use that output file without restriction. # This special exception was added by Craig Small in version 0.37 of dh-make. # Uncomment this to turn on verbose mode. #export DH_VERBOSE=1 # These are used for cross-compiling and for saving the configure script # from having to guess our platform (since we know it already) DEB_HOST_GNU_TYPE ?= $(shell dpkg-architecture -qDEB_HOST_GNU_TYPE) DEB_BUILD_GNU_TYPE ?= $(shell dpkg-architecture -qDEB_BUILD_GNU_TYPE) ifneq ($(DEB_HOST_GNU_TYPE),$(DEB_BUILD_GNU_TYPE)) CROSS= --build $(DEB_BUILD_GNU_TYPE) --host $(DEB_HOST_GNU_TYPE) else CROSS= --build $(DEB_BUILD_GNU_TYPE) endif config.status: configure dh_testdir # Add here commands to configure the package. ifneq "$(wildcard /usr/share/misc/config.sub)" "" cp -f /usr/share/misc/config.sub config.sub endif ifneq "$(wildcard /usr/share/misc/config.guess)" "" cp -f /usr/share/misc/config.guess config.guess endif ./configure $(CROSS) --prefix=/usr --mandir=$${prefix}/share/man --with-firewall=iptables --infodir=$${prefix}/share/info CFLAGS="$(CFLAGS)" LDFLAGS="-Wl,-z,defs"
  • 64. Empaquetar un paquete con debhelper Archivo rules: build: build-stamp build-stamp: config.status dh_testdir # Add here commands to compile the package. $(MAKE) #docbook-to-man debian/sshguard.sgml > sshguard.1 touch $@ clean: dh_testdir dh_testroot rm -f build-stamp # Add here commands to clean up after the build process. [ ! -f Makefile ] || $(MAKE) distclean rm -f config.sub config.guess dh_clean install: build dh_testdir dh_testroot dh_prep dh_installdirs # Add here commands to install the package into debian/sshguard. $(MAKE) DESTDIR=$(CURDIR)/debian/sshguard install # Build architecture-independent files here. binary-indep: install # We have nothing to do by default.
  • 65. Empaquetar un paquete con debhelper Archivo rules: # Build architecture-dependent files here. binary-arch: install dh_testdir dh_testroot dh_installchangelogs Changes dh_installdocs dh_installexamples # dh_install # dh_installmenu # dh_installdebconf # dh_installlogrotate # dh_installemacsen # dh_installpam # dh_installmime # dh_python # dh_installinit # dh_installcron # dh_installinfo dh_installman debian/sshguard.1 dh_link dh_strip dh_compress dh_fixperms # dh_perl # dh_makeshlibs dh_installdeb dh_shlibdeps dh_gencontrol dh_md5sums dh_builddeb binary: binary-indep binary-arch .PHONY: build clean binary-indep binary-arch binary install
  • 66. Empaquetar un paquete con debhelper Archivo de man sshguard.1: Para editar este archivo se usa la aplicación manedit sshguard.1
  • 67. Empaquetar un paquete con CDBS Bajar el paquete fuente sshguard: wget http://hivelocity.dl.sourceforge.net/sourceforge/sshguard/sshguard-1.4rc3.tar.bz2 Descomprimir el paquete y cambiarse al directorio del paquete fuente: tar -xvjf sshguard-1.4rc3.tar.bz2 cd sshguard-1.4rc3¡ Crear las variables de entorno: export DEBEMAIL=nombre@example.com export DEBFULLNAME='nombre-apellidos' Ejecutar dh_make: ecrespo@canaima:~/empaquetado/Ejercicios/fuentes/sshguard/sshguard-1.4rc3$ dh_make -f ../sshguard-1.4rc3.tar.bz2 -c BSD -s -b Maintainer name : Ernesto Nadir Crespo Avila Email-Address : ecrespo@debianvenezuela.org Date : Sat, 11 Apr 2009 16:43:08 -0430 Package Name : sshguard Version : 1.4rc3 License : bsd Using dpatch : no Using quilt : no Type of Package : cdbs Hit <enter> to confirm:
  • 68. Empaquetar un paquete con CDBS Archivo debian/rulesl: #!/usr/bin/make -f include /usr/share/cdbs/1/rules/debhelper.mk include /usr/share/cdbs/1/class/autotools.mk # Add here any variable or target overrides you need. DEB_CONFIGURE_EXTRA_FLAGS := --with-firewall=iptables
  • 69. Construir el paquete binario Para construir el paquete se tienen los siguientes comandos: ●dpkg-buildpackage -rfakeroot : Construye el paquete sin firmar, pero devuelve el mensaje de error que no se firmó el paquete. ●dpkg-buildpackage -rfakeroot -k<llave-gpg> si se va a firmar el paquete. ●dpkg-buildpackage -us -uc -rfakeroot : De esta forma se le dice que no firme el paquete. ●Debuild: Es otra herramienta de empaquetado, la diferencia es que hace la verificación de lintian de una vez, sin opción devuelve un mensaje de error que no se firmó el paquete. ●Debuild -k<llave-gpg> : Con esta opción se le pasa la llave gpg y pediré la clave de la llave secreta. ●debuild-pbuilder:Igual que debuild sólo que maneja las dependencias y crea una bitacora.
  • 70. Verificar los paquetes Las herramientas para la verificación de paquetes son: ●Lintian lintian -i ../nombre-paquete_version-paquete_arch-paquete. [changes][dsc][deb] Pruebas de instalación: - Instalar en un sistema nuevo, eliminar -Actualizar desde versión anterior - Actualizar a una versión anterior, si es posible -Posiblemente usar un entorno chroot (ver debootstrap) o qemu, pero puede esperar (avanzado)
  • 72. Crear parches con dpatch Versión con CDBS dh_make -f ../sshguard-1.4rc3.tar.bz2 -c BSD -s -b --dpatch Maintainer name : Ernesto Nadir Crespo Avila Email-Address : ecrespo@debianvenezuela.org Date : Sat, 11 Apr 2009 18:55:20 -0430 Package Name : sshguard Version : 1.4rc3 License : bsd Using dpatch : yes Using quilt : no Type of Package : cdbs Hit <enter> to confirm: Versión con Debhelper ecrespo@canaima:~/empaquetado/Ejercicios/fuentes/sshguar d/sshguard-1.4rc3$ dh_make -f ../sshguard-1.4rc3.tar.bz2 -c BSD -s --dpatch Maintainer name : Ernesto Nadir Crespo Avila Email-Address : ecrespo@debianvenezuela.org Date : Sat, 11 Apr 2009 18:58:02 -0430 Package Name : sshguard Version : 1.4rc3 License : bsd Using dpatch : yes Using quilt : no Type of Package : Single Hit <enter> to confirm
  • 73. Crear parches con dpatch El debian/rules para debhelper con dptach: Lo más relevante del rules es este include: include /usr/share/dpatch/dpatch.make Para el caso de CDBS es lo siguiente: include /usr/share/cdbs/1/rules/dpatch.mk Para colocar los patch simplemente se crea un directorio debian/patched y ahí se ubicarán los parches: Un ejemplo de creación de parches a continuación: cd udev*/ cp -a . /tmp/old pushd /tmp/old debian/rules patch cp -a . /tmp/new; cd ../new sed -i 's/Linux/Penguin/g' README cd .. diff -Nurp old new > 90_penguins.patch popd mv /tmp/90_penguins.patch debian/patches rm -rf /tmp/old /tmp/new
  • 75. Empaquetar con Herramientas CV. subversion Existe el repositorio de subversion de paquetes en /var/repo/ . Para migrar el paquete se hace necesario ejecutar svn- inject que crea los módulos y directorios necesarios. svn-inject -o -c 2 /ruta/al/paquete/antiguo/pyhello.dsc ffile:///var/deb-repo A parte de crear los módulos y directorios el comando ha hecho un checkout: ~/prj$ ls pyhello tags trunk ~/prj$ svn info pyhello Ruta: pyhello URL: file:///var/deb-repo/pyhello Raíz del repositorio: file:///var/deb-repo UUID del repositorio: 57189996-dc92-4614-af31- cdb96cf453dc Revisión: 1 Tipo de nodo: directorio
  • 76. Empaquetar con Herramientas CV. subversion Svn-buildpackage tiene 2 modos: ●Manteniendo el repo y los archivos de upstream. Opción por defecto. ●Manteniendo sólo los archivos de gestión del paquete, se puede activar con la opción -o en svn-inject. Compilando el paquete: Desde el directorio trunk ejecutar: svn-buildpackage -us -uc -rfakeroot Si además se quiere verificar los errores con linda o lintian svn-buildpackage -us -uc —svn-lintian —svn-linda -rfakeroot Cerrar un bug: Si se existe un bug en el programa sin que exista un nuevo upstream se hace necesario regenerar el paquete para su distribución. Para crear una liberación menor se ejecuta el comando: ~/prj/pyhello/trunk$ svn-buildpackage —svn-tag-only Esto crea una entrada en debian/changelog que se debe editar para luego compilar el paquete. Cuando todo este bien se sube los cambios al repo: ~/prj/pyhello$ svn ci Ahora existe un nuevo directorio en pyhello/tags/0.1-1. Esto es equivalente a usar dch -i sin usar svn-buildpackage.
  • 77. Empaquetar con Herramientas CV. subversion Nueva versión del upstream: Cuando el autor del software crea una nueva versión es necesario como mantenedor empaquetarla. Para ello descargar el paquete tar.gz de internet o del sitio del programador. Ejecutar el siguiente comando para subir la nueva versión ~/prj/pyhello$ svn ci Luego ejecutar los mismos pasos para cerrar un bug. Este proceso es equivalente a usar a mano el comando uupdate -u.
  • 78. Empaquetar con Herramientas CV. mercurial Mercurial es un sistema de control de versiones distribuido desarrollado en python. Tiene la facilidad de subversion con el poder de otro control de versiones distribuido llamado git. Más información en: http://www.selenic.com/mercurial/wiki/index.cgi/SpanishTutorial Se debe crear un repositorio mercurial: hg repositorio Luego crear 2 repositorios, uno para el paquete Debian y el otro para el paquete fuente: cd repositorio hg init sshguard hg init sshguard.upstream A continuación se importa las fuentes del paquete: hg-importdsc /home/ecrespo/paquetes/sshguard/sshguard_1.3-1.dsc
  • 79. Empaquetar con Herramientas CV. mercurial Modificar los archivos debian/rules, debian/control para que soporte tcpd en vez de iptables el programa sshguard: ./configure $(CROSS) --prefix=/usr --mandir=$$ {prefix}/share/man --with-firewall=hosts --infodir=$$ {prefix}/share/info CFLAGS="$(CFLAGS)" LDFLAGS="-Wl,- z,defs" Archivo debian/control: Source: sshguard Section: net Priority: optional Maintainer: Ernesto Nadir Crespo Avila Build-Depends: debhelper (>= 7), autotools-dev Standards-Version: 3.8.0 Homepage: http://sshguard.sourceforge.net/ Package: sshguard Architecture: any Depends: ${shlibs:Depends}, ${misc:Depends}, tcpd Description: Protects from brute force attacks against ssh Protects networked hosts from the today's widespread brute force attacks against ssh servers. It detects such attacks and blocks the author's address with a firewall rule.
  • 80. Empaquetar con Herramientas CV. mercurial Se hacen los cambios en el archivo debian/changelog con el comando dch -i: sshguard (1.3-2) unstable; urgency=low * Remove iptables depend in build-depends in debian/control file. * Add tcpd depend in depends in debian/control file. * Change configure option in debian/rules to hosts. -- Ernesto Nadir Crespo Avila Tue, 14 Apr 2009 14:06:01 -0430 Al ejecutar el comando hg status apareceran los cambios realizados a los archivos: ecrespo@canaima:~/repositorio/repositorio/sshguard/debian$ hg status M debian/changelog M debian/control M debian/rules
  • 81. Empaquetar con Herramientas CV. mercurial Para agregar los cambios al repositorio se ejecuta un commit: ecrespo@canaima:~/repositorio/repositorio/sshguard$ hg commit -m"Change control and rules files" -u "Ernesto Nadir Crespo Avila " Al ejecutar hg log se muestra los cambios realizados: changeset: 5:7a64e00a1c05 tag: tip user: Ernesto Nadir Crespo Avila date: Tue Apr 14 14:11:19 2009 -0430 summary: Change control and rules files changeset: 4:19b2688f71ec user: ecrespo@canaima date: Tue Apr 14 13:57:26 2009 -0430 summary: Added tag DEBIAN_sshguard_1.3-1 for changeset a7094766c4e6 changeset: 3:a7094766c4e6 tag: DEBIAN_sshguard_1.3-1 user: ecrespo@canaima date: Tue Apr 14 13:57:25 2009 -0430 summary: Import Debian sshguard 1.3-1 changeset: 2:85a24e090d85 user: ecrespo@canaima date: Tue Apr 14 13:57:24 2009 -0430 summary: Added tag UPSTREAM_sshguard_1.3_TAG for changeset f61bc4db3564 changeset: 1:f61bc4db3564 tag: UPSTREAM_sshguard_1.3_TAG user: ecrespo@canaima date: Tue Apr 14 13:57:24 2009 -0430 summary: Added tag UPSTREAM_sshguard_1.3 for changeset b438c8517fe7 changeset: 0:b438c8517fe7 tag: UPSTREAM_sshguard_1.3 user: ecrespo@canaima date: Tue Apr 14 13:57:24 2009 -0430 summary: Import upstream sshguard version 1.3 Se jalan los cambios al repositorio: ecrespo@canaima:~/repositorio/repositorio$ hg pull sshguard pulling from sshguard requesting all changes adding changesets adding manifests adding file changes added 7 changesets with 66 changes to 60 files (run 'hg update' to get a working copy)
  • 82. Empaquetar con Herramientas CV. mercurial Se actualiza el repositorio: ecrespo@canaima:~/repositorio/repositorio$ hg update 60 files updated, 0 files merged, 0 files removed, 0 files unresolved Ahora se crea el paquete: ecrespo@canaima:~/repositorio/repositorio$ hg-buildpackage -rfakeroot -k En este momento se tiene el paquete .deb yylos archivos creados En este momento se tiene el paquete .deb los archivos creados en el momento del empaquetado: en el momento del empaquetado: ecrespo@canaima:~/repositorio$ ls ecrespo@canaima:~/repositorio$ ls sshguard_1.3-2.diff.gz sshguard_1 sshguard_1.3-2.diff.gz sshguard_1 .3-2_i386.build sshguard_1.3-2_i386.deb .3-2_i386.build sshguard_1.3-2_i386.deb repositorio sshguard_1.3-2.dsc sshguard_1.3-2_i386.changes repositorio sshguard_1.3-2.dsc sshguard_1.3-2_i386.changes sshguard_1.3.orig.tar.gz sshguard_1.3.orig.tar.gz
  • 84. Backport a razón que existe backports es el lento mecanismo de “release” de Debian. Al utilizar backports se pierde la ventaja que ofrece Debian de estabilidad (IE se necesitaran hacer backports de parches de seguridad). La opción que se tiene es crear una jaula con chroot de la versión de lenny o etch. Mkdir /home/usuario/etch debootstrap etch /home/usuario/etch http://debian.dst.pdvsa.com/debian/ Luego entrar a la jaula: chroot /home/usuario/etch/ Modificar el archivo sources.list para que tenga el repositorio backport. deb http://www.backports.org/debian lenny-backports main contrib non-free Instalar las llaves del backport: apt-get install debian-backports-keyring Actualizar la lista de paquetes y bajar sshguard del backport.
  • 85. Backport Condiciones para crear un backport: Los paquetes tienen que estar en testing. Agregar en el changelog el número de paquete : “~bpo${debian_release}+${build_int}” Ejemplo : “1.2.3-4” pasa a “1.2.3-4~bpo50+1” o para paquetes nativos: “1.2.3” pasa a “1.2.3~bpo50+1” Ejemplo: sshguard (1.0-2~bpo40+1) etch-backports; urgency=low * Rebuild for etch-backports. -- Mohammed Adnène Trojette <adn+deb@diwi.org> Sun, 29 Jun 2008 14:00:42 +0200 sshguard (1.0-2) unstable; urgency=low
  • 86. Backport Las dependencias se tienen que manejar de la versión del backport, igualmente para el policy de Debian. Archivo debian/control: Source: sshguard Section: net Priority: optional Maintainer: Ernesto Nadir Crespo Avila <ecrespo@debianvenezuela.org> Build-Depends: debhelper (>= 5), autotools-dev, iptables Standards-Version: 3.7.3 Homepage: http://sshguard.sourceforge.net/ Package: sshguard Architecture: any Depends: ${shlibs:Depends}, ${misc:Depends} Description: protects from brute force attacks against ssh Protects networked hosts from the today's widespread brute force attacks against ssh servers. It detects such attacks and blocks the author's address with a firewall rule.
  • 88. Paquetes virtuales, metapaquetes y dummy Un paquete virtual es un nombre genérico que aplica a cualquiera grupo de paquetes que proveen la misma funcionalidad. Por ejemplo, los programas tin y trn son lectores de noticias, y por ende deben satisfacer cualquier dependencias que requieran un lector de noticias en el sistema, para poder funcionar. Por ende ambos se le dice que son “paquetes virtuales” llamados news-readers (lectores-de-noticias). Tipos de paquetes: ●Paquetes de dependencias, ●Paquetes de cambios de configuración. Un ejemplo es crear el paquete accesibilidad, este manejará las dependencias de todos los paquetes que se necesiten para darle accesibilidad a un computador. O crear un paquete que realice los cambios necesarios en la configuración de los usuarios para que soporte accesibilidad.
  • 89. Equivs Crear metapaquete con equivs. Este paquete maneja dos programas: ● equivs-control: Crea un archivo como el archivo control de los paquetes de debian donde se maneja la información del mantenedor, versión del paquete, dependencias entre otras cosas. ● equivs-build: Crea el metapaquete del archivo que crea equivs-control.
  • 90. Equivs Para crear la plantilla se ejecuta el comando con el nombre del paquete: equivs-control accesibilidad. Esto crea la siguiente plantilla: ### Commented entries have reasonable defaults. ### Uncomment to edit them. Section: misc Priority: optional Standards-Version: 3.6.2 Package: # Version: # Maintainer: Your Name # Pre-Depends: # Depends: # Recommends: # Suggests: # Provides: # Replaces: # Architecture: all # Copyright: # Changelog: # Readme: # Extra-Files: Description: long description and info . second paragraph
  • 91. Equivs Section: misc Priority: optional Standards-Version: 3.8.0 Package: accesibilidad Version: 1.0 Maintainer: Ernesto Nadir Crespo Avila Depends: brltty, brltty-x11, libcolorblind-dev, libcolorblind0, gnome-orca Architecture: all Description: Metapaquete para la instalacion de aplicaciones de accesibilidad Metapaquete para la instalacion de aplicaciones de accesibilidad para personas invidentes
  • 92. Equivs Para crear el paquete se ejecuta el comando equivs-build accesibilidad. ecrespo@canaima:~/canaima2/accesibilidad$ equivs-build accesibilidad dh_testdir dh_testroot dh_clean -k dh_testdir dh_testroot dh_install dh_installdocs dh_installchangelogs dh_compress dh_fixperms dh_installdeb dh_gencontrol dh_md5sums dh_builddeb dpkg-deb: construyendo el paquete `accesibilidad' en `../accesibilidad_1.0_all.deb'. The package has been created. Attention, the package has been created in the current directory, not in ".." as indicated by the message above!
  • 93. Equivs Si se desea firmar el metapaquete con la llave GPG se usa la opción -f claro se debe tener la llave del usuario en el equipo. El comando equivs-build -f canaima-caribay-radio ... Necesita una frase contraseña para desbloquear la clave secreta del usuario: "Ernesto Nadir Crespo Avila (seraph1) <ecrespo@debian.org.ve>" clave DSA de 1024 bits, ID C97E7015, creada el 2005-08-15 dpkg-genchanges >../canaima-caribay-radio_1.0_amd64.changes dpkg-genchanges: incluyendo el código fuente completo en la subida signfile canaima-caribay-radio_1.0_amd64.changes Necesita una frase contraseña para desbloquear la clave secreta del usuario: "Ernesto Nadir Crespo Avila (seraph1) <ecrespo@debian.org.ve>" clave DSA de 1024 bits, ID C97E7015, creada el 2005-08-15 dpkg-source --after-build equivs.nAXaSZ dpkg-buildpackage: subida completa; paquete nativo de Debian (se incluye la fuente completa) The package has been created. Attention, the package has been created in the current directory, not in ".." as indicated by the message above!
  • 94. Equivs Crear metapaquete con Archivo de configuración (equivs) El programa gnome-orca crea un perfil de configuración para cada usuario. La forma de copiar dichos archivos a los usuarios creados es copiar toda la configuración en el directorio /etc/skell/ . Se creará el metapaquete canaima-accesibilidad-escritorio: equivs-control canaima-accesibilidad-escritorio
  • 95. Equivs El archivo control de canaima-accesibilidad-escritorio contendrá lo siguiente: Section: misc Priority: optional Homepage: http://canaima.softwarelibre.gob.ve Standards-Version: 3.9.1 Package: canaima-accesibilidad-visual-escritorio Version: 1:0.1 Maintainer: Ernesto Nadir Crespo Avila <ecrespo@centitel.gob.ve> Depends: at-spi, brltty, brltty-flite, brltty-speechd, brltty-x11, listen, espeak, festival, festvox-sflpc16k, festvox-palpc16k, gnome-orca, gnome-accessibility- themes, gnome-accessibility, libcolorblind0, gnome-mag, libgail-common, mousetweaks, dots, ${misc:Depends} Architecture: any Copyright: copyright Changelog: changelog Files: ./conf/.orca/user-settings.py /etc/skell/.orca/user-settings.py ./conf/.orca/app-settings/__init__.py /etc/skell/.orca/app-settings/__init__.py ./conf/.orca/orca-scripts/__init__.py /etc/skell/.orca/orca-scripts/__init__.py ./conf/.orca/user-settings.pyc /etc/skell/.orca/user-settings.pyc ./conf/.orca/app-settings/__init__.pyc /etc/skell/.orca/app- settings/__init__.pyc ./conf/.orca/orca-scripts/__init__.pyc /etc/skell/.orca/orca- scripts/__init__.pyc Description: Programas de Accesibilidad para Canaima GNU/Linux Este metapaquete provee los programas de accesibilidad y configuraciones para que las personas con discapacidad puedan utilizar canaima GNU/Linux.
  • 96. Equivs El archivo Changelog contendrá lo siguiente: canaima-accesibilidad-visual-escritorio (1.0:0.1) unstable; urgency=low * First release. -- Ernesto Nadir Crespo Avila <ecrespo@cenditel.gob.ve> Thu, 22 Sep 2011 22:33:15 -0430
  • 97. Equivs El archivo Copyright contendrá lo siguiente: Authors: Copyright (C) 2011 Ernesto Nadir Crespo Avila <ecrespo@cenditel.gob.ve> License: This package is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; version 2 dated June, 1991. 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, write to the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA On Debian GNU/Linux systems, the complete text of the GNU General Public License can be found in `/usr/share/common-licenses/GPL-2'
  • 98. Equivs Luego de crear el metapaquete con equivs-buid: equivs-build -f canaima-accesibiliad-escritorio Se puede revisar el contenido del paquete binario: dpkg -c canaima-accesibilidad-visual-escritorio_0.1_amd64.deb drwxr-xr-x root/root 0 2011-09-23 08:41 ./ drwxr-xr-x root/root 0 2011-09-23 08:41 ./usr/ drwxr-xr-x root/root 0 2011-09-23 08:41 ./usr/share/ drwxr-xr-x root/root 0 2011-09-23 08:41 ./usr/share/doc/ drwxr-xr-x root/root 0 2011-09-23 08:41 ./usr/share/doc/canaima- accesibilidad-visual-escritorio/ -rw-r--r-- root/root 1044 2011-09-23 08:41 ./usr/share/doc/canaima- accesibilidad-visual-escritorio/README.Debian -rw-r--r-- root/root 171 2011-09-23 08:41 ./usr/share/doc/canaima- accesibilidad-visual-escritorio/changelog.gz -rw-r--r-- root/root 896 2011-09-23 08:41 ./usr/share/doc/canaima- accesibilidad-visual-escritorio/copyright drwxr-xr-x root/root 0 2011-09-23 08:41 ./etc/ drwxr-xr-x root/root 0 2011-09-23 08:41 ./etc/skell/ drwxr-xr-x root/root 0 2011-09-23 08:41 ./etc/skell/.orca/ drwxr-xr-x root/root 0 2011-09-23 08:41 ./etc/skell/.orca/app-settings/ -rwxr-xr-x root/root 0 2011-09-23 08:41 ./etc/skell/.orca/app- settings/__init__.py -rw-r--r-- root/root 111 2011-09-23 08:41 ./etc/skell/.orca/app- settings/__init__.pyc -rw-r--r-- root/root 7291 2011-09-23 08:41 ./etc/skell/.orca/user-settings.py -rw-r--r-- root/root 6193 2011-09-23 08:41 ./etc/skell/.orca/user-settings.pyc drwxr-xr-x root/root 0 2011-09-23 08:41 ./etc/skell/.orca/orca-scripts/ -rwxr-xr-x root/root 0 2011-09-23 08:41 ./etc/skell/.orca/orca- scripts/__init__.py -rw-r--r-- root/root 111 2011-09-23 08:41 ./etc/skell/.orca/orca- scripts/__init__.pyc
  • 99. Equivs Crear metapaquete con archivos postinst y prerm (equivs). Ahora aparte de colocar los archivos en /etc/skell para los copiar la configuración en los usuarios que se creen a continuación es necesario copiar la configuración a los usuarios ya existentes. En este caso se muestra la creación del metapaquete canaima-radiotray-conf: $equivs-control canaima-radiotray-conf El archivo control contendrá: Section: misc Priority: optional Homepage: http://canaima.softwarelibre.gob.ve Standards-Version: 3.9.1 Package: canaima-radiotray-conf Version: 0.1 Maintainer: Ernesto Nadir Crespo Avila <ecrespo@cenditel.gob.ve> Pre-Depends: radiotray Depends: ${misc:Depends} Architecture: all Copyright: copyright Changelog: changelog Files: ./radiotray/radiotray.desktop /etc/skel/.config/autostart/radiotray.desktop ./radiotray/bookmarks.xml /etc/skel/.local/share/radiotray/bookmarks.xml ...
  • 100. Equivs ... File: postinst #!/bin/sh -e # preinst for main-package-config. Divert some configuration file of main-package. . set -e . PKG=canaima-radiotray-conf if [ "$1" = configure ] ; then for usuario in /home/*? ; do usuario_min=$(basename $usuario) case $(grep "${usuario_min}:.*:.*:.*:.*:.*:::" /etc/shadow ) in '') #no se hace nada ;; *) usuario=${usuario_min} if [ -f /home/${usuario}/.config/autostart/radiotray.desktop ]; then cp -r /etc/skel/.config/autostart/radiotray.desktop /home/${usuario}/.config/autostart/radiotray.desktop chown ${usuario}.${usuario} /home/${usuario}/.config/autostart/radiotray.desktop else mkdir -p /home/${usuario}/.config; chown -R ${usuario}.${usuario} /home/${usuario}/.config mkdir -p /home/${usuario}/.config/autostart; chown -R ${usuario}.${usuario} /home/${usuario}/.config/autostart cp -r /etc/skel/.config/autostart/radiotray.desktop /home/${usuario}/.config/autostart/radiotray.desktop chown ${usuario}.${usuario} /home/${usuario}/.config/autostart/radiotray.desktop fi if [ -f /home/${usuario}/.local/share/radiotray/bookmarks.xml ]; then cp -r /etc/skel/.local/share/radiotray/bookmarks.xml /home/${usuario}/.local/share/radiotray/bookmarks.xml chown ${usuario}.${usuario} /home/${usuario}/.local/share/radiotray/bookmarks.xml else mkdir -p /home/${usuario}/.local; chown -R ${usuario}.${usuario} /home/${usuario}/.local mkdir -p /home/${usuario}/.local/share; chown -R ${usuario}.${usuario} /home/${usuario}/.local/share mkdir -p /home/${usuario}/.local/share/radiotray; chown -R ${usuario}.${usuario} /home/$ {usuario}/.local/share/radiotray cp -r /etc/skel/.local/share/radiotray/bookmarks.xml /home/${usuario}/.local/share/radiotray/bookmarks.xml chown ${usuario}.${usuario} /home/${usuario}/.local/share/radiotray/bookmarks.xml fi esac done fi Exit 0 ...
  • 101. Equivs ... File: prerm #!/bin/sh -e set -e PKG=canaima-radiotray-conf if [ "$1" = configure ] ; then for usuario in /home/*? ; do usuario_min=$(basename $usuario) case $(grep "${usuario_min}:.*:.*:.*:.*:.*:::" /etc/shadow ) in '') #no se hace nada ;;. *) usuario=${usuario_min} if [ -f /home/${usuario}/.config/autostart/radiotray.desktop ]; then rm -f /home/${usuario}/.config/autostart/radiotray.desktop fi if [ -f /home/${usuario}/.local/share/radiotray/bookmarks.xml ]; then rm -f /home/${usuario}/.local/share/radiotray/bookmarks.xml fi esac done fi exit 0 Description: Radiotray bookmarks to Venezuelan radio streaming Radiotray config to autostart in gnome and radio stream bookmark
  • 102. Equivs Dentro del directorio de trabajo se crea el directorio radiotray $mkdir radiotray El directorio contendrá 2 archivos: radiotray.desktop y bookmarks.html: radiotray.desktop: [Desktop Entry] Type=Application Exec=radiotray Hidden=false X-GNOME-Autostart-enabled=true Name[es_VE]=radiotray Name=radiotray Comment[es_VE]=Cliente de radio por internet Comment=Cliente de radio por internet bookmarks.html: <bookmarks> <group name="Venezuela"> <bookmark name="RNV Canal Clásico" url="http://www.telepuertovirtual2.tv/rnvclasico "/> <bookmark name="AlbaCiudad 96.3" url="http://albaciudad96.org/radio/"/> <bookmark name="RNV noticias" url="http://www.telepuertovirtual2.tv/rnvnoticias"/> <bookmark name="Radio Mágica 106.3 FM" url="http://resorte.solve.web.ve:8000/magicafm.ogg "/> </group> <group name="Linux"> <bookmark name="SOLVE" url="http://resorte.solve.web.ve:8000/RadioSolve.ogg"/> <bookmark name="Radio Cooperativa Tecnológica Somos Libre Barinas" url="http://resorte.solve.web.ve:8000/RadioSLBarinas.ogg"/> <bookmark name="Radio entreHackes" url="http://resorte.solve.web.ve:8000/entrehackers.ogg"/> <bookmark name="Radio enredate" url="http://resorte.solve.web.ve:8000/enredate.ogg"/> </group> </bookmarks>
  • 103. Equivs Luego se ejecuta el comando equivs-build y se instala la aplicación. En la figura se muestra el radiotray en el escritorio del usuario
  • 104. Paquetes de configuración El programa config-package-dev permite crear paquetes de configuración que sobre escriben configuraciones ya existentes en el directorio /etc/ . El paquete que se le sobre escribirá su configuración es el openssh-server. Este programa tiene su archivo de configuración como servidor en /etc/ssh/sshd_config. La configuración por defecto permite que el usuario root acceda a equipos de forma remota y se permite reenviar paquetes de conexiones gráficas.
  • 105. Paquetes de configuración El archivo sshd_config contiene lo siguiente: Port 22 Protocol 2 HostKey /etc/ssh/ssh_host_rsa_key HostKey /etc/ssh/ssh_host_dsa_key HostKey /etc/ssh/ssh_host_ecdsa_key UsePrivilegeSeparation yes KeyRegenerationInterval 3600 ServerKeyBits 768 SyslogFacility AUTH LogLevel INFO LoginGraceTime 120 PermitRootLogin yes StrictModes yes RSAAuthentication yes PubkeyAuthentication yes IgnoreRhosts yes RhostsRSAAuthentication no HostbasedAuthentication no PermitEmptyPasswords no ChallengeResponseAuthentication no X11Forwarding yes X11DisplayOffset 10 PrintMotd no PrintLastLog yes TCPKeepAlive yes AcceptEnv LANG LC_* Subsystem sftp /usr/lib/openssh/sftp-server Se cambia a no ambas opciones de configuración.
  • 106. Paquetes de configuración Crear el directorio de trabajo: mkdir canaima-sshd-config-0.1 Dentro del directorio de trabajo se crea los directorios debian y files: cd canaima-sshd-config-0.1 mkdir -p debian files En el directorio files se creará el directorio etc, dentro de el se crea el directorio ssh y se copiará el archivo sshd_config a ese directorio: mkdir -p files/etc mkdir -p files/etc/ssh cp /etc/ssh/sshd_config ./files/etc/ssh/sshd_config.canaima Se modifica el archivo sshd_config.canaima para que los parámetros de acceso como root y reenviar paquetes X11 aparezcan como no: PermitRootLogin no X11Forwarding no Se crea el archivo debian/copyright y debian/changelog como se ha explicado anteriormente. Se crea el archivo debian/compat conteniendo el valor 7 (según versión de políticas de Debian).
  • 107. Paquetes de configuración Se crea el archivo debian/control y debian/control.in con el siguiente contenido: Source: canaima-sshd-config Section: config Priority: extra Maintainer: Ernesto Nadir Crespo Avila <ecrespo@gmail.com> Build-Depends: cdbs (>= 0.4.23-1.1), debhelper (>= 4.2.0), config-package-dev (>= 4.5~) Standards-Version: 3.9.2 Package: canaima-sshd-config Architecture: all Pre-Depends: openssh-server Depends: cdbs, ${misc:Depends} Provides: ${diverted-files} Conflicts: ${diverted-files} Description: Archivo de configuracion de ssh Archivo de configuracion del servidor ssh. Se crea el archivo debian/canaima-sshd-config.install con la ruta donde se encuentran los archivos de configuración: files/* /
  • 108. Paquetes de configuración Se crea el archivo debian/rules, en este archivo se define la extensión .canaima la cual permite diferenciar los paquetes base de Debian de la distribución Canaima, además se define el archivo a modificar y se incluye los cdbs necesarios: #!/usr/bin/make -f DEB_DIVERT_EXTENSION = .canaima # Replace some base files with simple replacements. DEB_DIVERT_FILES_canaima-sshd-config += /etc/ssh/sshd_config.canaima # These files are installed via dh_install from the files/ directory # (see debian/canaima-sshd-config.install) include /usr/share/cdbs/1/rules/debhelper.mk include /usr/share/cdbs/1/rules/config-package.mk Para crear el paquete se ejecuta el comando dpkg-buildpackage: dpkg-buildpackage -rfakeroot -k<Llave GPG>
  • 109. Paquetes de configuración Verificar la instalación del paquete: dpkg -i canaima-sshd-config_0.1_all.deb Selecting previously unselected package canaima-sshd-config. (Leyendo la base de datos ... 418546 ficheros o directorios instalados actualmente.) Desempaquetando canaima-sshd-config (de canaima-sshd-config_0.1_all.deb) ... Configurando canaima-sshd-config (0.1) ... Añadiendo `desviación de /etc/ssh/sshd_config a /etc/ssh/sshd_config.canaima-orig por canaima-sshd-config' Al listar los archivos /etc/ssh/sshd_config* ls -l /etc/ssh/sshd_config* lrwxrwxrwx 1 root root 19 nov 13 16:16 sshd_config -> sshd_config.canaima -rw-r--r-- 1 root root 2487 nov 13 10:15 sshd_config.canaima -rw-r--r-- 1 root root 2489 nov 13 13:20 sshd_config.canaima-orig Al remover el paquete se elimina los enlaces y queda el archivo original del sshd_config.
  • 110. Repositorio local de paquetes
  • 111. Repositorio local de paquetes Debido a que los paquetes virtuales, dummies o metapaquetes no se pueden instalar con el comando dpkg por que no resuelve dependencias se hace necesario crear un repositorio personal de paquetes de Debian. Es necesario tener un servidor web: apache2, lighttpd o cherokee. Se necesita instalar el paquete reprepo: aptitude install reprepo La estructura del repositorio es la siguiente: ●Conf: Donde estará el archivo de configuración distribution. ●Dists:Se tiene un directorio por cada versión de la distribución. ●Pool: Se encuentran los paquetes clasificados por sección y en orden alfabético.
  • 112. Repositorio local de paquetes Archivo conf/distribution: Origin: Paquetes Ernesto Label: Paquetes Ernesto Suite: unstable Codename: sid Architectures: i386 source Components: main Description: Paquetes elaborados por Ernesto Crespo Origin: Paquetes Ernesto Label: Paquetes Ernesto Suite: testing Codename: lenny Architectures: i386 source Components: main Description: Paquetes elaborados por Ernesto Crespo Origin: Paquetes Ernesto Label: Paquetes Ernesto Suite: stable Codename: etch Architectures: i386 source Components: main Description: Paquetes elaborados por Ernesto Crespo
  • 113. Repositorio local de paquetes Para subir un paquete binario se ejecuta el comando reprepo con las siguientes opciones: reprepro -b . -V -C main includedeb sid accesibilidad_1.0_all.deb Para subir las fuentes de un paquete se ejecuta: reprepro -b . -V -C main includedsc sid sshguard_1.4rc3-1.dsc Y su binario: reprepro -b . -V -C main includedeb sid sshguard_1.4rc3- 1_i386.deb Para eliminar un paquete del repositorio se ejecuta: reprepro -b . -V -C main remove sid sshguard_1.4rc3- 1_i386.deb Para utilizar el repositorio se modifica el archivo /etc/apt/sources.list deb http://midominio/repo/ sid main Luego se ejecuta aptitude update y listo.
  • 114. Referencias: ●Adoptar un paquete:http://wiki.debian.org/AdoptarUnPaquete ●Completa guía de empaquetado:https://wiki.ubuntu.com/PackagingGuide/Complete ●Tutorial de empaquetado:http://women.debian.org/wiki/English/PackagingTutorial ●CDBS:https://perso.duckcorp.org/duck/cdbs-doc/cdbs-doc.xhtml ●Mantener un paquete con subversion:http://crysol.org/es/node/620 ●Paquetes de configuración:http://debathena.mit.edu/config-packages/ ●Paquete de configuración:http://wiki.debian.org/ConfigPackages ●Como usar dpatch:http://matrixhasu.altervista.org/index.php?view=use_dpatch ●Empaquetar con git:http://wiki.debian.org/PackagingWithGit ●Empaquetar con mercurial: http://ernesto-ecrespo.blogspot.com/2009/04/subir-un-paquete-debian-pyching-al.html ●Scripts de mantenimiento:http://women.debian.org/wiki/English/MaintainerScripts ●Sistema de parches:https://wiki.ubuntu.com/PackagingGuide/PatchSystems ●Quilt:http://pkg-perl.alioth.debian.org/howto/quilt.html ●Guía de empaquetado de aplicaciones en python: https://wiki.ubuntu.com/PackagingGuide/Python ●Empaquetado:http://women.debian.org/wiki/English/BuildingTutorial ●Empaquetar sin ayuda:http://women.debian.org/wiki/English/BuildingWithoutHelper ●Guía para empaquetar aplicaciones de kde: https://wiki.ubuntu.com/PackagingGuide/KDE?action=show&redirect=KubuntuPackagingGuide ●Guía de empaquetado: https://help.ubuntu.com/6.10/ubuntu/packagingguide/C/index.html ●Libro de bolsillo:https://wiki.ubuntu.com/PackagingGuide/HandsOn ●Crear un metapaquete: http://blog.ibeentoubuntu.com/2008/08/howto-create-debian-metapackage.html ●dpath: http://blog.orebokech.com/2007/08/converting-debian-packages-from-dpatch.html ●Metapaquete con equivs: http://ernesto-ecrespo.blogspot.com/2009/03/como-crear-un-metapaquete.html ●Mensajes de lintian:http://lintian.debian.org/tags.html ●Backport: http://www.backports.org/dokuwiki/doku.php?id=contribute
  • 115. Contacto: Ernesto Crespo Correo: ecrespo@gmail.com Twitter: @_seraph1 Blog: http://ernesto-ecrespo.blogspot.com
  • 116. Derechos: Está presentación está basada en: ●Presentación de Empaquetado de Isaac Clerencia DD ●Presentación de Empaquetado de Larz Wirzenius ●Presentación de J. Feliz Ontañón ●Tutorial de empaquetado sin ayuda de Debian-Women (Miriam Ruiz) ●Tutoriales de Mario Izquierdo (Mario Debian) de su blog http://mariodebian.com/ ●Tutoriales de empaquetado del http://blog ernesto-ecrespo.blogspot.com