27 abr. 2009

Ya tengo twitter

El día de hoy decidí crear mi cuenta twitter: http://twitter.com/ernestocrespo
Será un complemento de lo que publico en mi cuenta de facebook : http://www.facebook.com/profile.php?id=696337033&ref=profile

Mi gtalk ecrespo@gmail.com.
Mi MSN ecrespo@gmail.com.
Jabber: ecrespo@jabber.org

Próximo post: Videos de instalación de Linux por un invidente!

11 abr. 2009

Manteniendo un paquete Debian con mercurial

Para mantener un paquete Debian con mercurial es necesario tener un repositorio mercurial, este se crea con el comando hg init.
hg init repositorio

Luego es necesario crear 2 directorios, uno es del paquete fuente de debian y el otro del paquete fuente del upstream.

cd repositorio
hg init sshguard
hg init sshguard.upstream

Luego se importa las fuentes de Debian:
hg-importdsc /home/ecrespo/paquetes/sshguard/sshguard_1.3-1.dsc
ecrespo@canaima:~/repositorio/repositorio/sshguard$ hg-importdsc /home/ecrespo/paquetes/sshguard/sshguard_1.3-1.dsc
*** Processing upstream file /home/ecrespo/paquetes/sshguard/sshguard_1.3.orig.tar.gz
VCSCMD: hg
LOGTEXT Imported sshguard_1.3.orig.tar.gz
into Mercurial repository



adding Changes
adding Makefile.am
adding Makefile.in
adding README
adding aclocal.m4
adding config.h.in
adding configure
adding configure.ac
adding depcomp
adding examples/whitelistfile.example
adding install-sh
adding man/Makefile.am
adding man/Makefile.in
adding man/sshguard.8
adding missing
adding mkinstalldirs
adding scripts/sshguard_backendgen.sh
adding src/Makefile.am
adding src/Makefile.in
adding src/attack_parser.c
adding src/attack_parser.h
adding src/attack_parser.y
adding src/attack_scanner.c
adding src/attack_scanner.l
adding src/config.h.in
adding src/fwalls/Makefile.am
adding src/fwalls/Makefile.in
adding src/fwalls/command.c
adding src/fwalls/command_aix.h
adding src/fwalls/command_ipfilter.h
adding src/fwalls/command_iptables.h
adding src/fwalls/command_null.h
adding src/fwalls/command_pf.h
adding src/fwalls/hosts.c
adding src/fwalls/ipfw.c
adding src/parser.h
adding src/simclist.c
adding src/simclist.h
adding src/sshguard.c
adding src/sshguard.h
adding src/sshguard_addresskind.h
adding src/sshguard_fw.h
adding src/sshguard_log.c
adding src/sshguard_log.h
adding src/sshguard_procauth.c
adding src/sshguard_procauth.h
adding src/sshguard_services.h
adding src/sshguard_whitelist.c
adding src/sshguard_whitelist.h
adding stamp-h1
adding ylwrap
No username found, using 'ecrespo@canaima' instead
No username found, using 'ecrespo@canaima' instead
No username found, using 'ecrespo@canaima' instead

/home/ecrespo/paquetes/sshguard/sshguard_1.3.orig.tar.gz imported into /home/ecrespo/repositorio/repositorio/sshguard.upstream
Remember to run hg fetch /home/ecrespo/repositorio/repositorio/sshguard.upstream
*** Done processing upstream file /home/ecrespo/paquetes/sshguard/sshguard_1.3.orig.tar.gz
*** Processing Debian source tree for /home/ecrespo/paquetes/sshguard/sshguard_1.3-1.dsc
0:b438c8517fe7
1:f61bc4db3564
2:85a24e090d85
pulling from /home/ecrespo/repositorio/repositorio/sshguard.upstream
requesting all changes
adding changesets
adding manifests
adding file changes
added 3 changesets with 53 changes to 52 files
(run 'hg update' to get a working copy)
52 files updated, 0 files merged, 0 files removed, 0 files unresolved
dpkg-source: extracting sshguard in sshguard-1.3
dpkg-source: info: unpacking sshguard_1.3.orig.tar.gz
dpkg-source: info: applying sshguard_1.3-1.diff.gz
VCSCMD: hg
LOGTEXT Imported sshguard-1.3
into Mercurial repository



adding debian/changelog
adding debian/compat
adding debian/control
adding debian/copyright
adding debian/dirs
adding debian/docs
adding debian/rules
adding src/fwalls/command.h
No username found, using 'ecrespo@canaima' instead
No username found, using 'ecrespo@canaima' instead

Ahora se tienen los directorios sshguard y sshguard.upstream con archivos y directorios.
ecrespo@canaima:~/repositorio/repositorio/sshguard$ ls
aclocal.m4 config.h.in configure.ac depcomp install-sh Makefile.in missing README src ylwrap
Changes configure debian examples Makefile.am man mkinstalldirs scripts stamp-h1

ecrespo@canaima:~/repositorio/repositorio/sshguard.upstream$ ls
aclocal.m4 config.h.in configure.ac examples Makefile.am man mkinstalldirs scripts stamp-h1
Changes configure depcomp install-sh Makefile.in missing README src ylwrap

