Usando SSH para actualizar WordPress

En estos días me ha tocado atender un nuevo cliente, la gente de 4lochas.com, un portal de música y variedades que tiene rato hosteado con nosotros, pero que cambió recientemente de administración. Luego de una buena cantidad de setbacks (menores y mayores), pusimos a andar el sitio. Y, si bien es cierto que hay un par de caídas de vez en cuando, el sitio está operativo la mayor parte del tiempo. Esas cosas se van a ir corrigiendo a medida que se van afinando los detalles.

Entre las cosas que me solicitaba, estaban las de actualizar plugins y temas y esas cosas. Obviamente, lo primero que se hace con un cliente nuevo es darle sus credenciales de usuario. Pero, en el caso de mis servidores, hay una configuración estándar de ssh, en la que PasswordAuthentication está desactivado, y sólo puedes loguearte si tu llave pública está añadida en el authorized_keys correspondiente. Por lo que el cliente debe generar llaves ssh para poder añadirlas a su archivos de llaves autorizadas. Desafortunadamente, putty no es particularmente sencillo en su uso de llaves. Al menos, no para mí que sólo lo he usado un par de ocasiones, y nunca desde mis equipos.

En fin, revisando por el internés alguna forma de automatizar el proceso de autenticación vía llaves ssh en wordpress, conseguí este artículo en el que explican paso a paso lo que debe hacerse. La cosa es que está hecho para distribuciones basadas en RedHat.

No voy a ahondar mucho en cómo se instala ssh, cómo creas llaves públicas, cómo accedes a ellas y cómo las llevas al servidor. De esos hay muchísimos artículos por toda la internet que está a un googleo de distancia. Lo que sí voy a decirles es qué necesitan desde ese punto en adelante para tener el wordpress andando en [una distro basada en] debian.

Lo primero, instalar libssh2-php

apt-get install libssh2-php

Luego, añadir esto en su wp-config.php. Les sugiero que las añadan luego de los salt strings.


define('FTP_PUBKEY','/home/tu_usuario/.ssh/id_rsa.pub');
define('FTP_PRIKEY','/home/tu_usuario/.ssh/id_rsa');
define('FTP_USER','tu_usuario');
define('FTP_PASS','hackme');
define('FTP_HOST','127.0.0.1:22');

Donde:
FTP_PUBKEY: Es la llave pública. Usualmente se aloja en ~/.ssh
FTP_PRIVKEY: Es la llave privada. Usualmente se aloja en ~/.ssh
FTP_USER: Obviamente, tu usuario
FTP_PASS: El password.
FTP_HOST: En este caso, 127.0.0.1, porque se supone que estás descargando local en tu servidor. Puedes usar un TLD o incluso un subdominio.

Ya con eso no deberías requerir configurar nada más para actualizar o instalar cualquier cosa en WordPress. De hecho, lo probé actualizando a WP4, añadiendo un nuevo tema e instalando plugins y actualizaciones requeridas sin ningún inconveniente.

Comunicado a favor de la libertad y neutralidad de la red

Nosotros, los abajo firmantes, en nuestra condición de ciudadanos venezolanos, miembros de las comunidades organizadas de usuarios de Software Libre y activistas de la libertad del conocimiento y la neutralidad de la red, defendemos un Internet libre y abierto, apegándonos a la Declaración por la Libertad de Internet la cual citamos en su totalidad:

«Apoyamos procesos transparentes y participativos para regular internet y el establecimiento de cinco principios básicos:

Expresión: No se debe censurar internet.
Acceso: Promover acceso universal a redes rápidas y asequibles.
Apertura: Internet debe seguir siendo una red abierta donde todas las personas son libres de conectarse, comunicar, escribir, leer, ver, decir, escuchar, aprender, crear e innovar.
Innovación: Proteger la libertad de innovar y crear sin permiso. No se deben bloquear las nuevas tecnologías, y no se debe castigar a los innovadores por las acciones de los usuarios.
Privacidad: Proteger la privacidad y defender la capacidad de la gente para controlar como se utilizan sus datos y dispositivos.»

