lunes, 5 de mayo de 2014

Pequeño resumen sin mucho detalle: Cinnamon nuevamente

Para Enero del 2013 me tomé unos días de mis vacaciones y me dediqué a bajar paquetes, correr slackbuilds e instalar todo y quedé encantado con el resultado: había logrado tener corriendo Cinnamon en Slackware. 
La alegría duró poco. Al ir actualizando Slackware (utilizo -current) Cinnamon se fue rompiendo de a poco, hasta que todo estuvo totalmente roto. Me resigné a no usarlo y usar mi querido kde que --la verdad-- no me ha dado ni un solo dolor de cabeza. Pero Cinnamon no me desagrada y, cuando -current llegó a convertirse en Slackware 14.1, pensé que por ahí tenía la chance de reinstalar Cinnamon, a esta altura del partido ya en su versión 2.x.x.
Decidí primero instalar slackware 14.1 en una máquina virtual Virtualbox, y desde esa instalación limpia, instalar Dropline para satisfacer todas las posibles dependencias que Cinnamon pudiera necesitar de Gnome. 
El resultado fue un desastre. Ni Dropline Gnome funcionó, ni pude hacer que funcionara Cinnamón. Esa vez no me puse a averiguar qué había pasado; simplemente no me importó (demasiado) el fracaso. Ya lo dije: siempre vuelvo a KDE, así como siempre vuelvo a Slackware. Pero lo importante, claro, es ver qué tan buenas son las otras opciones. Me obligué a olvidar el escritorio de Linux Mint, probé Elementary OS, que ni fu ni fa... volví a Slackware, vuelví a KDE, y un día veo que...

De nuevo desde Indonesia


...Bueno, veo esto, y más tarde veo esto otro. Resumiendo: Willy Sudiarto Raharjo se tomó el trabajo de probar instalar Cinnamon, y no solo eso, sino que no solo instaló, además creó toda una serie de Slackbuilds para instalar el Escritorio, y un script que lo hace todo por uno ¡Gracias Willy! Gracias a gente como él gente como yo puede disfrutar de un software que le gusta.

Una pequena captura de pantalla:


En la captura se aprecia Cinnamon, un par de instancias de Gkrellm (una de mi pc y otra que monitoriza un servidor remoto), un applet de reloj (abajo a la derecha) y el cat-clock de los Google gadgets for linux. También se puede apreciar un dock, que es el mismo de Elementary OS, llamado Plank.

Instalación


Desde el repositorio Git de los slackbuilds para Cinnamon de willy, podemos bajar un archivo zip con todos los scripts, o bien podemos ejecutar:

$ git clone https://github.com/willysr/csb.git

y clonar el directorio con todo lo necesario para la instalación. Como resultado de extraer el contenido del archivo zip, o de clonar el repositorio, nos encontraremos con una carpeta llamada csb con las instrucciones necesarias para realizar la instalación. Simplemente buscamos el ejecutable build-cinnamon.sh y lo ejecutamos. El script se encargará de chequear que tengamos las fuentes de cada paquete, en un determinado orden; si las fuentes no están, las descarga, las compila, crea el paquete slackware y lo instala.
Una vez que todos los paquetes están instalados seleccionamos cinnamon-session mediante xwmconfig, tal como indica la siguiente figura:


Y eso es todo. Como yo no utilizo kdm, simplemente ejecuto startx y listo.

Saludos.

sábado, 11 de enero de 2014

Gracias a android: dnsmasq

Antecedentes


Pasó lo que tenía que pasar: el 21 de diciembre la PC que hace de server (ochentayseis) murió. De algún modo, de alguna forma, el disco rígido se apagó para no volver a prenderse.
No sería tan trágico si solamente mi (otro) blog hubiera desaparecido. El problema fue que la página de mi señora (sop.no-ip.info) también desapareció. 
Al menos estaba preparado y tenía backups de los foros y de las imágenes y artículos... en el mismo disco rígido que no funcionó más, así que aprendí que los backups no se hacen en el mismo rígido: se deben hacer en otro rígido, o en otra unidad distinta de la que están, y si tenes varias pc's en red, pues podes poner tus backups en otras unidades de red.
Más allá de las lecciones aprendidas, quedaba el tema de poner nuevamente el sitio de mi señora online. De pura casualidad, tenía por ahí, guardada en lo más hondo de mi /home una máquina virtual con un Slackware 12.1 que tenía una copia de sop.no-ip.info... puse a funcionar esa máquina mientras en un disco rígido nuevo instalaba un Slackware 14.1 y preparaba todo para que ochentayseis volviera a vivir.

El asunto, resumiendo, es que sop.no-ip.info quedo levantado y con tráfico, desde la máquina virtual primero, y desde el recién instalado Slackware 14.1 después. Mi propio blog no tenía backup, así que no se que va a pasar con él. Supongo que cuando tenga más tiempo lo voy a resucitar de alguna forma (y creo que es totalmente posible que lo haga, con ayuda de google).
Ya que estaba, quise aprovechar la instalación limpia de Slackware y migrar el site de mi señora, que está conformado por páginas estáticas, y montarlo sobre una plataforma Wordpress. Ya había comenzado a migrar algunas cosas, pero no con ímpetu... así que ya que estaba... puse manos a la obra y comencé a trabajar. Pueden darle una mirada a cómo va quedando: sop.no-ip.info/blog, aunque aún es un trabajo que aún no está concluido. 