Se nota que el primer directorio es del paquete fuente de Debian por que tiene dentro un directorio debian y sshguard.upstream es el paquete fuente.
Ahora se harán cambios en los archivos del directorio debian. Se va a cambiar el archivo rules en el configure que en vez de sorportar iptables use hosts; y en el archivo control quitarla dependencia de iptables en build-depends y colocar en las dependencias tcpd ya que ese es el paquete para usar hosts.allow y hosts.deny.
Archivo debian/rules:
./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.

Se exportan las variables de ambiente DEBFULLNAME y DEBEMAIL:
export DEBFULLNAME="Ernesto Nadir Crespo Avila"
export DEBEMAIL="ecrespo@debianvenezuela.org"

Cambiar el archivo debian/changelo agregando los cambios que se realizaron:
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

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)

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
Building ../sshguard_1.3.orig.tar.gz from Mercurial history
dpkg-buildpackage -rfakeroot -D -us -uc -i.hg -I.hg
dpkg-buildpackage: set CFLAGS to default value: -g -O2
dpkg-buildpackage: set CPPFLAGS to default value:
dpkg-buildpackage: set LDFLAGS to default value:
dpkg-buildpackage: set FFLAGS to default value: -g -O2
dpkg-buildpackage: set CXXFLAGS to default value: -g -O2
dpkg-buildpackage: source package sshguard
dpkg-buildpackage: source version 1.3-2
dpkg-buildpackage: source changed by Ernesto Nadir Crespo Avila
dpkg-buildpackage: host architecture i386
fakeroot debian/rules clean
dh_testdir
dh_testroot
rm -f build-stamp
# Add here commands to clean up after the build process.
[ ! -f Makefile ] || /usr/bin/make distclean
rm -f config.sub config.guess config.status config.status.lineno config.log
dh_clean
dpkg-source -i.hg -I.hg -b repositorio
dpkg-source: warning: source directory 'repositorio' is not - 'sshguard-1.3'
dpkg-source: warning: .orig directory name repositorio.orig is not - (wanted sshguard-1.3.orig)
dpkg-source: info: using source format `1.0'
dpkg-source: info: building sshguard using existing sshguard_1.3.orig.tar.gz
dpkg-source: info: building sshguard in sshguard_1.3-2.diff.gz
dpkg-source: info: building sshguard in sshguard_1.3-2.dsc
debian/rules build
dh_testdir
# Add here commands to configure the package.
cp -f /usr/share/misc/config.sub config.sub
cp -f /usr/share/misc/config.guess config.guess
./configure --build i486-linux-gnu --prefix=/usr --mandir=\${prefix}/share/man --with-firewall=hosts --infodir=\${prefix}/share/info CFLAGS="-g -O2" LDFLAGS="-Wl,-z,defs"
checking for a BSD-compatible install... /usr/bin/install -c
checking whether build environment is sane... yes
checking for a thread-safe mkdir -p... /bin/mkdir -p
checking for gawk... gawk
checking whether make sets $(MAKE)... yes
checking for gcc... gcc
checking for C compiler default output file name... a.out
checking whether the C compiler works... yes
checking whether we are cross compiling... no
checking for suffix of executables...
checking for suffix of object files... o
checking whether we are using the GNU C compiler... yes
checking whether gcc accepts -g... yes
checking for gcc option to accept ISO C89... none needed
checking for style of include used by make... GNU
checking dependency style of gcc... gcc3
checking for ranlib... ranlib
checking for bison... bison -y
checking for flex... flex
checking lex output file root... lex.yy
checking lex library... -lfl
checking whether yytext is a pointer... yes
checking for pthread_create in -lpthread... yes
checking how to run the C preprocessor... gcc -E
checking for grep that handles long lines and -e... /bin/grep
checking for egrep... /bin/grep -E
checking for ANSI C header files... yes
checking for sys/wait.h that is POSIX.1 compatible... yes
checking for sys/types.h... yes
checking for sys/stat.h... yes
checking for stdlib.h... yes
checking for string.h... yes
checking for memory.h... yes
checking for strings.h... yes
checking for inttypes.h... yes
checking for stdint.h... yes
checking for unistd.h... yes
checking arpa/inet.h usability... yes
checking arpa/inet.h presence... yes
checking for arpa/inet.h... yes
checking malloc.h usability... yes
checking malloc.h presence... yes
checking for malloc.h... yes
checking netdb.h usability... yes
checking netdb.h presence... yes
checking for netdb.h... yes
checking netinet/in.h usability... yes
checking netinet/in.h presence... yes
checking for netinet/in.h... yes
checking for stdlib.h... (cached) yes
checking for string.h... (cached) yes
checking sys/socket.h usability... yes
checking sys/socket.h presence... yes
checking for sys/socket.h... yes
checking syslog.h usability... yes
checking syslog.h presence... yes
checking for syslog.h... yes
checking for unistd.h... (cached) yes
checking for an ANSI C-conforming const... yes
checking for inline... inline
checking for off_t... yes
checking for pid_t... yes
checking for size_t... yes
checking vfork.h usability... no
checking vfork.h presence... no
checking for vfork.h... no
checking for fork... yes
checking for vfork... yes
checking for working fork... yes
checking for working vfork... (cached) yes
checking for stdlib.h... (cached) yes
checking for GNU libc compatible malloc... yes
checking return type of signal handlers... void
checking for gethostbyname... yes
checking for inet_ntoa... yes
checking for strerror... yes
checking for strstr... yes
checking for strtol... yes
configure: Using /etc/hosts.allow as hosts.allow file
configure: creating ./config.status
config.status: creating Makefile
config.status: creating man/Makefile
config.status: creating src/Makefile
config.status: creating src/fwalls/Makefile
config.status: creating src/config.h
config.status: executing depfiles commands
dh_testdir
# Add here commands to compile the package.
/usr/bin/make
make[1]: se ingresa al directorio `/home/ecrespo/repositorio/repositorio'
cd . && /bin/sh /home/ecrespo/repositorio/repositorio/missing --run aclocal-1.10
cd . && /bin/sh /home/ecrespo/repositorio/repositorio/missing --run automake-1.10 --foreign
cd . && /bin/sh /home/ecrespo/repositorio/repositorio/missing --run autoconf
/bin/sh ./config.status --recheck
running CONFIG_SHELL=/bin/sh /bin/sh ./configure --build i486-linux-gnu --prefix=/usr --mandir=${prefix}/share/man --with-firewall=hosts --infodir=${prefix}/share/info CFLAGS=-g -O2 LDFLAGS=-Wl,-z,defs build_alias=i486-linux-gnu CPPFLAGS= --no-create --no-recursion
checking for a BSD-compatible install... /usr/bin/install -c
checking whether build environment is sane... yes
checking for a thread-safe mkdir -p... /bin/mkdir -p
checking for gawk... gawk
checking whether make sets $(MAKE)... yes
checking for gcc... gcc
checking for C compiler default output file name... a.out
checking whether the C compiler works... yes
checking whether we are cross compiling... no
checking for suffix of executables...
checking for suffix of object files... o
checking whether we are using the GNU C compiler... yes
checking whether gcc accepts -g... yes
checking for gcc option to accept ISO C89... none needed
checking for style of include used by make... GNU
checking dependency style of gcc... gcc3
checking for ranlib... ranlib
checking for bison... bison -y
checking for flex... flex
checking lex output file root... lex.yy
checking lex library... -lfl
checking whether yytext is a pointer... yes
checking for pthread_create in -lpthread... yes
checking how to run the C preprocessor... gcc -E
checking for grep that handles long lines and -e... /bin/grep
checking for egrep... /bin/grep -E
checking for ANSI C header files... yes
checking for sys/wait.h that is POSIX.1 compatible... yes
checking for sys/types.h... yes
checking for sys/stat.h... yes
checking for stdlib.h... yes
checking for string.h... yes
checking for memory.h... yes
checking for strings.h... yes
checking for inttypes.h... yes
checking for stdint.h... yes
checking for unistd.h... yes
checking arpa/inet.h usability... yes
checking arpa/inet.h presence... yes
checking for arpa/inet.h... yes
checking malloc.h usability... yes
checking malloc.h presence... yes
checking for malloc.h... yes
checking netdb.h usability... yes
checking netdb.h presence... yes
checking for netdb.h... yes
checking netinet/in.h usability... yes
checking netinet/in.h presence... yes
checking for netinet/in.h... yes
checking for stdlib.h... (cached) yes
checking for string.h... (cached) yes
checking sys/socket.h usability... yes
checking sys/socket.h presence... yes
checking for sys/socket.h... yes
checking syslog.h usability... yes
checking syslog.h presence... yes
checking for syslog.h... yes
checking for unistd.h... (cached) yes
checking for an ANSI C-conforming const... yes
checking for inline... inline
checking for off_t... yes
checking for pid_t... yes
checking for size_t... yes
checking vfork.h usability... no
checking vfork.h presence... no
checking for vfork.h... no
checking for fork... yes
checking for vfork... yes
checking for working fork... yes
checking for working vfork... (cached) yes
checking for stdlib.h... (cached) yes
checking for GNU libc compatible malloc... yes
checking return type of signal handlers... void
checking for gethostbyname... yes
checking for inet_ntoa... yes
checking for strerror... yes
checking for strstr... yes
checking for strtol... yes
configure: Using /etc/hosts.allow as hosts.allow file
configure: creating ./config.status
/bin/sh ./config.status
config.status: creating Makefile
config.status: creating man/Makefile
config.status: creating src/Makefile
config.status: creating src/fwalls/Makefile
config.status: creating src/config.h
config.status: src/config.h is unchanged
config.status: executing depfiles commands
make[1]: se sale del directorio `/home/ecrespo/repositorio/repositorio'
make[1]: se ingresa al directorio `/home/ecrespo/repositorio/repositorio'
Making all in src
make[2]: se ingresa al directorio `/home/ecrespo/repositorio/repositorio/src'
cd .. && /bin/sh /home/ecrespo/repositorio/repositorio/missing --run autoheader
rm -f stamp-h1
touch config.h.in
cd .. && /bin/sh ./config.status src/config.h
config.status: creating src/config.h
config.status: src/config.h is unchanged
/usr/bin/make all-recursive
make[3]: se ingresa al directorio `/home/ecrespo/repositorio/repositorio/src'
Making all in fwalls
make[4]: se ingresa al directorio `/home/ecrespo/repositorio/repositorio/src/fwalls'
gcc -DHAVE_CONFIG_H -I. -I../../src -I. -I.. -O2 -g -O2 -MT hosts.o -MD -MP -MF .deps/hosts.Tpo -c -o hosts.o hosts.c
mv -f .deps/hosts.Tpo .deps/hosts.Po
rm -f libfwall.a
ar cru libfwall.a hosts.o
ranlib libfwall.a
make[4]: se sale del directorio `/home/ecrespo/repositorio/repositorio/src/fwalls'
make[4]: se ingresa al directorio `/home/ecrespo/repositorio/repositorio/src'
gcc -DHAVE_CONFIG_H -I. -I. -O2 -g -O2 -MT attack_parser.o -MD -MP -MF .deps/attack_parser.Tpo -c -o attack_parser.o attack_parser.c
mv -f .deps/attack_parser.Tpo .deps/attack_parser.Po
gcc -DHAVE_CONFIG_H -I. -I. -O2 -g -O2 -MT attack_scanner.o -MD -MP -MF .deps/attack_scanner.Tpo -c -o attack_scanner.o attack_scanner.c
mv -f .deps/attack_scanner.Tpo .deps/attack_scanner.Po
gcc -DHAVE_CONFIG_H -I. -I. -O2 -g -O2 -MT sshguard.o -MD -MP -MF .deps/sshguard.Tpo -c -o sshguard.o sshguard.c
mv -f .deps/sshguard.Tpo .deps/sshguard.Po
gcc -DHAVE_CONFIG_H -I. -I. -O2 -g -O2 -MT sshguard_whitelist.o -MD -MP -MF .deps/sshguard_whitelist.Tpo -c -o sshguard_whitelist.o sshguard_whitelist.c
mv -f .deps/sshguard_whitelist.Tpo .deps/sshguard_whitelist.Po
gcc -DHAVE_CONFIG_H -I. -I. -O2 -g -O2 -MT sshguard_log.o -MD -MP -MF .deps/sshguard_log.Tpo -c -o sshguard_log.o sshguard_log.c
mv -f .deps/sshguard_log.Tpo .deps/sshguard_log.Po
gcc -DHAVE_CONFIG_H -I. -I. -O2 -g -O2 -MT sshguard_procauth.o -MD -MP -MF .deps/sshguard_procauth.Tpo -c -o sshguard_procauth.o sshguard_procauth.c
mv -f .deps/sshguard_procauth.Tpo .deps/sshguard_procauth.Po
gcc -DHAVE_CONFIG_H -I. -I. -O2 -g -O2 -MT simclist.o -MD -MP -MF .deps/simclist.Tpo -c -o simclist.o simclist.c
mv -f .deps/simclist.Tpo .deps/simclist.Po
gcc -I. -O2 -g -O2 -Wl,-z,defs -o sshguard attack_parser.o attack_scanner.o sshguard.o sshguard_whitelist.o sshguard_log.o sshguard_procauth.o simclist.o fwalls/libfwall.a -lpthread
make[4]: se sale del directorio `/home/ecrespo/repositorio/repositorio/src'
make[3]: se sale del directorio `/home/ecrespo/repositorio/repositorio/src'
make[2]: se sale del directorio `/home/ecrespo/repositorio/repositorio/src'
Making all in man
make[2]: se ingresa al directorio `/home/ecrespo/repositorio/repositorio/man'
make[2]: No se hace nada para `all'.
make[2]: se sale del directorio `/home/ecrespo/repositorio/repositorio/man'
make[2]: se ingresa al directorio `/home/ecrespo/repositorio/repositorio'
make[2]: No se hace nada para `all-am'.
make[2]: se sale del directorio `/home/ecrespo/repositorio/repositorio'
make[1]: se sale del directorio `/home/ecrespo/repositorio/repositorio'
#docbook-to-man debian/sshguard.sgml > sshguard.1
touch build-stamp
fakeroot debian/rules binary
dh_testdir
dh_testroot
dh_prep
dh_installdirs
# Add here commands to install the package into debian/sshguard.
/usr/bin/make DESTDIR=/home/ecrespo/repositorio/repositorio/debian/sshguard install
make[1]: se ingresa al directorio `/home/ecrespo/repositorio/repositorio'
Making install in src
make[2]: se ingresa al directorio `/home/ecrespo/repositorio/repositorio/src'
/usr/bin/make install-recursive
make[3]: se ingresa al directorio `/home/ecrespo/repositorio/repositorio/src'
Making install in fwalls
make[4]: se ingresa al directorio `/home/ecrespo/repositorio/repositorio/src/fwalls'
make[5]: se ingresa al directorio `/home/ecrespo/repositorio/repositorio/src/fwalls'
make[5]: No se hace nada para `install-exec-am'.
make[5]: No se hace nada para `install-data-am'.
make[5]: se sale del directorio `/home/ecrespo/repositorio/repositorio/src/fwalls'
make[4]: se sale del directorio `/home/ecrespo/repositorio/repositorio/src/fwalls'
make[4]: se ingresa al directorio `/home/ecrespo/repositorio/repositorio/src'
make[5]: se ingresa al directorio `/home/ecrespo/repositorio/repositorio/src'
test -z "/usr/sbin" || /bin/mkdir -p "/home/ecrespo/repositorio/repositorio/debian/sshguard/usr/sbin"
/usr/bin/install -c 'sshguard' '/home/ecrespo/repositorio/repositorio/debian/sshguard/usr/sbin/sshguard'
make[5]: No se hace nada para `install-data-am'.
make[5]: se sale del directorio `/home/ecrespo/repositorio/repositorio/src'
make[4]: se sale del directorio `/home/ecrespo/repositorio/repositorio/src'
make[3]: se sale del directorio `/home/ecrespo/repositorio/repositorio/src'
make[2]: se sale del directorio `/home/ecrespo/repositorio/repositorio/src'
Making install in man
make[2]: se ingresa al directorio `/home/ecrespo/repositorio/repositorio/man'
make[3]: se ingresa al directorio `/home/ecrespo/repositorio/repositorio/man'
make[3]: No se hace nada para `install-exec-am'.
test -z "/usr/share/man/man8" || /bin/mkdir -p "/home/ecrespo/repositorio/repositorio/debian/sshguard/usr/share/man/man8"
/usr/bin/install -c -m 644 './sshguard.8' '/home/ecrespo/repositorio/repositorio/debian/sshguard/usr/share/man/man8/sshguard.8'
make[3]: se sale del directorio `/home/ecrespo/repositorio/repositorio/man'
make[2]: se sale del directorio `/home/ecrespo/repositorio/repositorio/man'
make[2]: se ingresa al directorio `/home/ecrespo/repositorio/repositorio'
make[3]: se ingresa al directorio `/home/ecrespo/repositorio/repositorio'
make[3]: No se hace nada para `install-exec-am'.
make[3]: No se hace nada para `install-data-am'.
make[3]: se sale del directorio `/home/ecrespo/repositorio/repositorio'
make[2]: se sale del directorio `/home/ecrespo/repositorio/repositorio'
make[1]: se sale del directorio `/home/ecrespo/repositorio/repositorio'
dh_testdir
dh_testroot
dh_installchangelogs Changes
dh_installdocs
dh_installexamples
dh_installman
dh_link
dh_strip
dh_compress
dh_fixperms
dh_installdeb
dh_shlibdeps
dh_gencontrol
dpkg-gencontrol: warning: unknown substitution variable ${misc:Depends}
dh_md5sums
dh_builddeb
dpkg-deb: construyendo el paquete `sshguard' en `../sshguard_1.3-2_i386.deb'.
dpkg-genchanges >../sshguard_1.3-2_i386.changes
dpkg-genchanges: not including original source code in upload
dpkg-buildpackage: binary and diff upload (original source NOT included)
Now running lintian...
Finished running lintian.
Now signing changes and any dsc files...
signfile sshguard_1.3-2.dsc C97E7015

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


