2009
11.28

debian/copyright es uno de los archivos más importantes que posee un paquete. Permite corroborar y aseverar que lo incluido es realmente Software Libre y DFSG-complaint. Es por ello la exigencia de los ftp-masters, quienes rechazan paquetes hasta por tener el año del copyright incorrecto (me ha sucedido :-) .

Anteriormente, los ftp-masters recomendaban utilizar el template sugerido por Joerg el cual viene incorporado por defecto a dh-make, sin embargo tiene algunas limitaciones per se: la más relevante es que no es trivial hacerle un parser al archivo y extraer los campos de interés, lo que en estos momentos es de gran relevancia debido a las incompatibilidades entre licencias (por ejemplo GPL-2 y GPl-3 o quizás GPL y OpenSSL). Asimismo no obligatorio seguir el esquema del template, normalmente sirve para darte una idea sobre que campos debe incluír el debian/copyright pero las personas terminan haciéndolo como te da la gana.

Así surge la necesidad de buscar una alternativa y nace “Machine-readable debian/copyright”, que aunque aún no es oficial si es utilizada por varios mantenedores y casi obligatoria para algunos grupos de debian.  Puntos varios surgen cuando se empaquetan aplicaciones de gran tamaño y desarrolladas por varias personas, donde cada una tiene su derecho respectivo derecho sobre el src.

Aquí les dejo el URL de un módulo Perl que empaqueté unos meses:

http://packages.debian.org/changelogs/pool/main/libn/libnet-dri-perl/libnet-dri-perl_0.95-1/libnet-dri-perl.copyright

2009
09.01

Para lo que utilizan nuestra mascotica en facebook:

cumpleanos

2008
10.25

Les dejo los tips que he aprendido sobre FlighGear. Para los que deseen este magnífico simulador de vuelo y usen Debian: aptitude install flightgear fgfs-base. Si se encuentran sobre otra plataforma ingresen en la página oficial del proyecto y descarguen las fuentes o binarios.

Una de las primeras necesidades (o caprichos) cuando instalé el simulador fue volar sobre Caracas, Venezuela y muchos otros lugares del mundo que llamaban mi atención. FlightGear, en su instalación por defecto, sólo incluye los mapas topográficos de San Francisco (específicamente de la bahía). Todos los escenarios de FlightGear se encuentran replicados en varios sitios (mirrors), pero tienes una interfaz gráfica con el planeta dividido en cuadros de 10×10 grados, para descargarlo haces click en el recuadro que represente al escenario y para instalarlo:

  • Ir al directorio raíz de FlightGear (en Debian /usr/share/games/FlightGear) e ingresar al directorio Scenery. Corrobora que tengas dos subdirectorios: Objects y Terrain.
  • En esencia debes incluir el mapa topográfico descargado dentro de estos subdirectorios, basta con hacer un:
# tar xvzf /RUTA-DONDE-HAYAS-DESCARGADO/w070n00.tgz
  • Corroborar (ej. con ls) que dentro de los subdirectorios Objects y Terrain se haya agregado el escenario.

Para listar los aviones instalados y disponibles para volar:

$ /usr/games/fgfs --show-aircraft

Para iniciar el simulador con alguno de los aviones listados:

$ /usr/games/fgfs --aircraft=AVION

Para descargar más aviones ingresamos a la sección de descarga de aviones y elegimos el que nos guste, lo descomprimimos y desempaquetamos para finalmente guardarlo en el subdirectorio Aircraft dentro del directorio raiz de FlightGear (de nuevo: en Debian /usr/share/games/FlightGear). Para corroborar que se incluyó al avión utilizamos el comando para listar los aviones disponibles.

Siempre que estemos volando no incomoda un mapa que indique nuestra posición, la ubicación de aeropuertos y radio-ayudas, así nos guiamos y orientamos en vuelo . Existe una aplicación, no incluida dentro de FlighGear pero si en Debian, llamada Atlas (aptitude install fgfs-atlas). Esta permite generar mapas con las elevaciones y en diferentes resoluciones de los escenarios que tenemos instalados.

Lo primero que debemos hacer es generar los mapas de los escenarios que poseemos instalados:

$ /usr/games/Map --atlas=/opt/FlightGear/mapa-atlas/

Se generarán todos los mapas en /opt/FlightGear/mapa-atlas/ (pueden escoger cualquier ruta). Ahora podemos observar el mapa utilizando Atlas:

$ /usr/games/Atlas --path=/opt/FlightGear/mapa-atlas/

El argumento –path debe ser la ruta donde guardaron los mapas generados. Una imagen ilustrativa:

Esta es la forma de ejecutarlo individualmente, la idea es hacerlo junto con FlightGear para que muestre la posición de de nuestro avión y otras cosas más. Atlas trabaja bajo la arquitectura cliente servidor, por ende le debemos decir a FlighGear que inicie y envíe toda la la información relacionada con el vuelo usando el protocolo NMEA (Jojo, los GPS leen este protocolo :-) ) a través de algún puerto. Posteriormente le indicamos a Atlas que lea el flujo de datos a través del puerto y “grafique” dicha información en un mapa.

Iniciamos FlightGear:

$ fgfs --aircraft=787-ANA --airport=SVMI --flight-plan=/tmp/SVMI-SVMD.pln \
    --nmea=socket,out,0.5,127.0.0.1,8000,udp

Ahora iniciamos Atlas y le indicamos como argumento que escuchará en el puerto 8000 UDP:

$ /usr/games/Atlas --path=/opt/FlightGear/mapa-atlas/ --udp=8000 \
    --airport=SVMI --glutfonts --square

Con esto ya deberíamos tener el mapa con nuestro : )

Otra características para jugar FlighGear es su modo multijugador, no necesitamos instalar nada, sólo ejecutarlo con los siguientes argumentos:

$ fgfs --aircraft=b1900d --airport=KSFO --flight-plan=/tmp/KSFO-SVMD.pln \
      --nmea=socket,out,0.5,127.0.0.1,8000,udp --callsign=NICK \
      --multiplay=in,10,TU-DIRECCIÓN-IP,5000 --multiplay=out,10,mpserver02.flightgear.org,5000

Donde mpserver02.flightgear.org es el servidor que utilizaremos, ¿Por qué uso mpserver02.flightgear.org y no otro? Porque es uno de los pocos que mantiene mi tracker de vuelo, así puedo tener registro de la cantidad de horas de vuelo (jugando multijugador, por supuesto), un mapa (utilizando google Maps) de las rutas que he seguido, mi altitud, velocidad, etc.

Una vez que iniciamos el simulador de vuelo con alguno de los servidores (no importa cual) podemos ver directamente nuestro avión junto con las demás personas que utilizan el modo multijugador desde googleMaps, esto ingresando mediante HTTP al servidor al cual nos hemos conectado (siguiendo el ejemplo sería http://mpserver02.flightgear.org )

¿Cómo creo las rutas o planos de vuelo? Básicamente encontré una aplicación llamada Kelpie Flight Planner for FlightGear (hecha en Java :-/) que permite crear los planos de vuelo (.pln). Una vez generado el plan de vuelo le decimos al simulador mediante el argumento –flight-plan que los incluya.

¿Qué no he logrado aún? Estoy buscando la forma de graficar sobre Atlas la ruta a seguir (sólo muestra la ruta seguida por el avión, más no la que debe seguir) según algún plan de vuelo especificado. Aún no lo he logrado, si alguien tiene idea de como hacerlo estaría muy agradecido : )

2008
09.07

Ya es una tendencia la implantación de GNUTLS para el uso de SSLv3 y TLS (>1.0), se está intentando dejar de lado OpenSSL por todo aquello del célebre bug y sobre todo: por su respectiva licencia, considerada no gnu-compatible. Si el grupo de OpenSSL no cambia su licencia [0]  (específicamente su sexta sentencia) es probable que gran parte de los servicios comiencen a implantar GNUTLS y no OpenSSL.

Traigo el tema acotación porque hace pocos días tuve que instalar un servidor OpenLDAP + SSL/TLS y me tope con la sorpresa que en Debian lenny/SID este servicio (a partir de la versión 2.4.7) utiliza GNUTLS y no OpenSSL. Me di cuenta porque sucedía algo extraño al hacer uso de la típicas suites de cipher’s que pose OpenSSL; no le daba la gana de iniciar al OpenLDAP, me retornaba con un error [1].

Hice un post sobre como crear llaves y certificados con GNUTLS. Es bastante sencillo, de hecho me parece más simple crear certificados y llaves con GNUTLS que con OpenSSL. Apenas hay documentación sobre GNUTLS en la internet, aunque todo lo que podrías necesitar se encuentra en la documentación oficial. ¿Entonces si poseo un OpenLDAP y lo actualizo a 2.4.7 no funcionará las conexiones seguras ni los certificados que poseía? Sí funcionan, lo único que debes cambiar son las cipher’s, para incluir las de GNUTLS, tampoco es tan trágico :-P . Sin embargo, yo preferí crear mis certificados de nuevo.

Mi archivo de configuración quedó muy parecido al anterior:

TLSCipherSuite TLS_RSA_AES_256_CBC_SHA
TLSCACertificateFile /etc/gnutls/CA/mogaalCA-cert.pem
TLSCertificateFile /etc/gnutls/ftp-cert.pem
TLSCertificateKeyFile /etc/gnutls/ftp-key.pem
TLSVerifyClient try

Notar que lo único que cambia es el cipher y para saber todos los que podríamos utilizar:

# gnutls-cli -l | grep -E "^TLS" | cut -d\  -f1 | xargs echo

Para saber como crear los certificados y llaves con GNUTLS ver el post anterior.

—————————————————-

[0] O se incluyen en las aplicaciones el respectivo texto haciendo referencia a esa reestricción declarada en la licencia.

[1] TLS: could not set cipher list HIGH:MEDIUM:+SSLv3:RSA.
2008
09.07

En muchos servicios se está comenzando a implantar el uso de GNUTLS. OpenSSL se dejándose a un lado por todo aquello de su licencia y el célebre bug. Mientras OpenSSL no cambie su licencia se considerará no gnu-compatible (con algunas excepciones).

Esta pequeña guía sobre como crear certificados y llaves fue originalmente escrita para implementarla en un servicio de OpenLDAP. Sin embargo: realicé la misma prueba con los mismos certificados en un servicio apache2 y no ocurrió ningún problema, funcionó perfectamente.

Está demás acotar que debe estar instalada la herramienta. Opcional a esta instalaré su documentación, la cual me fue muy útil y recomiendo revisarla.

# aptitude install gnutls-bin gnutls-doc

Primero crearemos el directorio para almacenar todo lo relacionado a GNUTLS: llaves, certificados, etc. Arbitrariamente escogí trabajar en /etc/gnutls.

# mkdir /etc/gnutls
# mkdir CA
# cd CA

Ahora utilizaremos la herramienta certtool, incluida en el paquete gnutls-bin y utilizada para generar llaves, certificados y muchas otras cosas más. Crearemos la llave y certificado para nuestra agente autorizadora (CA/Certificate Authority). Comenzaremos con la llave:

# certtool –generate-privkey –outfile mogaalCA-key.pem
Generating a 2048 bit RSA private key…

Hemos creado la llave privada de la CA. Por defecto se genera con 2048 bits, sin embargo puedes cambiar el número de bits utilizando la opción –bits (man certtool para más información)

Ahora debemos crear el certificado de la agente autorizadora y responder las respectivas preguntas, donde se indica “<VACIO>” no colocaremos nada y “<POR DEFECTO>” dejaremos el valor por defecto, que es lo mismo que presionar ENTER. Para eso:

# certtool –generate-self-signed –load-privkey mogaalCA-key.pem –outfile mogaalCA-cert.pem
Generating a self signed certificate…
Please enter the details of the certificate’s distinguished name. Just press enter to ignore a field.
Country name (2 chars): VE
Organization name: Organizacion mogaal
Organizational unit name: Unidad de informatica
Locality name: Caracas
State or province name: Distrito Capital
Common name: mogaalCA
UID: <VACIO>
This field should not be used in new certificates.
E-mail: <VACIO>
Enter the certificate’s serial number in decimal (default: 1220810245): <POR DEFECTO>

Activation/Expiration time.
The certificate will expire in (days): 3650

