Dedicado a ASCIIGirl ^.^” (no soy mala onda x’D)
El proyecto SlackBuilds es mantenido por un pequenio grupo de personas que codifican scripts para el uso de la comunidad.
Este proyecto surge a raiz de una de las caracteristicas mas cuestionadas en Slackware … la ‘falta’ de paquetes. Siendo Slackware una distribucion que provee una gran cantidad de paqutes que satisfacen variadas y diferentes necesidades, quedan aplicaciones que no estan incluidas oficialmente y pueden ser requeridas por ciertos usuarios.
Son sabidos algunos servidores donde se suben paquetes precompilados para slackware de terceras partes, a lo cual varios usuarios justificandose reclamaron que no les era fiable el instalar estos paquetes en sus equipos por cuestiones de confianza, seguridad, etc. La solucion para estos usuarios en ese momento era descargar el codigo fuente de la aplicacion y compilarla manualmente, lo que traia inconvenientes por ejemplo en la administracion de sistemas a la hora de mantener las versiones de las distintas aplicaciones.
Solucionando este problema es que aparecen los muchachos de SlackBuilds, quienes codifican scripts que toman el source de la aplicacion y generan un paqute *.tgz, siguiendo la idea de Patrick Volkerding, quien utiliza SlackBuilds para generar los paquetes oficiales que se incluyen en cada release.
Habiendo tenido una pequenia introduccion sobre slackbuilds, veamos como utilizarlos. Para ello vamos a instalar yakuake, una terminal para kde muy bonita
Ingresamos a slackbuilds.org
bash-3.1$ links slackbuilds.org
Buscams el paquete yakuake, descargamos el source y el SlackBuild. Tambien descargamos el fichero que termina en .asc. Nos deben quedar estos ficheros:
bash-3.1$ ls -l yakuake*
-rw-r–r– 1 lain users 535406 2008-06-16 14:28 yakuake-2.8.1.tar.bz2
-rw-r–r– 1 lain users 1938 2008-06-16 14:28 yakuake.tar.gz
-rw-r–r– 1 lain users 197 2008-06-16 14:28 yakuake.tar.gz.asc
Corroboramos con la llave publica yakuake.tar.gz.asc el Slackbuild yakuake.tar.gz:
Si es la primera vez que realizamos esto, tendremos como resultado lo siguiente:
bash-3.1$ gpg-verify.py yakuake.tar.gz.asc yakuake.tar.gz
Verifying yakuake.tar.gz with yakuake.tar.gz.asc…gpg: directory `/home/lain/.gnupg’ created
gpg: new configuration file `/home/lain/.gnupg/gpg.conf’ created
gpg: WARNING: options in `/home/lain/.gnupg/gpg.conf’ are not yet active during this run
gpg: keyring `/home/lain/.gnupg/pubring.gpg’ created
gpg: Signature made Wed 07 May 2008 03:08:34 PM ART using DSA key ID 9C7BA3B6
gpg: Can’t check signature: public key not found
No puede encontrar la clave publica … pues la pedimos:
bash-3.1$ gpg-req-key.py 9C7BA3B6
Getting 9C7BA3B6 from blackhole.pca.dfn.de…gpg: keyring `/home/lain/.gnupg/secring.gpg’ created
gpg: requesting key 9C7BA3B6 from hkp server blackhole.pca.dfn.de
gpg: /home/lain/.gnupg/trustdb.gpg: trustdb created
gpg: key 9C7BA3B6: public key “SlackBuilds.org Development Team ” imported
gpg: no ultimately trusted keys found
gpg: Total number processed: 1
gpg: imported: 1
Ahora nuevamente comprobamos el Slackbuild :
bash-3.1$ gpg-verify.py yakuake.tar.gz.asc yakuake.tar.gz
Verifying yakuake.tar.gz with yakuake.tar.gz.asc…gpg: Signature made Wed 07 May 2008 03:08:34 PM ART using DSA key ID 9C7BA3B6
gpg: Good signature from “SlackBuilds.org Development Team “
gpg: WARNING: This key is not certified with a trusted signature!
gpg: There is no indication that the signature belongs to the owner.
Primary key fingerprint: D307 6BC3 E783 EE74 7F09 B8B7 0368 EF57 9C7B A3B6
Perfecto … el warning se debe a que la llave no se encuentra firmada por una llave en la que yo tenga confianza. Para mas detalles sobre esto click Aqui
Continuamos descomprimiendo el Slackbuild:
bash-3.1$ tar zxvf yakuake.tar.gz
yakuake/
yakuake/README
yakuake/doinst.sh
yakuake/slack-desc
yakuake/yakuake.SlackBuild
yakuake/yakuake.info
Seguimos, moviendo el source de yakuake dentro del SlackBuild:
bash-3.1$ mv yakuake-2.8.1.tar.bz2 ./yakuake; cd ./yakuake
Corremos el SlackBuilds (puede haber casos en los que se necesite hacer esto como root). Tambien constatar que el fichero tiene permisos de ejecucion:
bash-3.1$ ls -l ./yakuake.SlackBuild
-rwxr-xr-x 1 lain users 1616 2008-03-28 21:07 ./yakuake.SlackBuild
bash-3.1$ ./yakuake.SlackBuild
Terminado el proceso de compilacion, nos encontramos en el directorio /tmp con nuestro paqute *.tgz
bash-3.1$ find /tmp/yakuake*
/tmp/yakuake-2.8.1-i486-1_SBo.tgz
Ahora lo podemos instalar normalemente como root con pkgtool:
bash-3.1# installpkg /tmp/yakuake-2.8.1-i486-1_SBo.tgz
De esta manera podemos controlar los paqutes de nuestro sistema con pkgtool, resolviendo el problema de mantenimiento de versiones instaladas, paquetes instalados, etc!
Adjunto el codigo de los dos scripts utilizados. Los mismos simplemente ejecutan gpg con los argumentos necesario y el proposito de dichos scripts es el que no podia recordar dichos parametros
… Si les sirve, aqui los tienen.
gpg-verify.py
#!/usr/bin/env python
# gpg-verify.py
import os
import sys
if len(sys.argv) != 3:
print 'Usage: gpg-verify.py '
sys.exit(1)
p = '--verify'
p1 = sys.argv[1]
p2 = sys.argv[2]
print 'Verifying ' + p2 + ' with ' + p1 + '...\n'
(child_stdin,child_stdout) = os.popen4(cmd = 'gpg %s %s %s' % (p, p1, p2))
for i in child_stdout.readlines():
print i,
print '\n'
gpg-req-key.py
#!/usr/bin/env python
import os
import sys
if len(sys.argv) != 2:
print 'Usage: gpg-key-check.py '
sys.exit(1)
s = 'blackhole.pca.dfn.de'
p = '--keyserver %s' % s
k = sys.argv[1]
p1 = '--recv-keys %s' % k
print 'Getting ' + k + ' from ' + s + '...\n'
(child_stdin,child_stdout) = os.popen4(cmd = 'gpg %s %s' % (p, p1))
for i in child_stdout.readlines():
print i,
print '\n'