signfile sshguard_1.3-2_i386.changes C97E7015

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


Successfully signed dsc and changes files

En este momento se tiene el paquete .deb y los archivos creados en el momento del empaquetado:
ecrespo@canaima:~/repositorio$ ls
sshguard_1.3-2.diff.gz sshguard_1
.3-2_i386.build sshguard_1.3-2_i386.deb
repositorio sshguard_1.3-2.dsc sshguard_1.3-2_i386.changes sshguard_1.3.orig.tar.gz

9 abr. 2009

Subir un paquete Debian (pyching) al repositorio

Como la intención es utilizar el comando hg-buildpackage para construir un paquete Debian, pero como en Debian muy pocos usan mercurial como repositorio. Tuve que crear un repositorio en bitbucket.org para mis paquetes.
Para ello es necesario crear el repositorio en bitbucket.org.
Luego su equipo crear el directorio del paquete:
mkdir pyching
cd pyching

Bajarse las fuentes de pyching
apt-get source pyching
Leyendo lista de paquetes... Hecho
Creando árbol de dependencias
Leyendo la información de estado... Hecho
Necesito descargar 139kB de archivos fuente.
Des:1 http://debian.velug.org.ve sid/main pyching 1.2.2-5 (dsc) [1092B]
Des:2 http://debian.velug.org.ve sid/main pyching 1.2.2-5 (tar) [134kB]
Des:3 http://debian.velug.org.ve sid/main pyching 1.2.2-5 (diff) [3931B]
Descargados 139kB en 5s (27,8kB/s)
dpkg-source: extracting pyching in pyching-1.2.2
dpkg-source: info: unpacking pyching_1.2.2.orig.tar.gz
dpkg-source: info: applying pyching_1.2.2-5.diff.gz