Extensions.
Does the certificate belong to an authority? (y/N): y
Path length constraint (decimal, -1 for no constraint): <POR DEFECTO>
Is this a TLS web client certificate? (y/N): N
Is this also a TLS web server certificate? (y/N): N
Enter the e-mail of the subject of the certificate: <VACIO>
Will the certificate be used to sign other certificates? (y/N): y
Will the certificate be used to sign CRLs? (y/N): y
Will the certificate be used to sign code? (y/N): y
Will the certificate be used to sign OCSP requests? (y/N): y
Will the certificate be used for time stamping? (y/N): y
Enter the URI of the CRL distribution point: <VACIO>
X.509 Certificate Information:
Version: 3
Serial Number (hex): 48c41605
Validity:
Not Before: Sun Sep 07 17:57:26 UTC 2008
Not After: Wed Sep 05 17:57:30 UTC 2018
Subject: C=VE,O=Organizacion mogaal,OU=Unidad de informática,L=Caracas,ST=Distrito Capital,CN=mogaalCA
Subject Public Key Algorithm: RSA
Modulus (bits 2048):
ae:d0:eb:9d:48:01:71:9f:cc:8a:eb:7f:45:40:59:56
2e:a7:87:e2:24:0c:d2:09:99:d0:8e:59:5f:c8:b5:e5
0c:b0:b2:28:c1:cd:51:15:37:5b:91:56:70:ab:12:a1
87:a2:be:42:3b:88:c9:0d:98:34:e9:8d:2e:47:ce:c7
e8:a3:d8:36:18:c7:7a:38:88:f0:da:54:58:71:8d:f9
56:16:a9:a3:2b:d2:95:07:8d:1e:e0:34:38:37:0c:2e
b9:ea:43:30:92:d5:01:40:eb:8a:1b:fd:b3:de:02:ec
d7:85:fc:49:6a:ad:71:c9:e9:a5:f4:65:db:d6:8d:2d
46:3f:77:04:d9:54:a0:24:aa:69:9b:6f:67:4b:ff:db
ef:2c:cd:10:d9:f6:5d:7a:4f:be:6d:79:fe:6e:b5:ed
ea:7b:33:8c:6d:2a:fd:67:7a:02:0c:72:62:68:64:d6
f7:b2:a2:c9:5c:70:d2:87:c9:86:56:bc:38:56:8c:f4
e3:d5:7a:82:01:6d:a6:7e:64:07:e4:86:44:3e:8f:a5
ab:dd:a3:dc:b5:40:1d:3d:9d:6b:f6:07:7c:d9:12:41
83:56:3e:8e:95:30:66:51:43:d3:f7:d3:e0:42:c2:f9
dd:df:bf:9a:b8:7f:68:2f:b4:3d:ef:41:11:2d:54:d9
Exponent:
01:00:01
Extensions:
Basic Constraints (critical):
Certificate Authority (CA): TRUE
Key Purpose (not critical):
Code signing.
OCSP signing.
Time stamping.
Key Usage (critical):
Certificate signing.
CRL signing.
Subject Key Identifier (not critical):
7064c80d3159e3b6c13e88d9330fd5a3fa3ed82d
Other Information:
Public Key Id:
7064c80d3159e3b6c13e88d9330fd5a3fa3ed82d

Is the above information ok? (Y/N): Y

Signing certificate…

Algo bastante interesante de certtool es que genera los certificados con los permisos correctos: 600 para la llave y 644 para el certificado, se puede corroborar con “ls -l”.

Ya terminamos con todo lo referente a la CA, es momento de ocuparnos de las llaves y los certificados para los servicios donde queramos implementarlos. A manera de información: para este tutorial se desea crear un certificado y llave para un servicio de OpenLDAP sobre Debian.

Procedemos a crear la llave privada:

# cd /etc/gnutls
# certtool –generate-privkey –bits 2048 –outfile ldap-key.pem
Generating a 2048 bit RSA private key…

Notar que para ser más ilustrativo decidí colocar manualmente la opción –bits. Ahora procedemos a generar el certificado asociado a la llave creada anteriormente.

# certtool –generate-certificate –load-privkey ldap-key.pem –outfile ldap-cert.pem –load-ca-certificate CA/mogaalCA-cert.pem –load-ca-privkey CA/mogaalCA-key.pem
Generating a signed certificate…
Please enter the details of the certificate’s distinguished name. Just press enter to ignore a field.
Country name (2 chars): VE
Organization name: Organizacion mogaal
Organizational unit name: Informatic Unit
Locality name: Caracas
State or province name: Distrito Capital
Common name: ldap.mogaal.com (PENDIENTE AQUÍ, DEBE SER EL FQDN CORRECTO)
UID: <VACIO>
This field should not be used in new certificates.
E-mail: <VACIO>
Enter the certificate’s serial number in decimal (default: 1220818030): <POR DEFECTO>

Activation/Expiration time.
The certificate will expire in (days): 365