CONSIDERANDO
La violación al derecho de libre acceso a la información evidenciada recientemente por:

  1. Restricción del acceso a los siguientes sitios Web:
    1.1. twimg.com, que hospeda imágenes de la red social Twitter
    1.2. pastebin.com, utilizado para compartir información como texto plano.
    1.3. bit.ly, acortador de enlaces
    1.4 zello.com, aplicación walkie-talkie virtual para hablar con otras personas en canales públicos y privados.
    1.5 Diversos portales de noticias a nivel nacional.

Esta lista es meramente enunciativa y no restrictiva, por cuanto el bloqueo de sitios se extiende a un número bastante mayor de éstos, de aproximadamente 500; pero debido a falta de transparencia desde el ente regulador respecto a cuales son estos sitios bloqueados no se cuenta con una lista completa. Los sitios bloqueados han sido reportado por usuarios alrededor del mundo en un proceso de monitoreo constante, y verificados de igual manera.

CONSIDERANDO
2. La violación a la privacidad de los ciudadanos evidenciada por la instalación de un Centro Estratégico de Seguridad y Protección de la Patria (CESPPA), entre cuyas actividades, delineadas en el decreto 458 de la Presidencia de la República Bolivariana de Venezuela, publicado en la Gaceta Oficial N°:40266 del 7 de octubre de 2013 y cuyo reglamento interno se define en la resolución número 011-14 del Ministerio para el Poder Popular del Despacho de la Presidencia y seguimiento a la gestión de Gobierno de la república Bolivariana de Venezuela, publicada en la Gaceta Oficial N°: 40355 del 13 de Febrero de 2014, está la vigilancia permanente de los flujos de información, aún cuando la Constitución de la República Bolivariana de Venezuela establece el derecho inalienable a la privacidad en su artículo 48.

CONSIDERANDO
3. El corte generalizado del acceso a internet a una región del país por parte de la compañía nacional de teléfonos de Venezuela (CANTV) desde el día miércoles 19 de febrero de 2014 hasta el viernes 21 de febrero de 2014 evidenciado por múltiples reportes ciudadanos en el estado Táchira, en atención a que las Relatorías de Libertad de Expresión de la OEA en su comunicado R50/11 consideran el acceso a Internet parte fundamental del acceso libre a la información y expresión y por tanto necesario en el ejercicio de estos derechos humanos. Agregando que existe un precedente, presentado el 14 de abril del 2013, cuando el acceso a Internet fue cortado por 4 minutos en expresas palabras del Ministro Arreaza, en respuesta a ataques a sitios y cuentas oficiales.

CONSIDERANDO
4. Las repetidas y consuetudinarias violaciones a la neutralidad de la red, principio plasmado en nuestra Ley Orgánica de Telecomunicaciones, el libre acceso a la información y la prohibición de la censura previa, presentes en la Constitución de la República Bolivariana de Venezuela (art. 58 ejusdem), e incluso normas supraconstitucionales a las que el Estado Venezolano debe apegarse por haber suscrito acuerdos, entre ellos la Declaración Universal de los Derechos Humanos en su artículo 19.