Cambiarse al directorio pyching-1.2.2:
cd pyching-1.2.2

Crear el repositorio:

ecrespo@canaima:~/paquetes/pyching/pyching-1.2.2$ hg init

Agregar las fuentes al repositorio:

ecrespo@canaima:~/paquetes/pyching/pyching-1.2.2$ hg add
adding #smgHtmlView.py#
adding BUGS
adding CHANGES
adding COPYING
adding COPYRIGHT
adding CREDITS
adding INSTALL
adding NEWS
adding README
adding debian/changelog
adding debian/compat
adding debian/control
adding debian/copyright
adding debian/dirs
adding debian/docs
adding debian/menu
adding debian/pyching-small.xpm
adding debian/pycompat
adding debian/rules
adding debian/watch
adding icon.xbm
adding pyching.1
adding pyching.png
adding pyching.py
adding pyching.pyw
adding pyching.sh
adding pyching_cimages.py
adding pyching_engine.py
adding pyching_hlhtx_data.py
adding pyching_idimage_data.py
adding pyching_int_data.py
adding pyching_interface_tkinter.py
adding smgAbout.py
adding smgAnimate.py
adding smgDialog.py
adding smgHtmlView.py

Se hace el commit:
ecrespo@canaima:~/paquetes/pyching/pyching-1.2.2$ hg commit -m"Subir el paquete pyching al repositorio"