De paso, ya que estaba, también quise optimizar un poco los contenidos de ambos sitios, es decir, de las páginas estáticas y del blog, y en parte logré esos objetivos: el servidor Apache tiene una performance aceptable para el trafico que genera (que es bastante poco, hay que aceptarlo), y las páginas del blog se adecuan al medio en que son servidas. Mmm, quedó difícil... traduzco: el blog se muestra --en tablets y pc's de escritorio--, en su tamaño normal, y en móviles muestra otro form factor que hace hincapié en la legibilidad de los contenidos. Es mejor mostrarlo en imágenes:

El blog visto en una pc de escritorio o tablet
El blog visto en un teléfono celular

El problema


Todo esto que estoy contando no tiene mucho que ver con el título del post, pero puedo decir que fue la plataforma desde la cual despegó el tema que quiero tratar.

Continúo:

Mientras armaba el blog y le agregaba plugins y cambiaba los colores de fondo y configuraba wp-super-cache y etc etc, quería ir viendo cómo iba quedando el diseño y si el super-cache funcionaba (y sí, funciona). La máquina que hace de server (ochentayseis) "sirve" (evidentemente) a internet y a mi propia red local. Yo, desde mi PC (noventaynueve) voy a un navegador y pongo sop.no-ip.info/blog y listo, veo lo que estoy haciendo y cómo va quedando todo. Esto es así, es decir, puedo ver el blog, porque en un archivo local, en noventaynueve, llamado:

/etc/hosts

tengo las siguientes líneas:



#
# hosts This file describes a number of hostname-to-address
# mappings for the TCP/IP subsystem.  It is mostly
# used at boot time, when no name servers are running.
# On small systems, this file can be used instead of a
# "named" name server.  Just add the names, addresses
# and any aliases to this file...
#
# By the way, Arnt Gulbrandsen <agulbra@nvg.unit.no> says that 127.0.0.1
# should NEVER be named with the name of the machine.  It causes problems
# for some (stupid) programs, irc and reputedly talk. :^)
#

# For loopbacking.
127.0.0.1 localhost
192.168.1.33 noventaynueve.control.org noventaynueve 
192.168.1.36 sop.no-ip.info
192.168.1.36 ulijese.no-ip.org
# End of hosts.

Es decir, en noventaynueve, cuando yo pongo la dirección sop.no-ip.info, la petición no sale hacia el lado de internet, sino que se busca en mi propia red local, porque eso mismo es lo que /etc/hosts está diciendo: si en un navegador escribis tal dirección, y esta está referenciada en /etc/hosts, la petición se envia a la ip que le corresponde. En la transcripción del archivo que puse a modo de ejemplo se puede ver que ulijese.no-ip.org tiene la misma ip de host, pero como ese site falleció junto al disco rígido, cuando yo en un navegador ponga ulijese.no-ip.org voy a terminar viendo sop.no-ip.info porque ese es el site que se está sirviendo en la ip referida, en este caso 192.168.1.36.

Y entonces?


¿Y entonces maestro, cuál es el problema? 
Bueno, decía que en la red local no tengo ningún drama; todas las pc's (incluso las que tienen windows) tienen un archivo hosts que referencia algunas ip's con algunos nombres de máquina o direcciones de red o direcciones de páginas web.
Peerooo...
Pero pasó que quería probar cómo se veía el blog en mi teléfono celular. En su momento tuve un maravilloso Nokia N9 que, adivinen, tenía editable el archivo /etc/hosts si me logueaba como root. Cero dramas por ese lado, pero fue amargo descubrir que los dispositivos android, a menos que esten rooteados, no te permiten editar /etc/hosts.  Es una cosa indignante, pero es así. Una cosa tan insignificante y no te dejan... como si no pagaras un buen dinero por tu dispositivo, encima no te lo dejan tocar como vos querés... 
¿Podría rootear los móviles y las tablets? Seguro que podría ¿Y con éxito? Bueno, eso ya es más difícil, pero sí, un 80% de éxito ¿Y sin perder tiempo en buscar información y los programas necesarios y etc. etc.? Definitivamente no, no tengo ganas.
Para rootear mis dispositivos tenía (tengo) puras desventajas. Algunas de ellas: 
  • Pierdo la garantía del equipo. 
  • Pierdo tiempo.
  • Si algo malo ocurre, me echan de casa (piensen qué pasa si no funciona más la tablet de mi mujer, por ejemplo, o su teléfono)
Como soy un tipo muy despierto, estuve varios meses pensando en la solución. Divagaba, y entre esos divagues estaba el hacer que una de las máquinas de la red se convirtiera en servidor DNS, de forma tal que resolviera en la red local y las direcciones que no perteneciesen a esa red local se buscaran resolver fuera, en el DNS externo que te da el Internet provider. ¿Podría hacerse? ¿Cómo podría?

Cerca de la solución


Como estoy de vacaciones, estaba cierta madrugada luchando para ver el blog de mi señora en el celular y en la tablet, porque si querés hacerlo, podés hacerlo... ¿Cómo? De una forma que para mí es incómoda y no muy práctica: habilitas la zona activa del celular, que mediante wifi le da datos de la red móvil al resto de los dispositivos wifi que los admitan. Entonces desde el celular y desde la tablet podía ver cómo iba quedando el blog. 
¿Por qué digo que es incómodo (cuando el resultado termina siendo el mismo)? por esto:

Habilitar zona activa --> deshabilitar red wifi local de la tablet --> habilitar red wifi con la zona activa --> navegar y comprobar cómo quedo todo --> rogar que anden los datos móviles (Movistar no siempre anda bien) --> deshabilitar wifi con zona activa --> habilitar wifi de red local en la tablet --> deshabilitar zona activa.

Muchos pasos para poder chequear un pequeño cambio en una página.
Ya cansado de hacer esto tres o cuatro veces la misma noche, decidí ponerme a investigar cómo llevar a cabo la operación habilitar un servidor DNS. Lo suponía complicado, así que lo primero que hice fue una búsqueda pequeña en google. Encontre a BIND y unos excelentes artículos de cómo configurarlo (eran exhaustivos). También era algo complejo, como pensaba, tal vez demasiado para lo que pretendía. Cuando me decidí a implementarlo (realmente estaba cansado de hacer ese truquito de la zona activa) encontré este artículo, y me lo leí de cabo a rabo... y fue por eso que, justamente, descubrí lo que sería la solución.

DNSMASQ: La solución que estaba buscando


Al final del articulo mencionado anteriormente ponen lo siguiente: 
Nota

Bind está pensado para ser un servidor DNS de grandes redes pero para pequeñas redes como la de un centro educativo es suficiente dnsmasq, mucho más sencillo de configurar

¡Lo que es totalmente cierto! El artículo que refiere cómo configurar dnsmasq es este. Gracias a él dí con la solución. Si bien es cierto que si leen el link sabrán cómo se hace en su totalidad y harán de este artículo algo inútil, yo igual voy a referir los pasos que dí para que funcionara en mi red, que no fueron muchos.

Primero, les presento mi red:

Dónde:

  • Zyxel p-600 es el modem ADSL y el servidor dhcp de toda la red, también pasarela predeterminada (gateway IP 192.168.1.1)
  • SW1 es un switch de 8 bocas x 1GB/s cada una
  • SW2 idem anterior
  • ochentayseis es la máquina que hace de server (IP 192.168.1.36)
  • noventaynueve es mi máquina (IP 192.168.1.33).
  • trece es una máquina virtual que corro desde noventaynueve de vez en cuando.
  • PC W7 es una pc con windows 7
  • Creo que todo lo demás es auto-explicable (tablets, laptop, celulares, centro multimedia, tv, directv)
Dnsmasq no solo servirá como un servidor DNS, sino que también podría servir como un servidor DHCP. En el caso de mi red, esa función la cumple el modem ADSL, por lo tanto, no voy a utilizar esa característica de dnsmasq.

Primero debo habilitar el servicio dnsmasq. El tema es dónde voy a habilitarlo: lo haré en ochentayseis, que es la máquina que hace de server y que estará permanentemente encendida. Estará además encargada de funcionar como DNS de todas las demás máquinas de la red. 
Hay que recordar que en Slackware el servicio de dnsmasq no viene habilitado por defecto, por lo que, si queremos que arranque cada vez que se inicia el sistema, deberemos darle primero permiso de ejecucioón al script:

/etc/rc.d/rc.dnsmasq

Luego de darle permiso de ejecución, lo ejecutamos;

root@ochentayseis:/etc/rc.d# ./rc.dnsmasq start

A partir de ese momento ya esta corriendo dnsmasq. Lo comprobamos:

root@ochentayseis:~# ps ax | grep dns
25339 ?        S      0:04 /usr/sbin/dnsmasq
27881 pts/3    S+     0:00 grep dns

Ahora comprobamos que exista el archivo:

/etc/resolv.conf

y que tenga configurados los servidores de nombres externos (en mi caso, los de google)

root@ochentayseis:~# cat /etc/resolv.conf 
search control.org
nameserver 8.8.8.8
nameserver 8.8.4.4

De esta forma, ochentayseis se ha convertido (mediante dnsmasq) en un servidor DNS. Lo que resta es configurar los clientes, es decir, el resto de los elementos de la red.
Mi máquina, la noventaynueve, utiliza para configurar y conectar la red networkmanager, que es el programa que se encargará de escribir /etc/resolv.conf. Para cambiar los DNS, primero desconectamos la sesión actual, vamos a la configuración correspondiente a DNS, ponemos como primer DNS a la dirección de nuestro server con dnsmasq (en mi caso la dirección de ochentayseis, 192.168.1.36) y como DNS secundario el de google por si algo le pasa a ochentayseis, porque siempre hay que tener un plan antidesastres, ¿verdad?

Propiedades dns de Networkmanager

Una vez que terminemos, damos ok y volvemos a levantar la red. De esta forma networkmanager reescribirá el archivo /etc/resolv.conf con los nuevos valores, y la máquina recién configurada buscará como servidor DNS a la que tiene corriendo dnsmasq. Lo mismo tuvo que hacerse con la máquina con windows 7 y con la laptop que tiene windows vista: el servidor DNS primario quedó con la direccion 192.168.1.36, y el secundario con la dirección de google 8.8.8.8.

De esta forma ya está configurado el DNS (externo) para toda la red. Las máquinas buscan resolver yendo a ochentayseis, y ochentayseis busca los servidores de google. Ahora bien, ¿cómo hará dnsmasq para resolver la red interna? Utilizando el archivo /etc/hosts. En el caso de ochentayseis, tengo:

root@ochentayseis:~# cat /etc/hosts
#
# hosts         This file describes a number of hostname-to-address
#               mappings for the TCP/IP subsystem.  It is mostly
#               used at boot time, when no name servers are running.
#               On small systems, this file can be used instead of a
#               "named" name server.  Just add the names, addresses
#               and any aliases to this file...
#
# By the way, Arnt Gulbrandsen <agulbra@nvg.unit.no> says that 127.0.0.1
# should NEVER be named with the name of the machine.  It causes problems
# for some (stupid) programs, irc and reputedly talk. :^)
#

# For loopbacking.
127.0.0.1               localhost sop.no-ip.info
192.168.1.36            sop.no-ip.info  ochentayseis.control.org ochentayseis

# End of hosts.


Cada vez que se agregue un elemento de red a /etc/hosts debe reiniciarse dnsmasq. Se hace de la siguiente forma:

root@ochentayseis:/etc/rc.d# ./rc.dnsmasq restart

Solo faltaba una configuración más para que los móviles funcionaran: entrar a la configuración del modem Zyxel y cambiar en él los DNS. ¿Por qué? Pues porque los dispositivos android (no se si todos, pero por lo menos los que yo tengo) no permiten ningún tipo de configuración, simplemente "descubren" la red wifi y la utilizan. Si la red wifi sigue resolviendo por los DNS predeterminados del modem ADSL, todo lo hecho no valdría para nada... así que entonces entramos a la configuración del modem y...
Configuración DNS en setup del modem ADSL Zyxel P600
En Primary DNS server ponemos la dirección de la máquina con dnsmasq, y como Secondary DNS server la direccion 8.8.8.8 de google (en mi caso) o la del internet provider que ustedes tengan.
De esta forma conseguí entrar desde los celulares y las tablets mediante la red wifi a los sites que tengo en mi server dentro de mi lan. 
=) Saludos.

jueves, 17 de enero de 2013

Año nuevo, Desktop nuevo: Slackware y Cinnamon

Más allá de Slackware...


No puedo negar que Linux Mint que partió la cabeza. Es que, en realidad, yo hace rato que no me despego de Slackware -ya está por su versión 14, y yo la uso desde la 8- y de su forma de hacer las cosas (una forma que yo adopté con gusto, por otra parte): mantener las cosas lo mas simple posible, y cuando necesitas algo que no viene con la distribución, buscarlo por el repositorio de slackbuilds, o por el de Eric Hameleers, o compilando e instalando directamente, sin pensar en que, por algún motivo o circunstancia,  después lo vas a tener que  desinstalar o actualizar. Suelo instalar a lo macho muchos programas, casi todos codecs y programas de reproduccion y edición de video, llámense éstos VLC, Mplayer, fmpeg, avidemux, etc..
Mientras yo vivía esto con Slackware, el mundo de Linux no detuvo su marcha; digamos que siguió su evolución. Llegó -y se afianzó- Ubuntu, y se llenó todo de derivados de éste: Kubuntu, Xubuntu, Medibuntu, etc. Cuando armé mi primer pc con procesador de 64 bits, un AMD Athlon 64 3000+, probe un Kubuntu de 64 bits, pero no me convenció en ese entonces, como tampoco me convencieron otras distribuciones (me vienen a la mente Gentoo y Arch, por ejemplo). Yo fui fiel a una filosofía de hacer las cosas, digamos, y me fuí por el lado de Slam64, que se basaba en Slackware, y más tarde en Bluewhite 64, que también se basaba en Slackware, hasta que el propio slack se distribuyó en 64 bits. La gloria.
Doy toda esta clase de historia para decir que, mientras yo jugaba con Slackware y sus derivados, los de Ubuntu no dejaban de aparecer. En parte eso propició la aparición de Linux Mint.
Debo dejar claro que probé Mint solo por curiosidad, ya que leí unos cuantos reviews de esta distribución y todos hablaban muy bien de ella. Y no era para menos. Descargué la versión Cinnamon Edition, de Linux Mint Maya. El disco de instalación es también un Live CD, o un live DVD, ahora no recuerdo, y probar Mint fue una buena experiencia.
Como conté en otros posts, un disco rígido se me murió, por lo que aproveché para, por un lado, instalarme Slackware 14 y, por otro, instalar Mint en otra partición, dejando de probar la distro desde el live DVD para probarla ya instalada en mi pc.
No puedo dejar de maravillarme por lo fácil que es administrar lo que tiene que ver con la instalación y desinstalación de programas. ¿Necesitás Avidemux? Vas al administrador de software, en el buscador escribis lo que querés, te marca los programas que satisfacen tu búsqueda, le das un click, instala el programa que elegiste y sus dependencias. Todo muy sencillo, muy fácil. Realmente simple.
Si yo tuviera que recomendar una distro Linux, sin duda recomendaría Mint.

Linux Mint tiene ese no sé qué... pero yo me quiero volver


Pero más allá de que me gustara por la facilidad de instalar programas, lo que me gustó de Mint es que ofreciera dos opciones de Desktops más, o mejor dicho, dos entornos de escritorio que yo desconocía, o casi: Mate y Cinnamon.
Y digo casi por que Mate no es más que un fork de gnome 2, y ya lo conocía. Hay que recordar que el desarrollo de este último fue discontinuado en favor de Gnome3, mientras que Cinnamon es nada más y nada menos que un fork, o una bifurcación de lo que sería el Gnome shell de Gnome 3; es decir, se busca tener la interfaz conocida de Gnome2 pero con Gnome3 detrás.