ACORDAMOS
Fijar nuestra posición en los siguientes términos:

  1. Apoyamos la declaración de la neutralidad de la red y el acceso libre a la información como principios fundamentales para el desarrollo de nuestra nación.

  2. Expresamos nuestro desacuerdo con la creación del Centro Estratégico de Seguridad y Protección de la Patria (CESPPA), fundamentado en los siguientes puntos:
    2.1. Viola nuestro ordenamiento constitucional, nuestros derechos humanos y por tanto constituye un abuso de poder.
    2.2 Está en contra de los ideales y principios que defendemos como parte de los movimientos de Software y Conocimiento Libre, puesto que CESPPA se configura en un ente de censura previa a partir de criterios de seguridad y defensa de la nación, contraviniendo normas constitucionales establecidas en el art. 57 ejusdem.
    2.3. Es un acto irresponsable de nuestra parte como ciudadanos, usuarios y especialistas en tecnologías; no hacer de conocimiento publico nuestra opinión al respecto.

  3. Expresamos nuestro desacuerdo con las acciones por parte de cualquier empresa o institución nacional y/o extranjera que puedan representar restricciones al acceso a la información.

  4. Consideramos evidente la necesidad de motivar la concientización de los ciudadanos sobre las ventajas y riesgos del uso de Internet, así como el desarrollo de habilidades que les permitan tener un desenvolvimiento activo en el mismo.

  5. Reconocemos la existencia de un instrumento legal en la Ley Especial Contra los Delitos Informáticos, para la protección, prevención y sanción de delitos cometidos contra sistemas que utilicen tecnologías de información, la cual sanciona el espionaje electrónico como delito contra la privacidad de las personas en sus artículos 20, 21 y 22. Consideramos que cualquier acción ejecutada por cualquier entidad en aras de protegerse o prevenir ataques informáticos debe estar enmarcada en los preceptos establecidos en esta Ley.

  6. Reconocemos las potencialidades del sistema educativo, así como el crecimiento de la Fundación Infocentro, que ha hecho posible el acceso de millones de venezolanos a recursos de computación e Internet de manera libre y gratuita. Consideramos que el uso eficiente de estas herramientas pueden garantizarle a los ciudadanos el desarrollo de habilidades necesarias para un uso libre, sano y positivo de Internet y de las herramientas informáticas.

  7. Consideramos que la privacidad de los ciudadanos no se puede garantizar sin hacer uso de Software libre y estándares abiertos, por lo que hacemos énfasis en la necesidad de promover el cumplimiento de la Ley de Infogobierno promulgada en Gaceta Oficial N° 40.274, que establece que todo programa informático que se desarrolle, adquiera o implemente en el Poder Público deberá ser Software Libre, con estándares abiertos, transparente y comunitario, salvo las excepciones expresamente establecidas en la Ley y previa autorización del ente competente.

Suscriben

Manuel Lucena Pérez, UNPLUG

PS1: Sólo aparece mi firma acá, porque es mi blog y sólo yo puedo hacerme responsable de las cosas que acá publico. En la petición [Ver abajo] se encuentran las firmas de todos quienes suscribieron el comunicado.

PS2: Puedes suscribir el comunicado firmando La petición en change.org

Antena amplificadora de wifi casera para ayudar al reporterismo ciudadano

Una queja recurrente de los amigos que han estado haciendo reporterismo ciudadano de las jornadas de protesta alrededor del país es que la señal de datos en dichas concentraciones suele ser bastante mala e incluso inexistente.

Se ha pedido insistentemente que los vecinos de las áreas aledañas a las zonas de concentración liberen las señales wifi de sus casas u oficinas a modo de aporte a la protesta. Para nadie es un secreto que los ISPs de Venezuela están bloqueando contenidos al mejor estilo chino[1], que los medios de comunicación social están [auto]censurados, cuando de plano no tienen material para salir a la calle[2], y la represión policial en algunos sitios es brutal[3]. Entonces, se hace necesario el uso de las herramientas sociales en la red, el reporterismo ciudadano y el cyberactivismo[4] para poder difundir el mensaje que se quiere transmitir, sea éste el que fuere.

Si no sabes liberar tu wifi (i.e.: quitarle la contraseña), pídele a un vecino o a tu «pringao»[5] de confianza que lo haga por ti.

En esa tónica, y como parte de ese aporte a la libertad de información, expresión, y, sobre todo, de conocimiento, procedo a dejar este pequeño how-to para hacer una antena casera para amplificar la señal de tu wifi para poder ayudar a quienes documentan las marchas, protestas, concentraciones, etc.

Parte I, el mise en place:
Vas a necesitar
-Latas de aluminio.
-Un cuchillo, navaja, exacto, machete, hacha… Cualquier cosa que corte y pueda hacer un agujero en la lata.
-Tijeras.
-Una regla.
-Un marcador.
-Cinta adhesiva.

Vacía la lata (DUH!!!) y lávala. Ten a mano un trapo para secar.

Parte II, la preparación:
-Quítale la pestaña a la lata
-Haz una línea que atraviese diametralmente la lata por la parte de arriba, de preferencia longitudinalmente al gancho que queda al retirar la pestaña.

-Usa de guía esa línea, para hacer otra que atraviese el alto de la lata

-Guíate de nuevo con la regla para ubicarte exactamente a 180º de la línea trazada, haz una marca y mide 1cm de ambos lados, así:

-Con el instrumento para cortar, haz agujeros a ambos lados de la línea trazada a lo alto de la lata, en el extremo de la misma. Ver imagen.

-Procede a cortarla, en el extremo opuesto a donde se abre, córtala completamente. Del otro lado, hasta las marcas hechas a 1cm de la marca del opuesto al inicio del corte. Debería quedar así:

-Abre las pestañas que acabas de hacer y estíralas para que haga la forma más parecida a una parábola. Debería quedar más o menos así:

-Pon un poco de cinta en la parte de abajo del extremo que no cortaste completamente, así:

-Por último, coloca la «parabólica» introduciendo la antena de tu enrutador por el agujero de la lata y asegúrala presionando la cinta doble faz.

A modo de comentario: Este tipo de antenas, en mi experiencia, pueden duplicar -y a veces hasta triplicar- la intensidad de la señal. Al final, no sólo será un aporte a aquellos que quieren documentar las protestas, sino que redundará en su beneficio, al disponer de una mejor señal wifi en su casa u oficina. Y sin hacer inversiones en amplificadores de marca que hacen el mismo trabajo.

[1]: http://ghostbar.co/2014/02/15/si-nos-bloquearon/
[2]: http://elimpulso.com/articulo/el-impulso-seguimos-en-la-lucha-para-solucionar-la-situacion-del-papel-comunicado#.UwN3WXl5vVM
[3]: http://www.youtube.com/watch?v=pHZJOYHVc8U
[4]: http://es.wikipedia.org/wiki/Ciberactivismo
[5]: http://www.frikipedia.es/friki/Pringao (El tono cómico del post)

Proxy transparente en Debian: The revolution is here!!

Con todo este rollo de los blackouts informativos que se están generando en Venezuela, no sería de extrañar que oficialicen lo que ya han venido haciendo por partes los ISPs: Bloquear los dominios que les son incómodos.

Entonces, para evitarme presentes y futuros dolores de cabeza por esa causa, me decidí a instalar un proxy transparente para usarlo como pasarela. De este modo, mi salida es desde un servidor fuera del país y paso «colado» los bloqueos.

Parte I: El Mise en Place
Necesitamos:
-Un VPS, hay varias opciones. Googleando un poco puedes conseguir unas a precios bastante accesibles. El problema es que se pagan en dólares. Entonces, hay opciones como host1free que te dan un vps muy reducido de forma gratuita. Lo malo de esto es que debes esperar un tiempo (que puede extenderse a un par de meses, como en mi caso) a que lo activen.
-Squid, del lado del servidor
-BIND (Opcional), para poder tener resoluciones reversas y poder saltarse algunos proxy scanners que consigas por allí.
-El cliente donde vas a configurar la navegación anónima

En este caso, uso un vps con debian estable, y configuro tanto firefox como chrome/chromium

Parte II: La preparación
A) Del lado del server
-Instala squid con

# apt-get install squid3 squid3-common -y

-Busca el archivo de autenticación de squid con

# dpkg -L squid3 | grep -w ncsa_auth

Debería regresar algo como esto:

/usr/lib/squid3/ncsa_auth

Toma nota de ese path, porque debes modificar el squid.conf con él

-Respalda squid.conf y edítalo

cp /etc/squid3/squid.conf /etc/squid3/squid.conf.bak
nano /etc/squid3/squid.conf

Pastea lo siguiente:

auth_param basic program /usr/lib/squid3/ncsa_auth /etc/squid3/passwd
auth_param basic children 5
auth_param basic realm please login to the squid server?
auth_param basic credentialsttl 2 hours
auth_param basic casesensitive off