Subir al repositorio:

ecrespo@canaima:~/paquetes/pyching/pyching-1.2.2$ hg push http://bitbucket.org/ecrespo/pyching/
pushing to http://bitbucket.org/ecrespo/pyching/
searching for changes
http authorization required
realm: Bitbucket.org HTTP
user: ecrespo
password:
bb/acl: ecrespo is allowed. accepted payload.
quota: 340.8 KB in use, 150.0 MB available (0.22% used)

Ya en este punto el paquete se encuentra en el servidor de repositorios mercurial.

Ahora se crea un directorio temporal para trabajar con los fuentes para empaquetarlo:
ecrespo@canaima:~/paquetes/pyching/temporal$ hg clone http://bitbucket.org/ecrespo/pyching/
destination directory: pyching
requesting all changes
adding changesets
adding manifests
adding file changes
added 1 changesets with 36 changes to 36 files
updating working directory
36 files updated, 0 files merged, 0 files removed, 0 files unresolved

Para finalizar se ejecuta el comando para empaquetar:

ecrespo@canaima:~/paquetes/pyching/temporal/pyching-1.2.2$ hg-buildpackage -us -uc -rfakeroot
Upstream file/directory already exists; not building
dpkg-buildpackage -rfakeroot -D -us -uc -i.hg -I.hg
dpkg-buildpackage: set CFLAGS to default value: -g -O2
dpkg-buildpackage: set CPPFLAGS to default value:
dpkg-buildpackage: set LDFLAGS to default value:
dpkg-buildpackage: set FFLAGS to default value: -g -O2
dpkg-buildpackage: set CXXFLAGS to default value: -g -O2
dpkg-buildpackage: source package pyching
dpkg-buildpackage: source version 1.2.2-5
dpkg-buildpackage: source changed by Ernesto Nadir Crespo Avila
dpkg-buildpackage: host architecture i386
fakeroot debian/rules clean
dh_testdir
dh_testroot
dh_clean
dpkg-source -i.hg -I.hg -b pyching-1.2.2
dpkg-source: info: using source format `1.0'
dpkg-source: info: building pyching using existing pyching_1.2.2.orig.tar.gz
dpkg-source: info: building pyching in pyching_1.2.2-5.diff.gz
dpkg-source: warning: ignoring deletion of file #smgHtmlView.py#
dpkg-source: info: building pyching in pyching_1.2.2-5.dsc
debian/rules build
make: No se hace nada para `build'.
fakeroot debian/rules binary
dh_testdir
dh_testroot
dh_prep
dh_installdirs
install -m 644 pyching_cimages.py pyching_engine.py \
pyching_hlhtx_data.py pyching_idimage_data.py \
pyching_int_data.py pyching_interface_tkinter.py \
smgAbout.py smgAnimate.py smgDialog.py smgHtmlView.py \
debian/pyching/usr/share/pyching/
install -m 755 pyching.py debian/pyching/usr/share/pyching/
install -m 644 pyching.png debian/pyching-small.xpm debian/pyching/usr/share/pixmaps/
install pyching.sh debian/pyching/usr/games/pyching
ln -s ../doc/pyching/CREDITS debian/pyching/usr/share/pyching/CREDITS
dh_testdir
dh_testroot
dh_installchangelogs CHANGES
dh_installdocs
dh_installmenu
dh_installman pyching.1
dh_link
dh_compress
dh_fixperms
dh_pycentral
dh_python /usr/share/pyching
dh_python: Doing nothing since dh_pycompat exists; dh_pysupport or dh_pycentral should do the work. You can remove dh_python from your rules file.
dh_installdeb
dh_gencontrol
dh_md5sums
dh_builddeb
atención, `debian/pyching/DEBIAN/control' contiene un campo `Python-Version' definido por el usuario
dpkg-deb: no se tendrán en cuenta 1 avisos sobre los ficheros de control
dpkg-deb: construyendo el paquete `pyching' en `../pyching_1.2.2-5_all.deb'.
dpkg-genchanges >../pyching_1.2.2-5_i386.changes
dpkg-genchanges: not including original source code in upload
dpkg-buildpackage: binary and diff upload (original source NOT included)
Now running lintian...
Finished running lintian.