La cosa es que Linux Mint me gusta mucho, pero no sé por qué, después de un rato me aburre y quiero volver a Slack, que es como estar en casa, donde conozco cada rincón, cada mueble y cada cajón de cada mueble. Se me ocurrió ver cómo instalar Cinnamon en Slackware. Intuí que sería compilando y compilando, y no me animaba a tomarme ese trabajo. Ya hace años lo hice con Gnome 2, y el experimento no me salió muy bien. Sin embargo, tenía que hacerlo, quería tener Cinnamon en Slackware, así que comencé por lo básico: ver si alguien lo había hecho antes que yo. No fue difícil: en principio solo fui a google, cosa que varios sabemos como hacer, y escribí:

cinnamon for slackware

El primer link que me dió la búsqueda fue:


Le di click al link, y quedé encantado, lo que ví fue esto:


Si no entendía mal, era Cinnamon corriendo en Slackware. Lo que me probó que sí, que efectivamente alguien lo había probado antes que yo.

De Indonesia con amor


Fui a walecha.net y me encontré con un blog escrito en Malayo o Indonés; de todas formas no importó mucho el idioma: pude entender que Widya Walesa (el autor del blog) tiene un repositorio GIT de Gnome 3.4, además de otro repositorio con otros paquetes. No era mi interés instalar Gnome 3, pero dentro de los extras del repositorio de Gnome se encontraba Cinnamon; no hay que olvidar que este último depende de Gnome 3, asi que me armé de paciencia, y primero que nada abrí un terminal y escribí:

bash-4.2$ git clone https://github.com/w41l/gnome.git

Lo que me devolvió

Cloning into 'gnome'...
remote: Counting objects: 559, done.
remote: Compressing objects: 100% (338/338), done.
remote: Total 559 (delta 171), reused 553 (delta 168)
Receiving objects: 100% (559/559), 112.15 KiB | 64 KiB/s, done.
Resolving deltas: 100% (171/171), done.


Ya tenía clonado el repositorio de gnome3. También cloné el otro repositorio, porque intuía que varias dependencias seguramente se encontraban allí. Escribí:

bash-4.2$ git clone https://github.com/w41l/wlsbuild

Y ya tenía el resto del repositorio GIT con las (posibles) dependencias.

Así comenzó la odisea de compilar los paquetes a mano. Los que hay en los repositorios que bajé no son más que los slackbuilds, los scripts con los cuales se va a crear un paquete TGZ que luego instalaremos en slackware mediante las pkgtools.
El repositorio clonado les deja una carpeta gnome con las siguientes subcarpetas:

a
ac
ap
d
extra
l

Comencé con los paquetes de d (por lo que leí, son paquetes necesarios para la compilación, una vez que todo se ha instalado se pueden desintalar sin problemas; no lo intenté) ; luego instalé los paquetes de l, y cada tanto, para satisfacer dependencias, iba instalando alternadamente paquetes de a y de wlsbuild.
Fue un trabajo laborioso, a veces aburrido, pero dicen que sarna con gusto no pica =), pero puedo decir que el resultado final valió la pena. 

Cinnamon a días de estar recién instalado, el 2 de enero.

Algunos problemas


Como ya comenté, al bajar los repositorios en realidad lo que hacemos es bajar los slackbuilds. En cada carpeta está lo que necesitamos para armar el paquete TGZ para instalar en slackware. Sólo faltan las fuentes, pero obtenerlas es de lo más simple: cada carpeta trae una serie de archivos necesarios para conformar el paquete TGZ y además un archivo *.info que dentro tiene la información necesaria para descargar las fuentes. Por ejemplo, entramos a la carpeta gnome/extras/cinnamon, y dentro vemos los siguientes archivos:

cinnamon.SlackBuild
cinnamon.info
doinst.sh
gnome-session.csh
gnome-session.sh
slack-conflicts
slack-desc
slack-required
xinitrc.cinnamon

Varios de estos archivos terminarán dentro del paquete de instalacion (gnome-session*, doinst.sh, xinitrc.cinnamon), otro es el script que compilará y conformará el paquete (en este caso, cinnamon.SlackBuild) y por último tenemos el archivo cinnamon.info, que nos da varias informaciones, como la página del programa, el link de dónde conseguir el código fuente y un par de strings: un valor para SHA1 y otro para MD5, para comprobar si el archivo que hemos bajado está o no corrupto. Como el trabajo de compilar y demás lo hice desde dolphin, lo tenía configurado para que, además de mostrarme en forma gráfica el contenido de la carpeta, tuviera una consola abierta en la carpeta actual. Entonces, como metodología de trabajo, hacía lo siguiente: entraba en la carpeta del programa a compilar (recordemos que, para el ejemplo, estoy por crear el paquete para cinnamon), escribía en la consola 

bash-4.2$ cat *.info

La respuesta del comando es:

URL=http://cinnamon.linuxmint.com/
SRC=https://github.com/linuxmint/Cinnamon/archive/1.6.6.tar.gz
MD5=6a91cf5944e2b02e1ac1c1b69b10b156
SHA1=bd394b2b7b8107457c6c2cef59885183f791cf57

Seleccionaba desde la consola el url a las fuentes, y luego escribía wget y pegaba el link, quedaba entonces:

bash-4.2$ wget https://github.com/linuxmint/Cinnamon/archive/1.6.6.tar.gz
--2013-01-17 21:13:42--  https://github.com/linuxmint/Cinnamon/archive/1.6.6.tar.gz
Resolviendo github.com (github.com)... 207.97.227.239
Conectando con github.com (github.com)[207.97.227.239]:443... conectado.
Petición HTTP enviada, esperando respuesta... 302 Found
Localización: https://nodeload.github.com/linuxmint/Cinnamon/tar.gz/1.6.6 [siguiendo]
--2013-01-17 21:13:43--  https://nodeload.github.com/linuxmint/Cinnamon/tar.gz/1.6.6
Resolviendo nodeload.github.com (nodeload.github.com)... 207.97.227.252
Conectando con nodeload.github.com (nodeload.github.com)[207.97.227.252]:443... conectado.
Petición HTTP enviada, esperando respuesta... 200 OK
Longitud: 3601582 (3,4M) [application/x-gzip]
Grabando a: “1.6.6.tar.gz”

100%[===========================================================================>] 3.601.582    334KB/s   en 12s    

2013-01-17 21:13:58 (294 KB/s) - “1.6.6.tar.gz” guardado [3601582/3601582]

Luego, como root, ejecutaba el script. Una vez creado el paquete, simplemente lo instabala ejecutando 

bash-4.2# installpkg /tmp/cinnamon-1.6.7-x86_64-1_wls.txz

Estos pasos los ejecute para tooodos los programas a intalar, y sí, es, como ya mencioné, un trabajo largo y aburrido, pero el resultado lo justifica plenamente.

Otro problema que tuve es que mi Slackware 14 es, gracias a los paquetes de Eric Hameleers, un sistema multilib, es decir, corren programas compilados de 64 bits y también programas de 32 bits; el problema es que a veces, al momento de compilar, algunas variables no están bien seteadas y el ./configure mezcla las librerías de 64 y 32 bits del sistema, lo que provoca que la compilación falle. Como no estaba de humor para resolver el problema identificando y pasando variables de entorno para que el ./configure encontrara las librerías correctas, resolví hacer algo que me pareció más rápido (no sé si fue más rápido, lo que si se es que terminó siendo más cómodo): instale un slackware 14 en una máquina virtual virtualbox. Me llevó solo media hora tener un slack sin multilib instalado y funcionanado. Bajé los dos repositorios y me puse a bajar y empaquetar todo, sin preocuparme de los problemas de las librerías de 32 y 64 bits. Una vez que todo se terminé de instalar todo, quise probar Cinnamon en la máquina virtual, pero no tuve suerte, no me detectaba la aceleración de la placa de video que si detecta kde en la misma máquina virtual. Gnome3 sufre de lo mismo y tampoco corre en la VM; pasé todos los archivos tgz de la máquina virtual a mi Slack real (llamemosle así) e instalé. 
Ya no hubo problemas con la instalación. 

Corriendo Cinnamon por primera vez


Ya estaba listo. En mi cuenta de usuario escribí

bash-4.2$ xwmconfig

xwmconfig mustra los entornos graficos que podemos lanzar para un usuario determinado
Del listado opté, obviamente, por xinitrc.Cinnamon. Luego simplemente lancé startx y listo! Ya lo estaba usando. Tuve un problema menor la primera vez que lo usé, y no se bien cómo se solucionó: el menú no funcionaba para nada. Salí de las X, volví a entrar, y el problema persistía. Entonces puse el panel en modo Edición, moví el menú de lugar, luego lo devolví a su lugar original y luego comenzó a funcionar como debería funcionar cualquier menú.

Palabras finales


Adapté el script de Cinnamon para actualizar a cinnamon 1.6.7, instalé Nemo (el reemplazo o fork que hizo la gente de Linux Mint a Nautilus), bajé algunos temas desde el site de cinnamon ; ahora utilizo Nemo para dibujar los íconos en el escritorio. 

Cinnamon, tal como lo estoy usando en estos días.
No puedo quejarme del trabajo que representó instalarlo en Slackware porque ahora estoy disfrutándolo. Me queda simplemente darle las gracias a Widya Walesa por haber compartido sus Salckbuilds.

Saludos!



martes, 2 de octubre de 2012

Infortunios

En estos días estaba por comprarme una nueva placa de video; se acerca Resident Evil 6, y quería tener algo decente para jugarlo. Todo estaba preparado ya: mi señora me había dado permiso, y ya tenía el dinero preparado para la NVIDIA GTX 560 TI. Todo se reducía a comprar la placa, pagarla, traerla a casa, instalarla, probarla, y jugar a lo que sea mientras esperaba que llegara Resident Evil... pero no, nada de eso. Mi disco rígido parece estar en las últimas. Tenía unos sectores defectuosos, pero no me trajeron problemas en estos últimos años, hasta hoy (que era, justamente, el día de la compra de la placa). Mientras estoy viendo qué pasa, trato de reparar el disco rígido defectuoso con el gnome-disk-utility, desde un live cd de Linux Mint, distribución que me parece fantástica, y que si no fuera porque hace ya muuuchos años uso Slackware, la utilizaría sin ninguna duda. 
En fin, tengo que ver qué pasa con el rígido... la placa de video ya la descartamos hasta fin de año.

Asi se ve el live cd de Linux Mint.
Update: El rigido está mal, la transferencia está en el orden de los 2 MB/s, cuando deberían ser 100 MB/s, por lo menos... Mientras veo cómo reparar eso, me hice con un nuevo rígido SATA 3, y ya instalé en él Slackware 14, que se instaló en 15 minutos, contados desde que instalé el disco rígido hasta que bootee con el nuevo SO; y también habilité una partición para dejar en forma permanente LINUX MINT MAYA, que debo decir que me gusta mucho. Una vez que resguarde los datos del rígido anterior, veré si encuentro una forma de reestablecerle la velocidad de transferencia.

Saludos.

jueves, 20 de septiembre de 2012

Cuerpo del blog transparente en Wordpress

Otra vez escribo algo de Wordpress en Blogspot =) ... pero no es por capricho; es mejor tener entradas duplicadas... además este post es chiquito; más que nada es un recordatorio. Resulta que quería saber cómo podía hacer para el el cuerpo del post en el otro sitio se viese semi-transparente... y googleando por aquí y por allí me encontré con que agregando ésto al final del archivito style.css lograba el efecto deseado.
Era algo así:



body #page {background-color:rgba(0,0,0,0.7);}


Y es efectivo, realmente resulta. En este caso el color resulta ser un negro semitransparente. Para que en vez de negro sea blanco, sería:

body #page {background-color:rgba(255,255,255,0.7);}

¿Qué cómo se llega a style.css? Fácil: uno se loguea y hace Apariencia->Editor->Estilos; se selecciona style.css y se navega hasta el final, se añade la línea que ya cité y listo. Y lo posteo porque no es muy fácil llegar a esta solución; claro que hay explicaciones más largas y elegantes, pero la que a mí realmente me dió resultado fue está, y yo cumplo en informarlo...

Saludos!

domingo, 16 de septiembre de 2012

Recuperar usuario en Wordpress


Finalmente logramos recuperar el server, que sirve mi propio sitio (ulijese.no-ip.org) y el de mi esposa (sop.no-ip.info). Se puede hablar de un milagro, ya que al server sólo se le había quemado la fuente de alimentación, y cambiándola se solucionaron una parte de los problemas, pero hacer reaccionar el disco rígido llevó tiempo.
Finalmente, con la fuente ya cambiada y el rígido funcionando, el server comenzó a funcionar como siempre, es decir, uno enciende la pc y la deja allí, trabajando sola y abandonada, confiando en que nada puede salir mal.
Y claro, nada anda mal, y como nada anda mal, pues podemos ir haciendo alguna cosa... en particular, la página de mi mujer es algo viejita, la hizo ella cuando a duras penas tenía idea de HTML, así que pensamos hace un tiempo que no estaría mal que actualizáramos su formato. Instale Wordpress, creé la base de datos, me lié con la creación de los usuarios y los permisos y tuve todo ese tipo de problemas que suelen tenes los hobbistas... pero al final logré hacer correr Wordpress tanto para mi sitio como para el de mi señora.
De eso pasó un año, mes más, mes menos, y en mi blog no tengo problemas, ya que accedo al él con regularidad; otro cantar fue cuando hace algunos días quise retomar la tarea de actualizar el sitio de mi señora... no recordaba qué contraseña tenía el usuario administrador.
Eso me lleva a contar por qué escribo este post: no es más que una excusa para recordarme cómo recuperar la clave la próxima vez que lo olvide.
Algunos datos:
La base de datos que corre en la pc que hace de server es mysql; tengo acceso al server por ssh. Googleando por ahí, me enteré que la clave de los usuarios está encriptada. Lo lógico, entonces, era (y es):
  1. Entrar a la base de datos.
  2. Buscar la tabla de usuarios (no era dificil, solo está dado de alta la cuenta del admin)
  3. Borrar de la tabla el valor de la contraseña
  4. Generar una nueva clave, y ponerla encriptada en el lugar de la contraseña que borré antes.
  5. Entrar desde la página y modificar nuevamente la contraseña.
Suena fácil, y es fácil si se lo hace regularmente; yo solo meto mano a las bases de dato una o dos veces al año; me costó mucho. Además, ví que mucha gente utiliza phpadmin, y yo desconocía su existencia. Mi experiencia fue pura consola. No me avergüenza.
En fin...
1.- Accedí al server (llamado ochentayseis) desde mi pc, la noventaynueve, que tiene , para este ejemplo, una ip xxx.xxx.xxx.xxy, vía ssh, desde una xterm; se debe reemplazar xxx.xxx.xxx.xxx por la ip que tenga cada uno:
julian@noventaynueve:~$ ssh -l root xxx.xxx.xxx.xxx
root@xxx.xxx.xxx.xxx's password:
Last login: Sun Sep 16 01:08:04 2012 from xxx.xxx.xxx.xxy
Linux 2.6.38.7.

2.- Una vez logueado, entre a mysql y fui tirando comandos hasta resolver el problema; primero muestro todos los pasos, luego los explico:

root@ochentayseis:~# mysql -u root -p
Enter password: 
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 48892
Server version: 5.1.56 Source distribution

Copyright (c) 2000, 2010, Oracle and/or its affiliates. All rights reserved.
This software comes with ABSOLUTELY NO WARRANTY. This is free software,
and you are welcome to modify and redistribute it under the GPL v2 license

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql> use blog 
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A

Database changed
mysql>  show tables;
+---------------------------+
| Tables_in_blog            |
+---------------------------+
| wp_blogcommentmeta        |
| wp_blogcomments           |
| wp_bloglinks              |
| wp_blogoptions            |
| wp_blogpostmeta           |
| wp_blogposts              |
| wp_blogterm_relationships |
| wp_blogterm_taxonomy      |
| wp_blogterms              |
| wp_blogusermeta           |
| wp_blogusers              |
+---------------------------+
11 rows in set (0.00 sec)

mysql> describe wp_blogusers;
+---------------------+---------------------+------+-----+---------------------+----------------+
| Field               | Type                | Null | Key | Default             | Extra          |
+---------------------+---------------------+------+-----+---------------------+----------------+
| ID                  | bigint(20) unsigned | NO   | PRI | NULL                | auto_increment |
| user_login          | varchar(60)         | NO   | MUL |                     |                |
| user_pass           | varchar(64)         | NO   |     |                     |                |
| user_nicename       | varchar(50)         | NO   | MUL |                     |                |
| user_email          | varchar(100)        | NO   |     |                     |                |
| user_url            | varchar(100)        | NO   |     |                     |                |
| user_registered     | datetime            | NO   |     | 0000-00-00 00:00:00 |                |
| user_activation_key | varchar(60)         | NO   |     |                     |                |
| user_status         | int(11)             | NO   |     | 0                   |                |
| display_name        | varchar(250)        | NO   |     |                     |                |
+---------------------+---------------------+------+-----+---------------------+----------------+
10 rows in set (0.03 sec)

mysql> SELECT user_login FROM wp_blogusers;
+------------+
| user_login |
+------------+
| admin      |
+------------+
1 row in set (0.00 sec)

mysql> SELECT user_pass FROM wp_blogusers;
+------------------------------------+
| user_pass                          |
+------------------------------------+
|  1f13e4646e9b8f517f8232e9e1a8bdd4  |
+------------------------------------+
1 row in set (0.00 sec)

mysql> update wp_blogusers set user_pass="" where user_login="admin";
Query OK, 1 row affected (0.00 sec)
Rows matched: 1  Changed: 1  Warnings: 0

mysql> SELECT user_pass FROM wp_blogusers;
+-----------+
| user_pass |
+-----------+
|           |
+-----------+
1 row in set (0.00 sec)

mysql> update wp_blogusers set user_pass="81dc9bdb52d04dc20036dbd8313ed055" where user_login="admin";
Query OK, 1 row affected (0.00 sec)
Rows matched: 1  Changed: 1  Warnings: 0

mysql> SELECT user_pass FROM wp_sopblogusers;
+----------------------------------+
| user_pass                        |
+----------------------------------+
| 81dc9bdb52d04dc20036dbd8313ed055 |
+----------------------------------+
1 row in set (0.00 sec)

mysql> quit
Bye
root@ochentayseis:~#

Hay mucho para contar; empezamos por:
mysql -u root -p

que es el comando que usamos para entrar a la cosola Mysql, con -u xxxx indicamos que xxxx es el usuario que accederá, en mi caso, fue con root; con -p indicamos que nos deje poner la contraseña.
Luego usamos el comando use:

mysql> use blog

De acuerdo al manual de Mysql:
El comando USE db_name le dice a MySQL que use la base de datos db_name como la base de datos por defecto para los comandos siguientes. Sigue siendo la base de datos por defecto hasta el final de la sesión o hasta que se realiza otro comando USE
En este caso estaríamos trabajando en la base de datos llamada blog.
El comando show tables; (el punto y coma es parte del comando) nos muestra las tablas que tiene la base de datos blog. En esas tablas vemos que está la de usuarios (la llamada wp_blogusers), que es la que nos interesa.
Luego hacemos:

mysql> describe wp_blogusers;

De acuerdo al manual de mysql:
DESCRIBE proporciona información acerca de columnas en una tabla
Dentro de la tabla wp_blogusers está la columna Field, que contiene los valores  user_login, es decir, los de logueo de cada usuario del blog, y user_pass, es decir, el password.
Usé el comando SELECT para ver los valores que tenían user_login y user_pass. A esta altura ya estamos cerca de la solución. Primero borro el valor de la contraseña del admin:

mysql> update wp_blogusers set user_pass="" where user_login="admin";

Donde dice set user_pass="", estamos diciendo, en realidad, que se reemplace el valor anterior con lo tenemos entre las comillas, en este caso, nada. Para comprobar que realmente no había quedado nada en ese campo, repetí el comando 

mysql> SELECT user_pass FROM wp_blogusers;

que mostró user_pass vacío.

Luego fui a una página en la que generé un hash con una cadena conocida; en el ejemplo, 1234. Es decir, por un lado, el admin se loguearía desde el login de la página con el valor 1234, pero en la base de datos este valor debe estar encriptado; la página enlazada nos da el valor que tendrá 1234 ya encriptado; dicho valor se vuelca a nuestra base de datos de la siguiente forma:

mysql> update wp_blogusers set user_pass="81dc9bdb52d04dc20036dbd8313ed055" where user_login="admin";

El último SELECT lo hago para comprobar que realmente se ha asignado el valor al usuario, y todo listo, ya me puedo desloguear tranquilo de la consola mysql, de la sesión ssh y puedo entrar al blog con el usuario admin y la contraseña 1234; más tarde, pero ya desde el propio blog, cambiaré a una contraseña más segura.

Eso fue todo! Espero que le sirva a alguien, aunque estoy seguro que muchos tienen una herramienta como phpadmin que facilita mucho las cosas.

No puedo dejar de nombrar -y agradecer- este post que fue el que me mostró un poco el camino a seguir, y que, en difinitiva, muestra como hacer esto mismo pero sin tanta consola.

Saludos!