acl ncsa_users proxy_auth REQUIRED
http_access allow ncsa_users
acl manager proto cache_object
acl localhost src 127.0.0.1/32 ::1
acl to_localhost dst 127.0.0.0/8 0.0.0.0/32 ::1
acl localnet src 10.0.0.0/8 # RFC1918 possible internal network
acl localnet src 172.16.0.0/12 # RFC1918 possible internal network
acl localnet src 192.168.0.0/16 # RFC1918 possible internal network
acl localnet src fc00::/7 # RFC 4193 local private network range
acl localnet src fe80::/10 # RFC 4291 link-local (directly plugged) machines
acl SSL_ports port 443
acl Safe_ports port 80 # http
acl Safe_ports port 21 # ftp
acl Safe_ports port 443 # https
acl Safe_ports port 70 # gopher
acl Safe_ports port 210 # wais
acl Safe_ports port 1025-65535 # unregistered ports
acl Safe_ports port 280 # http-mgmt
acl Safe_ports port 488 # gss-http
acl Safe_ports port 591 # filemaker
acl Safe_ports port 777 # multiling http
acl Safe_ports port 901 # SWAT
acl CONNECT method CONNECT
http_access allow manager localhost
http_access deny manager
http_access deny !Safe_ports
http_access deny CONNECT !SSL_ports
http_access allow localnet
http_access allow localhost
http_access allow localhost
http_access deny all
http_port 2222
coredump_dir /var/cache/squid
refresh_pattern ^ftp: 1440 20% 10080
refresh_pattern ^gopher: 1440 0% 1440
refresh_pattern -i (/cgi-bin/|\?) 0 0% 0
refresh_pattern . 0 20% 4320

icp_access allow localnet
icp_access deny all
acl ip1 myip XXX.XX.XX.XXX
tcp_outgoing_address XXX.XX.XX.XXX ip1
cache_mgr example@example.net
cache_mem 64 MB
visible_hostname example.com
maximum_object_size 10 MB

forwarded_for off
request_header_access Allow allow all
request_header_access Authorization allow all
request_header_access WWW-Authenticate allow all
request_header_access Proxy-Authorization allow all
request_header_access Proxy-Authenticate allow all
request_header_access Cache-Control allow all
request_header_access Content-Encoding allow all
request_header_access Content-Length allow all
request_header_access Content-Type allow all
request_header_access Date allow all
request_header_access Expires allow all
request_header_access Host allow all
request_header_access If-Modified-Since allow all
request_header_access Last-Modified allow all
request_header_access Location allow all
request_header_access Pragma allow all
request_header_access Accept allow all
request_header_access Accept-Charset allow all
request_header_access Accept-Encoding allow all
request_header_access Accept-Language allow all
request_header_access Content-Language allow all
request_header_access Mime-Version allow all
request_header_access Retry-After allow all
request_header_access Title allow all
request_header_access Connection allow all
request_header_access Proxy-Connection allow all
request_header_access User-Agent allow all
request_header_access Cookie allow all
request_header_access All deny all

shutdown_lifetime 3 seconds

Cambia al path que conseguiste anteriormente. Debe quedar así:

auth_param basic program /usr/lib/squid3/ncsa_auth /etc/squid3/passwd

Cambia XX.XXX.XXX.XX a tu ip. Puedes usar whatsmyip.org para descubrir cuál es.

-Crea una clave para acceder al proxy

# htpasswd -c /etc/squid3/passwd tu_usuario

-Reinicia Squid

# service squid3 restart

B) Del lado del cliente:
Si usas Firefox, en las preferencias está la posibilidad de cambiar el proxy.

Si usas Chrome/Chromium, hay dos posibilidades:
-Tu sistema operativo permite configurar via GUI. O sea, usas windows, macos, o algún entorno de escritorio en Linux como xfce4, gnome o kde. En ese caso, úsalos.
-Usas openbox, lxde o algún otro entorno en linux. En ese caso, modifica /usr/share/applications/[chrome/chromium].desktop. Y modificas la línea de exec a:

Exec=/usr/bin/chromium --proxy-server="servidor:puerto"

Donde servidor es el ip de tu servidor y el puerto es el 2222

Happy proxying.

Fuentes:

Install and configure private anonymous proxy server using Squid in Debian 6


http://blog.desdelinux.net/usar-proxy-en-chromium-chrome/

Publicada en SL

If she’s God, I’m the Flying Spaghetti Monster

hatredmachine:/home/manuel# login
hatredmachine nombre: fsm
Contraseña:
Linux hatredmachine 2.6.23 #1 SMP Sat Nov 10 20:53:18 VET 2007 x86_64