Luego se revisa el directorio donde se creo el paquete:
ecrespo@canaima:~/paquetes/pyching/temporal/pyching-1.2.2$ cd ..
ecrespo@canaima:~/paquetes/pyching/temporal$ ls
pyching-1.2.2 pyching_1.2.2-5.diff.gz pyching_1.2.2-5_i386.build pyching_1.2.2.orig.tar.gz
pyching_1.2.2-5_all.deb pyching_1.2.2-5.dsc pyching_1.2.2-5_i386.changes

8 abr. 2009

Control de Versiones con mercurial

Mercurial es un sistema de control de versiones distribuido similar a git o bazaar. Es una mezcla de la facilidad de subversion con la potencia de git.

Para instalar mercurial en Debian se ejecuta un aptitude:
aptitude install mercurial mercurial-common

Para ver las opciones que tiene el comando hg se ejecuta hg sólo y muestra lo siguiente:
ecrespo@canaima:~/repositorio$ hg
Mercurial Distributed SCM

basic commands:

add add the specified files on the next commit
annotate show changeset information per file line
clone make a copy of an existing repository
commit commit the specified files or all outstanding changes
diff diff repository (or selected files)
export dump the header and diffs for one or more changesets
imerge interactive merge
init create a new repository in the given directory
inserve start an inotify server for this repository
log show revision history of entire repository or files
merge merge working directory with another revision
parents show the parents of the working dir or revision
pull pull changes from the specified source
push push changes to the specified destination
qdiff diff of the current patch and subsequent modifications
qimport import a patch
qinit init a new queue repository
qpop pop the current patch off the stack
qpush push the next patch onto the stack
qrefresh update the current patch
remove remove the specified files on the next commit
serve export the repository via HTTP
status show changed files in the working directory
strip strip a revision and all later revs on the same branch
update update working directory
view start interactive history viewer