Extensions.
Does the certificate belong to an authority? (y/N): N
Is this a TLS web client certificate? (y/N): N
Is this also a TLS web server certificate? (y/N): N
Enter the e-mail of the subject of the certificate:  <VACIO>
Will the certificate be used for signing (required for TLS)? (y/N): N
Will the certificate be used for encryption (not required for TLS)? (y/N): N
X.509 Certificate Information:
Version: 3
Serial Number (hex): 48c4346e
Validity:
Not Before: Sun Sep 07 20:07:10 UTC 2008
Not After: Mon Sep 07 20:07:14 UTC 2009
Subject: C=VE,O=Organizacion mogaal,OU=Informatic Unit,L=Caracas,ST=Distrito Capital,CN=ldap.mogaal.com
Subject Public Key Algorithm: RSA
Modulus (bits 2048):
c2:15:10:74:9d:28:8c:ca:0a:24:dc:55:ed:fe:4b:2e
42:00:64:c5:78:5b:85:f8:4c:5b:33:12:8c:50:33:48
2b:d6:e4:de:97:9b:31:42:14:8d:72:ee:e0:bc:8a:c0
40:4f:38:14:ee:1d:e4:e4:69:b3:75:a0:3a:9e:bd:5c
c7:e3:d4:84:fe:91:88:d9:4e:75:eb:70:4f:3a:c6:0f
67:04:9a:46:d0:17:b1:5d:68:f7:82:58:23:b6:2b:b6
43:84:ba:7c:93:64:54:9d:ce:f7:38:e2:f9:76:b0:b3
53:ed:33:f8:df:6e:00:cb:4e:b4:41:f3:e1:e6:00:8a
72:87:da:ec:b8:f2:82:da:f5:5e:71:24:fb:ef:8f:cc
99:92:32:53:b4:5b:96:63:81:81:f1:a0:a1:37:cf:5d
9b:0c:8d:87:be:08:b1:da:a0:36:93:65:38:c9:75:54
b2:98:d6:0f:b0:b9:a3:41:61:5c:96:c6:a8:52:80:8f
97:25:62:61:40:5d:02:66:ac:b7:c2:7e:5a:fb:d1:4e
23:3c:01:90:5d:b3:4c:d8:ca:1a:b1:3a:20:d3:4d:6d
8e:44:22:94:9b:a8:5a:33:8a:67:5d:99:3f:24:1e:14
1a:58:a5:3f:8e:5d:ec:9a:f7:62:ef:12:3d:3c:44:a7
Exponent:
01:00:01
Extensions:
Basic Constraints (critical):
Certificate Authority (CA): FALSE
Subject Key Identifier (not critical):
c31e0109afaf9942bf6cbdcad245efe96cb1f650
Authority Key Identifier (not critical):
0f0a96a7a9b3562a3c3b1d50f6c05dd98013d3e3
Other Information:
Public Key Id:
c31e0109afaf9942bf6cbdcad245efe96cb1f650

Is the above information ok? (Y/N): Y

Signing certificate…

Con esto concluye la creación de la llave y certificado para nuestro servidor. Debemos tener dos archivos:

  • ldap-key.pem: Esta es la llave, por defecto posee los permiros correctos (600/lectura y escritura para el propietario) mas no pertenece al usuario asociado al servicio (en nuestro caso openldap, o el que hayamos definido). Esto último es muy importante, normalmente creamos el certificado y la llave con el usuario root y nos desentenemos de los permisos: les recomiendo estar muy pendiente de establecer el propietario la llave al terminar de generarla, ya que sino el servicio no podrá ni siquiera leerla.
  • ldap-cert.pem: Este es el certificado, el cual distribuimos a los clientes.

Si deseamos ver toda la información referente a nuestro certificado, para corroborar que toda la información esté correcta deberíamos ejecutar:

# certtool –certificate-info –infile ldap-cert.pem

