Creando un repositorio local

Planteamiento del Problema:

Mantener actualizada una laptop (u ordenador de escritorio) de bajos recursos, con varios años de uso, el caso que se presenta es que el laptop en cuestión posee solo un puerto para conexiones por modem de velocidades topes de 56kbps, lo anterior puede ser traumático al realizar actualizaciones del sistema.

Consideraciones:

Nos aprovecharemos del hecho de la disponibilidad de un puerto USB en el ordenador de bajos recursos, el cual nos facilita en estos tiempos el almacenamiento masivo de paquetes, en caso de no tener puerto USB, podemos recurrir a unidades de CD como medio de almacenamiento masivo.

Adicionalmente, aprovecharemos conexiones de gran bando de ancha, lo cual nos facilitará la descarga de los paquetes necesarios desde los repositorios disponibles en la red.

Posible solución:

Después de plantear las consideraciones anteriores, una posible alternativa para mantener actualizados nuestros ordenadores de bajos recursos es utilizar dispositivos de almacenamiento masivo como repositorios locales, almacenando en ellos solo los paquetes que sean realmente necesarios.

En los siguientes puntos trataré de ampliar la manera de crear un repositorio local valiéndonos del uso de un Pen Drive.

Comenzamos:

En primer lugar vamos a respaldar los paquetes *.deb que se ubican en /var/cache/apt/archives, esta actividad la vamos a realizar en el ordenador que dispone de una conexión banda ancha.