The programs included with the Debian GNU/Linux system are free software;
the exact distribution terms for each program are described in the
individual files in /usr/share/doc/*/copyright.

Debian GNU/Linux comes with ABSOLUTELY NO WARRANTY, to the extent
permitted by applicable law.
Sin directorio, entrando con HOME=/
1 fallo desde la última entrada.
La última fue vie 29 feb 2008 17:12:53 VET en pts/2.
fsm@hatredmachine:/$ cat /proc/version
Linux version 2.6.23 (root@hatredmachine) (gcc version 4.2.3 20071014 (prerelease) (Debian 4.2.2-3)) #1 SMP Sat Nov 10 20:53:18 VET 2007
fsm@hatredmachine:/$ cat /proc/cpuinfo
processor : 0
vendor_id : AuthenticAMD
cpu family : 15
model : 4
model name : AMD Athlon(tm) 64 Processor 2800+
stepping : 10
cpu MHz : 1799.519
cache size : 512 KB
fpu : yes
fpu_exception : yes
cpuid level : 1
wp : yes
flags : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush mmx fxsr sse sse2 syscall nx mmxext lm 3dnowext 3dnow up rep_good
bogomips : 3600.88
TLB size : 1024 4K pages
clflush size : 64
cache_alignment : 64
address sizes : 40 bits physical, 48 bits virtual
power management: ts fid vid ttp

fsm@hatredmachine:/$

Johanna is God!!

Aurora:/home/johanna# login
Aurora nombre: god
Contraseña:
Último inicio de sesión:jue feb 28 17:28:42 COT 2008en pts/0
Linux Aurora 2.6.22-3-686 #1 SMP Sun Feb 10 20:20:49 UTC 2008 i686
The programs included with the Debian GNU/Linux system are free software;
the exact distribution terms for each program are described in the
individual files in /usr/share/doc/*/copyright.
Debian GNU/Linux comes with ABSOLUTELY NO WARRANTY, to the extent
permitted by applicable law.
god@Aurora:~$

Skype a lo macho…

Sí… sé que Skype es privativo y toda la paja loca. Pero, por insistencia de Johanna terminé instalándolo. Pensé que iba a ser una tortura peor que la de la impresora, pero terminó siendo un paseo. Les explico…

Bajé Skype de la página oficial. No sé si el mirror que tienen siempre está crowded o si lo tienen con poco bw a propósito, pero tardó la eternidad de la vida bajando el debian package (Que, valga la acotación, sólo está en arquitectura i386). Luego, y teniendo en cuenta la salvedad anterior, tengo que instalarlo a lo macho (Y de allí el título de este post)

hatredmachine:/home/manuel# dpkg --force-architecture -i skype-debian_1.4.0.118-1_i386.deb
dpkg - aviso, no se tendrá en cuenta el problema por estar activa
una opción --force:
la arquitectura del paquete (i386) no corresponde con la del sistema (amd64)
Seleccionando el paquete skype previamente no seleccionado.
(Leyendo la base de datos ...
169626 ficheros y directorios instalados actualmente.)
Desempaquetando skype (de skype-debian_1.4.0.118-1_i386.deb) ...
Configurando skype (1.4.0.118-1) ...

Pero, sabiendo que me iba a causar problemas haber instalado con –force-architecture, me pongo a googlear para leer las experiencias de los demás usuarios. Leyendo el post de Joteiro me dí cuenta que el tweak es medio fumado, pero efectivo: Sólo hay que hacer el siguiente tweak:

hatredmachine:/home/manuel# find /usr/lib* | grep libXss.so*
/usr/lib/libXss.so.1
/usr/lib/libXss.so.1.0.0
hatredmachine:/home/manuel# cp /usr/lib/libXss.so.1* /usr/lib32/

Et voilà! Skype funcionando…

Aventuras con la hp deskjet d4160

Por cosas de la vida, no había tenido la necesidad de tener una impresora en casa. Bien fuese que tenía una en la oficina, que me iba a x sitio y pagaba por la impresión o lo que fuese. El hecho es que no me había molestado en tener una impresora en casa. Luego de pensármelo bien, decidí irme a comprar una baratonga pero funcional. La opción obvia es HP por aquello de que los consumibles se consiguen en todos lados y que _cualquiera_ recarga cartuchos HP porque siempre tienen repuestos. Entonces, ni corto ni perezoso me dirigí a mi proveedor de confianza, a quien le solicité me diera una HP DeskJet D4160. Cuando salgo de la tienda orgulloso de mi nueva adquisición me viene un pensamiento a la cabeza: Esta impresora necesita módulo de kernel… Vas a tener que darte golpes para que funcione.