X.509 Certificate Information:
Version: 3
Serial Number (hex): 48c4346e
Issuer: C=VE,O=Organizacion mogaal,OU=Unidad de informática,L=Caracas,ST=Distrito Capital,CN=mogaalCA
Validity:
Not Before: Sun Sep 07 20:07:10 UTC 2008
Not After: Mon Sep 07 20:07:14 UTC 2009
Subject: C=VE,O=Organizacion mogaal,OU=Informatic Unit,L=Caracas,ST=Distrito Capital,CN=ldap.mogaal.com
Subject Public Key Algorithm: RSA
Modulus (bits 2048):
c2:15:10:74:9d:28:8c:ca:0a:24:dc:55:ed:fe:4b:2e
42:00:64:c5:78:5b:85:f8:4c:5b:33:12:8c:50:33:48
2b:d6:e4:de:97:9b:31:42:14:8d:72:ee:e0:bc:8a:c0
40:4f:38:14:ee:1d:e4:e4:69:b3:75:a0:3a:9e:bd:5c
c7:e3:d4:84:fe:91:88:d9:4e:75:eb:70:4f:3a:c6:0f
67:04:9a:46:d0:17:b1:5d:68:f7:82:58:23:b6:2b:b6
43:84:ba:7c:93:64:54:9d:ce:f7:38:e2:f9:76:b0:b3
53:ed:33:f8:df:6e:00:cb:4e:b4:41:f3:e1:e6:00:8a
72:87:da:ec:b8:f2:82:da:f5:5e:71:24:fb:ef:8f:cc
99:92:32:53:b4:5b:96:63:81:81:f1:a0:a1:37:cf:5d
9b:0c:8d:87:be:08:b1:da:a0:36:93:65:38:c9:75:54
b2:98:d6:0f:b0:b9:a3:41:61:5c:96:c6:a8:52:80:8f
97:25:62:61:40:5d:02:66:ac:b7:c2:7e:5a:fb:d1:4e
23:3c:01:90:5d:b3:4c:d8:ca:1a:b1:3a:20:d3:4d:6d
8e:44:22:94:9b:a8:5a:33:8a:67:5d:99:3f:24:1e:14
1a:58:a5:3f:8e:5d:ec:9a:f7:62:ef:12:3d:3c:44:a7
Exponent:
01:00:01
Extensions:
Basic Constraints (critical):
Certificate Authority (CA): FALSE
Subject Key Identifier (not critical):
c31e0109afaf9942bf6cbdcad245efe96cb1f650
Authority Key Identifier (not critical):
0f0a96a7a9b3562a3c3b1d50f6c05dd98013d3e3
Signature Algorithm: RSA-SHA
Signature:
a0:3a:7e:65:51:6a:dc:0d:f1:1a:6e:e7:12:4b:7e:9c
48:8e:44:80:85:6e:4c:cf:58:65:af:4f:38:a3:46:b1
5f:f8:5a:86:55:20:59:f4:3b:cb:55:8c:07:9e:49:e6
71:07:00:82:09:05:06:5a:df:67:19:3f:b8:65:b3:45
9d:96:c7:d4:af:5b:dc:3d:40:d4:0e:fb:4b:3f:43:5d
51:af:0c:e0:4d:7f:47:9b:d2:0f:94:18:fd:0d:85:45
6f:fa:17:bd:0c:01:23:79:de:a6:3b:87:b4:56:be:1a
27:08:bf:0a:61:44:90:4a:f3:f7:8c:05:3a:a2:60:fb
38:a3:82:b8:4b:2a:3d:b3:ef:9b:6a:98:ca:ff:00:76
51:64:70:c8:aa:63:60:ba:fc:f1:36:e0:e3:e2:24:63
3c:45:56:7c:dd:b6:cd:45:d0:3c:88:a6:4e:77:00:13
53:c5:b7:ec:84:bf:1c:24:fe:67:40:aa:7a:f6:2c:08
36:d2:af:dc:fb:3b:38:a1:ed:96:35:79:ee:6b:c9:ee
db:29:3f:44:d1:36:a9:bf:d1:95:bf:7f:de:f1:19:8d
9a:2f:e2:63:c6:aa:96:55:8f:9c:b9:82:f1:b6:ab:b3
94:9e:12:ad:70:45:97:e0:f6:18:c0:06:98:18:65:8f
Other Information:
MD5 fingerprint:
06fd2a41364496645842a54ba10ed74a
SHA-1 fingerprint:
ceb2aafb5590762b3e678f82f373ac4f89db720a
Public Key Id:
c31e0109afaf9942bf6cbdcad245efe96cb1f650

—–BEGIN CERTIFICATE—–
MIID4TCCAsugAwIBAgIESMQ0bjALBgkqhkiG9w0BAQUwgYwxCzAJBgNVBAYTAlZF
MRwwGgYDVQQKExNPcmdhbml6YWNpb24gbW9nYWFsMR8wHQYDVQQLDBZVbmlkYWQg
ZGUgaW5mb3Jtw6F0aWNhMRAwDgYDVQQHEwdDYXJhY2FzMRkwFwYDVQQIExBEaXN0
cml0byBDYXBpdGFsMREwDwYDVQQDEwhtb2dhYWxDQTAeFw0wODA5MDcyMDA3MTBa
Fw0wOTA5MDcyMDA3MTRaMIGMMQswCQYDVQQGEwJWRTEcMBoGA1UEChMTT3JnYW5p
emFjaW9uIG1vZ2FhbDEYMBYGA1UECxMPSW5mb3JtYXRpYyBVbml0MRAwDgYDVQQH
EwdDYXJhY2FzMRkwFwYDVQQIExBEaXN0cml0byBDYXBpdGFsMRgwFgYDVQQDEw9s
ZGFwLm1vZ2FhbC5jb20wggEfMAsGCSqGSIb3DQEBAQOCAQ4AMIIBCQKCAQDCFRB0
nSiMygok3FXt/ksuQgBkxXhbhfhMWzMSjFAzSCvW5N6XmzFCFI1y7uC8isBATzgU
7h3k5GmzdaA6nr1cx+PUhP6RiNlOdetwTzrGD2cEmkbQF7FdaPeCWCO2K7ZDhLp8
k2RUnc73OOL5drCzU+0z+N9uAMtOtEHz4eYAinKH2uy48oLa9V5xJPvvj8yZkjJT
tFuWY4GB8aChN89dmwyNh74IsdqgNpNlOMl1VLKY1g+wuaNBYVyWxqhSgI+XJWJh
QF0CZqy3wn5a+9FOIzwBkF2zTNjKGrE6INNNbY5EIpSbqFozimddmT8kHhQaWKU/
jl3smvdi7xI9PESnAgMBAAGjUDBOMAwGA1UdEwEB/wQCMAAwHQYDVR0OBBYEFMMe
AQmvr5lCv2y9ytJF7+lssfZQMB8GA1UdIwQYMBaAFA8Klqeps1YqPDsdUPbAXdmA
E9PjMAsGCSqGSIb3DQEBBQOCAQEAoDp+ZVFq3A3xGm7nEkt+nEiORICFbkzPWGWv
TzijRrFf+FqGVSBZ9DvLVYwHnknmcQcAggkFBlrfZxk/uGWzRZ2Wx9SvW9w9QNQO
+0s/Q11RrwzgTX9Hm9IPlBj9DYVFb/oXvQwBI3nepjuHtFa+GicIvwphRJBK8/eM
BTqiYPs4o4K4Syo9s++bapjK/wB2UWRwyKpjYLr88Tbg4+IkYzxFVnzdts1F0DyI
pk53ABNTxbfshL8cJP5nQKp69iwINtKv3Ps7OKHtljV57mvJ7tspP0TRNqm/0ZW/
f97xGY2aL+JjxqqWVY+cuYLxtquzlJ4SrXBFl+D2GMAGmBhljw==
—–END CERTIFICATE—–

También es común que deseemos la llave y el certificado en un solo archivo, para eso ejecutamos:

# cat ldap-cert.pem ldap-key.pem > ldap.pem

En caso que quieras agregar soporte GNUTLS para apache2:

# aptitude install libapache2-mod-gnutls

Y buscar en la documentación, que es bastante clara.

2008
09.07

Hola, aquí les dejo un interesante truquillo: supongamos que descargaste un paquete/programa para Debian/Ubuntu (un .deb para acortar), está compilado para i386 y nuestra computadora es de arquitectura AMD64. Me sucedió esto con el paquete kompozer (lo que era antes NVU) y me dio mucha pereza compilarlo, entonces: ¿Qué hacer si no queremos bajarnos las fuentes y compilar el programa?

Muy simple, debemos tener instalada la herramienta alien (aptitude install alien) y ejecutar lo siguiente:

# alien --to-tgz kompozer-0.7.10-i386.deb
kompozer-0.7.10.tgz generated

# alien --to-deb kompozer-0.7.10.tgz
kompozer_0.7.10-2_all.deb generated

# dpkg -i kompozer_0.7.10-2_all.deb
Selecting previously deselected package kompozer.
(Reading database ... 186500 files and directories currently installed.)
Unpacking kompozer (from kompozer_0.7.10-2_all.deb) ...
Setting up kompozer (0.7.10-2) ...
Processing triggers for man-db ...

Con esto ya tenemos nuestro paquete instalado y listo para poder funcionar. Creo que los comandos ejecutados son bastantes explícitos por si mismos para estar explicándolos

2008
06.28

Recientemente adquirí una nueva computadora (HP Pavilion DV2840se) y esta me trajo Pacífica (de AMD): tecnología a nivel de procesador para virtualización completa/Nativa. Es mi primera computadora con esta característica, y como un niño con su nuevo juguete: la estoy aprovechando al máximo.

Para la mayoría de las nuevas tecnologías: si queremos utilizarlas en Linux es frecuente que debamos compilar su respectivo módulo en el kernel para darle soporte. KVM (Kernel-based Virtual Machine) es un módulo para el kernel que permite utilizar tecnologías de Virtualización VanderPool y Pacífica, de Intel y AMD respectivamente. Las últimas versiones del kernel (> 2.6.20) traen el módulo incorporado. Los kernels precompilados para Debian también traen incluido el módulo KVM.

¿Cómo verificar que tenemos -soporte- para virtualización en nuestro procesador?

egrep '^flags.*(vmx|svm)' /proc/cpuinfo

(son comillas simples, no esas que coloca el blog…)

Si nos retorna vacío: lamentablemente nuestro procesador no soporta Virtualización completa. La mayoría de las computadoras traen desactivado el soporte para virtualización (por ejemplo la mía), por lo que no debemos olvidar activarlo en el BIOS, sino obtendremos un error [1] cargando el módulo de KVM.

Ahora debemos compilar el módulo de KVM para nuestro kernel. Como mencioné: muchos de los kernels precompilados traen KVM, sin embargo prefiero compilarlo desde las fuentes (muy sencillo con module-assistant). Si optamos por la última disyuntiva no olvidemos eliminar el módulo que ya posee nuestro kernel para KVM, sino entrará en conflicto con el que compilemos y nos generará error [1].

 # rmmod kvm

Ahora instalamos las fuentes de KVM y las compilamos (recordar que para compilar cualquier módulo debes tener las headers de tu kernel y module-assistand):

# aptitude install linux-headers-`uname -r` module-assistant
# aptitude install kvm-source
# m-a a-i kvm

Si no hemos obtenido error alguno la compilación e instalación de KVM tuvo éxito. Lo podemos corroborar esto verificando si se agregaron los tres típicos módulos al kernel:

# modprobe -l | grep kvm
/lib/modules/2.6.25-2-amd64/misc/kvm.ko
/lib/modules/2.6.25-2-amd64/misc/kvm-intel.ko
/lib/modules/2.6.25-2-amd64/misc/kvm-amd.ko

Tengo tres módulos, de los cuales haré uso de dos (kvm-intel es para computadoras con VenderPool: intel). Por último debemos instalar el paquete KVM: Realmente es un qemu para x86 con otro nombre. Instalamos el paquete kvm y cargamos los respectivos módulos

# aptitude install kvm
# modprobe kvm kvm-amd

Este es todo el proceso, si hemos llegado hasta aquí sin ningún problema: ya podemos hacer uso de KVM.

¿Cómo usarlo?

Igual que usamos qemu. No les metí cuando le dije que era un qemu para x86 con otro nombre haciendo uso de /dev/kvm. Primero creamos nuestra imagen que contendrá el sistema operativo:

kvm-img create -f qcow mi-debian.img 2G

Seguidamente buscamos nuestro CD de Debian/Fedora/Distro que queramos instalar, lo colocamos en la unidad de CDROM y ejecutamos:

kvm -hda mi-debian.img -cdrom /dev/cdrom -boot d -m 256

Si carecemos del CD con el sistema operativo, pero tenemos una imagen .iso:

kvm -hda mi-debian.img -cdrom /ruta/de/mi/iso/debian.iso -boot d -m 256

Si quieren más información busquen un tutorial de qemu, es el mismo qemu renombrado a KVM.

———————————
[1] Este error aplica para cuando no tenemos activado el soporte para virtualización en el BIOS y para cuando entran en conflicto el módulo que ya trae el kernel y el que compilamos nosotros:

FATAL: Error inserting kvm_amd
(/lib/modules/2.6.25-2-amd64/misc/kvm-amd.ko): Unknown symbol in
module, or unknown parameter (see dmesg)

2008
06.28

Care2x es una aplicación médica que integra datos, funciones y flujo de tareas en un entorno de cuidados de la salud, un típico sistema de información para los hospitales. Es bastante antigua y está desarrollada para ser usada con PHP4, apache1.X (funciona también con apache2) y MySQL 3.2x – 4.0.x (también es factible utilizar PostgreSQL).

Instalarla en Debian fue bastante tedioso porque no encontraba alternativa al gran bug que genera una violación de segmento post-instalación y hace a la aplicación inutilizable (ni siquiera se puede ver el index.php de la aplicación principal). Por eso les explicaré como son los pasos para instalar la aplicación.

La última versión (2.5-RC2) es la que posee el bug mencionado anteriormente, por lo que nos olvidaremos de ella. Tendremos que utilizar una versión un poco más vieja: la 2.4-RC2 a mi me funcionó bien. Para descargarla nos vamos a la página del proyecto y buscamos el instalador para Linux (de la versión 2.4-RC2 obviamente). No utilizaremos el paquete para Debian porque es aún más viejo (miren la fecha de release y la versión, data de hace casi 5 años).

Debemos tener instalados todos los requerimientos del sistema que mencioné al comienzo:

aptitude install apache2 libapache2-mod-php4 php4 php4-mysql php4-gd mysql-server-4.1

Una vez hecho eso no olvidemos asignarle clave al usuario administrador del MySQL, para esto:

mysqladmin -u root password ‘TU-CLAVE’

Sea donde hayamos guardado la el instalador para Linux de Care2x sólo falta ejecutarlo:

./care2x_v2.4_RC2-Linux-x86-Install –prefix /var/www

This will install Care2x-HIS on your computer.  Continue? [n/Y] Y

Where do you want to install Care2x-HIS? [/var/www] <ENTER>

Installing Care2x-HIS…
Installing Program Files…
Installation complete.

Podemos corroborar que de verdad instaló todo listando el directorio /var/www. No debemos olvidar asignarle los respectivos usuarios y grupos todo /var/www:

chown -R www-data.www-data /var/www/

Una vez hecho esto nos dirigimos a un navegador y abrimos:

http://MAQUINA-DONDE-LO-INSTALAMOS/installer

Y llenamos todos los datos que nos piden.

Eso es todo.

FireStats icon Powered by FireStats