$ mkdir $HOME/backup
$ sudo cp /var/cache/apt/archives/*.deb $HOME/backup

Después de respaldar los paquetes, vamos a remover todos los ficheros *.deb que han sido descargados al directorio cache que almacena los paquetes, usualmente esto quiere decir, eliminar todos los paquetes *.deb ubicados en /var/cache/apt/archives, para ello hacemos lo siguiente:

$ sudo aptitude clean

Ahora que se encuentra limpio el directorio cache procederemos a descargar (sin instalar) los paquetes que sean necesarios para nuestro ordenador de bajos recursos. Para ello hacemos lo siguiente:

$ sudo aptitude -d install <paquetes>

El comando anterior simplemente descargará la lista de paquetes especificada (recuerde que debe sustituir por la lista de paquetes que necesita), la opción `-d` (equivalente a `--download-only`) nos permite realizar simples descargas de paquetes, sin que estos se instalen, se ha usado el argumento `install` para manejar las dependencias de dichos paquetes. En resumen, estamos **descargando** (sin instalar) la lista de paquetes especificada y sus dependencias.

Para trabajar mas cómodamente crearemos una carpeta temporal y desde allí procederemos a crear nuestro repositorio local en cuestión, el cual finalmente se guardará en el medio de almacenamiento masivo correspondiente.

$ mkdir /tmp/debs
$ mv /var/cache/apt/archives/*.deb /tmp/debs/
$ cd /tmp

Estando ubicados en el directorio /tmp realizaremos una revisión de los paquetes que se ubican en el directorio debs/ y crearemos el fichero comprimido Packages.gz (el nombre del fichero debe ser exacto, no es cuestión de elección personal).

$ dpkg-scanpackages debs/.* | gzip > debs/Packages.gz

Guardando el repositorio en un dispositivo de almacenamiento masivo

En nuestro caso procederé a explicar como almacenar el repositorio en un Pen Drive, por ciertas cuestiones prácticas, primero, facilidad de movilidad que presentan, la capacidad de almacenamiento, la cual regularmente es mayor a la de un CD.

En la versión actual (Hoary) de Ubuntu Linux los Pen Drive son montados automáticamente, si esto no ocurre, puede realizar lo siguiente:

$ sudo mount -t vfat /dev/sda1 /media/usbdisk

Recuerde ajustar los argumentos de acuerdo a sus posibilidades. Luego de montado el dispositivo de almacenamiento masivo proceda a copiar de manera recursiva el directorio debs/.

$ cp -r /tmp/debs/ /media/usbdisk

Estableciendo el medio de almacenamiento masivo como un repositorio.

Si ha decidido utilizar un Pen Drive como medio de almacenamiento.

Después de copiar los ficheros en el medio de almacenamiento masivo, proceda a desmontarlo (en nuestro caso: $ sudo umount /media/usbdisk) y conectelo a su ordenador de bajos recursos, recuerde que si el ordenador de bajos recursos no monta automáticamente el dispositivo, debe montarlo manualmente como se explico anteriormente.

Después de haber sido reconocido el dispositivo de almacenamiento masivo en el ordenador de bajos recursos proceda a editar el fichero /etc/apt/sources.list y agregue la linea deb file:/media/usbdisk debs/. Comente los demás repositorios existentes, recuerde que para ello simplemente debe agregar el carácter almohadilla (#) al principio de la linea que especifica a dicho repositorio.

Si ha decidido utilizar un CD como medio de almacenamiento

Simplemente haciendo uso de apt-cdrom add le bastará, esto añadirá el medio a la lista de recursos del fichero sources.list

Finalizando…

Para finalizar deberá actualizar la lista de paquetes disponibles y proceder con la instalación de dichos paquetes en el ordenador de bajos recursos, para ello, simplemente bastará con hacer lo siguiente:

$ sudo aptitude update
$ sudo aptitude install <paquetes>

Recuerde restaurar en el ordenador que dispone de conexión banda ancha los paquetes que se respaldaron previamente.

$ sudo mv $HOME/backup/*.deb /var/cache/apt/archives/

¡Que lo disfrute! :D

3 min read

Organizando nuestros proyectos web

Antes de plantearme el rediseño de este sitio, pensé en organizar ciertas cosas para no complicarme la vida. En primera instancia procedi a instalar el servidor Apache, el soporte del lenguaje PHP, el servidor de bases de datos MySQL y finalmente el phpMyAdmin.

Lo anterior se resume de la siguiente manera en mi querido Ubuntu Linux.

$ sudo aptitude install apache2
$ sudo aptitude install mysql-server
$ sudo aptitude install php4
$ sudo aptitude install libapache2-mod-auth-mysql
$ sudo aptitude install php4-mysql
$ sudo /etc/init.d/apache2 restart
$ sudo aptitude install phpmyadmin

Recuerde después de instalar el servidor de bases de datos MySQL establecer la contraseña del usuario root de dicho servidor por seguridad. Si no sabe como hacerlo a través de la línea de comandos existe la alternativa de establecer la contraseña utilizando phpMyAdmin.

Por defecto el servidor Apache habilita el directorio /var/www/ como directorio principal, el problema que se plantearía el trabajar en dicho directorio es que cada vez que tuviese que realizar cambios a los ficheros tendría que hacer uso de la cuenta de superusuario o root, lo cual no me agrada mucho, así que para evitar lo mencionado previamente tenía dos opciones.

La primera de ellas era modificar el fichero /etc/apache2/apache.conf y habilitar que todos los usuarios tuviesen la posibilidad de publicar sus documentos dentro del directorio /home/*/public_html, esta opción no me llamaba mucho la atención, adicionalmente, la dirección queda de cierta manera algo extensa (p.ej. http://localhost/~usuario/proyectoweb), así que opte por recurrir a una segunda opción, la cual describiré detalladamente a continuación.

En primera instancia creé dos directorios, public_html como subdirectorio de $HOME, el segundo, milmazz como subdirectorio de public_html.

$ mkdir $HOME/public_html
$ mkdir $HOME/public_html/milmazz

Seguidamente procedi a crear el fichero /etc/apache2/sites-enabled/001-milmazz, este fichero contendrá las directivas necesarias para nuestro proyecto desarrollado en un ambiente local.

<VirtualHost *>
  DocumentRoot "/home/milmazz/public_html/milmazz/"
  ServerName milmazz.desktop

  <Directory "/home/milmazz/public_html/milmazz/">
    Options Indexes FollowSymLinks MultiViews
    AllowOverride None
    Order deny,allow
    Deny from all
    Allow from 127.0.0.0/255.0.0.0 ::1/128
  </Directory>
</VirtualHost>

Ahora bien, necesitamos crear el host para que la directiva realmente redireccione al directorio /home/milmazz/public_html/milmazz/ simplemente tecleando milmazz.desktop en la barra de direcciones de nuestro navegador preferido. Por lo tanto, el siguiente paso es editar el fichero /etc/hosts y agregar una línea similar a 127.0.0.1 milmazz.desktop, note que el segundo parámetro especificado es exactamente igual al especificado en la directiva ServerName.

Seguidamente procedi a instalar WordPress (Sistema Manejador de Contenidos) en el directorio $HOME/public_html/milmazz y todo funciona de maravilla.

Evitando el acceso de usuarios no permitidos

Si queremos restringir aún más el acceso al directorio que contendrá los ficheros de nuestro proyecto web, en este ejemplo, el directorio es $HOME/public_html/milmazz/, realizaremos lo siguiente:

$ touch $HOME/public_html/milmazz/.htaccess
$ nano $HOME/public_html/milmazz/.htaccess

Dentro del fichero .htaccess insertamos las siguientes lineas.

AuthUserFile /var/www/.htpasswd
AuthGroupFile /dev/null
AuthName "Acceso Restringido"
AuthType Basic

require valid-user

Guardamos los cambios realizados y seguidamente procederemos a crear el fichero que contendrá la información acerca de los usuarios que tendrán acceso al directorio protegido, también se especificaran las contraseñas para validar la entrada. El fichero a editar vendra dado por la directiva AuthUserFile, por lo tanto, en nuestro caso el fichero a crear será /var/www/.htpasswd.

htpasswd -c /var/www/.htpasswd milmazz

Seguidamente introducimos la contraseña que se le asignará al usuario milmazz, la opción -c mostrada en el código anterior simplemente se utiliza para crear el fichero /var/www/.htpasswd, por lo tanto, cuando se vaya a autorizar a otro usuario cualquiera la opción -c debe ser ignorada.

Estableciendo la contraseña del usuario root del servidor de bases de datos a través de phpMyAdmin.

Si usted no sabe como establecer en línea de comandos la contraseña del usuario root en el servidor de bases de datos MySQL es posible establecerla en modo gráfico haciendo uso de phpMyAdmin.

A continuacion se describen los pasos que deberá seguir:

  1. Acceder a la interfaz del phpMyAdmin, para lograrlo escribe en la barra de direcciones de tu navegador http://localhost/phpmyadmin.
  2. Selecciona la opción de Privilegios, ésta se ubica en el menú principal.
  3. Debemos editar los dos últimos registros, uno representa el superusuario cuyo valor en el campo servidor será equivalente al nombre de tu máquina, el otro registro a editar es aquel superusuario cuyo valor en el campo servidor es igual a localhost. Para editar los registros mencionados anteriormente simplemente deberá presionar sobre la imagen que representa un lapíz.
  4. Los únicos campos que modificaremos de los registros mencionados previamente son aquellos que tienen relación con la contraseña. Recuerde que para guardar los cambios realizados al final debe presionar el botón Continúe. Si deseas evitar cualquier confusión en cuanto al tema de las contraseñas es recomendable que establezcas la misma en ambos registros.

Agradecimientos

A José Parella por sus valiosas indicaciones.

3 min read

Instalar JAVA en Ubuntu

Debido a diversos motivos que no se expondrán en este artículo me he visto obligado a desarrollar ciertas aplicaciones en JAVA, por todos es bien sabido que JAVA es un formato restrictivo, a pesar del formato abierto del API en sí, hasta ahora las únicas implementaciones de JAVA en GNU/Linux con una amplia compatibilidad se derivan de la implementación de Sun Microsystem, ésta implementación lleva consigo términos de licencias no libres.

A pesar de la existencia de proyectos que buscan crear implementaciones libres de JAVA, estos aún no son comparables en rendimiento, acabado y compatibilidad con la implementación de Sun Microsystem.

Estos proyectos son:

Así que procederé a describir el método más elegante que he encontrado hasta ahora para instalar la implementación de JAVA de Sun Microsystem.

Obtenga la versión más reciente del fichero binario desde la página de descargas de Sun. Seleccione cualquiera de los enlaces de acuerdo a sus necesidades, ya sea para JDK o JRE. Recuerde que JDK soporta la creación de aplicaciones para plataforma de desarrollo J2SE, es decir, ideal para desarrolladores, mientras que JRE permite a los usuarios finales ejecutar aplicaciones JAVA.

Una vez culminada la descarga, ejecute las siguientes sentencias:

$ sudo apt-get install java-package fakeroot
$ fakeroot make-jpkg jdk-1_5_0_02-linux-i586.bin
$ sudo dpkg -i sun-j2sdk1.5_1.5.0+update02_i386.deb

Es importante aclarar que en las sentencias anteriores se asume que el paquete descargado ha sido el jdk-1_5_0_02-linux-i586.bin, evidentemente usted debe sustituir el nombre del paquete por el cual corresponda.

Si desea verificar la correcta instalación de JAVA, proceda de la siguiente manera:

$ java -version

Después de la sentencia anterior usted debe recibir un mensaje similar al siguiente:

java version "1.5.0_02"
Java(TM) 2 Runtime Environment, Standard Edition (build 1.5.0_02-b09)
Java HotSpot(TM) Client VM (build 1.5.0_02-b09, mixed mode, sharing)

Lo anterior solo ha sido probado bajo Ubuntu Linux versión Hoary y Breezy. Una pequeña nota antes de culminar, en el caso de aparecerle el mensaje /java-web-start.applications: Permission denied mientras contruye el paquete .deb, no tiene mayor relevancia, puede ser ignorado.

Nota para los usuario de Breezy

Si al ejecutar el comando java -version obtiene algo similar a lo mostrado a continuación:

$ java -version
java version "1.4.2"
gij (GNU libgcj) version 4.0.2 20050808 (prerelease) (Ubuntu 4.0.1-4ubuntu9)

Copyright (C) 2005 Free Software Foundation, Inc.
This is free software; see the source for copying conditions.  There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.

No se preocupe, simplemente cambie la versión de JAVA por omisión, para ello lea el artículo Como cambiar entre versiones de JAVA bajo Breezy.

Referencias:

2 min read

Primer Congreso Nacional de Software Libre

El día de hoy se dió inicio en Mérida al Primer Congreso Nacional de Software Libre, el cual es auspiciado por el Grupo de Usuarios de GNU/Linux de Venezuela UNPLUG. El objetivo de este congreso es promocionar el uso, implementación, características y posibilidades del Software Libre en Venezuela, generando una estructura de soporte y apoyo a los diferentes Grupos de Usuarios de GNU/Linux y Software Libre en todo el territorio nacional.

Las charlas de día de hoy han sido:

  • El Software Libre y GNU/Linux, Ponente: Octavio Rossell
  • Diseño Gráfico Digital en Software Libre, Ponente: Leonardo Caballero
  • ¿Por qué Open Office es la alternativa?, Ponente: Joskally Carrero
  • La respuesta está en el Software Libre, Ponente: Francisco Palm
  • Sistemas de Información Geográfica en GNU, Ponente: Damian Fossi

Las charlas del día de mañana serán:

  • Fábrica del Software Libre, Ponente: Javier Riviera
  • Software Libre como palanca para el desarrollo endógeno, Ponente: Mariángela Petrizzo
  • El Software Libre en la Educación Universitaria, Ponente: Samuel Rojas
  • Redes Inalámbricas bajo Software Libre, Ponente: Walter Vargas
  • Metodología de Migración hacia el Software Libre, Ponente: Jorge González
  • El escritorio en GNU/Linux, Ponente: Vladimir Llanos

Según anuncio Octavio Rossell al finalizar la jornada del día de hoy, la entrada el día de mañana será libre al público en general. La jornada del día de mañana comenzará a las 9:00 a.m. hora local.

En los próximos días trataré hacer un resúmen acerca de las charlas, ya estoy tomando notas.

1 min read

Smeg, simple editor del menú para GNOME

Smeg, es un simple editor del menú para Gnome. Esta herramienta le permitirá agregar entradas al menú de opciones, de igual manera podrá ordenarlo, agregar separadores, hasta editar el menú de aplicaciones de superusuario. Smeg aún no ofrece soporte completo para los entornos de escritorio KDE y XFCE.

Para los usuarios de Ubuntu Linux (versión Hoary) se encuentra disponible un script que realizará la instalación de Smeg de manera automática. También puede hacer uso del .deb más reciente para Smeg. Si usted no utiliza Ubuntu Linux, no se preocupe, Smeg también está disponible en .tar.gz, lo cual le facilitará la instalación en otras distribuciones.

Los usuarios de Gentoo ya pueden hacer uso de Smeg vía portage.

En Ubuntu Forums podrá discutir todo lo relacionado con éste editor del menú en la sección exclusiva para Smeg.

~1 min read