use "hg help" for the full list of commands or "hg -v" for details


Para clonar un repositorio por ejemplo el de bitbucket.org de pyloro se jecuta:

hg clone http://bitbucket.org/ecrespo/pyloro/
destination directory: pyloro
requesting all changes
adding changesets
adding manifests
adding file changes
added 3 changesets with 26 changes to 20 files
updating working directory
20 files updated, 0 files merged, 0 files removed, 0 files unresolved


Este comando hace una copia completa de otro repositorio.

Al ejecutar ls se muestra lo siguiente:
ecrespo@canaima:~/repositorio$ ls -la
python-loro

Dentro del directorio python-loro se tiene lo siguiente:

ConfigurepyLoro.py Festival.py MANIFEST pyloro.desktop pyloro.py setup.py Convert.py .hg PKG-INFO pyloro.glade README TODO audio COPYING images pyloro.conf pyloro.png Reproducir.py verifyconfig.py

Note que existe un directorio .hg, dentro de el se encuentra lo siguiente:
00changelog.i branch branch.cache dirstate hgrc requires store undo.branch undo.dirstate

Editar el archivo hgrc y agregar la información del usuario, nombre y correo:
[paths]
default = http://bitbucket.org/ecrespo/pyloro/
[ui]
username = Ernesto Nadir Crespo Avila

El primero es la ruta de donde se bajo el repositorio, el segundo es la definición del usuario.

Para ver el log del control de versiones se ejecuta hg log dentro del directorio:
ecrespo@canaima:~/repositorio/python-loro$ hg log
changeset: 0:8f241da3b2f9
tag: tip
user: ernesto@moonlighting
date: Wed Nov 05 23:32:58 2008 -0430
summary: Agregado pyloro a mercurial

Para una descripción más detallada de log se ejecuta hg -v log
ecrespo@canaima:~/repositorio/pyloro$ hg -v log
changeset: 2:6d1d0bf8236c
tag: tip
user: ecrespo@canaima
date: Wed Apr 08 19:28:08 2009 -0430
files: ConfigurepyLoro.py Convert.py Festival.py Reproducir.py verifyconfig.py
description:
Change developer information in all files dot py


changeset: 1:33662d0db317
user: ecrespo@canaima
date: Wed Apr 08 18:15:04 2009 -0430
files: pyloro.py
description:
Change developer team in pyloro.py


changeset: 0:8f241da3b2f9
user: ernesto@moonlighting
date: Wed Nov 05 23:32:58 2008 -0430
files: COPYING ConfigurepyLoro.py Convert.py Festival.py MANIFEST PKG-INFO README Reproducir.py TODO audio/iniciando.ogg audio/terminando.ogg images/loro.png images/loro_icono.png pyloro.conf pyloro.desktop pyloro.glade pyloro.png pyloro.py setup.py verifyconfig.py
description:
Agregado pyloro a mercurial

Cada changeset es un conjunto de cambios agrupados como una unidad lógica, un tag es una marca o nombre arbitrario para un changeset, un tip es el último cambio que se realizó al repositorio, reflejado en los logs.


Para hacer modificaciones el repositorio se hará una copia del repositorio para modificarlo:
hg clone pyloro pyloro-prueba
updating working directory
20 files updated, 0 files merged, 0 files removed, 0 files unresolved


Se edita el archivo readme y se hace el commit:
hg commit
Change TODO file
HG: Enter commit message. Lines beginning with 'HG:' are removed.
HG: --
HG: user: ecrespo@gmail.com
HG: branch 'default'
HG: changed TODO




Al ejecutar hg status se nota que sólo ha cambiado el archivo README:
changeset: 5:0ede87ad831c
tag: tip
user: ecrespo@canaima
date: Thu Apr 09 15:17:50 2009 -0430
summary: Change TODO file

changeset: 4:02e20db62aa8
user: ecrespo@canaima
date: Thu Apr 09 15:14:13 2009 -0430
summary: Change team developer in README file

changeset: 3:85f771c9708c
user: ecrespo@canaima
date: Thu Apr 09 15:12:06 2009 -0430
summary: Agregar al README como bajar pyloro del repositorio mercurial

changeset: 2:6d1d0bf8236c
user: ecrespo@canaima
date: Wed Apr 08 19:28:08 2009 -0430
summary: Change developer information in all files dot py

changeset: 1:33662d0db317
user: ecrespo@canaima
date: Wed Apr 08 18:15:04 2009 -0430
summary: Change developer team in pyloro.py

changeset: 0:8f241da3b2f9
user: ernesto@moonlighting
date: Wed Nov 05 23:32:58 2008 -0430
summary: Agregado pyloro a mercurial



Ya aparece el cambio que se hizo a los archivos en el historial.

Para ver los tip de cada repositorio se ejecuta hg tip en cada repo:
ecrespo@canaima:~/repositorio/pyloro-prueba$ hg tip
changeset: 5:0ede87ad831c
tag: tip
user: ecrespo@canaima
date: Thu Apr 09 15:17:50 2009 -0430
summary: Change TODO file