Habiendo llegado a casa, habiendo limpiado la mesa donde la iba a poner, quitando adhesivos, bolsas, cubiertas y plásticos diversos, logro armar la impresora, conectar sus cables, instalar sus cartuchos y, finalmente, usar el cable USB de mi nunca bien ponderado Efficient SpeedStream ADSL Modem, el cuál nunca usé porque siempre he montado mi modem desde Ethernet por aquello de que es -o era, en realidad nunca me he molestado en informarme- un rollo aquello de hacer que un modem ADSL funcione por usb en GNU/Linux.

Evidentemente, y muy a pesar de que lsusb me dice que la impresora está allí, kcontrol no la detecta ni queriendo. Esto quiere decir sólo una cosa: necesito el módulo respectivo. Lo que implica una serie de situaciones y eventuales complicaciones que van a hacer más divertida esta experiencia de impresión. Raudo y veloz me dirijo a mi amada cónsola y ejecuto:

apt-get install -y hplip hplip-gui

Lo que me arroja, líneas más o menos, el siguiente output:

Se instalarán los siguientes paquetes NUEVOS:
avahi-daemon avahi-utils cupsys cupsys-client cupsys-common foomatic-db foomatic-db-engine foomatic-filters gs-esp hpijs
hpijs-ppds hplip hplip-data hplip-gui libavahi-core5 libcupsimage2 libdaemon0 libnss-mdns poppler-utils psfontmgr
python-imaging python-qt3 python-reportlab samba-common smbclient ssl-cert
0 actualizados, 26 se instalarán, 0 para eliminar y 9 no actualizados.
Necesito descargar 31,2MB de archivos.
After this operation, 113MB of additional disk space will be used.

Luego de bajar unos cuantos paquetes sin pena ni gloria, me encuentro con la primera agradabilísima sorpresa:

Err http://ftp.debian.org lenny/main poppler-utils 0.6.2-1
404 Not Found

¿Y esto qué quiere decir? Que me toca esperar que termine de bajar todo y me mande a la porra, recomendándome que ejecute apt-get install –fix-missing para solventar la situación. Lo que hago mientras eso ocurre es la solución salomónica pero suicida: Bajar de la página de paquetes de Debian el paquete respectivo para poder instalar sin mayores complicaciones. Resulta bien el download, y lo muevo a /var/cache/apt/archives/ para que el nuevo apt-get install -y hplip hplip-gui lo instale como si lo hubiese halado de los repos. El pequeño detalle es que el mirror oficial de Debian anda lentejuela y me está bajando paquetes de siete megas a eso de quince kb/s. Pienso que la cosa es culpa de LastFm, pero éste sólo hala cerca de 3 kb/s, cual shoutcast server. Todo el trabajo de esta gente es server side, así que mi bandwidth no se vé muy afectado cuando escucho música.

Finalmente, baja los archivos que necesita y me pinta la paloma de la paz, por lo que el tweak de mover el archivo al directorio correspondiente ha sido tan inútil como el relanzamiento del comando Maisanta. Pues, entonces me sale hacerlo a pata. Es decir, dpkg -i nombredelarchivo con eso. el paquete se instala sin problemas, lo que pienso es el final de esta historia y sólo me falta hacer las movidas respectivas en mi servidor de impresión. Grave error. De todas maneras, el sentido común me dice que necesito instalar desde el gui de hp para que al menos cups la detecte. Cosa que hago, pero que no funciona luego de haber reiniciado cups. Ya que no funciona, me dirijo a leer la documentación respectiva en la página oficial del proyecto.

Luego de leer los documentos respectivos, me doy cuenta que hay algunos paquetes que necesito instalar. Ya que me da flojera hacerlo a mano, digo lo que el manual me dice que haga:

hatredmachine:/home/manuel# apt-get install --force-yes -y cupsys cupsys-client libcupsys2-dev cupsys-bsd g++ gs-esp libssl-dev libjpeg62-dev libsnmp-dev libc6 libtool libusb-dev make python-imaging python-qt3 python-dev python python python-reportlab libsane libsane-dev sane-utils sane
[…]
Se instalarán los siguientes paquetes NUEVOS:
comerr-dev cupsys-bsd libcupsys2-dev libexif-dev libgphoto2-2-dev libieee1284-3-dev libkadm55 libkrb5-dev libltdl3-dev
libsane-dev libsane-extras-dev libsensors-dev libsnmp-dev libsnmp-perl libssl-dev libtiff4-dev libtiffxx0c2 libtool
libusb-dev libwrap0-dev python-dev sane sane-utils
0 actualizados, 23 se instalarán, 0 para eliminar y 9 no actualizados.
Necesito descargar 13,6MB de archivos.
After this operation, 46,8MB of additional disk space will be used.

Hay una Ley de Murphy de la computación que dice: «No importa cuántos recursos tengas disponibles, jamás serán suficientes». A lo que yo añadiría: «Cuando necesitas n fuentes o n componentes para lograr una tarea, siempre tendrás al menos n-1 de éstos». Y eso es lo que me ha estado pasando todo este rato…

Err http://debian.cantv.net testing/main comerr-dev 2.1-1.40.5-2
404 Not Found

Es decir, una vez más me sale ir a la página de paquetes de Debian a buscar uno que me sirva para cubrir la necesidad que tengo dentro de mi sistema. Ya bajado el archivo y movido a la ubicación respectiva, espero que el apt-get install se termine de ejecutar para hacer la instalación respectiva, me pongo a buscar un archivo eqf de Winamp para promar mis audífonos nuevos, producto de una compra impulsiva en la tienda de computación. Si algunas mujeres van a un centro comercial y salen con cualquier cantidad de cosas distintas a las que fueron a buscar, creo que los geeks vamos a las tiendas de computación y salimos con más cosas de las que necesitamos o fuimos a buscar. Es una costumbre.

Instalar un archivo bajado desde la página de paquetes puede ser una experiencia satisfactoria. Claro, que también puede que signifique…

Desempaquetando comerr-dev (de .../comerr-dev_2.1-1.40.6-1_amd64.deb) ...
dpkg: problemas de dependencias impiden la configuración de comerr-dev:
comerr-dev depende de libcomerr2 (= 1.40.6-1); sin embargo:
La versión de `libcomerr2' en el sistema es 1.40.5-2.
dpkg: error al procesar comerr-dev (--install):
problemas de dependencias - se deja sin configurar
Se encontraron errores al procesar:
comerr-dev

… que hay una divergencia de versiones. Que la versión instalada de la librería base sea diferente a la versión que requiere la librería de desarrollo que estás tratando de instalar. Cosa que ocurrió en este caso. Pues, toca instalar libcomerr2-1.40.6-1.

Una vez que bajo e instalo la versión nueva de libcommer2, que me permite instalar commer-dev y, a su vez, me permite un dpkg-reconfigure hplip hplip-gui para que finalmente la instalación de los módulos correspondientes se haga, ejecuto una vez más hp-setup desde cónsola para detectar/instalar/configurar la impresora. Sin penas ni glorias, ocurre esto y aparentemente la fortuna me sonríe, lo cual corroboro cuando entro a cups desde mi browser y me doy cuenta que no hizo falta configurarla porque estaba detectada y lista para funcionar.

No crean, ni por casualidad que este engorroso trabajo me hace perder las ganas de trabajar con GNU/Linux , ya que hay cosas muchísimo más complicadas de hacer que funcionen. Sin embargo, entiendo que en otros sistemas operativos el trabajo de instalar una impresora es trivial y cualquier persona lo puede hacer. De igual manera, situaciones como estas son las que alejan a los usuarios finales, que hay cosas más importantes que hacer que instalar una impresora como para perder dos horas de tu vida en ello y que, probablemente, por cuestiones de comodidad vas a usar Ubuntu o Windows porque las detecta de una vez. Yo, mis panas, me quedo con Debian.