ecrespo@canaima:~/repositorio/pyloro$ hg tip
changeset: 2:6d1d0bf8236c
tag: tip
user: ecrespo@canaima
date: Wed Apr 08 19:28:08 2009 -0430
summary: Change developer information in all files dot py

Como se puede ver, los tips son diferentes por que se han hecho cambios en pyloro-prueba, ahora lo que viene es propagar los cambios a pyloro:
ecrespo@canaima:~/repositorio/pyloro$ hg pull ../pyloro-prueba
pulling from ../pyloro-prueba
searching for changes
adding changesets
adding manifests
adding file changes
added 3 changesets with 3 changes to 2 files
(run 'hg update' to get a working copy)

Por defecto no se actualiza el directorio de trabajo, es necesario ejecutar hg update:
ecrespo@canaima:~/repositorio/pyloro$ hg update
2 files updated, 0 files merged, 0 files removed, 0 files unresolved

Se puede exportar un cambio para enviarlo por correo de la siguiente forma:
hg export tip > /tmp/my-patch

Al revisar el archivo se muestra los cambios que se hicieron:
ecrespo@canaima:~/repositorio/pyloro$ cat /tmp/my-patch
# HG changeset patch
# User ecrespo@canaima
# Date 1239306470 16200
# Node ID 0ede87ad831c232f5272f755cf4b49fa8b1e3c0d
# Parent 02e20db62aa83c6253b4abf7c89719a873146b7f
Change TODO file

diff -r 02e20db62aa8 -r 0ede87ad831c TODO
--- a/TODO Thu Apr 09 15:14:13 2009 -0430
+++ b/TODO Thu Apr 09 15:17:50 2009 -0430
@@ -1,4 +1,4 @@
-Lisot:
+Listo:

(listo) - Seleccionar ubicación de archivo PDF y Salida de Texto
(listo) - pasar PDF a texto ( eje. pstotext /home/julioh/Desktop/LaCazaDeHackers.pdf > /home/julioh/Desktop/prueba.txt )

Este archivo es un patch file en formato diff unificado.
Al enviar el archivo por correo a otro usuario, este deberá importarlo para que se aplique los cambios.
Para fusionar los cambios por medio del archivo patch se creará una copia del repositorio para importar el parche:
hg clone pyloro pyloro-desc
updating working directory
20 files updated, 0 files merged, 0 files removed, 0 files unresolved

A continuación se va a agregar la fecha del copyright en los archivos *.py y se hace el commit:
hg commit -m "Añadido la fecha en el copyright de los archivos .py"

Se aplica los cambios realizados a pyloro:
ecrespo@canaima:~/repositorio/pyloro$ hg pull ../pyloro-desc
pulling from ../pyloro-desc
searching for changes
adding changesets
adding manifests
adding file changes
added 1 changesets with 5 changes to 5 files
(run 'hg update' to get a working copy)

Luego hg update.
ecrespo@canaima:~/repositorio/pyloro$ hg update
5 files updated, 0 files merged, 0 files removed, 0 files unresolved


Para subir la información al servidor de repositorio mercurial se hace el commit luego se hace push.

hg commit

hg push http://bitbucket.org/ecrespo/pyloro/
pushing to http://bitbucket.org/ecrespo/pyloro/
searching for changes
http authorization required
realm: Bitbucket.org HTTP
user: ecrespo
password:
bb/acl: ecrespo is allowed. accepted payload.
quota: 185.8 KB in use, 150.0 MB available (0.12% used)

Al visitar la página del repositorio mercurial de pyloro tendrán lo siguiente:

Por último si se necesita soporte de trabajo en equipo en una red local, la solución es usar el servidor web que viene incorporado con mercurial:
Simplemente se ejecuta hg serve y se abre el navegador en la dirección IP del equipo al puerto 8000.

La siguiente imagen muestra el servidor de mercurial en su funcionamiento con la información corta del log.

La siguiente imagen es el changelog en su formato largo:

Luego se muestra el changeset tip:
Y los archivos existentes en el repositorio de pyloro:

4 abr. 2009

Creación de un repositorio personal de Debian

Luego de una semana donde termine lesionado del codo y hombro izquierdo, voy a explicar como crear un repositorio personal de paquetes para Debian.

Está publicación se basa en el tutorial de Debian Administration

 y en el tutorial del Blog de Mario Debian .

En Debian existe un programa que permite crear un repositorio personal reprepro

aptitude install reprepro

Es necesario instalar un servidor web como:

  • apache2
  • lighttpd
  • cherokee

La estructura que utiliza reprepro es la siguiente:


  .
|-- conf
|-- dists
`-- pool
En el directorio dist se tiene un directorio por cada
versión de la distribución (etc, lenny, squeeze, sid, etc).
En el directorio pool se encuentran los paquetes clasificados por
sección (main, contrib, non-free) y en directorios por orden
alfabético.

Es necesario crear el directorio conf dentro del directorio raíz del
servidor web. Y en el se creará el archivo distributions con la siguiente
configuración:

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




En este ejemplo se va a manejar los repositorios para lenny, etch y sid con los binarios para i386 y las fuentes en la sección main del repositorio.

Para empezar a usar reprepro:




Para subir el paquete binario   al repositorio se ejecuta:

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 agregará el url siguiente en /etc/apt/sources.list:

deb http://midominio/repo/ sid main 

La estructura de directorios del repositorio queda de la siguiente forma: