- Ubuntu 58
- GNU/Linux 45
- Software 33
- debian 32
- linux 14
- programming 12
- Recursos 10
- Scripts 10
- Anuncios 9
- General 9
- Python 9
- Local 8
- Programación 8
- Perl 7
- Seguridad 7
- elixir 7
- software+libre 7
- CSS 6
- Charlas 6
- django 6
- Noticias 5
- WordPress 5
- planet 5
- trac 5
- (X)HTML 4
- Distribuciones 4
- GIMP 4
- Universidad 4
- javascript 4
- miniblog 4
- subversion 4
- ula 4
- Ingeniería del Software 3
- Internet 3
- Literatura 3
- Ocio 3
- campaign 3
- dapper 3
- planetalinux 3
- security 3
- wireless 3
- apache 2
- bittorrent 2
- blogging 2
- bug 2
- cnti 2
- cpan 2
- feedjack 2
- gnome 2
- gnu 2
- java 2
- jquery 2
- layout 2
- pylint 2
- tips 2
- xmms 2
- Duke 1
- Enlightenment 1
- Humor 1
- Kubuntu 1
- Opinión 1
- Personal 1
- akismet 1
- alsa 1
- amigas 1
- apt-get 1
- audioconverter 1
- azureus 1
- bad-behavior 1
- beamer 1
- beryl 1
- blog 1
- bluefish 1
- books 1
- browser 1
- canaima 1
- charla 1
- chile 1
- cms 1
- cntlm 1
- conac 1
- conocimiento+libre 1
- cowbell 1
- cracklib 1
- csv 1
- cultura 1
- dbconfig-common 1
- debconf 1
- dell 1
- design 1
- dictionary 1
- dijkstra 1
- documental 1
- drake 1
- edubuntu 1
- emerald 1
- entities 1
- etch 1
- fedora 1
- feed 1
- femfox 1
- find 1
- firefox 1
- flickr 1
- flisol 1
- foro 1
- framework 1
- freeloader 1
- gedit 1
- glamour 1
- gnickr 1
- gnupg 1
- goobuntu 1
- google 1
- google+evil 1
- graph 1
- graphviz 1
- grub 1
- grunt 1
- gulmer 1
- hardware 1
- html 1
- hwinfo 1
- icons 1
- ifdown 1
- ifup 1
- inkscape 1
- instalinux 1
- intel 1
- ipw3945 1
- iso 1
- iwl3945 1
- jigdo 1
- jsdoc 1
- k2 1
- kernel 1
- latex 1
- lenovo 1
- logitech 1
- lug 1
- m1210 1
- magazine 1
- marketing 1
- merida 1
- mkpasswd 1
- mongodb 1
- mp3 1
- mp3splt 1
- mp3wrap 1
- mplayer 1
- music 1
- nautilus 1
- ndiswrapper 1
- network-manager 1
- nvidia 1
- pam 1
- pbuilder 1
- perl 1
- postgresql 1
- presentaciones 1
- proxy 1
- python 1
- root 1
- rss 1
- rufus 1
- scm 1
- scripting 1
- solve 1
- spam 1
- spam-karma 1
- stardict 1
- suse 1
- sysadmin 1
- tecnologia 1
- tecnologia+libre 1
- testing 1
- transmission 1
- trucos 1
- turpial 1
- ubuntuchannel 1
- ulanix 1
- utw 1
- velug 1
- venezuela 1
- video 1
- vim 1
- vlc 1
Ubuntu
Configurando nuestras interfaces de red con ifupdown
Si usted es de esas personas que suele mover su máquina portátil entre varias redes que no necesariamente proveen DHCP y usualmente vuelve a configurar sus preferencias de conexión, seguramente este artículo llame su atención puesto que se explicará acerca de la configuración de diversos perfiles de conexión vía línea de comandos.
En los sistemas Debian y los basados en él, Ubuntu por ejemplo, para lograr la configuración de las redes existe una herramienta de alto nivel que consiste en los comandos ifup
e ifdown
, adicionalmente se cuenta con el fichero de configuración /etc/network/interfaces
. También el paquete wireless-tools
incluye un script en /etc/network/if-pre-up.d/wireless-tools
que hace posible preparar el hardware de la interfaz inalámbrica antes de darla de alta, dicha configuración se hace a través del comando iwconfig
.
Para hacer uso de las ventajas que nos ofrece la herramienta de alto nivel ifupdown
, en primer lugar debemos editar el fichero /etc/network/interfaces
y establecer nuestros perfiles de la siguiente manera:
auto lo
iface lo inet loopback
# Conexión en casa usando WPA
iface home inet dhcp
wpa-driver wext
wpa-ssid foo
wpa-psk baz
wpa-keymgmt WPA-PSK
wpa-pairwise TKIP CCMP
wpa-group TKIP CCMP
wpa-proto WPA RSN
# Conexión en la oficina
# sin DHCP
iface office inet static
wireless-essid bar
wireless-key s:egg
address 192.168.1.97
netmask 255.255.255.0
broadcast 192.168.1.255
gateway 192.168.1.1
dns-search company.com #[email protected]
dns-nameservers 192.168.1.2 192.168.1.3 #[email protected]
# Conexión en reuniones
iface meeting inet dhcp
wireless-essid ham
wireless-key s:jam
En este ejemplo se encuentran 3 configuraciones particulares (home
, work
y meeting
), la primera de ellas define que nos vamos a conectar con un Access Point cuyo ssid es foo
con un tipo de cifrado WPA-PSK/WPA2-PSK, esto fue explicado en detalle en el artículo Haciendo el cambio de ipw3945 a iwl3945. La segunda configuración indica que nos vamos a conectar a un Access Point con una IP estática y configuramos los parámetros search
y nameserver
del fichero /etc/resolv.conf
(para más detalle lea la documentación del paquete resolvconf
). Finalmente se define una configuración similar a la anterior, pero en este caso haciendo uso de DHCP.
Llegados a este punto es importante aclarar lo que ifupdown
considera una interfaz lógica y una interfaz física. La interfaz lógica es un valor que puede ser asignado a los parámetros de una interfaz física, en nuestro caso home
, office
, meeting
. Mientras que la interfaz física es lo que propiamente conocemos como la interfaz, en otras palabras, lo que regularmente el kernel reconoce como eth0
, wlan0
, ath0
, ppp0
, entre otros.
Como puede verse en el ejemplo previo las definiciones adyacentes a iface
hacen referencia a interfaces lógicas, no a interfaces físicas.
Ahora bien, para dar de alta la interfaz física wlan0
haciendo uso de la interfaz lógica home
, como superusuario puede hacer lo siguiente:
# ifup wlan0=home
Si usted ahora necesita reconfigurar la interfaz física wlan0
, pero en este caso particular haciendo uso de la interfaz lógica work
, primero debe dar de baja la interfaz física wlan0
de la siguiente manera:
# ifdown wlan0
Seguidamente deberá ejecutar el siguiente comando:
# ifup wlan0=work
Es importante hacer notar que tal como está definido ahora el fichero /etc/network/interfaces
ya no es posible dar de alta la interfaz física wlan0
ejecutando solamente lo siguiente:
ifup wlan0
La razón de este comportamiento es que el comando ifup
utiliza el nombre de la interfaz física como el nombre de la interfaz lógica por omisión y evidentemente ahora no está definido en el ejemplo un nombre de interfaz lógica igual a wlan0
.
En un próximo artículo se harán mejoras en la definición del fichero /etc/network/interfaces
y su respectiva integración con una herramienta para la detección de redes que tome como entrada una lista de perfiles de redes candidatas, cada una de ellas incluyendo casos de pruebas. Teniendo esto como entrada ya no será necesario indicar la interfaz lógica a la que se hace referencia ya que la herramienta se encargará de probar todos los perfiles en paralelo y elegirá aquella que cumpla en primera instancia con los casos de prueba. De modo tal que ya podremos dar de alta nuestra interfaz física con solo hacer ifup wlan0
.
Configurando el sonido (HDA Intel) en Lenovo 3000 c200 en Debian GNU/Linux
La situación poco común se presentó con un portátil Lenovo, específicamente un 3000 c200; el computador en cuestión mostraba la tarjeta funcionando, como si estuviera todo normal, pero sucede que no había sonido en lo absoluto por más altos que estuvieran los indicadores gráficos del volumen. Indagando por Google me encontré que ya han habido muchos casos similares, no solamente para laptops Lenovo, sino para la mayoría que incluye ese tipo de tarjetas y me encontré con una solución en un foro que me funcionó perfecto. Acá voy a tratar de explicar paso a paso todo lo que hice para que funcionara como debe ser.
Lo primero que se hizo fué asegurarse que se trata realmente de una tarjeta HDA Intel, con la siguiente línea de comandos:
$ lspci | grep High
…a lo que se obtuvo la siguiente respuesta:
00:1b.0 Audio device: Intel Corporation 82801G (ICH7 Family) High Definition Audio Controller (rev 02)
…donde se puede verificar que se trata de la HDA de la familia ICH7 de la Intel. Una vez verificado ésto, se procede a instalar algunos paquetes necesarios para que todo funcione de manera correcta, que son los siguientes:
- build-essentials
- gettext
- libncurses5-dev
Ésto se logró con el aptitude, con la siguiente línea de comandos:
$ sudo aptitude install el_paquete_que_quiero_instalar
Luego hay que descargar las cabeceras del kernel que se está usando. Para ésto, la manera más fácil de hacerlo fué instalando el paquete module-assistant y haciendo lo siguiente en una terminal:
$ sudo m-a update
$ sudo m-a prepare
Y el programa automáticamente va a saber cuáles cabeceras descargar y el directorio donde ponerlas. Cuando estén instalados éstos tres paquetes también se va a necesitar descargar de la página del Proyecto Alsa tres archivos necesarios y que son nombrados a continuación:
Se pueden descargar con un gestor de descargas preferido, ésto se hizo con wget, utilizando la línea de comandos:
$ wget -c http://www.alsa-project.org/alsa-driver-1.0.14.tar.bz2
…y así para cada uno de los archivos. Cuando se tengan los tres archivos, se copian a la carpeta /usr/src/alsa/
la cual, probablemente no existe todavía en el sistema y por lo tanto tendrá que ser creada; ésto se puede lograr con la siguiente línea de comandos:
$ sudo mkdir /usr/src/alsa
…cuando se tenga el directorio, se copian los tres archivos tar.gz al mismo; ésto se puede lograr con:
$ sudo cp alsa* /usr/src/alsa/
Luego hay que descomprimir los ficheros tar.gz con:
$ sudo tar xvf el_archivo_que_vamos_a_descomprimir.tar.gz
Una vez descomprimidos nos ubicamos en la primera carpeta que va a ser alsa-driver-1.0.14/ y compilamos el alsa para las tarjetas HDA Intel con las siguientes líneas de comandos:
$ sudo ./configure --with-cards=hda-intel
$ sudo make
$ sudo make install
Luego vamos a necesitar compilar los otros 2 paquetes restantes, para ello, nos ubicamos en la carpeta correspondiente y hacemos en una terminal lo siguiente:
$ sudo ./configure
$ sudo make
$ sudo make install
Ésto se va a hacer tanto para alsa-lib como para alsa-utils, pues el procedimiento es el mismo. Cuando se hayan compilado los tres paquetes el sistema ya debería ser capaz de reconocer correctamente la tarjeta y por lo tanto debe haber sonido; Ésto puedes ser verificado (1) Abriendo un reproductor de preferencia y reproduciendo algo de musica ó (2) Se puede hacer con la siguiente línea:
$ cat /dev/urandom >> /dev/dsp/
Con lo cual se obtendrá un sonido algo parecido a unos aplausos, pero en realidad son sonidos producidos aleatoriamente.
Ésto debería ser todo. En las máquinas que se configuraron, cuando se conectaban los audífonos en el panel lateral, el sonido salía tanto por los audífonos como por las cornetas y al parecer se solucionó con una reiniciada, pero sino quieres reiniciar entonces lo que tienes que hacer es tumbar los módulos que se crearon y volverlos a cargar, tal cual reiniciaras el sistema:
$ sudo modprobe -r snd_hda_intel652145
$ sudo modprobe -r snd_pcm
$ sudo modprobe -r snd_page_alloc
Luego para cargarlos hacemos las mismas línea, pero sin la opción -r.
Transmission 0.72 en Debian y Ubuntu GNU/Linux AMD64
Bien, en realidad, no he podido esperar a tenerlo trabajando al 100%, se trata de la versión 0.72 de Transmission, el que a mi parecer, es el mejor cliente BitTorrent que jamás haya existido. Según lo describen en la página, cito textualmente:
Transmission has been built from the ground up to be a lightweight, yet powerful BitTorrent client. Its simple, intuitive interface is designed to integrate tightly with whatever computing environment you choose to use. Transmission strikes a balance between providing useful functionality without feature bloat. Furthermore, it is free for anyone to use or modify.
Su instalación es muy fácil, ya que lo único que tenemos que hacer, es bajarnos el .deb (sí, el .deb, imagínense lo fácil que nos va a resultar) de la página de nuestros amígos de GetDeb y luego usar una terminal ó el instalador de paquetes GDebi (aún más fácil) para instalar el paquete.
En el primer de los casos, usando la terminal, lo único que tenemos que hacer en escribir la siguiente línea de comandos:
$ sudo dpkg -i transmission_0.72-0~getdeb1_amd64.deb
`` …esperar a que termine el proceso de instalación y ya podrás ejecutar el Transmission desde Aplicaciones –> Internet –> Transmission.
Para el segundo de los casos, usando el instalador GDebi, tan sólo hay que hacer click encima del .deb con el botón derecho del ratón y seleccionamos la opción Abrir con “Instalador de paquetes GDebi” y luego click en el botón Instalar el paquete, finalmente esperar a que finalice la instalación del paquete y listo!. Una de las cosas que, debo admitir, más me gusta de ésta nueva versión, es que ahora podemos minimizar la aplicación en la bandeja del sistema :) .
Para más información de Transmission, visite su Página Oficial.
StarDict: El diccionario que buscaba
Leyendo el ejemplar #14 de la revista Tux Magazine me encuentro con un interesante artículo, Learning Foreign Languages with jVLT and StarDict, la segunda aplicación descrita en dicho artículo, StartDict, llamó mi atención, así que a continuación se dará una breve revisión de la aplicación en cuestión.
¿Qué es StarDict?
StarDict es un diccionario internacional multiplataforma escrito en Gtk2, puede ser utilizado sin conexión a la web.
Características
-
Búsqueda de patrones: Usted puede buscar patrones de cadenas o caracteres usando comodines, por ejemplo, podrá usar el comodín
*
para buscar una cadena arbitraria, el resultado puede ser vacío, mientras que con el uso del comodín?
buscará una coincidencia con un carácter arbitrario. e.g. Suponiendo que tiene instalado el diccionario Inglés – Español, al buscar el patrón hell? encontrará como resultado la traducción de hello, mientras que con el uso del patrón hell* encontrará todas aquellas posibles coincidencias que comiencen con la cadena hell, hell (infierno en inglés), hell (suerte en noruego), los resultados encontrados dependerá de los diccionarios que haya instalado. - Búsqueda difusa: Si usted por casualidad no recuerda exactamente como deletrear una palabra, podrá intentar realizar dicha búsqueda desde StarDict, éste utilizará el algoritmo de la Distancia de Levenshtein El algoritmo de la Distancia de Levenshtein o la distancia de edición entre dos cadenas, se refiere al número mínimo de operaciones necesarias para transformar una cadena en otra, bajo éste algoritmo se considera una operación a la inserción, eliminación o substitución de un carácter. Para mayor información le recomiendo leer el artículo Levenshtein Distance, in Three Flavors.. Para utilizar esta característica simplemente comience la búsqueda con el carácter /, e.g., suponga que tiene instalado el diccionario Español – Inglés, usted cree que la palabra acero realmente se escribe así: asero, simplemente introduzca en el formulario la cadena /asero, obtendrá el resultado deseado.
-
Búsqueda por palabras seleccionadas:
Si usted desea activar esta característica, deberá marcar la casilla de verificación que se encuentra en la parte inferior izquierda de la ventana principal de la aplicación. StarDict automáticamente buscará palabras o frases que usted haya seleccionado en cualquier aplicación, esto incluye navegadores, OpenOffice.org, etc., usted obtendrá un cuadro de dialogo que le mostrará la definición acerca de la palabra seleccionada.
-
Manejo de diccionarios:
StarDict le permite activar (desactivar) aquellos diccionarios que necesite (no necesite), también puede establecer el orden de búsqueda en los distintos diccionarios instalados. Todo lo anterior podrá realizarlo desde la sección Manage Dictionaries (Recurso: Imagen).
- ¿No encuentra lo que necesita?: StarDict le permite realizar búsquedas en la web, solo deberá seleccionar el botón de búsqueda en Internet y escoger cualquiera de las 10 opciones actuales de búsqueda.
Ahora bien, seguramente esta aplicación resultará útil para muchas personas, si usted es uno de ellos y está interesado en instalarlo, es muy sencillo.
¿Cómo instalar StarDict?
Si usted es tan afortunado como yo, debe estar usando Debian, así que simplemente tendrá que hacer:
# aptitude install stardict
Ahora bien, si usted utiliza por ejemplo, Ubuntu, también puede instalarlo fácilmente, ¿cómo?, en primer lugar debe activar el repositorio universe (recuerde actualizar la lista de paquetes disponibles), posteriormente debe hacer:
$ sudo aptitude install stardict
Si usted utiliza otra distribución de GNU+Linux o es usuario de Windows, lea la documentación de la página oficial del proyecto, lamento informarle que este artículo es una revisión breve de la aplicación StarDict.
¿Cómo instalar diccionarios?
Primero que nada, debe descargar los diccionarios que necesite, para ello le recomiendo ir a la página de Descarga de Diccionarios del proyecto.
Una vez que haya descargado los diccionarios, debe proceder como sigue:
tar -C /usr/share/stardict/dic -x -v -j -f \\
diccionario.tar.bz2
Personalizando la aplicación
Ya para finalizar, usted puede personalizar la aplicación desde la sección de preferencias, desde ella podrá modificar el comportamiento del programa.
Una característica de StarDict que puede resultar realmente molesta es cuando se encuentra activo el modo Scan, es decir, toda palabra o frase resaltada con el ratón generará un cuadro de dialogo con la definición de dicha palabra o frase, si usted desea controlar este comportamiento, le recomiendo activar las siguientes casillas de verificación:
- Only do scanning while modifier key being pressed.
- Hide floating window when modifier key pressed.
Las casillas de verificación previamente mencionadas podrá encontrarlas bajo la sección Dictionary -> Scan Selection.
Si usted esta inconforme con las opciones de búsqueda en Internet, puede agregar las que usted desea desde la sección Main Window -> Search Website.
Actualizado Planeta #ubuntu-es
El hecho de haber dejado de utilizar ubuntu, como lo he manifestado en entradas anteriores, no implica que deba dejar de lado a los amigos del canal #ubuntu-es en el servidor Freenode, además, tampoco debo dejar de cumplir mis deberes de administrador del Planeta #ubuntu-es, por ello, he realizado los siguientes cambios:
- Se actualiza WordPress a su versión 2.0.2.
- Se actualiza el plugin FeedWordPress, basicamente este plugin es un agregador de contenidos Atom/RSS.
- Ahora el dominio principal del Planeta #ubuntu-es es http://www.ubuntuchannel.org/, aunque se han establecido reglas de redirección en el fichero .htaccess para hacer el cambio lo menos traumático posible.
Aún faltan muchos detalles, en este preciso instante no puedo resolverlos debido a un viaje que debo realizar fuera del estado dentro de una hora, el lunes cuando regrese a casa continuare la labor, mientras tanto, le agradezco que si percibe algún error en el nuevo sitio o tiene alguna sugerencia en particular, por favor deje un comentario en esta entrada.
Para quienes deseen suscribirse al Planeta #ubuntu-es, el URI del feed ha cambiado a http://www.ubuntuchannel.org/feed/. Para aquellas personas que estaban suscritas, este cambio no debería afectarles, puesto que se han establecido reglas de redirección.
Si deseas ser miembro, por favor envia un mensaje a través de la sección de contacto del Planeta #ubuntu-es.
Creando listas de reproducción para XMMS y MPlayer
Normalmente acostumbro a respaldar toda la información que pueda en medios de almacenamiento ópticos, sobretodo audio digital, ya sea en ficheros Ogg Vorbis o en MPEG 1 Layer 3. Desde hace poco más de un año hasta la actualidad me he acostumbrado a mantener una estructura lógica, la cual es más o menos como sigue:
/music/
Pero hace mucho tiempo no era tan organizado en cuanto a la estructura de los respaldos, entonces, la pregunta en cuestión es, ¿cómo lograr detectar la presencia de ficheros de audio digital almacenados de manera persistente en un dispositivo óptico de manera automática?
Al igual que lo expresado en la entrada Eliminando ficheros inútiles de manera
recursiva,
haremos uso del comando find
.
Antes de entrar en detalle debo aclarar que voy a realizar una búsqueda recursiva de ficheros en el path correspondiente a mi unidad lectora de CDs. Usted debe ajustar el path por uno apropiado en su caso particular.
Si solo desea buscar ficheros MPEG 1 Layer 3:
find /media/cdrom1/ -name \*.mp3 -fprint playlist
Pero si usted acostumbra a almacenar ficheros Ogg Vorbis en conjunto con ficheros MPEG 1 Layer 3, debería proceder así:
find /media/cdrom1/ \( -name \*.mp3 -or -name \*.ogg \) -fprint playlist
El comando anterior también es aplicable para generar listas de reproducción de video digital, en cuyo caso lo único que debe cambiar es la extensión de los ficheros que desea buscar. El fichero que contendrá la lista de reproducción generada en los casos expuestos previamente será playlist.
Reproduciendo la lista generada
Para hacerlo desde XMMS es realmente sencillo, acá una muestra:
xmms --play playlist --toggle-shuffle=on
Si usted no desea que las pistas en la lista de reproducción se reproduzcan
de manera aleatoria, cambie el argumento on
de la opción
--toggle-shuffle
por off
, quedando como --toggle-shuffle=off
.
Si desea hacerlo desde MPlayer es aún más sencillo:
mplayer --playlist playlist -shuffle
De nuevo, si no desea reproducir de manera aleatoria las pistas que se
encuentran en la lista de reproducción, elimine la opción del reproductor
MPlayer -shuffle
del comando anterior.
Si usted desea suprimir la cantidad de información que le ofrece MPlayer al
reproducir una pista le recomiendo utilizar alguna de las opciones -quiet
o
-really-quiet
.
Ubuntu Dapper Drake Flight 6
Flight 6, es la última versión alpha disponible de Ubuntu Dapper Drake, esta versión ha sido probada razonablemente, pero recuerde que a pesar de ello todavía es una versión alpha, así que no se recomienda su uso en medios en producción. Esta versión puede descargarla desde:
- Europa:
- Reino unido y el resto del mundo:
- Bittorent: Se recomienda su uso si es posible.
- Sitios Espejos: Una lista de sitios espejos puede encontrarse en: Ubuntu Mirror System.
Una lista con los cambios notables en esta sexta versión alpha pueden ser encontrados en Dapper Flight 6.
Breve reseña del FLISOL 2006, Capítulo Mérida-Venezuela
Al llegar a eso de las 9:30 a.m. (hora local) estaban transmitiendo el video Trusted Computing (subtítulos español), un excelente video en donde nos muestran cuan peligroso puede ser la “mala interpretación” que tiene la industria acerca del concepto “Trusted Computing”, modelo en el cual la industria no le permite a los usuarios (comunidad) elegir entre lo que ellos consideran malo o nó, el problema es que ya deciden por tí, simplemente porque la industria no confía en nosotros.
Después de mostrar el video, Hector Colina, uno de los coordinadores del evento, procedió a dar la bienvenida a los asistentes al II Festival Latinoamericano de Instalación de Software Libre, capítulo Mérida, Venezuela. De inmediato, Hector continúo hablando y nos sorprendió con una charla denominada Software Libre y Libre Empresa, en donde nos hablaba de la interesante filosofía detrás del modelo de Software Libre, algunos piensan equivocadamente que bajo el esquema de Software Libre no se es posible generar ganancias, se demostró que es posible hacerlo. También hablo sobre las ventajas técnicas que brinda el Software Libre frente al Software Privativo.
Posteriormente se dió comienzo a las demostraciones de LTSP (Linux Terminal Server Project) por parte de José David Gutierrez, quien también coordinó el evento y es miembro de la Cooperativa AndiNuX, no recuerdo en este instante cuales eran las características que poseía el servidor, pero recuerdo que el cliente sobre el cual se hizo la demostración tenía apenas 40 MB de RAM (sí, leyo bien, 40 MB) y se logró levantar el entorno de escritorio KDE y ejecutar algunas aplicaciones, José comentaba que los requisitos mínimos de memoria RAM eran 16, mientras que lo óptimo erán 32 MB de RAM, así que amigo, si usted esta leyendo esto, no bote su potecito (equipo de bajo recursos de hardware), bajo el esquema de Software Libre podemos recuperarlo, quizá podría donarlo y regalarle una sonrisa a un niño que reciba educación en una escuela con pocos recursos.
Posteriormente comenzaron a colocar algunos videos a los asistentes, entre los cuales recuerdo haber visto Revolution OS, en paralelo, se realizaba el proceso de instalación desde tempranas horas de la mañana, al final de la jornada se lograron contabilizar más de 20 máquinas a las cuales se instaló GNU/Linux, incluyendo potecitos de 32 MB de RAM hasta máquinas de escritorio con procesadores de 64 bits, por supuesto, a una que otra portátil también se le instaló GNU/Linux, además, se regalaron CDs de Debian, Ubuntu, entre otros.
En la tarde el profesor Francisco Palm comenzó su charla Carpintería del Software Libre: un enfoque desde el lenguaje de Programación Python, en ella se nos hace reflexionar acerca de nuestra realidad actual en Venezuela, presentamos poca penetración de internet en nuestra sociedad. Bajo el esquema de Software Privativo, no se le brinda apoyo a la comunidad, no se presenta una innovación alguna.
El profesor Palm también converso sobre puntos interesantes acerca de la Ingeniería de Software Libre, como la Fundación Apache, Debian o Mozilla no presentan certificaciones y no les importa éste hecho en particular, puesto que su desarrollo es robusto, de hecho, muestran como funcionan por dentro. Entre otras cosas bastante interesantes.
Enseguida comenzaron otra charla 2 pupilos del profesor Palm, Diego Díaz y Freddy López, en donde se expuso el Proyecto SIGMA: Soluciones Libres para el mundo Científico, en esta charla pudimos observar una serie de demostraciones del sistema estadistico R. El proyecto SIGMA resulta de una iniciativa de los miembros de la Escuela de Estadística y el Instituto de Estadística Aplicada y Computación (IEAC) de la Universidad de Los Andes.
Sin mucho receso, Leonardo Caballero comenzó su charla acerca de Desarrollo Web con Mozilla FireFox, aca se explicó acerca de las extensiones que resultan muy útiles al desarrollador de páginas web, como por ejemplo, la extensión Web Developer, de manera adicional, se demostró cuan personalizable (desde utilizar temas hasta incluso simular comportarse como otro navegador) puede ser Firefox para un usuario particular, desde extensiones para el clima (ForecastFox) hasta herramientas de blogging.
Particularmente, para el desarrollo web utilizo más extensiones de las que mencionó Leonardo, entre ellas puedo mencionar: CSS Validator, ColorZilla, entre otras. Prefiero no continuar mencionando la lista de extensiones que poseo, se supone que sea una breve reseña, quizá en otro artículo hablaremos acerca de las extensiones de Firefox.
Un poco más tarde, el licenciado Axel Pizzi, quien pertenece a la agencia de traducción y servicios lingüisticos translinguas, conversó acerca del uso de herramientas CAT (Computer aided Translation) bajo el esquema de Software Libre, simplemente se mostraba las bondades de la traducción asistida por computadora, es una manera de traducir contenido en donde el ser humano (traductor) utiliza software diseñado para brindar soporte y facilitar ésta ardua tarea.
Algo nervioso se encontraba Jesús Rivero (no confundir con neurogeek, ok?), pues se estaba haciendo tarde para su charla, Cooperativismo y Software Libre, en donde Jesús mostró como el esquema de desarrollo colaborativo es sumamente útil en las Cooperativas.
Y ya para finalizar la jornada, comence mi charla sobre Desarrolo Web en Python utilizando el framework Django, a manera de introducción, comence a hablar del lenguaje de programación Python, sus bondades, que empresas le utilizan actualmente y que proyectos han desarrollado, entre dicha lista se incluyen las siguientes: Google, Yahoo!, empresas farmacéuticas (AstraZeneca) de gran escala mundial, Industrial Light & Magic (sí, esa misma que está pensando, es la empresa iniciada por George Lucas en el año de 1.975, la encargada de los efectos especiales de la saga “Star Wars”, no solo eso, en su lista se incluyen películas como “Forrest Gump”, “Jurassic Park”, “Terminator 2”, entre otros).
Posteriormente comence a adentrarme ya en el tema que me interesaba, Desarrollo Web, en mi caso particular, hable sobre como utilizar el framework Django, desde la instalación del framework, la instalación de PostgreSQL (recomendada) y del adaptador a dicha base de datos en python, psycopg
, hasta la construcción de la aplicación. Para mayor detalle acerca de esta presentación solo esperen un próxima entrada, quisiera ampliar algunos tópicos para dejarlos un poco más claros.
Si desean ver algunas fotos que logré tomar del II Festival Latinoamericano de Instalación de Software Libre (FLISOL), Capítulo Mérida - Venezuela, pueden revisar el set de fotos FLISOL 2006 de mi cuenta en flickr.
Debo confesar que estaba bastante nervioso al principio porque era mi primera charla. Espero que todo haya salido bien y les haya gustado.
Bueno, finalizamos las actividades como a las 7:30 p.m. (hora local), luego de ello ayudamos a los muchachos a acomodar las cosas y guardarlas en las oficinas de Fundacite Mérida.
Desde mi punto de vista, ha sido una grata experiencia, cualquier corrección a la reseña es bienvenida, pido disculpas si he dejado a alguien por fuera, esta reseña no estaba anotada en ningún medio escrito, solo he comenzado a describir las situaciones que recuerdo, lo más seguro es que olvide algún detalle importante, andaba un poco distraído instalando Debian y Ubuntu en el Festival.
Por supuesto, cualquier corrección, crítica constructiva acerca de la charla que dí se los agradecería, todo sea por mejorar dicho material y publicarlo, por supuesto, manteniendo una licencia libre.
Libro oficial de Ubuntu
La primera edición del libro The Official Ubuntu Book estará lista para el día 4 de Agosto de este mismo año y contará con 320 páginas; la información anterior puede encontrarse en la preventa del libro realizada en Amazon.
Los autores del libro The Official Ubuntu Book son los siguientes:
- Benjamin Mako Hill: Autor del famoso libro Debian GNU/Linux 3.x Bible, desarrollador debian/ubuntu.
- Jono Bacon: Co-autor del libro Linux Desktop Hacks, publicado por O’Reilly, entre otras cosas, Jono colabora con el proyecto KDE.
- Corey Burger: Administrador del proyecto Ubuntu Documentation Project.
- Otros autores: Entre ellos se encuentran Ivan Krstic y Jonathan Jesse.
Este libro tendrá una licencia Creative Commons.
nVIDIA en Ubuntu 6.04
Hace unos días actualicé mi Ubuntu 5.10 a una de sus últimas versiones de testing: Flight 5. Debo admitir que quedé anonadado por lo cambios en la distribución, ya que con todas las mejoras que tiene parece que hubiera pasado, no sólo 6 meses sino años. El Dapper Drake (Flight 5, Ubuntu 6.04) es mucho mejor que sus antecesores. Pero la razón por la cual me decidí a escribir éste artículo es otra: la instalación de los drivers de mi tarjeta nVIDIA y su puesta en funcionamiento a punto.
Cuando actualicé mi sistema no hubo ningún problema, y lo digo en serio, ningún problema de ninguna índole. Toda mi configuración de escritorio quedó intacta; pero empecé a notar que la configuración de la tarjeta de video no se cargaba con el sistema. Entonces supe que, por alguna razón, los drivers de la tarjeta habían cambiado, es decir, el sistema asignó el driver por defecto para la tarjeta, más no los drivers de la tarjeta misma. Entonces tuve que ponerme a configurar la tarjeta.
Lo primero que hice fué verificar que los drivers vinieran con la distribución. Lo hice con la siguiente línea:
$ sudo aptitude search nvidia
Con lo cual obtuve lo siguiente:
i nvidia-glx - NVIDIA binary XFree86 4.x/X.Org driver
v nvidia-kernel-1.0.7174 -
v nvidia-kernel-1.0.8178 -
i nvidia-kernel-common - NVIDIA binary kernel module common files
Entonces ya sabía que los drivers venían con la distro, lo cual me pareció fascinante, ya que en realidad el Flight 5, no es la versión definitiva del Dapper Drake. Luego procedí a verificar la documentación de dicho paquete. Ésto lo hice con la siguiente línea de comandos:
$ sudo aptitude show nvidia-glx
Esto lo hice para verificar que no haya alguna clase de conflictos con otros paquetes, pero en realidad no es un paso necesario, ya que aptitude
resuelve todo tipo de conflictos y dependencias. Después de verificar que todo estaba en orden me decidí a instalar los drivers. Ésto lo hice con la siguiente linea de comandos:
$ sudo aptitude install nvidia-glx
Con lo cual quedaron instalados los drivers de la tarjeta de manera trasparente y rápida. Lo siguiente que debía hacer, era activar la configuración de la tarjeta. Lo cual hice con la siguiente línea de comandos:
$ sudo nvidia-glx-config enable
Una vez hecho ésto ya podía configurar la tarjeta. Algo que hay que hacer notar es que, para las distribuciones anteriores de Ubuntu, había que instalar de manera separada el paquete nvidia-glx
y el nvidia-settings
, sin embargo, aquí queda todo instalado de una vez. Lo que sigue es iniciar la configuración de la tarjeta, lo cual hice con la siguiente línea de comandos:
$ nvidia-settings
Y ya tenía acceso a la configuración de mi tarjeta. Sin embargo, al hacer todo ésto, la configuración no se carga al iniciar el sistema, pero no fué problema, porque lo solucioné colocando en los programas de inicio del gnome-session-manager
los siguiente:
nvidia-settings -l
Este comando carga la configuración de nvidia-settings
que tengamos actualmente. Es lo mismo que, una vez que haya cargado el sistema, ejecutemos en la consola éste comando, sólo que ahora se va a ejecutar apenas inicie el sistema operativo.
Otros ajustes…
Si quieren colocar un lanzador en los menús del panel de gnome deben hacer los siguiente:
$ sudo gedit /usr/share/applications/NVIDIA-Settings.desktop
Y luego insertar lo siguiente en dicho fichero:
[Desktop Entry]
Name=Configuración nVIDIA
Comment=Abre la configuración de nVIDIA
Exec=nvidia-settings
Icon=(el icono que les guste)
Terminal=false
Type=Application
Categories=Application;System;
Y ya tendrán un lanzador en los menús del panel de gnome. Una opción sería utilizar el editor de menús Alacarte.
nvidia-xconf
nvidia-xconf
es una utilidad diseñada para hacer fácil la edición de la configuración de X. Para ejecutarlo simplemente debemos escribir en nuestra consola lo siguiente:
$ sudo nvidia-xconfig
Pero en realidad, ¿qué hace nvidia-xconfig
? nvidia-xconfig
, encontrará el fichero de configuración de X y lo modificará para usar el driver nVIDIA X. Cada vez que se necesite reconfigurar el servidor X se puede ejecutar desde la terminal. Algo interesante es que cada vez que modifiquemos el fichero de configuración de X con nvidia-xconfig
, éste hará una copia de respaldo del fichero y nos mostrará el nombre de dicha copia. Algo muy parecido a lo que sucede cada vez que hacemos:
dpkg-reconfigure xserver-xorg
Una opción muy útil de nvidia-xconfig
es que podemos añadir resoluciones al fichero de configuración de X simplemente haciendo:
$ sudo nvidia-xconfig --mode=1280x1024
…por ejemplo.
Vulnerabilidad grave corregida en ubuntu
La vulnerabilidad en ubuntu donde cualquiera con acceso al shell podía ver la contraseña del instalador del sistema ha sido reparada.
Los paquetes afectados son base-config
y passwd
en Ubuntu 5.10 (Breezy Badger), el problema puede ser corregido al actualizar los paquetes afectados a las versiones 2.67ubuntu20
(base-config
) y 1:4.0.3-37ubuntu8
(passwd
). En general, una actualización del sistema es suficiente para que los cambios surtan efecto.
La vulnerabilidad en donde era posible ver la constraseña del instalador de ubuntu y así tener acceso a privilegios de superusuario (por supuesto, si la contraseña no había sido cambiada desde la instalación) fue descubierta por Karl Øie, el instalador de Ubuntu 5.10 falla en la limpieza de contraseñas en los ficheros de registros de instalación. Dichos ficheros pueden ser leidos por cualquiera, de este modo cualquier usuario local pudiese ver las contraseñas del primer usuario, el cual tiene privilegios por completo en una instalación por defecto.
El paquete actualizado eliminará las contraseñas almacenadas en texto plano en los ficheros de registro de instalación y adicionalmente hará que los registros sean leídos únicamente por el superusuario.
Esta vulnerabilidad no afecta a los instaladores de las versiones 4.10
, 5.04
, o la que está por llegar, 6.04
. Sin embargo, considere necesario aplicar el parche si usted ha actualizado su sistema desde Ubuntu 5.10
a la actual versión en desarrollo 6.04
(Dapper Drake), en este caso verifique que ha actualizado el paquete passwd
a la versión 1:4.0.13-7ubuntu2
.
Más propuestas para la campaña en contra de la gestión del CNTI
David Moreno Garza (a.k.a. Damog) se ha unido a la campaña que apoya a la Asociación de Software Libre de Venezuela (SoLVe), la cual rechaza (al igual que nosotros) el acuerdo entre IBM Venezuela y el Centro Nacional de Tecnologías de Información (CNTI).
Damog nos sorprende con un script escrito en Perl que genera un botón personalizado con cierto mensaje.
Para la puesta en funcionamiento del script necesitaremos en primera instancia instalar la variante gd2
del módulo en Perl que contiene a la librería libgd
, ésta última librería nos permite manipular ficheros PNG.
Tanto en Debian como en su hijo Ubuntu el procedimiento es similar al siguiente:
$ sudo aptitude install libgd-gd2-perl
$ wget http://www.damog.net/files/misc/apoyo-solve-0.1.zip
$ unzip apoyo-solve-0.1.zip
$ cd apoyo-solve-0.1
$ perl apoyo-solve.perl <text>
En donde <text>
debe ser reemplazado por su nombre o el de su sitio. Seguidamente proceda a subir la imagen.
Si lo desea, puede ver los diferentes banners de la campaña en contra de la gestión actual del CNTI, únase al llamado de la Asociación de Software Libre de Venezuela (SoLVe).
hwinfo: Detectando el hardware actual
hwinfo
es un programa que nos permite conocer rápidamente el hardware detectado actualmente en nuestros ordenadores, por ejemplo, si deseamos obtener los datos de dispositivo SCSI, simplemente utilizamos el comando hwinfo --scsi
.
Para instalar este programa en Ubuntu Linux en primer lugar debemos tener activados el repositorio universe
, seguidamente haremos uso de aptitude
, tal cual como sigue:
$ sudo aptitude install hwinfo
Si deseamos conocer el uso de este programa de manera detallada, simplemente escribimos hwinfo --help
.
En el caso que haga uso del comando hwinfo
sin parámetro alguno nos mostrará la lista completa del hardware detectado actualmente, es importante resaltar que esta lista puede ser muy extensa, por lo cual le recomiendo hacer uso de un pipe para administrar la salida generada por hwinfo
y poder visualizarla página a página, tal cual como sigue.
$ hwinfo | less
Si por el contrario, usted solo desea conocer una lista resumida del hardware detectado haga uso del parámetro --short
, lo anterior quedaría de la siguiente manera:
$ hwinfo --short
Este programa nos brinda bastantes opciones, es recomendable hacer uso de los parámetros cuando necesitamos información referente a un dispositivo en específico, por ejemplo, si deseamos conocer la información acerca de la tarjeta de sonido, hacemos lo siguiente:
$ hwinfo --sound
Como le mencione anteriormente, para conocer en detalle las opciones que nos brinda este programa, le recomiendo leer el manual. Espero sea de provecho ;)
Vulnerabilidad en el kernel Linux de ubuntu
Este problema de seguridad únicamente afecta a la distribución Ubuntu 5.10, Breezy Badger.
Los paquetes afectados son los siguientes:
linux-image-2.6.12-10-386
linux-image-2.6.12-10-686
linux-image-2.6.12-10-686-smp
linux-image-2.6.12-10-amd64-generic
linux-image-2.6.12-10-amd64-k8
linux-image-2.6.12-10-amd64-k8-smp
linux-image-2.6.12-10-amd64-xeon
linux-image-2.6.12-10-iseries-smp
linux-image-2.6.12-10-itanium
linux-image-2.6.12-10-itanium-smp
linux-image-2.6.12-10-k7
linux-image-2.6.12-10-k7-smp
linux-image-2.6.12-10-mckinley
linux-image-2.6.12-10-mckinley-smp
linux-image-2.6.12-10-powerpc
linux-image-2.6.12-10-powerpc-smp
linux-image-2.6.12-10-powerpc64-smp
linux-patch-ubuntu-2.6.12
El problema puede ser solucionado al actualizar los paquetes afectados a la versión 2.6.12-10.28. Posterior al proceso de actualización debe reiniciar el sistema para que los cambios logren surtir efecto.
Puede encontrar mayor detalle acerca de esta información en el anuncio Linux kernel vulnerability hecho por Martin Pitt a la lista de correos de avisos de seguridad en Ubuntu.
Goobuntu, Google y los rumores…
Todo comenzo el día martes de esta misma semana, al ser publicado el artículo Google at work on desktop Linux en The Register, para mí todo aquello tenía la esencia de un nuevo rumor acerca Google, no en el sentido de utilizar una adaptación, denominada Goobuntu, de Ubuntu para las personas que laboran dentro de Google, sino en el hecho que el artículo enfatizaba la posibilidad de distribuir al público en general la adaptación de Ubuntu hecha por Google.
En el artículo mencionado al comienzo del párrafo anterior nos encontramos con afirmaciones tales como las siguientes:
Google is preparing its own distribution of Linux for the desktop, in a possible bid to take on Microsoft in its core business - desktop software.
Un poco más tarde nos encontramos con esto.
But it’s possible Google plans to distribute it to the general public, as a free alternative to Windows.
La posible distribución de “Goobuntu” al público fue desmentida pocas horas después de publicada la noticia, el responsable de proyectos open source de Google, Chris DiBona, lo aclara en este comentario hecho en Slashdot [Vía], en donde afirma lo siguiente:
Goobuntu is our internal desktop distribution. It’s awesome, but we’re not going to be releasing it. Unless you work here it wouldn’t work anyway.
Una de las cosas que me impresionó de todo esto, fué lo rápido que se extendió esta noticia. Estaba por todos lados, en los blogs que comúnmente leo, en Technorati, bajo el tag ubuntu, solo se hablaba de ello. Más y más sitios se unían rápidamente a este grupo.
Me da la impresión que cada vez que termina un rumor acerca del probable Google OS o Google Browser comienza uno nuevo, ¿esto acabará algún día?, ¿es sano adorar tanto a Google?, acaso Google es tan cool que le hace olvidar a las personas los malos productos que ha sacado últimamente, pareciese que sí.
Siguiendo con el tema, llegados a este punto, ¿alguien recuerda el lanzamiento de Google Analytics?, este servicio de estadísticas gratis para sitios web desde el mismo día de su lanzamiento no dejó de dar problemas, fué un total desastre, ¿era muy difícil prever que este servicio iba a tener una demanda excesiva?, no lo creo, su rendimiento daba lastima, los servidores estaban saturados, páginas en mantenimiento después del lanzamiento, ¿acaso Google estaba jugando con nosotros?.
Supongo que Google ha olvidado esa parte de la mercadotecnia en donde se logra satisfacer las necesidades y requisitos de los consumidores, al fin y al cabo es una empresa que intenta responder a una economía de mercado, pero lo está haciendo mal.
Google ha demostrado su interes en el escritorio, aplicaciones como Google Desktop Search, Google Talk, Google Earth, Google Pack dan fé de ello. No puedo dar mi opinión acerca de estas últimas aplicaciones, puesto que no los he probado al ser solo para sistemas Windows, pero con los antecedentes que se está ganando últimamente Google, pareciese que no hace falta probarlos para sacar una conclusión de ellos. Sebastian Delmont puede aclarar un poco esta situación en el artículo El paquete de Google decepciona.
mp3wrap: Concatenando ficheros mp3
mp3wrap es una utilidad en línea de comando que nos permite fusionar o concatenar dos o más ficheros mp3
, todo esto sin perder los nombres de ficheros y la información de los ID3, estándar que permite la inclusión de metadatos en contenedores multimedia. También es posible añadir otros ficheros que no sean mp3
, como por ejemplo, listas de reproducción, ficheros de información, imágenes de portada. Claro, este proceso es posible revertirlo gracias a mp3splt, el cual describiré en un próximo artículo.
Con mp3wrap
, usted puede fácilmente fusionar hasta un máximo de 255 ficheros en uno solo, lo cual pareciese ser suficiente para la mayoría. De igual manera, como se mencionó previamente, usted puede añadir ficheros que no sean mp3
, pero hay algunas consideraciones al respecto.
- Si el fichero es de texto, como pueden ser las listas de reproducción, los ficheros de información, entre otros, se recomienda que estos se ubiquen al principio del fichero a generar, puesto que el reproductor los descartará rápidamente.
- Si el fichero es binario, como las imágenes por ejemplo, usted debe colocarlas al final del fichero a generar, de esta manera el reproductor se los encontrará después de reproducir y no los confundirá con ficheros
mp3
.
Instalación del programa
Para poder instalar esta aplicación en Ubuntu, en primer lugar debemos tener activo en nuestro fichero /etc/apt/sources.list
el repositorio universe
, después de haber verificado esto procedemos a instalarlo.
$ sudo aptitude install mp3wrap
A continuación explicaré el uso de mp3wrap
a través de un ejemplo.
En primer lugar, mostraré la lista de ficheros a fusionar.
$ ls
01.mp3 02.mp3 03.mp3 04.mp3
Ahora fusionaré las 2 primeras canciones.
$ mp3wrap album.mp3 01.mp3 02.mp3
He obviado el mensaje que nos muestra mp3wrap
para evitar extender más de lo necesario este artículo. También es importante acotar que el fichero generado no se llamará album.mp3
(lo que pareciese lógico), sino album_MP3WRAP.mp3
, es recomendable no borrar la cadena MP3WRAP
, ésta le indicará al programa mp3splt
, el cual nos permite separar de nuevo los ficheros fusionados, que dicho fichero fué fusionado utilizando mp3wrap
, lo anterior nos facilitará su extracción con mp3splt
, en caso de darse.
Ahora bien, voy a añadir las otras dos canciones, que conste que este paso lo hago solamente para demostrar como añadir otros ficheros a una compilación previamente hecha con mp3wrap
.
$ mp3wrap -a album_MP3WRAP.mp3 03.mp3 04.mp3
Si deseamos conocer cuales son los archivos que contiene el fichero generado por mp3wrap
, simplemente debemos hacer lo siguiente.
mp3wrap -l album_MP3WRAP.mp3
List of wrapped files in album_MP3WRAP.mp3:
01.mp3
02.mp3
03.mp3
04.mp3
Si en la instrucción anterior hubiesemos hecho uso de la opción -v
(verbose), mp3wrap
nos mostraría información adicional acerca de los ficheros. Por ejemplo:
mp3wrap -lv album_MP3WRAP.mp3
List of wrapped files in album_MP3WRAP.mp3:
# Size Name
--- -------- --------
1) 6724962 01.mp3
2) 9225205 02.mp3
--- -------- --------
15950240 2 files
Pueden observar en el ejemplo anterior que se nos muestra el tamaño en bytes de cada uno de los ficheros, así como el número total de ficheros que han sido fusionados y su tamaño correspondiente en bytes.
Como se ha podido ver a través del articulo el uso de mp3wrap
es bastante sencillo, si tiene alguna duda acerca de su uso consulte el manual de mp3wrap
, man mp3wrap
, o la sección de preguntas mas frecuentes acerca de mp3wrap.
Instalinux: Instalando Linux de manera desatentida
Instalar GNU/Linux de manera desatendida ahora es realmente fácil haciendo uso de instalinux, esta interfaz web a través de unas preguntas acerca de como deseamos configurar nuestro sistema, nos permitirá crear una imagen que facilitará la instalación del sistema GNU/Linux de manera desatendida. Usted lo inserta, escribe install, y luego cuando regrese más tarde, tendrá un sistema GNU/Linux (la distribución de su escogencia) totalmente funcional esperando por usted.
Para todo lo descrito previamente, instalinux hace uso de scripts escritos en Perl que son parte del proyecto de código abierto LinuxCOE, desarrollado por Hewlett Packard.
Hasta ahora este servicio web gratuito permite crear métodos de instalación desatendida para las siguientes distribuciones:
- Fedora Core 4
- Debian
- SUSE
- Ubuntu
Instalinux nos permite seleccionar aquellos componentes que deseamos, posteriormente se crea una imagen de aproximadamente 30MB, la cual es clave para realizar la instalacion desatendida. Una vez culminado el proceso debemos descargar dicha imagen a nuestro disco duro.
Hasta ahora la propuesta que trae dicha interfaz gráfica me fascina, quizá el único punto débil que le veo es que posterior a la descarga de los aproximadamente 30MB usted deberá descargar los paquetes que solicite la instalación en su caso, esto último puede generar trauma en aquellas personas que no cuenten con conexiones de banda ancha.
Cowbell: Organiza tu música
Cowbell, es una aplicación que te permite organizar tus compilaciones musicales de una manera fácil y divertida, ya no tienes que aburrirte por horas al intentar organizar tus colección musical manualmente.
Una de las cosas que me han agradado de este programa es que aparte de poder editar las etiquetas manualmentede en una interfaz bastante agradable y sencilla, también puedes obtener toda la información necesaria a través de Amazon Web Services, lo anterior incluye: Número, Título, Año, Estilo, Portada y demás información relacionada con las canciones. Al utilizar este servicio cuentas con una amplia bases de datos, lo anterior en realidad permite ahorrar mucho tiempo.
Dentro de las preferencias de este programa nos encontraremos con opciones que nos permitirán renombrar ficheros de acuerdo a un patrón, el cual lo podemos generar al combinar cualquiera de las siguientes palabras claves.
- Artist
- Album
- Title
- Track
- Genre
- Year
Las palabras claves anteriores se explican por sí solas. Simplemente escoge el patrón que más se ajuste a tus necesidades. Entre otras de las características de este programa, cabe mencionar la posibilidad de generar un fichero de lista de reproducción del álbum.
¿Tienes una larga colección de música cuyas etiquetas debes arreglar?, no te preocupes, Cowbell también puedes usar desde la línea de comandos, la manera de invocar el comando es la siguiente:
$ cowbell --batch /ruta/a/tu/musica
Donde evidentemente debes modificar el directorio /ruta/a/tu/musica
de acuerdo a tus necesidades.
Para instalar esta aplicación en ubuntu debes tener activo el repositorio universe
en tu fichero /etc/apt/sources.list
. Una vez actualizada la lista de repositorios, puedes instalar Cowbell de la siguiente manera:
$ sudo aptitude cowbell
Integridad del CD de Ubuntu
Recientemente un amigo (de ahora en adelante lo llamaré pepito) al que le regalé un par de CD’s de Ubuntu, me preguntó después de unos días lo siguiente: Milton, ¿cómo puedo verificar la integridad del CD de instalación de Ubuntu?.
En primer lugar, estaba muy contento porque pepito deseaba en realidad migrar a GNU/Linux. Pero la idea de este artículo no es hablarles de pepito, sino describir lo más detalladamente posible la respuesta que le dí.
Aprovechar las opciones que nos brinda el CD de instalación
El mismo CD de instalación de ubuntu nos brinda una opción que nos permite verificar la integridad del disco, para ello debemos realizar lo siguiente:
- Colocar el CD de instalación de Ubuntu en la unidad de CD-ROM correspondiente, seguidamente proceder a reiniciar, recuerde que en la configuración de la BIOS debe tener como primera opción de arranque la unidad de CD-ROM que corresponda en su caso.
- Al terminar la carga del CD usted podrá apreciar un mensaje de bienvenida similar al siguiente:
The default installation is suitable for most desktop or laptops systems. Press F1 for help and advanced installation options.
To install only the base system, type “server” then ENTER. For the default installation, press ENTER.
boot:_
Lo anterior, traducido a nuestro idioma sería similar a:
La instalación por defecto es conveniente para la mayoría de los sistemas de escritorio o portátiles. Presione F1 para ayuda y opciones de instalación avanzadas.
Para instalar solo el sistema base, escriba “server” luego ENTER. Para la instalación por defecto, presione ENTER.
- Para este artículo, se realizará el modo de instalación por defecto, lo anterior quiere decir que solamente debemos presionar la tecla ENTER, enseguida observaremos la carga del kernel.
- Desde el cuadro de dialogo Choose Language, primero en aparecer, presionaremos la tecla Tab y seguidamente debemos seleccionar la opción Go back
- El paso anterior nos llevará al menú principal de la instalación de Ubuntu (Ubuntu installer main menu), una vez ubicados acá, simplemente debemos seleccionar la opción Check the CD-ROM(s) Integrity.
- Al finalizar el paso anterior nos llevará a un cuadro de dialogo de confirmación, pero antes podremos notar una pequeña advertencia:
Warning: this check depends on your hardware and may take some time.
Check CD-ROM integrity?
Lo anterior, traducido a nuestro idioma sería similar a:
Advertencia: Esta revisión depende de su hardware y puede tomar cierto tiempo.
Revisar la integridad del CD-ROM?
A la pregunta anterior respondemos Sí
- Si lo prefiere, salga de su casa, tome un poco de sol y regrese ;)
- Si el CD-ROM no tiene fallo alguno, podrá observar un mensaje al final de la revisión similar al siguiente:
Integrity test successful the CD-ROM. Integrity test was successful.
The CD-ROM is valid
Si la revisión de la integridad del CD-ROM es satisfactoría, puede continuar con el proceso de instalación.
Suerte y bienvenido al mundo GNU/Linux ;)
Ubuntu (Dapper Drake) Flight 3
La tercera versión alpha de Ubuntu 6.04 (Dapper Drake), continúa mostrando mejoras e incluye nuevo software.
Las mejoras incluyen una actualización en el tema, el cual desde la segunda versión alpha es manejado por gfxboot
.
Ademas se incluye X Window System versión X11R7
, GNOME 2.13.4
, también se observan mejoras y simplificación de los menús, algunas nuevas aplicaciones como XChat-GNOME, un LiveCD más rápido y que permite almacenar nuestras configuraciones.
También se notan algunas mejoras estéticas en el cuadro de dialógo de cierre de sesión.
En cuanto a la mejora y simplificación de los menús, la idea básicamente es obviar aquellas opciones que pueden llegar a ser confusas para los usuarios, también se evita la duplicación de opciones, esto permite que exista un solo punto para acceder a cada función del sistema, mejorando de esta manera la usabilidad en nuestro escritorio favorito.
Se ha creado un nuevo dialógo que indica cuando es necesario reiniciar el sistema, esto sucede cuando se realizan importantes actualizaciones al sistema, en donde es recomendable reiniciar el sistema para que dichas actualizaciones surtan efecto.
¿Qué mejoras incluye la versión LiveCD?
Quién haya usado alguna vez en su vida un LiveCD puede haberse percatado que éstos presentan ciertos problemas, uno de ellos es la lentitud en el tiempo de carga del sistema, en este sentido se han realizado algunas mejoras en el cargador utilizado en el arranque, el tiempo de carga se ha reducido aproximadamente de unos 368 segundos a 231 segundos, esta mejora es bastante buena, aunque se espera mejorar aún mas este tiempo de carga del LiveCD.
Otro de los problemas encontrados en los LiveCD, es que el manejo de los datos no es persistente, esta nueva versión incluye una mejora que permite recordar las configuraciones, esto quiere decir que la siguiente vez que usted utilice el LiveCD dichas configuraciones serán recordadas. Esto es posible ya que el LiveCD permite guardar sus cambios en un dispositivo externo (al CD) como por ejemplo un llavero usb. Por lo tanto, si usted especifica el parámetro persistent
cuando usted esta iniciando el LiveCD, éste buscará el dispositivo externo que mantiene las configuraciones que usted ha almacenado. Si desea conocer más acerca de esta nueva funcionalidad en el LiveCD vea el documento LiveCDPersistence.
Si usted desea descargar esta tercera versión alpha de Ubuntu 6.04, puede hacerlo en Ubuntu (Dapper Drake) Flight CD 3.
Mayor detalle acerca de las nuevas características que presenta esta nueva versión en el documento DapperFlight3.
Nota: Esta versión no es recomendable instalarla en entornos de producción, la versión estable de Dapper Drake se espera para Abril de este mismo año.
Gnickr: Gnome + Flickr
Gnickr le permite manejar las fotos de su cuenta del sitio Flickr como si fueran archivos locales de su escritorio Gnome. Todo lo anterior lo hace creando un sistema de ficheros virtual de su cuenta en Flickr.
Hasta ahora, Gnickr le permite realizar las siguientes operaciones:
- Subir fotos.
- Renombrar fotos y set de fotos.
- Borrar fotos.
- Insertar fotos en sets previamente creados.
- Eficiente subida de fotos, escala las imágenes a
1024 x 768
Se planea que en futuras versiones se pueda editar la descripción de cada foto, la creación/eliminación de sets de fotos, establecer las opciones de privacidad en cada una de las fotos, así como también integrar el proceso de autorización en nautilus.
Si desea instalar Gnickr, previamente debe cumplir con los siguientes requisitos.
- Gnome 2.12
- Python 2.4
- gnome-python >= 2.12.3
- Librería de imágenes de Python (PIL)
Instalando Gnickr en Ubuntu Breezy
En primer lugar debemos actualizar el paquete gnome-python
(en ubuntu recibe el nombre de python2.4-gnome2
) como mínimo a la versión 2.12.3
, para ello descargamos el paquete python2.4-gnome2_2.12.1-0ubuntu2_i386.deb.
Seguidamente descargamos el paquete Gnickr-0.0.3 para Ubuntu Breezy. Una vez descargados los paquetes procedemos a instalar cada uno de ellos, para ello hacemos.
$ sudo dpkg -i python2.4-gnome2_2.12.1-0ubuntu2_i386.deb
$ sudo dpkg -i gnickr_0.0.3-1_i386.deb
Una vez que hemos instalado el paquete Gnickr para Ubuntu Breezy debemos autorizarlo en nuestra cuenta Flickr para que éste programa pueda manipular las fotos, para ello hacemos lo siguiente.
$ gnickr-auth.py
Simplemente debe seguiremos las instrucciones que nos indica el cuadro de dialogo. Una vez completado el proceso de autorización debe reiniciar nautilus
.
$ pkill nautilus
Uso de Gnickr
El manejo de Gnickr es muy sencillo, para acceder a sus fotos en su cuenta Flickr simplemente apunte nautilus a flickr:///
.
$ nautilus flickr:///
También puede ver las fotos de cualquier otra cuenta en Flickr apuntando a flickr://[nombreusuario]
.
Para agregar fotos a un set, simplemente arrastre desde la carpeta Unsorted hasta la carpeta que representa el set de fotos que usted desea, lo anterior también puede aplicarse para mover una foto de un set a otro.
Para renombrar una foto, simplemente modifique el nombre del fichero de la foto.
Vulnerabilidad en Apache
Según un anuncio hecho el día de hoy por Adam Conrad a la lista de seguridad de ubuntu existe una vulnerabilidad que podría permitirle a una página web maligna (o un correo electrónico maligno en HTML
) utilizar técnicas de Cross Site Scripting en Apache. Esta vulnerabilidad afecta a las versiones: Ubuntu 4.10 (Warty Warthog), Ubuntu 5.04 (Hoary Hedgehog) y Ubuntu 5.10 (Breezy Badger).
De manera adicional, Hartmut Keil descubre una vulnerabilidad en el módulo SSL (mod_ssl
), que permitiría realizar una denegación de servicio (DoS), lo cual pone en riesgo la integridad del servidor. Esta última vulnerabilidad solo afecta a apache2, siempre y cuando esté usando la implementación “worker” (apache2-mpm-worker
).
Los paquetes afectados son los siguientes:
apache-common
apache2-common
apache2-mpm-worker
Los problemas mencionados previamente pueden ser corregidos al actualizar los paquetes mencionados.
Vulnerabilidad en Perl
Las siguientes versiones se encuentran afectadas ante este fallo de seguridad:
- Ubuntu 4.10 (Warty Warthog)
- Ubuntu 5.04 (Hoary Hedgehog)
- Ubuntu 5.10 (Breezy Badger)
En particular, los siguientes paquetes se encuentran afectados:
libperl5.8
perl-base
El problema puede ser corregido actualizando los paquetes a sus últimas versiones en las respectivas versiones de Ubuntu. En general, el modo estándar de actualizar la distribución será mas que suficiente.
$ sudo aptitude dist-upgrade
La actualización pretende solucionar una vulnerabilidad del interprete Perl, el cual no era capaz de manejar todos los posibles casos de una entrada malformada que podría permitir la ejecución de código arbitrario, así que es recomendable actualizar su sistema de inmediato.
Sin embargo, es importante hacer notar que esta vulnerabilidad puede ser aprovechada en aquellos programas inseguros escritos en Perl que utilizan variables con valores definidos por el usuario en cadenas de caracteres y en donde no se realiza una verificación de dichos valores.
Si desea mayor detalle, le recomiendo leer el anuncio hecho por Martin Pitt en [USN-222-1] Perl vulnerability.
edubuntu es adaptable al ambiente familiar?
Es importante hacer notar que el objetivo primordial de edubuntu es ofrecer una alternativa para el ambiente escolar (puede ser igualmente usable por los niños en casa), ofreciendo dos modos de instalación (servidor y estación de trabajo), el primero de los modos de instalación es ideal para ambientes escolares donde existen laboratorios, se provee LTSP (Linux Terminal Server Project), el cual permite que otros ordenadores (los cuales fungen como clientes) se conecten al servidor y utilicen los recursos de éste para ejecutar sus aplicaciones de escritorio.
Lo anterior resulta muy interesante porque permite mantener todas las aplicaciones en un solo lugar (el servidor), cualquier actualización que se haga ocurrirá únicamente en éste. Por lo tanto, cada vez que un cliente inicie sesión, automáticamente estará ejecutando un sistema actualizado.
La aclaración anterior viene dada por el artículo Review: Is Edubuntu truly the operating system for families?, redactado por Jay Allen, en donde el autor hace una revisión de uno de los sabores de ubuntu, edubuntu, pensando que éste estaba orientado exclusivamente a los niños de la casa.
El autor intenta dar su punto de vista como un padre de familia con pocos conocimientos de informática y no como el desarrollador de software que ha sido por 12 años.
Muchos de los lectores seguramente sabrán que los sabores orientados a los usuarios de casa son: Ubuntu, Kubuntu y quizás Xubuntu, pero no le podemos decir a un padre de familia que tiene pocos conocimientos en el área lo suguiente: Instala (X | K)ubuntu y seguidamente procede a instalar el paquete edubuntu-desktop . Esta opción quedará descartada en el siguiente artículo ya que desde el punto de un padre con pocos conocimientos en informática pero que esté preocupado por la educación de sus hijos preferirá tener el sistema que el realmente desea en un instante, en vez de tener que instalar ciertos paquetes para obtener lo que él en realidad necesita. |
Edubuntu brinda un sistema operativo lleno de paquetes educacionales, juegos, herramientas de publicación, edición gráfica y más. Todo lo descrito previamente de manera gratuita (sin cargo alguno y comprometido con los principios del Software Libre y el Código de Fuente Abierta), se realiza un gran trabajo para ofrecer una excelente infraestructura de accesibilidad, incluso para aquellos usuarios que no están acostumbrados al manejo de ordenadores, dentro de esa infraestructura de accesibilidad se considera el lenguaje, edubuntu brinda un sistema operativo que se adapta a cualquier usuario sin importar su lenguaje.
Edubuntu puede ser la respuesta a aquellas familias con pocos recursos económicos, en donde el tener acceso a un ordenador de altas prestaciones es un lujo, o en aquellos casos donde se tenga que pagar altas sumas de dinero anualmente por mantener un sistema operativo ineficiente y lleno de problemas.
Edubuntu le brindaría a estos niños (y familias) todo el poder y flexibilidad que ofrecen los sistemas *nix, todos estos beneficios a muy bajos costos.
He considerado importante esta revisión hecha por Jay Allen acerca de edubuntu, porque no es difícil imaginar que esos millones (espero) de niños que utilizan edubuntu en sus escuelas por horas, también quisieran tener ese sistema operativo tan agradable en sus casas.
Según la opinion del autor de la revisión, Jay Allen, después de experimentar con edubuntu por un día con sus hijos Neve, Jaxon, Veda de 8, 6 y 4 años respectivamente, afirma que edubuntu aún no está totalmente listo para aquellas familias con pocos conocimientos en el campo de la tecnología, pero con las características que ofrece hasta ahora es capaz de mantener satisfechos tanto a adultos como niños.
Puntos a favor para edubuntu
- Edubuntu es ideal para ordenadores de bajos recursos, por ejemplo, el autor de la revisión instaló edubuntu en una máquina con procesador Celeron a 550 MHz, 17 GB de disco duro, 4 GB en un disco duro secundario y con 192 MB de RAM.
- Respecto al punto anterior, edubuntu es capaz de brindar una mejor experiencia para los niños en un ordenador de bajos recursos que tenga instalado por ejemplo Windows 98.
- Una vez instalado edubuntu, éste ofrece una interfaz sencilla, usable y muy rápida.
- El sistema viene precargado con una serie de características muy amenas para los niños. De igual manera, se ofrecen características muy atractivas para los adultos de la casa, entre las que se encuentran, una suite ofimática realmente completa, herramientas para la manipulación de imágenes, visualización de películas y videos.
- Mozilla Firefox es incluido por defecto en la instalación, así que si está acostumbrado a él en otros ambientes, la transición no será traumática.
- Algunos de sus niños ni siquiera se dará cuenta del cambio, tal es el caso de Veda, el menor de los hijos de Jay Allen, ni siquiera se percató que su padre secretamente reemplazó Windows XP por edubuntu.
- Al pasar las semanas y sus hijos se hayan acostumbrado al sistema, puede mostrarle características más avanzadas de edubuntu sin mucha dificultad, es más, seguramente ellos ya las sepan, recuerde que los niños son muy curiosos.
Puntos en contra para edubuntu
- ¿Cuántos padres o madres en realidad entenderán lo que significan cada uno de los modos de instalación que ofrece edubuntu?, sobretodo si éstos optan por el modo de instalación por defecto, el cual es modo servidor (server), cuando en realidad deben elegir el modo de estación de trabajo (workstation).
- Muchos de los mensajes que muestra el asistente para la instalación contienen un lenguaje técnico, lo cual no es ideal en aquellos padres o madres con pocos o nulos conocimientos al respecto.
- El asistente de instalación ofrece la creación de una única cuenta, la cual puede en cualquier instante tener permisos administrativos a través del comando
sudo
(acerca de ello explico un poco en el artículo ¿Es necesario activar la cuenta root en Ubuntu?), esto puede ser terrible en esos casos donde los padres o madres posean pocos o nulos conocimientos respecto a la creación de usuarios desde la cuenta predeterminada, permisos administrativos, entre otras cuestiones. Según la opinión de Jay Allen, preferiría alguna de las siguientes opciones, que el mismo asistente le dé la oportunidad de crear otra cuenta con permisos limitados o que pueda crear una cuenta para cada uno de sus hijos. - Otro punto en contra es el uso de nombre un tanto crípticos en la suite de educación KDE, incluso, la hija de Jay Allen, Neve (8 años de edad), se preguntaba en voz alta el por qué de la existencia del prefijo K en los nombres de las aplicaciones de la suite, para ella simplemente no tenía sentido. En este caso, lo más lógico sería colocar nombres más explicativos en las aplicaciones. Por lo tanto, no tendría que ser necesario abrir una aplicación solamente para saber de que trata o que soluciones puede brindarle.
- Otro punto en contra es el hecho que el programa Mozilla Firefox no traiga por defecto una sección que permita de cierta manera controlar la navegación de sus hijos, para evitar que estos últimos vean contenido explícito para adultos. Respecto a este punto en particular no es responsabilidad de edubuntu como tal, debido a que el nombre Firefox es una marca registrada (esto puede ser conveniente para el control de calidad de la aplicación como tal), a pesar que el proyecto de la Fundación Mozilla es código abierto, no se pueden realizar cambios a la aplicación original y distribuirla bajo el mismo nombre. Por lo tanto, los desarrolladores de edubuntu deben elegir entre dejar de usar el reconocido nombre Firefox, o no incluir ninguna extensión útil. Más adelante se darán detalles acerca de como solucionar este problema.
Propuestas
De la revisón hecha por Jay Allen, han salido algunas propuestas, entre ellas, una de las que me llamó la atención fué la de distribuir de manera separada los dos modos de instalación de edubuntu, lo anterior sería ideal en esos casos (que deben ser cientos) donde el padre (o madre) no posea muchos conocimientos acerca del tema, éste no sabrá que opción elegir, cuando él (o ella) ni siquiera sabe lo que significa instalación en modo servidor o modo estación de trabajo. También podría considerarse cambiar el modo de instalación por defecto, en vez de ser servidor, cambiarlo por estación de trabajo.
Otra propuesta interesante es la necesidad de proporcionar tutoriales interactivos que de alguna manera introduzcan a los niños de diversas edades en las características, capacidades y beneficios que les proporciona el sistema que manejan.
Si edubuntu no quiere prescindir del conocido nombre Firefox, debe facilitar después de la instalación una guía que indique los pasos necesarios para establecer el control de la navegación de los niños. Sería ideal colocar una guía para instalar dicha extensión o plugin en la página inicial de Firefox, o proporcionar un acceso directo a esta guía de “Primeros Pasos” desde el escritorio de la cuenta predeterminada.
Clientes BitTorrent
Desde mi punto de vista Azureus es un cliente BitTorrent que cae en los excesos, aparte de ello es demasiado lento y por si fuera poco consume una gran cantidad de recursos del sistema.
Si usted es usuario de Ubuntu Linux, seguramente estará preguntándose, ¿por qué buscar un cliente BitTorrent si Breezy incluye uno? , bueno, si le soy sincero, ese cliente apesta, tiene muy pocas opciones.
En los siguientes párrafos veremos dos alternativas, que desde mi punto de vista tienen ciertas virtudes, las cuales muestro a continuación.
- No caen en los excesos.
- Son rápidos.
- No consumen gran cantidad de recursos del sistema.
- Ofrecen muchas opciones.
Sin mas preámbulos, les presento a Rufus y freeloader, clientes BitTorrents alternativos de gran envergadura.
FreeLoader
Freeloader, es un manejador de descargas escrito en Python y brinda soporte a torrents.
Para instalar freeloader debemos seguir los siguientes pasos en Breezy.
sudo aptitude install python-gnome2-extras python2.4-gamin
Seguidamente diríjase al sitio oficial de freeloader y descargue las fuentes del programa, para la fecha en la cual se redactó este artículo la versión más reciente de este programa es la 0.3.
wget http://www.ruinedsoft.com/freeloader/freeloader-0.3.tar.bz2
Luego de haber descargado el paquete proceda de la siguiente manera:
$ tar xvjf freeloader-0.3.tar.bz2
$ cd freeloader-0.3
$ ./configure
$ make
$ sudo make install
Recuerde que para poder compilar paquetes desde las fuentes necesita tener instalado previamente el paquete build-essential
Rufus
Rufus es otro cliente BitTorrent escrito en Python.
Vamos a aprovecharnos del hecho que existe una versión estable (0.6.9) compilada * para Breezy, los pasos son los siguientes:
$ wget http://strikeforce.dyndns.org/files/breezy/rufus.0.6.9/rufus_0.6.9-0ubuntu1_i386.deb
$ sudo dpkg -i rufus_0.6.9-0ubuntu1_i386.deb
- Esta versión ha sido compilada por strikeforce, para mayor información lea el hilo Rufus .deb Package.
Videos educacionales de ubuntu
Chris Del Checcolo y Ricky Hussmann, estudiantes miembros de la ACM en la WVU, han hecho públicos un par de videos educacionales (algo graciosos, no puedo negarlo) en los que explican como instalar software en Ubuntu Linux, ya sea haciendo uso del Gestor de paquetes Synaptic o desde las fuentes. De manera adicional explican como puede convivir Ubuntu Linux con un sistema Windows previamente instalado haciendo uso de Dual Boot.
- Ubuntu Linux / Windows Dual Boot Instructional Video (inglés).
- Installing Software on Ubuntu Linux (inglés).
Vía: The Fridge.
Reproducir de manera automática los CDs o DVDs con XMMS y VLC
Si desea reproducir automáticamente los CDs de audio (o DVDs) al ser insertados con XMMS (o con VLC) simplemente cumpla los siguientes pasos:
En primer lugar diríjase a Sistema -> Preferencias -> Unidades y soportes extraíbles, desde la lengüeta Multimedia proceda de la siguiente manera:
Si desea reproducir automáticamente un CD de sonido al insertarlo:
- Marque la casilla de verificación Reproducir CD de sonido al insertarlo
- En la sección de comando escriba lo siguiente:
xmms -p /media/cdrom0
Si desea reproducir automáticamente un DVD de vídeo al insertarlo
- Marque la casilla de verificación Reproducir DVD de vídeo al insertarlo
- En la sección de comando escriba lo siguiente:
wxvlc dvd:///dev/dvd
Nota: En XMMS puede ser necesario configurar el plugin de entrada de audio que se refiere al Reproductor de CD de audio (libcdaudio.so
), puede configurarlo desde las preferencias del programa.
Cómo cambiar entre versiones de JAVA bajo Breezy
Si usted tiene instaladas múltiples versiones de JAVA bajo Breezy, puede cambiar fácilmente entre dichas versiones cuando usted lo desee.
Simplemente debe hacer uso del comando update-alternatives --config java
y luego podrá escoger su versión de java preferida.
$ sudo update-alternatives --config java
There are 3 alternatives which provide `java'.
Selection Alternative
-----------------------------------------------
1 /usr/bin/gij-wrapper-4.0
+ 2 /usr/lib/jvm/java-gcj/bin/java
* 3 /usr/lib/j2re1.5-sun/bin/java
Press enter to keep the default[*], or type selection number:
Si usted es amante de las soluciones gráficas, no se preocupe, existe una alternativa, con galternatives
podrá elegir qué programa le prestará un servicio en particular, para instalar galternatives
debe teclear el siguiente comando:
$ sudo aptitude install galternatives
Para ejecutarlo debe hacer lo siguiente:
$ sudo galternatives
Su interfaz de uso es muy sencilla, si desea cambiar la versión de JAVA que desea utilizar simplemente escoga java en la sección de alternativas, seguidamente seleccione la versión que más crea conveniente en la sección de opciones
Restaurando la vieja barra de localización en nautilus
Si usted al igual que yo no le gusta la nueva manera en que se presenta la barra de localización en nautilus
bajo Breezy, en donde se emplean las barras de rutas, es posible regresar a la vieja configuración (tal cual como en Hoary) en donde se especificaba de manera textual la ruta actual en la barra de localización.
Si ud. quiere cambiar este comportamiento, es tan sencillo como dirijirse a /apps/nautilus/preferences/
y proceder a marcar la casilla de verificación always_use_location_entry
.
Lo anterior lo puede hacer desde el Editor de configuración, el cual lo puede encontrar en Aplicaciones -> Herramientas del Sistema.
Ctrl + Alt + Supr en Ubuntu
Si usted alguna vez llegó a preguntarse como lograr abrir el Monitor del Sistema al presionar las teclas Ctrl + Alt + Supr, comportamiento similar bajo sistemas Windows, en el Blog de Bairsairk responden dicha inquietud.
Simplemente debe utilizar los siguientes comandos bajo el Terminal.
$ gconftool-2 -t str --set /apps/metacity/global_keybindings/run_command_9 "<Control><alt>Delete"
$ gconftool-2 -t str --set /apps/metacity/keybinding_commands/command_9 "gnome-system-monitor"
Simplemente copie y pegue :)
deskbar-applet, realiza tus búsquedas desde el escritorio
deskbar-applet
es una de esas aplicaciones que parecen no tener mucho sentido en un principio, pero desde el mismo momento en que comienzas a utilizarla se te facilitan muchas actividades cotidianas.
deskbar-applet
provee una versátil interfaz de búsqueda, incluso, puede abrir aplicaciones, ficheros, búsquedas locales (se integra complemente con beagle si lo tienes instalado) o directamente en internet; aquellos términos que desee buscar, simplemente tendrá que escribirlos dentro de la casilla correspondiente en el panel. En caso de escribir una dirección de correo electrónico en la barra de búsqueda se le brindará la opción de escribir un correo al destinario que desee.
Si desea probarlo es muy sencilla su instalación. En primer lugar debe tener activa la sección universe
en su lista de repositorios.
deb http://us.archive.ubuntu.com/ubuntu breezy universe
deb-src http://us.archive.ubuntu.com/ubuntu breezy universe
Una vez que haya editado el fichero /etc/apt/sources.list
debe actualizar la nueva lista de paquetes.
$ sudo aptitude update
Seguidamente puede proceder a instalar el paquete deskbar-applet
, para ello simplemente haga.
$ sudo aptitude install deskbar-applet
Una vez culminado el proceso de instalación debe activar deskbar-applet
(esta aplicación aparece en la sección de Accesorios) para que aparezca en el panel que desee, recuerde que para agregar un elemento al panel simplemente debe hacer click con el botón derecho del mouse y seleccionar la opción Añadir al panel.
Su uso es muy sencillo, posee una combinación de teclas (Alt + F3) que le facilitará enfocar la casilla de entrada, inmediatamente podrá comenzar a escribir.
Los Repositorios
Contenido:
- Definición
- ¿Cómo funcionan los Repositorios?
- ¿Cómo establecer Repositorios? 1. Los Repositorios Automáticos 2. Los Repositorios Triviales
- ¿Cómo crear ficheros Index?
- ¿Cómo crear ficheros Release?
- ¿Cómo crear Estanques? 1. Herramientas
- ¿Cómo usar los Repositorios?
Los Repositorios (definición)
Un repositorio es un conjunto de paquetes Debian organizados en un directorio en árbol especial, el cual también contiene unos pocos ficheros adicionales con los índices e información de los paquetes. Si un usuario añade un repositorio a su fichero sources.list
, él puede ver e instalar facilmente todos los paquetes disponibles en éste al igual que los paquetes contenidos en Debian.
¿Cómo funcionan los repositorios?
Un repositorio consiste en al menos un directorio con algunos paquetes DEB
en él, y dos ficheros especiales que son el Packages.gz
para los paquetes binarios y el Sources.gz
para los paquetes de las fuentes. Una vez que tu repositorio esté listado correctamente en el sources.list
, si los paquetes binarios son listados con la palabra clave deb
al principio, apt-get
buscará en el fichero índice Packages.gz
, y si las fuentes son listadas con las palabras claves deb-src
al principio, éste buscará en el fichero indice Sources.gz
. Ésto se debe a que en el fichero Packages.gz
se encuentra toda la información de todos los paquetes, como nombre, version, tamaño, descripción corta y larga, las dependencias y alguna información adicional que no es de nuestro interés. Toda la información es listada y usada por los Administradores de Paquetes del sistema tales como dselect
o aptitude
. Sin embargo, en el fichero Sources.gz
se encuentran listados todos los nombres, versiones y las dependencias de desarrollo (esto es, los paquetes necesitados para compilar) de todos los paquetes, cuya información es usada por apt-get source
y herramientas similares.
Una vez que hayas establecido tus repositorios, serás capaz de listar e instalar todos sus paquetes junto a los que vienen en los discos de instalación Debian; una vez que hayas añadido el repositorio deberás ejecutar en la consola:
$ sudo apt-get update
Ésto es con el fin de actualizar la base de datos de nuestro APT y así el podrá “decirnos” cuales paquetes disponemos con nuestro nuevo repositorio. Los paquetes serán actualizados cuando ejecutemos en consola.
$ sudo apt-get upgrade
¿Cómo establecer Repositorios?
Existen dos tipos de repositorios: los complejos, que es donde el usuario sólo tiene que especificar la ruta base de el repositorio, la distribución y los componentes que él quiera (APT automáticamente buscará los paquetes correctos para la arquitectura correspondiente, si están disponibles), y los más simples, donde el usuario debe especificar la ruta exacta (aqui APT no hará magia para encontrar cuales de los paquetes son los indicados). El primero es más difícil de establecer, pero es más fácil de utilizar, y siempre debería ser usado para repositorios complejos y/o plataformas cruzadas; el último, es más fácil de establecer, pero sólo debería ser usado para repositorios pequeños o de una sola arquitectura.
Aunque no es realmente correcto, aquí llamaré al primero Repositorios Automáticos y al último Repositorios Triviales.
Repositorios Automáticos
La estructura del directorio de un repositorio automático con las arquitecturas estándares de Debian y sus componentes se asemeja mucho a ésto:
(tu repositorio root)
|
+-dists
|
|-stable
| |-main
| | |-binary-alpha
| | |-binary-arm
| | |-binary-...
| | +-source
| |-contrib
| | |-binary-alpha
| | |-binary-arm
| | |-binary-...
| | +-source
| +-non-free
| |-binary-alpha
| |-binary-arm
| |-binary-...
| +-source
|
|-testing
| |-main
| | |-binary-alpha
| | |-binary-arm
| | |-binary-...
| | +-source
| |-contrib
| | |-binary-alpha
| | |-binary-arm
| | |-binary-...
| | +-source
| +-non-free
| |-binary-alpha
| |-binary-arm
| |-binary-...
| +-source
|
+-unstable
|-main
| |-binary-alpha
| |-binary-arm
| |-binary-...
| +-source
|-contrib
| |-binary-alpha
| |-binary-arm
| |-binary-...
| +-source
+-non-free
|-binary-alpha
|-binary-arm
|-binary-...
+-source
Los paquetes libres van en el directorio main
; los que no son libres van en el directorio non-free
y los paquetes libres que dependen de los que no son libres van en el directorio contrib
.
Existen también otros directorios poco comunes que son el non-US/main
que contienen paquetes que son libres pero que no pueden ser exportados desde un servidor en los Estados Unidos y el directorio non-US/non-free
que contiene paquetes que tienen alguna condición de licencia onerosa que restringe su uso o redistribución. No pueden ser exportados de los Estados Unidos porque son paquetes de software de cifrado que no están gestionados por el procedimiento de control de exportación que se usa con los paquetes de main
o no pueden ser almacenados en servidores en los Estados Unidos por estar sujetos a problemas de patentes.
Actualmente Debian soporta 11 tipos de arquitecturas; en éste ejemplo se han omitido la mayoría de ellas por el bien de la brevedad. Cada directorio binary-*
contiene un fichero Packages.gz
y un fichero opcional Release
; cada directorio fuente contiene un fichero Sources.gz
y también contiene un fichero opcional Release
.
Nota que los paquetes no tienen que estar en el mismo directorio como los ficheros índices, porque los ficheros índices contienen las rutas a los paquetes individuales; de hecho, podrían estar ubicados en cualquier lugar en el repositorio. Ésto hace posible poder crear estanques.
Somos libres de crear tantas distribuciones como componentes y llamarlos como queramos; las que se usan en el ejemplo son, justamente las usadas en Debian. Podríamos, por ejemplo, crear las distribuciones current
y beta
(en vez de stable
, unstable
y testing
, y que los componentes sean foo
, bar
, baz
y qux
(en lugar de main
, contrib
y non-free
).
Ya que somos libres de llamar los componentes como queramos, siempre es recomendable usar las distribuciones estándar de Debian, porque son los nombres que los usuarios de Debian esperan.
Repositorios Triviales
Los repositorios triviales, consisten en un directorio raíz y tantos sub-directorios
como deseemos. Como los usuarios tienen que especificar la ruta a la raíz del repositorio
y la ruta relativa entre la raíz y el directorio con los ficheros indices en él, somos libres de hacer lo que queramos (inclusive, colocar todo en la raíz del repositorio; entonces, la ruta relativa simplemente sería /
. Se parecen mucho a ésto:
(your repository root)
|
|-binary
+-source
¿Cómo crear ficheros Index?
dpkg-scanpackages
es la herramienta con la que podemos generar el fichero Packages
y con la herramienta dpkg-scansources
creamos los ficheros Sources
. Ellos pueden enviar sus salidas a stout
; por consiguiente, para generar ficheros comprimidos, podemos usar una cadena de comandos como ésta:
$ dpkg-scanpackages arguments | gzip -9c > Packages.gz
Las dos herramientas trabajan de la misma manera; ambas toman dos argumentos (en realidad son más, pero aquí no hablaremos de eso; puedes leerte las páginas del manual si quieres saber más); el primer argumento es el directorio en cual están los paquetes, y el segundo es el fichero predominante. En general no necesitamos los ficheros predominantes para repositorios simples, pero como éste es un argumento requerido, simplemente lo pasamos a /dev/null
. dpkg-scanpackages
escanea los paquetes .deb
, sin embargo, dpkg-scansources
escanea los ficheros .dsc
, por lo tanto es necesario colocar los ficheros .orig.gz
, .diff.gz
y .dsc
juntos. Los ficheros .changes
no son necesarios. Así que, si tienes un repositorio trivial como el mostrado anteriormente, puedes crear los dos ficheros indice de la siguiente manera:
$ cd my-repository
$ dpkg-scanpackages binary /dev/null | gzip -9c > binary/Packages.gz
$ dpkg-scansources source /dev/null | gzip -9c > source/Sources.gz
Ahora bien, si tienes un repositorio tan complejo como el mostrado en el primer ejemplo, tendrás que escribir algunos scripts para automatizar éste proceso. También puedes usar el argumento pathprefix
de las dos herramientas para simplificar un poco la sintaxis.
¿Cómo crear ficheros Release?
Si quieres permitirle a los usuarios de tu repositorio usar el pinning
con tu repositorio, entonces deberás incluir un fichero Release
en cada directorio que contenga un fichero Index
. (Puedes leer más acerca del pinning
en el COMO APT). Los ficheros Release
son ficheros de texto simple y cortos que tienen una forma muy parecida a la que sigue:
Archive: archivo
Component: componente
Origin: TuCompañia
Label: TuCompañia Debian repositorio
Architecture: arquitectura
- Archive: El nombre de la distribución de Debian. Los paquetes en éste directorio pertenecen a (o estan diseñados para), por ejemplo,
stable
,testing
ounstable
. - Component: Aquí van los componentes de los paquetes en el directorio, por ejemplo,
main
,non-free
ocontrib
. - Origin: El nombre de la persona que hizo los paquetes.
- Label: Algunas etiquetas adecuadas para los paquetes de tu repositorio. Usa tu imaginación.
- Architecture: La arquitectura de lo paquetes en éste directorio, como
i386
por ejemplo,sparc
o fuente. Es importante que se establezcanArchitecture
yArchive
de manera correcta, ya que ellos son más usados para hacerpinning
. Los otros, sin embargo, son menos importantes en éste aspecto.
¿Cómo crear estanques?
Con los repositorios automáticos, distribuir los paquetes en los diferentes directorios puede tornarse rápidamente en una bestia indomable, además también se gasta mucho espacio y ancho de banda, y hay demasiados paquetes (como los de la documentación, por ejemplo) los cuales son los mismos para todas las arquitecturas.
En éstos casos, una posible solución es un estanque. Un estanque es un directorio adicional dentro del directorio raíz del repositorio, que contiene todos los paquetes (los binarios para todas las arquitecturas, distribuciones y componente y todas las fuentes). Se pueden evitar muchos problemas, a través de una combinación inteligente de ficheros predominantes (tema que no se toca en éste documento) y de scripts. Un buen ejemplo de un reposotorio “estancado” es el propio repositorio de Debian.
Los estanques sólo son útiles para repositorio grandes. Nunca he hecho uno y no creo que lo haga en un futuro cercano y ésa es la razón por la cual no se explica como hacerlo aquí. Si tu crees que esa sección debería ser añadida siéntete libre de escribir una y contáctame luego.
Herramientas
Existen varias herramientas para automatizar y facilitar la creación de ficheros Debian. A continuación son listados los más importantes:
-
apt-ftparchive
: Es la línea de comandos de la herramienta usada para generar los ficheros indice que APT utiliza para accesar a la fuente de una distribución. -
apt-move
: Es usado para mover una colección de ficheros paquetes de Debian a un fichero jerárquico como el usado en el fichero oficial Debian. Éste es parte del paqueteapt-utils
.
¿Cómo usar los repositorios?
Usar un repositorio es muy sencillo, pero ésto depende de el tipo de repositorio que hayas creado, ya sea binario o de fuentes, automático o trivial. Cada repositorio ocupa una línea en el fichero sources.list
. Para usar un repositorio binario solo tenemos que usar deb
al principio de la línea y para usar un repositorio de
fuentes, en vez de deb
, sólo tenemos que agregrar deb-src
. Cada línea tiene la siguiente sintaxis:
deb|deb-src uri distribución [componente1] [componente2] [...]
El URI
es el Identificador Universal de Recursos de la raíz del repositorio, como por ejemplo: ftp://ftp.tusitio.com/debian
, http://tusitio.com/debian
, o, para ficheros locales, file::///home/joe/mi-repositorio-debian/
. Donde la barra inclinada es opcional. Para repositorios automáticos, tienes que especificar la distribución y uno o más componentes; la distribución no debe terminar con una inclinada.
A continuación unos ejemplos de repositorios:
deb ftp://sunsite.cnlab-switch.ch/mirror/debian/ unstable main contrib non-free
deb-src ftp://sunsite.cnlab-switch.ch/mirror/debian/ unstable main contrib non-free
deb file:///home/aisotton/rep-exact binary/
deb-src file:///home/aisotton/rep-exact source/
Donde los dos primeros se corresponden con repositorios de tipo Automático y los dos últimos Triviales.
Lista de paquetes en la distribución estable de Debian. Lista de paquetes en la distribución testing de Debian Lista de paquetes en la distribución inestable de Debian
Artículo original Debian Repository HOWTO por Aaron Isotton
El fichero sources.list
La mayoría de los entusiastas de sistemas Linux, tarde o temprano llegan a toparse con ésta interrogante. En una forma bastante general, podríamos definir a éste fichero como la lista de recursos de paquetes que es usada para localizar los ficheros del sistema de distribución de paquetes usado en el sistema. Este fichero de control está ubicado en la carpeta /etc/apt/
de nuestro sistema. El fichero es un simple documento de texto sencillo que puede ser modificado con cualquier editor de textos.
Dentro de éste fichero nos vamos a encontrar una serie de líneas, que no son más que las procedencias de los recursos ubicados en los repositorios que elijamos. Éstas líneas de procedencias tienen una forma general que es: tipo
, uri
, distribución
y complementos
.
Entonces, las formas generales de las líneas de procedencias sería así:
deb uri distribución [componente1] [componente2] [...]
deb-src uri distribución [componente1] [componente2] [...]
¿Qué debo saber sobre el sources.list
?
Debemos tener en cuenta varios aspectos sobre éste fichero tan importante. Por ejemplo, hay algo que muchos no saben e ignoran, y es que ésta lista de procedencias está diseñada para soportar cualquier número y distintos tipos de procedencias, por supuesto, la demora del proceso de actualización de la base de datos del APT va a ser proporcional al número de procedencias, ya que mientras más procedencias, mayor es la cantidad de paquetes a añadir a la base de datos, y también va a durar un poco más de tiempo, dependiendo de nuestra velocidad de conexión.
El fichero lista una procedencia por línea, con la procedencia de mayor prioridad en la primera línea, como por ejemplo, cuando tenemos los paquetes en discos CD-ROM
, entonces ubicamos éste de primero. Como ya mencioné, el formato de cada línea es:
tipo uri distribución complementos
Donde:
-
tipo
: Determina el formato de los argumentos, que pueden ser de dos tipos:deb
ydeb-src
. El tipodeb
hace referencia a un típico archivo de Debian de dos niveles, que son distribución y componente, sin embargo, el tipodeb-src
hace referencia al código fuente de la distribución y tiene la misma sintaxis que las de tipodeb
. Las líneas de tipodeb-src
son necesarias si queremos descargar un índice de los paquetes que tienen el código fuente disponible, entonces de ésta forma obtendremos los códigos originales, más un fichero de control, con extensión.dsc
y un fichero adicionaldiff.gz
, que contiene los cambios necesario para debianizar el código. -
uri
: Identificador Universal de Recursos, ésto es, el tipo de recurso de la cual estamos obteniendo nuestros paquetes. Pero ¿Cuáles son los tipos deuri
que admite nuestra lista de procedencias? A continuación hago mención de las más populares, por así decirlo: *CD-ROM
: El cdrom permite a APT usar la unidad de CD-ROM local. Se puede usar el programaapt-cdrom
para añadir entradas de un cdrom al ficherosources.list
de manera automática, en modo consola.-
FTP
: Especifica un servidor FTP como archivo. *HTTP
: Especifica un servidor HTTP como archivo. -
FILE
: Permite considerar como archivo a cualquier fichero en el sistema de ficheros. Esto es útil para particiones montadas mediante NFS (sistema de ficheros usado para montar particiones de sistemas remotos) y réplicas locales.
-
-
distribución
: Aquí especificamos la distribución en la cual estamos trabajando, bien sea Debian, Ubuntu, Kubuntu, Gnoppix,Knoppix y otras, basadas en sistemas Debian GNU/Linux.distribución
también puede contener una variable,$(ARCH)
, que se expandirá en la arquitectura de Debian usada en el sistema (i386
,m68k
,powerpc
,…). Esto permite quesources.list
no sea dependiente de la arquitectura del sistema. -
componentes
: Los componentes son los tipos de repositorios clasificados según las licencias de los paquetes que contienen. Dentro de los componentes tenemosmain
,contrib
ynon-free
, para usuarios Debian; sin embargo para usuarios Ubuntu, por ejemplo, también existenuniverse
,multiverse
restricted
. Ahora la decisión de cuales repositorios utilizar, eso va más allá de lo pueda ser explicado acá, ya que eso le concierne a su persona.
Entonces, la forma de una línea de procedencias quedaría algo así:
# deb http://security.ubuntu.com/ubuntu breezy-security main restricted
# deb-src http://security.ubuntu.com/ubuntu breezy-security main restricted
Ahora bien, se preguntarán ¿Por qué el carácter #
(almohadilla) al principio de la línea? Bueno, la respuesta es muy simple. Éste caracter se utiliza para indicarle al APT cuando ignorar, por así decirlo, las líneas que contengan dicho caracter al principio, pues lo que hace en realidad es tomarlas como comentarios de lenguaje y simplemente no las interpreta, por lo tanto, si queremos que el APT tome o no en cuenta una línea de procedencias, entonces quitamos o añadimos el caracter, respectivamente.
Nota del autor: Algunas partes de este artículo fueron tomadas del manual de Debian.
Flock, el nuevo navegador social
Flock, es un nuevo navegador que toma sus bases en Mozilla Firefox, su objetivo es captar la atención de usuarios que suelen usar herramientas de comunicación social que están en boga, como por ejemplo:
- del.icio.us: Almacena y comparte tus enlaces favoritos.
- Flickr: Almacena y comparte tus imágenes.
- Technorati: Entérate acerca de lo que se habla actualmente en los blogs. Colección de enlaces a bitácoras organizados por etiquetas o tags.
- Sistemas de Blogging: Entre ellos: WordPress, Blogger, Movable Type, entre otros.
Sistema de publicación
Respecto a la posibilidad de publicar entradas o posts en tu blog desde el mismo navegador, Flock le ofrece una ventana aparte, tendrá que rellenar apropiadamente las distintas opciones que se le muestran para configurar el programa y de esa manera comenzar a redactar sus noticias, artículos, entre otros.
Siguiendo con el tema de la publicación de artículos, Flock, le permite
conectarse con su cuenta en Flickr y añadir fotos, esta posibilidad no se
restringe solo a las cuentas de Flickr, podrá incluir fotos que se muestren en
otros sitios, solamente deberá arrastrar dicha imagen a la interfaz que le
proporciona el editor en cuestión.
De igual manera lo explicado en el párrafo anterior puede aplicarse al texto, podrá arrastrar a la zona de edición cualquier texto disponible en la web, tambien Flock ofrece una opción denominada blog this, su funcionamiento es muy sencillo, solamente deberá seleccionar un texto que le interese publicar, seguidamente proceda a dar click con el botón derecho del mouse blog this, el texto en cuestión aparecerá en la zona de edición como una cita.
El sistema de publicación que le ofrece Flock le permite guardar sus artículos como borradores o marcarlos para su publicación inmediata, otra característica que cabe resaltar es la posibilidad de indicar explícitamente con cuales etiquetas o tags desea que se almacene la entrada para su clasificación en Technorati.
Favoritos
El sistema de favoritos se integra con tu cuenta en del.icio.us, gestor de
enlaces favoritos o bookmarks comunitario. y organizado por etiquetas o
tags.
Lectura de feeds
Flock nos indica cuando un blog o bitácora dispone de un feed, la manera de
indicarlo es muy agradable a la vista, simplemente muestra un icono al lado
derecho de la ventana de la URL. Si lo desea, puede ver el contenido del feed
desde el mismo Flock, que le ofrece un visualizador de feeds, en él podrá
ordenar las entradas por fechas o por la fuente, de manera adicional podrá
contraer o expander todas las noticias, si decide contraer (o expander) las
noticias de acuerdo al orden que haya elegido (por fecha o por fuente), puede ir
expandiendo (o contrayendo) dichas noticias una por una.
¿Desea probar Flock?
Si lo desea, puede probar fácilmente Flock al hacer uso de los ficheros binarios que se ofrecen, en ubuntu (aplicable en otras distribuciones) debe hacerse lo siguiente:
En primer lugar deberá descargar el paquete binario que se ofrece para la plataforma Linux desde la sección Developer de Flock.
Antes de continuar, debe saber que Flock está compilado haciendo uso de
libstdc++
en su versión 5, si, se encuentra en
Breezy, debe instalarla de la
siguiente manera:
$ sudo aptitude install libstdc++5
Una vez que se haya completado la transferencia del paquete binario de Flock, debe ubicarse en el directorio destino de la descarga y proceder a descompimir y desempaquetar el paquete en cuestion, para ello, debe hacer lo siguiente.
$ tar xvzf flock-0.4.10.en-US.linux-i686.tar.gz
Por supuesto, es de suponerse que en este ejemplo particular el paquete que se
descargó fué flock-0.4.10.en-US.linux-i686.tar.gz
, usted debe ajustar este
argumento de acuerdo al fichero que haya descargado.
Una vez culminado el paso anterior lo que sigue es sencillo, debe entrar en el
directorio generado y ejecutar el comando flock
, más o menos similar a lo que
sigue a continuacion.
$ cd flock
$ ./flock
Recuerde que en Breezy usted puede generar una entrada al menú haciendo uso de Herramientas del Sistema -> Applications Menu Editor, seguidamente seleccione el submenu Internet y genere una nueva entrada con las siguientes propiedades.
- Name: Flock
- Comment: Internet Browser
- Command: /directorio_donde_esta_flock/flock
- Icon: /directorio_donde_esta_flock/icons/mozicon128.png
Referencias
Planeta ubuntu-es
El día de hoy me siento muy contento por poder anunciarles un proyecto en el que me había animado en hacer desde hace ya un tiempo, estuve en conversaciones con varias personas y al darme muestras de apoyo decidí aventurarme.
El proyecto del que les hablo es Planeta ubuntu-es, sitio en el cual se pretende recopilar toda la información aportada por bloggers (personas que mantienen blogs o bitácoras) amigos y colaboradores de la Comunidad de Ubuntu Linux es castellano y que desean de una u otra manera compartir sus experiencias, críticas y temas relacionados con la distribución.
Cualquier blogger que le interese el tema puede contribuir, solamente se requiere cumplir ciertos requerimientos. El primero de ellos es tener cualquiera de las siguientes categorías en su blog.
- ubuntu
- kubuntu
- edubuntu
- xubuntu
Lo anterior se solicita para brindar mayor organización en los archivos de las entradas proporcionadas por los bloggers contribuyentes.
Como segundo requerimiento se tiene, aunque parezca evidente, redactar artículos acerca de Ubuntu Linux, sus derivados o noticias relacionadas. Al cumplir con los requisitos mencionados previamente puede ponerse en contacto con nosotros, puede hacernos llegar sus inquietudes, críticas, comentarios, sugerencias; así como también puede manifestarnos su intención de unirse al proyecto. Una vez que su solicitud haya sido aceptada, sus artículos comenzarán a aparecer en Planeta ubuntu-es.
Planeta ubuntu-es agradece a sus contribuyentes brindándoles promoción, en primer lugar, nuestra página principal mostrará enlaces de todos nuestros colaboradores, a su vez, los comentarios (al igual que los pings) en nuestro sitio han sido desactivados. Por lo tanto, los lectores que deseen discutir acerca de un tema en particular deberán hacerlo en los sitios de origen (sitios de los contribuyentes) de los artículos. De igual manera, todos los títulos de los artículos apuntarán a los sitios de origen. En resúmen, tanto lectores como bloggers se benefician del proyecto.
El proyecto tiene como meta reunir bloggers y lectores que tienen intereses en común, en este caso particular, la distribución ubuntu, sus derivados y noticias relacionadas. Por lo tanto, estaremos contribuyendo de alguna manera a la difusión y aceptación del Software Libre y el Open Source como soluciones reales en nuestros días, de igual manera, se busca la aceptación de Ubuntu como la distribución por excelencia tanto para usuarios no iniciados así como también aquellos usuarios expertos en sistemas GNU/Linux.
Para mayor información del proyecto, puede visitar las secciones:
Se añaden 3 arquitecturas en ubuntu
El mismo día 13 de Octubre, día del lanzamiento de Breezy, el equipo encargado de portar Ubuntu a otras arquitecturas anunció que Breezy puede usarse ahora en 3 pequeñas arquitecturas.
Ubuntu ahora esta disponible para las arquitecturas IA64, HPPA (1.1 y posterior) y SPARC (solamente UltraSPARC). Dichas arquitecturas muchas veces no son tomadas en cuenta por otras distribuciones.
Ninguna de estas nuevas arquitecturas son oficialmente soportadas por el equipo de Ubuntu. Sin embargo, si se logra tener una gran base de usuarios, esta situación podría cambiar.
Mientras que en estas nuevas arquitecturas usted podrá disfrutar de la gran variedad de software que le ofrece Ubuntu, esta características aún no ha sido finalizada.
Como obtener cualquier de estas arquitecturas
Si lo desea, puede ver el Anuncio Oficial hecho por Fabio Massimo Di Nitto.
COMO instalar e17 desde los repositorios de shadoi en Breezy
Nota: Antes que nada es importante resaltar que E17 está todavía en desarrollo. Si desea intentar utilizar E17, sepa que este software es todavía un versión pre-alfa, que aún esta en constante desarrollo y por tanto su uso puede implicar algunos riesgos.
Enlightenment DR17 combina características presentes en los manejadores de ventanas como en los manejadores de ficheros. Provee una interfaz gráfica de usuario que le permitirá manejar los elementos del escritorio, al igual que ficheros y ventanas. El entorno gráfico de Enlightenment es realmente impresionante, es muy agradable para el usuario, también es muy configurable.
Después de una breve introducción, vamos a entrar en acción.
Hace ya algunos días atrás shadoi anunciaba lo siguiente:
Once that new server is in place and all the sites have been moved over, I’ll be quickly adding support for more Debian architectures, distributions and derivatives like Ubuntu.
Posteriormente shadoi (aka Blake Barnett) confirma la noticia.
Ahora para instalar E17 solo necesitará de 4 pasos. La información que será mostrada a continuación es tomada del wiki de shadoi.
Paso #1
Agregar la siguiente línea al fichero /etc/apt/sources.list
:
deb http://soulmachine.net/breezy/ unstable/
También debe agregar lo siguiente al fichero /etc/apt/preferences
(si no
existe dicho fichero proceda a crearlo).
Package: enlightenment
Pin: version 0.16.999*
Pin-Priority: 999
Package: enlightenment-data
Pin: version 0.16.999*
Pin-Priority: 999
Paso #2
Instalar la clave pública del repositorio, para ello desde la consola escriba lo siguiente:
$ wget soulmachine.net/public.key
$ sudo apt-key add public.key
Paso #3
Actualice la lista de paquetes disponibles, para ello desde la consola escriba lo siguiente:
$ sudo aptitude update
Paso #4
Instale enligtenment, para ello desde la consola escriba lo siguiente:
$ sudo aptitude install <ins datetime="2005-12-10T05:54:58+00:00">enlightenment=0.16.999.018-1 enlightenment-data</ins>
Notas
Aunque shadoi ha anunciado que el paquete de evidence (gestor de ficheros especialmente desarrollado para ser usado con enlightenment) pronto lo tendrá listo, por ahora puede hacer uso de esta versión, después de finalizada la descarga debe escribir en consola lo siguiente:
$ sudo dpkg -i evidence_0.9.8-20050305-hoaryGMW_i386.deb
El paquete que se ha instalado previamente aunque fue construido en principio para la versión de Ubuntu Hoary, funciona en Breezy. Para la versión reciente de Ubuntu aún no está construido este paquete en particular.
También es importante resaltar que E17 brinda soporte al castellano.
Comprobando las imágenes de ubuntu
Si usted es de las personas que ha descargado la última versión de Ubuntu, para el momento en el que se redactó esta entrada es Breezy Badger, es importante que verifique la autenticidad de la imagen que posee, para ello comprobaremos las sumas de control MD5.
En primer lugar, debe poseer un fichero que posea las sumas de control MD5 de la distribución, normalmente desde el sitio donde descarga las distintas versiones se ubuntu se dispone de uno, en el caso de la versión Breezy Badger disponemos del fichero MD5SUMS, la cual puede encontrar en el sitio de descargas de Breezy Badger.
Una vez descargado debemos compararlo con las sumas de control MD5 generadas para la imagen que poseemos de la versión en nuestro medio de almacenamiento, p.ej. disco duro.
En el ejemplo que presentaré a continuación el fichero que posee las sumas de
control MD5 que he descargado desde el sitio oficial de ubuntu se encuentra en
el directorio /mnt/backup/distros/
, en este mismo directorio tengo la imagen
de ubuntu, ubuntu-5.10-install-i386.iso
, en resumidas cuentas, el comando a
utilizar para la comprobación de las sumas MD5 es el md5sum
, el modo de uso es
el siguiente.
milmazz@omega:/mnt/backup/distros$ <kbd>md5sum -cv MD5SUMS</kbd>
En este caso, la opción -c
nos permite comprobar la suma de control MD5 para
todos los archivos listados en el fichero MD5SUMS
, la opción -v
nos permite
obtener más detalle de la operación, por ejemplo:
ubuntu-5.10-install-i386.iso Correcto
El fichero MD5SUMS
posee todas las sumas de control MD5 de las distintas
imágenes que ofrece ubuntu, tanto las imágenes que poseen las versiones
instalables como los LiveCD, en las distintas arquitecturas. Si lo desea,
puede editar el fichero, simplemente haciendo uso de vi
, por ejemplo:
$ vi MD5SUMS
Una vez dentro de vi
, debe eliminar las lineas que no desee, para ello
simplemente haga uso de dd
, una vez eliminadas todas las entradas que no
desee, guarde los cambios, para ello, presione la tecla Esc y seguidamente
escriba :wq y presione la tecla Enter.
Repositorios de Ubuntu
Desde hace unas horas hasta hace poco el servidor principal que mantiene los archivos de los paquetes binarios y fuentes estaba caído.
Obteniendo respuesta desde http://archive.ubuntu.com/ubuntu.
<code>$ wget http://archive.ubuntu.com
--09:56:27-- http://archive.ubuntu.com/
=> `index.html'
Resolving archive.ubuntu.com... 82.211.81.151, 82.211.81.182
Connecting to archive.ubuntu.com[82.211.81.151]:80... failed: Connection refused.
Connecting to archive.ubuntu.com[82.211.81.182]:80... failed: Connection refused.</code>
En cambio, el servicio por ftp
si estaba habilitado. Obteniendo respuesta
desde ftp://archive.ubuntu.com/ubuntu
<code>$ wget ftp://archive.ubuntu.com
--09:58:24-- ftp://archive.ubuntu.com/
=> `.listing'
Resolving archive.ubuntu.com... 82.211.81.182, 82.211.81.151
Connecting to archive.ubuntu.com[82.211.81.182]:21... connected.
Logging in as anonymous ... Logged in!
==> SYST ... done. ==> PWD ... done.
==> TYPE I ... done. ==> CWD not needed.
==> PASV ... done. ==> LIST ... done.
[ < => ] 64 --.--K/s
09:58:24 (48.75 KB/s) - `.listing' saved [64]
Removed `.listing'.
Wrote HTML-ized index to `index.html' [302].</code>
Ahora bien, en este caso simplemente bastaba con cambiar la entrada http
por
ftp
en el fichero /etc/apt/sources. Para evitar cualquier tipo de
inconvenientes en el futuro, es recomendable hacer uso de sitios espejo o
mirrors.
En https://wiki.ubuntu.com/Archive encontrará toda la información necesaria, si utiliza los repositorios del proyecto Ubuntu Backport es recomendable que vea su sección de las URL de los Repositorios.
NOTA: Siempre es recomendable hacer uso de sitios espejos puesto que estos presentan menos demanda que los sitios oficiales de los proyectos.
Cambiando la ubicación del cache de apt
El día 21 de Septiembre Jorge Villarreal preguntó en la entrada Creando un repositorio local lo siguiente:
… tengo un laptop lentisimo , ahora mi pregunta ya que puedo navegar desde la oficina y en ella solo tienen windows como hago para descargar actualizaciones y llevarlas en una pen o en cd?. a como anexo en las tardes navego con cd-live ubuntu, me pregunto si podre bajar virtualmente desde ahi?
Mi respuesta es la siguiente:
Sí, en efecto puedes descargar los paquetes desde tu LiveCD de Ubuntu, de hecho, existen dos maneras para mí, las expongo a continuación.
Primer método
La primera es usar la memoria que dispones, la cual es limitada, recuerda que
los ficheros que descarga la interfaz apt
(o aptitude
) se almacenan en el
directorio /var/cache/apt/archives, como te mencione anteriormente, este método
puede ser limitado.
Veamos ahora el segundo método, te recomiendo éste porque vamos a escribir en el disco duro.
Segundo método
Ya que en la oficina utilizas Windows, el único requisito que se necesita es disponer de una partición cuyo formato de ficheros sea FAT, asumiré en el resto de mi respuesta que dicha partición se encuentra en /dev/hdb1 y se ha montado en /mnt/backup. Por lo tanto:
$ sudo mount -t vfat /dev/hdb1 /mnt/backup
Posteriormente se debe crear el fichero /etc/apt.conf, esto se puede hacer fácilmente con cualquier editor. Dicho fichero debe contener lo siguiente:
DIR "/"
{
Cache "mnt/backup/apt/" {
Archives "archives/";
srcpkgcache "srcpkgcache.bin";
pkgcache "pkgcache.bin";
};
};
Lo anterior simplemente está cambiando el directorio usual
(/var/cache/apt/archives) del cache, de ahora en adelante se estará
escribiendo de manera permanente en disco duro. Previamente debes haber creado
el directorio /mnt/backup/apt/archives/. Seguidamente tienes que crear el
fichero lock
y el directorio partial
. Resumiendo tenemos:
$ mkdir -p /mnt/backup/apt/archives/partial
$ touch /mnt/backup/apt/archives/lock
Pasos comunes en ambos métodos
Recuerda que sea cual sea el método que decidas usar, debes editar el fichero /etc/apt/sources.list, mejora la lista de repositorios que se presentan, luego de guardar los cambios en el fichero, ejecuta el siguiente comando.
$ sudo aptitude update
El comando anterior actualizará tú lista de paquetes con los que se encuentran en los repositorios que añadiste previamente. Ahora bien, para almacenar ficheros en el directorio cache haz uso del comando.
$ sudo aptitude --download-only install <em>packages</em>
Cuando me refiero a packages recuerda que son los nombres de los paquetes.
Seguidamente puedes seguir los pasos que se te indican en la entrada Creando un
repositorio local, por
supuesto, si cambias la dirección del cache que hará uso la interfaz apt
(o
aptitude
) debes hacer los ajustes necesarios. Espero te sirva la información.
Si alguien desea realizar un aporte bienvenido será.
Automatiza el uso de pastebin desde la línea de comandos
Si deseas colocar gran cantidad de código en un canal IRC, Chat o haciendo uso de la mensajería instantánea, es realmente recomendable que haga uso de un sistema pastebin, por ejemplo, pastebin.com, el cual es una herramienta colaborativa que permite depurar código.
Además, siguiendo esta metodología se evita incurrir en el conocido flood, el cual consiste en el envio de gran cantidad de información a un usuario o canal, la mayoría de las ocasiones con el fin de molestar, incluso, puede lograr desconectar a otros usuarios. Este tipo de prácticas se castigan en muchos canales IRC.
Si no está familiariazado con la idea de los sistemas pastebin, un resúmen le puede ayudar en algo:
- Envie un fragmento de código al sistema pastebin de su preferencia, obtendrá
una dirección similar a
http://pastebin.com/1234
- Informe de la URL obtenida en los canales IRC o a través de la conversación que mantenga por mensajería instantánea.
- Cualquier persona puede leer su código, a su vez, pueden enviar modificaciones de éste.
- Si no se da cuenta de las modificaciones a primera vista, puede hacer uso de las opciones que le muestran las diferencias entre los ficheros de manera detallada.
Existe un script hecho en Python que le permite de manera automática y fácil el colocar la salida del terminal o de otros programas hechos en Python al sitio de pastebin que usted prefiera.
Instalación
Ejecute los siguientes pasos:
$ wget http://www.ubuntulinux.nl/files/pastebin
$ chmod +x pastebin
$ sudo ./pastebin --install
El comando anterior instalará el script dentro del directorio /usr/bin/
con permisos de ejecución.
Uso
pastebin [--name Autor] [--pid Entrada_Padre] [--bin URL_Pastebin]
Los valores entre corchetes son opcionales, cada uno significa lo siguiente:
-
--name
: Recibe como valor el nombre del autor del código. -
--pid
: Debe usarlo cuando está dando una respuesta o corrección a alguna entrada. Normalmente es el número que le sigue inmediatamente al nombre del servidor por ejemplo: Si usted tiene una URL de este tipo,http://pastebin.com/2401
, elpid
sería2401
. -
--bin
: Recibe como valor el sistema pastebin que esté usando.
Si no desea estar especificando a todo momento el nombre del autor (--name
) y
el servicio pastebin que usa (--bin
), puede crear un fichero en
/etc/pastebinrc
o en ~/.pastebinrc
. El primero aplica a todos los usuarios y
el segundo a un usuario local. En cualquiera de los casos, dicho fichero debe
contener lo siguiente:
poster = Nombre Autor
pastebin = Servicio Pastebin
Por ejemplo, en mi caso particular, el contenido del fichero /etc/pastebinrc
es el siguiente:
poster = [MilMazz]
pastebin = paste.ubuntulinux.nl
Haciendo uso de la tubería o pipe
Colocando la salida estándar
`$ comando | pastebin`
Colocando la salida estándar y los posibles errores
`$ comando 2>&1 | pastebin`
Recuerde que debe sustituir comando
en los dos ejemplos mostrados previamente por el nombre real del comando del cual desea obtener una respuesta.
Vía: Ubuntu Blog.
Conozca la temperatura de su disco duro
Si desea conocer cual es el valor en grados centígrados de la temperatura de su
disco duro, simplemente instale el paquete hddtemp
desde el repositorio
universe
haciendo lo siguiente:
$ sudo aptitude install hddtemp
Después, siempre que desee conocer la temperatura actual de su disco duro, proceda de la siguiente manera:
$ sudo hddtemp /dev/hdb
Por supuesto, recuerde que en la línea anterior /dev/hdb
es el identificador
de mi segundo disco duro, proceda a cambiarlo si es necesario.
Mi temperatura actual en el segundo disco duro es de:
milmazz@omega:~$ sudo hddtemp /dev/hdb
/dev/hdb: ST340014A: 46°C
Antes de finalizar, es importante resaltar que hddtemp
le mostrará la
temperatura de su disco duro IDE o SCSI solamente si éstos soportan la
tecnología SMART (acrónimo de: Self-Monitoring, Analysis and Reporting
Technology).
SMART simplemente es una tecnología que de manera automática realiza un monitoreo, análisis e informes, ésta tiene un sistema de alarma que en la actualidad viene de manera predeterminada en muchos modelos de discos duros, lo anterior puede ayudarle a evitar fallas que de una u otra manera pueden afectarle de manera contundente.
En esencia, SMART realiza un monitoreo del comportamiento del disco duro y si éste presenta un comportamiento poco común, será analizado y reportado al usuario.
Vía: Ubuntu Blog.
Registro de la segunda charla en el canal #ubuntu-es
Ya se encuentra disponible el registro de la segunda charla dada en el canal #ubuntu-es del servidor FreeNode. En esta charla se discutió lo siguiente:
- Ventajas y desventajas del uso de
aptitude
frente aapt
ysynaptic
. - Resumen de comandos en
aptitude
,apt
,dpkg
. - ¿Qué es un repositorio?.
- Agregando nuevos repositorios.
- Proyecto Ubuntu Backports.
- Editando el fichero
/etc/apt/sources.list
. - Estructura de los repositorios.
- Ejemplos de uso de
aptitude
. - Como actualizar de manera segura su sistema.
- ¿Es importante la firma de paquetes?.
- ¿Como verificamos la autencidad de los paquetes?.
- Como se importa la llave pública desde un servidor GPG.
- Como se exporta la llave pública y se añade a nuestra lista de claves seguras.
- Sesión de preguntas y respuestas.
Puede ver el registro de la charla al seguir el enlace anterior.
En ubuntuchannel.org estamos haciendo todo lo posible por mejorar cada día más, si está interesado en informarse acerca de las siguientes charlas puede ver como siempre nuestra sección de Eventos.
Recientemente nos hemos dedicado a realizar una especie de listado alfabético de
los comandos en GNU/Linux, dicha información se encuentra disponible en la
sección de Comandos, si desea
colaborar, su ayuda es bien recibida, solo recuerde comunicarse previamente
conmigo, para ello puede hacer uso del formulario de
contacto, para ponernos de acuerdo al
respecto. También puede recibir información de manera interactiva acerca del
proyecto en el canal IRC #ubuntu-es
del
servidor FreeNode, sino me encuentro conectado (nick
[MilMazz]
) en ese instante puede preguntarle al operador del canal (si se
encuentra conectado claro está), P3L|C4N0
con gusto le atenderá.
Charlas en #ubuntu-es
El día de ayer se llevo a cabo la primera de la serie de charlas que se
emitirán por el canal #ubuntu-es
del servidor FreeNode, en esta oportunidad
el ponente ha sido zodman, el tema que abordo zodman
fue acerca de Cómo montar un servidor casero haciendo uso de Ubuntu Linux como
plataforma, en el transcurrir de la charla se explico como configurar y
establecer un servidor con los siguientes servicios.
- Apache2
- MySQL
- PHP4
- FTP
- SSH
También se hablo acerca de la configuración de dominios .com, .net y .org sin hacer uso de bind, aplicando dichas configuraciones en el servidor que se está estableciendo.
Si desgraciadamente no pudo estar presente en el evento, no se preocupe, ya he habilitado un registro de la charla. Por motivos de tiempo se decidio dividir la charla en dos partes, si le interesa asistir a la segunda parte de esta charla, esté atentos a los cambios en la sección de Eventos en Ubuntuchannel.org.
Ubuntu 5.10 (Breezy Badger)
Se anuncia la versión previa a la salida oficial de Ubuntu 5.10, cuyo nombre clave es Breezy Badger, esta versión previa incluye tanto un CD instalable como un CD en “vivo” (Live CD) para tres arquitecturas en específico: Intel x86 (PC), PowerPC (Mac) y AMD64 (PC de 64 bits).
Ubuntu Linux es una distribución orientada al escritorio, aunque también es funcional para servidores, ofrece una instalación fácil y rápida, emisión regular de nuevas versiones, selección exhaustiva de excelentes paquetes instalados de manera predeterminada, además, existe un compromiso de ofrecer actualizaciones de seguridad por un lapso de 18 meses para cada una de las versiones.
¿Qué ofrece Ubuntu 5.10 en el escritorio?
-
GNOME 2.12, cuyo lanzamiento ocurrio ¡ayer!.
-
OpenOffice.org 2.0 (beta 2).
-
X.org 6.8.2, con excelente soporte de hardware.
-
Se ofrece una herramienta que facilita enormemente la instalación de nuevas aplicaciones, se puede ver en el menú System Administration -> Add/Remove Programs
-
Una nueva herramienta (Language Selector) que le permitirá instalar fácilmente el soporte para un idioma determinado.
-
Los menús en GNOME son editables.
-
Se ofrece soporte para la grabación de CDs, se utiliza la aplicación Serpentine.
-
Ahora podrá ver una barra de progreso (USplash) mientras su sistema se inicia.
Ubuntu 5.10 tambien ofrece algunos avances en cuanto a la rama de servidores y modos de instalación, en cuanto a los avances en el soporte de hardware nos encontramos con ciertos puntos interesantes, como por ejemplo.
-
Kernel 2.6.12.5 con actualizaciones de drivers provenientes de terceras partes.
-
Mejora en el soporte de hardware para portátiles.
-
Soporte (todo en uno) para los dispositivos (impresoras y scanners) HP.
-
Soporte para dispositivos Bluetooth de entrada (como teclados o ratones).
-
Mejoras en cuanto al manejo de dispositivos de sonido.
-
Disponibilidad del kernel para la arquitectura PowerPC (64 bits).
Puede seleccionar una imagen de la versión previa a la salida oficial de Ubuntu 5.10 al seguir el enlace Ubuntu 5.10 (Breezy Badger) Preview, si es posible realice la descarga usando Bittorrent, evitando la sobrecarga de los servidores.
Ubuntu lightweight
Si usted es de esas personas que le gusta obtener el mayor rendimiento, con la
menor carga de procesador posible, a pesar de no contar con hardware de última
generación. Seguramente este artículo le interesará puesto que trataré de
explicarle detalladamente la instalación del entorno de escritorio XFCE,
partiendo de una instalación server
, la cual instala el sistema base
únicamente, sin entorno gráfico, todo esto por supuesto implementado en Ubuntu
Linux.
Existen 4 opciones para instalar Ubuntu, son las siguientes:
-
linux:
Esta es la opción de instalación por defecto. -
expert:
Inicia la instalación en modo experto, ofrece mayor control sobre la instalación. -
server
,server-expert:
Ofrece una instalación mínima del sistema, este tipo de instalación es ideal para servidores, en donde regularmente el administrador instalará el software que realmente necesita, bajo esta opción de instalación no se instalará entorno gráfico.
La información anterior la puede verificar al pulsar la tecla F1 en la pantalla de presentación que aparece al iniciar el sistema con el CD de instalación de Ubuntu Linux, seguidamente deberá presionar la tecla F3 para consultar dichas opciones, la tecla F3 se refiere a methods for special ways of using this CD-ROM.
La opción que eligiremos será server
, con ello instalaremos el sistema base y
posteriormente nos dedicaremos a levantar el entorno gráfico XFCE.
No se entrará en mucho detalle acerca de la instalación en modo server
porque
el asistente nos va guiando de manera muy intuitiva, quizás la parte más
díficil (y no lo es en lo absoluto) sea el particionamiento del disco,
acerca de este último punto tampoco entrare en detalle puesto que en la red
existen infinidad de documentos que hacen referencia a métodos de
particionamiento, yo prefiero hacerlo manualmente, quizás a otros no les guste
el método anterior, pero prefiero tener el control sobre lo que uso. También
existe la posibilidad de realizar un particionamiento automático, asi que no hay
que asustarse.
Una vez finalizada la instalación del sistema base de ubuntu procedemos de la siguiente manera.
Estableciendo los repositorios
En primer lugar, vamos a activar y añadir algunos repositorios, para ello
necesitamos editar el fichero /etc/apt/sources.list
, en mi caso he activado
todos los fuentes deb
que vienen por defecto en el fichero, por ahora dejo
comentado los deb-src
. De manera adicional he agregado a la lista un nuevo
repositorio.
<code>deb http://www.os-works.com/debian testing main</code>
Una vez que haya guardado los cambios en el fichero /etc/apt/sources.list
recuerde que debe autenticar el origen de los ficheros binarios o fuentes de
manera transparente, esto se explico con anterioridad en el artículo COMO
actualizar de manera segura su
sistema, el
ejemplo que se expone en dicho artículo aplica perfectamente para los
repositorios de www.os-works.com.
Puede bajar una muestra de mi sources.list si lo prefiere.
Puede que usted no esté de acuerdo en utilizar el repositorio del grupo os-cillation, yo voy a exponer las razones por las cuales he decidido elegir dicho repositorio, el equipo os-cillation mantiene de manera no oficial paquetes para el entorno de escritorio Xfce, estos paquetes son constantemente actualizados, de hecho, estos paquetes compilados son usados para la creación de la distribución Xfld Live-Linux. Estos paquetes binarios son para la arquitectura i386, compilados en una maquina con Debian testing (sarge).
Estableciendo las preferencias para los repositorios
Seguidamente crearemos el fichero /etc/apt/preferences
, recuerde que el
fichero lo puede crear haciendo uso del editor nano
o vi
, lo importante es
que el fichero contenga lo siguiente:
<code>Package: *
Pin: origin www.os-works.com
Pin-Priority: 999</code>
Después de guardar los cambios del fichero /etc/apt/preferences
actualice la
lista de paquetes y la distribución.
Actualizando el sistema actual
<code>$ sudo aptitude update
$ sudo aptitude dist-upgrade</code>
Este proceso puede requerir de cierto tiempo, dependiendo de su ancho de banda.
Instalando xfce, el display manager y los componentes básicos del sistema X Window
Teniendo actualizada la distribución proceda a instalar los siguientes paquetes, al igual que el paso anterior, el tiempo de espera dependera de su ancho de banda.
<code>$ sudo aptitude install x-window-system-core xdm xfld-desktop</code>
Es importante recalcar que le paquete xfld-desktop
instalará el entorno de
escritorio completo, incluyendo el emulador del
terminal, el manejador de ficheros
ROX, el reproductor
Xfmedia y otros plugins para
el panel. En el caso en que usted desea solo instalar los componentes básicos
del entorno de escritorio Xfce, el paquete a instalar debe ser xfce4
. Asi que
sustiyendo el paquete anterior, el comando quedaría de la siguiente forma.
<code>$ sudo aptitude install x-window-system-core xdm xfce4</code>
Observación: Este paquete (xfce4
) también se encuentra disponible en la
sección universe
de los repositorios de ubuntu, en este último caso no es
necesario hacer uso de los repositorios de os-works, aunque como mencione
anteriormente, los repositorios de os-works pueden ofrecerle un paquete más
actualizado.
Iniciando Xfce
Finalmente en su directorio personal cree un fichero oculto .xsession
.
<code>$ nano ~/.xsession</code>
El fichero .xsession
debe contener lo siguiente:
<code>#!/bin/sh
exec /usr/bin/startxfce4</code>
Ahora, cada vez que vaya a iniciar sesión, lo hará en modo gráfico de manera
automática, si no desea reiniciar para ver los resultados, utilice el comando
startx
.
Espero en los siguientes días ir informando acerca del desempeño de Ubuntu con el entorno de escritorio Xfce en una laptop de bajos recursos. Seguidamente espero poder exponer una instalación bastante ligera pero utilizando el entorno de escritorio Enligtenment.
Referencias
Proyecto Inclusión Digital
Inclusión
Digital, es un estupendo proyecto que en principio ha sido promovido por la
Fundación Assis Gurgacz y por la Asesoria de Asuntos Comunitarios de la
Prefectura de Cascavel/Paraná, Brasil.
¿En qué consiste el proyecto Inclusión Digital?
El proyecto consiste en un omnibus con doce (12) ordenadores, que recorrerá varios barrios de la ciudad, ofreciendo cursos de inclusión digital a personas de bajos recursos. En este momento se prevee ofertar cursos de Internet y OpenOffice.org en los turnos de la mañana y noche. En el espacio de la tarde se permitirá a quien lo desee el utilizar los ordenadores para navegar y utilizar OpenOffice.org, siempre estando acompañados por algún profesor o guía.
¿Qué distribución está implementando el proyecto Inclusión Digital?
La distribución que se está utilizando actualmente en los doce (12) ordenadores y en el servidor es Ubuntu Linux. Los doce (12) ordenadores están conectados al servidor (IBM 206 xSeries).
Según Daniel Kühl, quien trabaja para la Facultad Assis Gurgacz, localizada en Cascavel/Paraná, la distribución Ubuntu Linux cumple con los requerimientos del proyecto, puesto que brinda facilidad de uso y está orientada al usuario final.
Este proyecto cuenta con el apoyo del Gobierno Federal, lo cual nos hace pensar que el proyecto podría expandirse aún más. La idea en principio es poder brindar más de 3 omnibuses de este tipo, adicionalmente, se brindará especial atención a los trabajadores jóvenes y adultos, los cuales pueden certificarse en cursos IT y no solamente en cursos informática básica.
Un buen comienzo…
Este tipo de iniciativas hay que brindarles el mayor apoyo posible, solo espero que esta idea se extienda y se aplique en otros países, de este modo es posible que la brecha digital se reduzca, por supuesto, este indice de reducción dependerá del alcance y expansión que logren tener estos proyectos, por eso es tan importante el apoyo de los gobiernos nacionales, ya que estos últimos de una manera u otra pueden y deben brindar una infraestructura de telecomunicaciones e informática adecuada, como bien es sabido por todos, la brecha digital es una consecuencia social de un alcance político, este problema se refiere al la abrumadora diferencia socioeconómica entre las sociedades que poseen acceso a internet y aquellas que no, esto, de una manera u otra repercute en el acceso a ciertas Tecnologías de Información y Comunicación (TIC).
Un ejemplo claro que explica lo anterior es el acceso a documentos digitales, en muchos casos éstos poseen información más actualizada, adicionalmente al haber mayor existencia de este tipo de documentos tenemos distintas opciones, cualificar de cierta manera la objetividad y calidad de dichos documentos. De cierta manera no existen limitaciones como sucede en los documentos impresos, para ser más claro con este último argumento, hágase la siguiente pregunta: ¿Dónde cree que se sienta más limitado para conseguir documentos de cierto tipo?, ¿en la biblioteca pública de su ciudad (si existe) o en internet?.
Vía: Ubuntuforums.org.
COMO actualizar de manera segura su sistema
Antes de comenzar es importante hacer notar que esta guía se enfocará al mundo Debian GNU/Linux y sus derivadas, en donde por supuesto se incluye Ubuntu Linux. Después de hacer la breve aclaratoria podemos comenzar.
¿Es importante la firma de los paquetes?
La firma de los paquetes es una funcionalidad fundamental para evitar el posible cambio adrede en los ficheros binarios o fuentes distribuidos a través de sitios espejos (mirrors), de esta manera nos libramos de la posibilidad de un ataque man in the middle, el cual básicamente consiste en la intercepción de la comunicación entre el origen y el destino, el atacante puede leer, insertar y modificar los mensajes (en este caso particular, los ficheros) compartidos entre las partes sin que cada una de ellas se percate que la comunicación se ha visto comprometida.
Nuestro objetivo
Un sistema automatizado de actualización de paquetes, también es sumamente importante eliminar cualquier posibilidad de amenaza que pueda surgir al aprovecharse de la automatización del proceso de actualización, por ejemplo, debemos evitar a toda costa la distribución de troyanos que comprometarán la integridad de nuestros sistemas.
Un poco de historia…
No fue sino hasta la aparición de la versión 0.6 de la interfaz apt
en donde se realiza la autenticación de ficheros binarios y fuentes de manera transparente haciendo uso de una Infraestructura de clave pública (en inglés, Public Key Infrastructure o PKI). La PKI se basa en el modelo GNU Privacy Guard (GnuPG) y se ofrece un enorme despliegue de keyservers internacionales.
Detectando la autenticidad de los paquetes
Como se menciono anteriormente desde la versión 0.6 de la interfaz apt
se maneja de manera transparente el proceso de autentificación de los paquetes. Asi que vamos a hacer una prueba, voy a simular la instalación del paquete clamav
.
$ sudo aptitude --simulate install clamav
Obteniendo por respuesta lo siguiente:
Leyendo lista de paquetes... Hecho
Creando árbol de dependencias
Leyendo la información de estado extendido
Inicializando el estado de los paquetes... Hecho
Se instalarán automáticamente los siguientes paquetes NUEVOS:
arj clamav-base clamav-freshclam libclamav1 libgmp3 unzoo
Se instalarán los siguiente paquetes NUEVOS:
arj clamav clamav-base clamav-freshclam libclamav1 libgmp3 unzoo
0 paquetes actualizados, 7 nuevos instalados, 0 para eliminar y 0 sin actualizar.
Necesito descargar 3248kB de ficheros. Después de desempaquetar se usarán 4193kB.
¿Quiere continuar? [Y/n/?] Y
The following packages are not AUTHENTICATED:
clamav clamav-freshclam clamav-base libclamav1
Do you want to continue? [y/N] N
Cancela.
Si nos fijamos bien en la respuesta anterior notaremos que ciertos paquetes no han podido ser autentificados. A partir de este punto es responsabilidad del administrador del sistema el instalar o no dichos paquetes, por supuesto, cada quien es responsable de sus acciones, yo prefiero declinar mi intento por el momento y asegurarme de la autenticidad de los paquetes, para luego proceder con la instalación normal.
Comienza la diversión
Ahora bien, vamos a mostrar la secuencia de comandos a seguir para agregar las llaves públicas dentro del keyring por defecto. Antes de entrar en detalle es importante aclarar que el ejemplo agregará la llave pública del grupo os-cillation, quienes se encargan de mantener paquetes para el entorno de escritorio Xfce (siempre actualizados y manera no-oficial) para la distribución Debian GNU/Linux (también sirven para sus derivadas, como por ejemplo Ubuntu Linux).
Importando la llave pública desde un servidor GPG
$ gpg --keyserver hkp://wwwkeys.eu.pgp.net --recv-keys 8AC2C0A6
El comando anterior simplemente importara la llave especificada (8AC2C0A6
) desde el servidor con el cual se ha establecido la comunicación, el valor de la opción --keyserver
sigue cierto formato, el cual es: esquema:[//]nombreservidor[:puerto]
, los valores ubicados entre corchetes son opcionales, cuando hablamos del esquema nos referimos al tipo de servidor, regularmente utilizaremos como esquema hkp
para servidores HTTP o compatibles.
Si el comando anterior se ejecuto de manera correcta, el proceso nos arrojará una salida similar a la siguiente:
gpg: key 8AC2C0A6: public key "os-cillation Debian Package Repository
(Xfld Package Maintainer) <[email protected]>" imported
La instrucción anterior solamente variará de acuerdo al keyserver
y la clave que deseemos importar. En www.pgp.net está disponible un buscador que le facilitará la obtención de los datos necesarios.
Exportando y añadiendo la llave pública
$ gpg --armor --export 8AC2C0A6 | sudo apt-key add -
Con el comando anterior procedemos a construir la salida en formato ASCII producto de la exportación de la llave especificada y a través del pipe capturamos la salida estándar y la utilizamos como entrada estándar en el comando apt-key add
, el cual simplemente agregará una nueva llave a la lista de llaves confiables, dicha lista puede visualizarse al hacer uso del comando apt-key list
.
Aunque parezca evidente la aclaratoria, recuerde que si usted no puede hacer uso de sudo, debe identificarse previamente como superusuario.
Finalmente…
Para finalizar recuerde que debe actualizar la lista de paquetes.
$ sudo aptitude update
Ahora podemos proceder a instalar los paquetes desde el repositorio que hemos añadido como fuente confiable.
aptitude, ¿aún no lo usas?
Si usted es de los que piensa que aptitude por ser simplemente un frontend de apt no puede aportar alguna ventaja al manejo óptimo de paquetes, trataré en lo posible en este artículo hacerle cambiar de parecer, o por lo menos mostrarle que en realidad aptitude si ofrece ciertas ventajas sobre apt.
La útil y avanzada herramienta que le permite manejar cómodamente los paquetes, apt (y dpkg) no lleva un registro (ni hace distinciones) de las aplicaciones que se instalan de manera explícita y las que se instalan de manera implícita por consecuencia del primer punto (es decir, para establecer la resolución de dependencias). Esta característica genera ciertos inconvenientes a la hora de desinstalar un paquete que posee dependencias que no son empleadas por otros programas, al momento de realizar la desinstalación lo más seguro es que no queden las cosas muy “limpias” en el sistema.
Un remedio que en principio puede servirle es hacer uso de deborphan (también puede hacer uso de orphaner, un frontend para deborphan); una herramienta de mayor potencia es debfoster, el primero de los mencionados busca librerias huérfanas (como se explico en un artículo anterior) y al pasarle estos resultados al apt-get remove se puede resolver de cierta manera el problema.
El problema de deborphan es que su campo de acción es limitado, por lo que la “limpieza” puede no ser muy buena del todo. En cambio debfoster si hace la distinción de la cual hablaba al principio de este artículo, los paquetes instalados de manera explícita y aquellos que son instalados de manera implícita para resolver las dependencias, por lo tanto debfoster eliminará no solamente las librerias huérfanas tal cual lo hace deborphan si no que también eliminará aquellos paquetes que fueron instalados de manera implícita y que actualmente ningún otro programa dependa de él, también serán eliminados en el caso en que se de una actualización y ya la dependencia no sea necesaria.
Ahora bien, se presenta otra alternativa, aptitude, este frontend de apt si recuerda las dependencias de un programa en particular, por lo que el proceso de remoción del programa se da correctamente. Ya anteriormente había mencionado que apt y dpkg no hacen distinción de las aplicaciones instaladas y Synaptic apenas lleva un histórico, esto en realidad no cumple con las espectativas para mantener un sistema bastante “limpio”.
Aparte de lo mencionado previamente, otra ventaja que he encontrado en la migración a aptitude es que tienes dos opciones de manejo, la linea de comandos, la cual ha sido mi elección desde el comienzo, debido a la similitud de los comandos con los de apt y porque consigo lo que deseo inmediatamente, la interfaz gráfica no me llama la atención, pero quizás a usted si le guste. Adicionalmente, aptitude maneja de manera más adecuada el sistema de dependencias.
Para lograr ejecutar la interfaz gráfica de aptitude simplemente debe hacer:
$ sudo aptitude
De verdad le recomiendo emplear aptitude como herramienta definitiva para el manejo de sus paquetes, primero, si es usuario habitual de apt, el cambio prácticamente no lo notará, me refiero al tema de la similitud de los comandos entre estas dos aplicaciones, segundo, no tendrá que estar buscando “remedios” para mantener limpio el sistema, aptitude lo hará todo por usted.
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
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
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:
- Acceder a la interfaz del phpMyAdmin, para lograrlo escribe en la barra de direcciones de tu navegador http://localhost/phpmyadmin.
- Selecciona la opción de Privilegios, ésta se ubica en el menú principal.
- 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.
- 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.
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:
- Trampa JAVA (español)
- JAVA, Formato Restrictivo (inglés)
- Instalando Java 1.5 (inglés)
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.
KDE 3.4.1 disponible en Kubuntu
KDE 3.4.1 ahora está disponible en
Kubuntu, distribución que integra todas las
características de Ubuntu Linux, pero está basada en el entorno de escritorio
KDE. Puedes descargar los paquetes necesarios al agregar al fichero
/etc/apt/sources.list
el siguiente repositorio.
<code>deb http://kubuntu.org/hoary-kde341 hoary-updates main</code>
Tienes a disposición otra alternativa.
<code>deb http://download.kde.org/stable/3.4.1/kubuntu hoary-updates main</code>
Estos paquetes también están disponibles para la versión en desarrollo Breezy.
Guía Ubuntu Hoary Hedgedog
Sergio Blanco Cuaresma (actual presidente de la Asociación GPL Tarragona) ha publicado una guía orientada al uso de Ubuntu Hoary Hedgehog (5.04). No quería recomendar el recurso hasta haberlo leido completamente, como ya lo he hecho, tengo que decir que en realidad es una referencia en cuanto al tema para todos aquellos usuarios que recien comienzan con esta distribución, las explicaciones son bastante detalladas y sencillas, el autor evita hacer uso del lenguaje técnico, lo cual disminuye la posibilidad de generar en algunas ocasiones confusiones al lector. La guía está protegida por la licencia Creative Commons, bajo la rama: Reconocimiento, No Comercial, Compartir Igual. Podrá encontrar mayor información acerca de las especificaciones de la licencia en el resumen legible del texto legal en castellano.
El autor presenta una breve introducción a la historia del Software Libre, tanto las ventajas y desventajas de este modelo frente al propuesto por el modelo del software privativo, hace algunas distinciones entre los puntos de vista de la OSI y la FSF, se hace mención de otros tipos de licencias en el transcurso de la guía. Si aún no instala Ubuntu, le recomiendo que mientras lo va instalando puede aprovechar el tiempo de espera leyendo esta parte de la guía.
Posteriormente se describe los origenes de las distribución Ubuntu Linux y su filosofia, las arquitecturas que soporta, el uso de Ubuntu LiveCD, seguidamente se describe paso a paso la instalación de Ubuntu Linux en el disco duro.
Siguiendo con la temática, el autor describe de manera muy detallada todos y cada uno de los componentes del escritorio GNOME en Ubuntu, comenzando por los paneles inferior y superior y seguidamente se adentra en la descripción de cada una de las funciones de las distintas opciones en el menú principal.
Desde mi punto de vista las explicaciones dadas en el tema Gestor de paquetes Synaptic son excelentes, considero que hasta para un usuario no iniciado en el mundo GNU/Linux será comprensible esta sección. La sección de Aplicaciones es igualmente recomendable.
La guía de Ubuntu Linux Hoary Hedgehog (5.04) la puede encontrar en la sección de publicaciones de Marble Station.
Beagle
Beagle es una poderosa herramienta de búsqueda escrita en C# usando Mono y Gtk# que le permitirá buscar hasta en lo más recóndito de su espacio personal y de esta manera encontrar lo que está buscando. Beagle también puede buscar en distintos dominios.
Usando Beagle ud. fácilmente podrá encontrar.
- Documentos.
- Correos electrónicos.
- Historial web.
- Conversaciones de Mensajería Instantánea o del IRC.
- Código fuente.
- Imagénes.
- Ficheros de audio.
- Aplicaciones.
- Otros…
Beagle puede extraer información desde:
- Evolution, tanto los correos electrónicos como de la libreta de contactos.
- Gaim, desde los registros de mensajería instantánea.
- Firefox, páginas web.
- Blam y Liferea, agregadores RSS.
- Tomboy, notas.
De manera adicional Beagle soporta los siguientes formatos.
- OpenOffice.org
- Microsoft Office (
doc
,ppt
,xls
). - HTML.
- PDF.
- Imágenes (jpeg, png).
- Audio (mp3, ogg, flac).
- AbiWord.
- Rich Text Format (RTF).
- Texinfo.
- Páginas del manual (man pages).
- Código Fuente (C, C++, C#, Fortran, Java, JavaScript, Pascal, Perl, PHP, Python).
- Texto sin formato.
Beagle aún se encuentra en una etapa temprana de desarrollo, así que aún faltan muchas características que le darían un plus a esta herramienta, por ejemplo, agregar el soporte a los sistemas de ficheros: NFS, Reiser4, NTFS y FAT.
En el caso de los sistemas de ficheros tipo FAT, muchos usuarios aún emplean este tipo de particiones para compartir datos entre los mundos GNU/Linux y Windows, por lo que sería conveniente el hecho de agregar esta funcionalidad a esta estupenda herramienta.
Si desea comenzar con esta herramienta, le recomiendo leer los primeros pasos del wiki de Beagle. A los usuarios de Ubuntu Linux le recomiendo la serie de pasos mostrados en el tema ¿Cómo instalar el buscador Beagle? de guia-ubuntu.org.
Existen algunas demostraciones sobre el uso de Beagle, propuestas por Nat Friedman, en una de ellas se podrá apreciar la funcionalidad de “búsqueda en vivo”, para ello es necesario activar el soporte de Inotify.
Inotify es un sistema de notificación de ficheros para el núcleo (kernel) de Linux. Actualmente esta característica no es incluida en la serie estable del núcleo de Linux, por lo que es muy probable que deba añadir esta característica al núcleo por si solo para poder utilizarlo. Existen algunas versiones del núcleo para distribuciones que si incluyen el soporte a Inotify.
Beagle como tal no requiere de Inotify para funcionar, solamente se recomienda su uso puesto que mejora la experiencia del usuario. Sin el soporte de Inotify, Beagle no podrá detectar automáticamente (en vivo) todos los cambios en su directorio personal, por lo que no podrá indexar los datos de manera oportuna.
De manera oportuna, los usuarios de Ubuntu Linux tienen cierta ventaja, no será necesario reparar el núcleo ni compilarlo, solamente hay que añadir la opción de Inotify en el fichero de configuración de Grub, de la manera siguiente:
$ sudo vi /boot/grub/menu.lst
title Ubuntu, kernel 2.6.10-5-k7
root (hd0,5)
kernel /vmlinuz-2.6.10-5-k7 root=/dev/hda8 ro quiet splash <strong>inotify</strong>
initrd /initrd.img-2.6.10-5-k7
savedefault
boot
Luego de hacer los cambios al fichero de configuración del gestor de arranque Grub, procedemos a actualizarlo.
$ sudo update-grub
Si utilizas Firefox y deseas que Beagle indexe las páginas que vas navegando, seguramente desearás instalar esta extensión.
¿Es necesario activar la cuenta root en Ubuntu?
Los desarrolladores de Ubuntu Linux en un principio querían que el proceso de instalación fuese lo más fácil posible, el hecho de desactivar de manera predeterminada la cuenta de usuario root
permitía obviar algunos pasos en el proceso de instalación. Esto para muchos es un inconveniente, pues Ubuntu Linux “difiere” en cuanto al modelo de seguridad que se maneja comúnmente en sistemas GNU/Linux, el modelo que plantea Ubuntu Linux es simplemente no recomendar hacer uso extensivo del usuario root
(por eso ha desactivado la cuenta). Debido a que esta distribución está orientada hacia usuarios que quizás no han tenido un contacto extenso con sistemas GNU/Linux, el modelo propuesto me parece bastante lógico.
Por supuesto, este modelo presenta ventajas y desventajas, desde mi punto de vista son más ventajas que desventajas, ¿por qué?, a continuación detallo mis argumentos.
- Ubuntu Linux está orientada hacia usuarios finales que no han tenido tanto contacto con el mundo GNU/Linux, seguramente estos nuevos usuarios no están adaptados al modelo de seguridad que se maneja en estos sistemas, por lo que seguramente se generen más olvidos a la hora de recordar la contraseña que se utiliza para fines administrativos, puesto que esta cuenta es pocas veces usadas por ellos. Con el uso de sudo (Super User DO) esto no pasa, puesto que se maneja la misma contraseña del usuario principal (o aquellos que estén autorizados) para fines administrativos.
- Seguramente el hecho de introducir la contraseña para realizar cambios administrativos te detenga a pensar en lo que estas haciendo realmente, lo cual puede reducir la tasa de errores en la administración del sistema.
- Puedes ver un registro de las actividades que se realizan con el comando
sudo
en/var/log/auth.log
, lo cual puede ayudar a administrar tu sistema eficientemente.
He escuchado argumentos de personas que dicen que el usar sudo
es tedioso, puesto que debes introducir la constraseña a cada instante, eso no es cierto, la primera vez que introduzcas la contraseña, ésta se almacenará por quince (15) minutos, después de transcurrido ese tiempo y si necesitas hacer alguna actividad administrativa se te volverá a solicitar.
Quizás la mayor desventaja de este modelo es que el mantener una contraseña “diferente” para el superusuario existe mayor protección en el caso en que las contraseñas de los usuarios con derehos administrativos se vean comprometidas. Pero esto puede ser evitado al ponerle mayor cuidado a las cuentas de usuarios con derechos administrativos, la debilidad es allí y no en el modelo en cuestión.
Lo cierto es que el uso de sudo
puede considerarse para ejecutar pocos comandos administrativos, mientras que su generalmente es utilizado para ejecutar múltiples tareas administrativas, el problema es que su puede dejar “abierta” indefinidamente una shell con derechos de superusuario, esto último es un gran inconveniente para la seguridad del sistema. En cambio sudo limita estas cosas, como se menciono anteriormente, al menos tienes quince (15) minutos de derechos de superusuario.
Si a pesar de lo que he mencionado hasta ahora, ud. considera conveniente activar la cuenta de superusuario en Ubuntu Linux, aca está la serie de pasos que deberá seguir:
- sudo passwd root
- Cambiar la configuración de sudo, para evitar que el usuario principal haga uso de él, este paso puede ser opcional, aunque es recomendable hacerlo si realmente se desea hacer la “separación” a la cual estamos acostumbrados en los sistemas GNU/Linux.
- Cambiar las entradas del menú que hacen uso de
gksudo
(comúnmente aquellas aplicaciones con fines administrativos) porgksu
, para que realmente pidan la contraseña de root y no la del usuario principal.
Como conclusión, desde mi punto de vista considero innecesario tomarse tantas molestias para activar al usuario root en Ubuntu Linux cuando el mecanismo propuesto (sudo) funciona perfectamente.
deborphan, eliminando librerias huérfanas
deborphan simplemente se encarga de buscar librerias huérfanas. Se mostrará un listado de paquetes que posiblemente no fueron desinstalados en su momento y que actualmente no son requeridas en el sistema por ningún otro paquete o aplicación. Esta aplicación es realmente útil para mantener “limpio” el sistema en caso de ser necesario.
Para instalar deborphan en nuestro sistema simplemente debe proceder como sigue:
sudo apt-get install deborphan
Para remover todos los paquetes huérfanos encontrados simplemente debemos proceder como sigue:
sudo deborphan | sudo xargs apt-get remove -y
Esta aplicación me ha sido realmente útil, sobretodo por la reciente actualización que he realizado en la versión mi distribución Ubuntu Linux, la versión anterior era Warty Warthog (v.4.10), la nueva es Hoary Hedgehog (v.5.04). En dicha actualización ocurrieron muchos “rompimientos” de dependencias, muchas librerias quedaron huérfanas, con esta aplicación he depurado el sistema.
GNU/Linux
Fortaleciendo nuestras contraseñas
Si una de las promesas que tiene para este cierre de año es fortalecer las
contraseñas en sus equipos personales, cambiarlas mensualmente y no repetir la
misma contraseña en al menos doce cambios. En este artículo se le explicará como
hacerlo sin tener que invertir una uva en ello, todo esto gracias al paquete
libpam-cracklib
en Debian, el procedimiento mostrado debe aplicarse a otras
distribuciones derivadas de Debian.
Pareciese lógico que algunas de las mejores prácticas para el fortalecimiento de las contraseñas son las siguientes:
- Cambiar las contraseñas periódicamente.
- Establecer una longitud mínima en las contraseñas.
- Establecer buenas reglas para las nuevas contraseñas, es decir, mezcla entre letras mayúsculas, minúsculas, dígitos y caracteres alfanuméricos.
- Mantener un histórico de las contraseñas usadas previamente, de ese modo, alentamos a los usuarios establecer nuevas contraseñas.
- Indicarle a los usuarios que es inaudito que se anoten las contraseñas en un post-it y se dejen pegadas en los monitores o incluso en las gavetas de sus archivadores.
El primer paso es instalar el paquete libpam-cracklib
# apt-get install libpam-cracklib
A partir de la versión 1.0.1-6 de PAM se recomienda manejar la configuración vía
pam-auth-update
. Por lo tanto, por favor tome un momento y lea la sección 8
del manual del comando pam-auth-update
para aclarar su uso y ventajas.
$ man 8 pam-auth-update
Ahora establezca una configuración similar a la siguiente, vamos primero con la
exigencia en la fortaleza de las contraseñas, para ello edite o cree el fichero
/usr/share/pam-configs/cracklib
.
Name: Cracklib password strength checking
Default: yes
Priority: 1024
Conflicts: unix-zany
Password-Type: Primary
Password:
requisite pam_cracklib.so retry=3 minlen=8 difok=3
Password-Initial:
requisite pam_cracklib.so retry=3 minlen=8 difok=3
NOTA: Le recomiendo leer la sección 8 del manual de pam_cracklib
para
encontrar un mayor numero de opciones de configuración. Esto es solo un ejemplo.
En versiones previas el modulo pam_cracklib
hacia uso del fichero
/etc/security/opasswd
para conocer si la propuesta de cambio de contraseña no
había sido utilizada previamente. Dicha funcionalidad ahora corresponde al nuevo
modulo pam_pwhistory
Definamos el funcionamiento de pam_pwhistory
a través del fichero
/usr/share/pam-configs/history
.
Name: PAM module to remember last passwords
Default: yes
Priority: 1023
Password-Type: Primary
Password:
requisite pam_pwhistory.so use_authtok enforce_for_root remember=12 retry=3
Password-Initial:
requisite pam_pwhistory.so use_authtok enforce_for_root remember=12 retry=3
NOTA: Para mayor detalle de las opciones puede revisar la sección 8 del
manual de pam_pwhistory
Seguidamente proceda a actualizar la configuración de PAM vía pam-auth-update
.
Una vez cubierta la fortaleza de las contraseñas nuevas y de evitar la reutilización de las ultimas 12, de acuerdo al ejemplo mostrado, resta cubrir la definición de los periodos de cambio de las contraseñas.
Para futuros usuarios debemos ajustar ciertos valores en el fichero
/etc/login.defs
#
# Password aging controls:
#
# PASS_MAX_DAYS Maximum number of days a password may be used.
# PASS_MIN_DAYS Minimum number of days allowed between password changes.
# PASS_WARN_AGE Number of days warning given before a password expires.
#
PASS_MAX_DAYS 30
PASS_MIN_DAYS 0
PASS_WARN_AGE 5
Las reglas previas no aplicaran para los usuarios existentes, pero para este
tipo de usuarios podremos hacer uso del comando chage
de la siguiente manera:
# chage -m 0 -M 30 -W 5 ${user}
Donde el valor de ${user}
debe ser reemplazo por el username.
Instalación básica de Trac y Subversion
En este artículo se pretenderá mostrarle el proceso de instalación de un ambiente de desarrollo que le permitirá hacerle seguimiento a su proyecto personal, de igual manera se le indicará el modo en el cual puede comenzar a utilizar un sistema de control de versiones. Todas las indicaciones mostradas en este documento han sido probadas en la distribución Debian GNU/Linux 5.0 (nombre código Lenny).
La herramienta de seguimiento o manejo del proyecto que se procederá a instalar es Trac, el sistema de control de versiones que se presentará será Subversion. Todo lo anterior se presentará vía Web haciendo uso del servidor Apache, de manera adicional se utilizará el servidor de bases de datos PostgreSQL como backend de Trac.
Dependencias
En primer lugar proceda a instalar las siguientes dependencias.
# aptitude install apache2 \
libapache2-mod-python \
postgresql \
subversion \
python-psycopg2 \
libapache2-svn \
python-subversion \
trac
La versión de Trac que se encuentra en los archivos de Debian Lenny es estable (0.11.1). Sin embargo, si usted compara esta versión con lo publicado en el sitio oficial de Trac, podrá encontrar que existen nuevas versiones estables de mantenimiento que contienen correcciones a errores de programación y algunas nuevas funcionalidades de bajo impacto, para el momento de la redacción de este artículo se encuentra la versión 0.11.7. Es recomendable que utilice el paquete trac
desde el archivo backports de Debian.
# aptitude -t lenny-backports install trac
Si desea usar el paquete proveniente del archivo backports le recomiendo leer las instrucciones de uso de este repositorio de paquetes.
Con el fin de mantener este artículo lo más sencillo y conciso posible se describirá la versión que viene por defecto con la distribución utilizada en este caso.
Versión de desarrollo de Trac
Si desea conocer algunas características interesantes que se han agregado a Trac en las nuevas versiones, o si su interés particular es
examinar las bondades que le ofrece Trac en su versión de desarrollo puede hacer uso del comando pip
, si no tiene instalado pip proceda como sigue:
# aptitude install python-setuptools
# easy_install pip
Proceda a instalar la versión de desarrollo de Trac.
# pip install https://svn.edgewall.org/repos/trac/trunk
Creación de usuario y base de datos
Antes de proceder con la instalación de Trac se debe establecer el usuario y la base de datos que se utilizará para trabajar.
En el siguiente ejemplo el usuario de la base de datos PostgreSQL que utilizará Trac será trac_user
, su contraseña será trac_passwd
. El uso de la contraseña lo del usuario trac_user
lo veremos más tarde al proceder a configurar el ambiente de Trac.
# su postgres
$ createuser \
--no-superuser \
--no-createdb \
--no-createrole \
--pwprompt \
--encrypted trac_user
Enter password for new role:
Enter it again:
CREATE ROLE
Nótese que se debe utilizar el usuario postgres
(u otro usuario con los privilegios necesarios) del sistema para proceder a crear los usuarios.
Ahora procedemos a crear la base de datos trac_dev
, cuyo dueño será el usuario trac_user
.
$ createdb --encoding UTF8 --owner trac_user trac_dev
Ambiente de Trac
Creamos el directorio /srv/www
que será utilizado para prestar servicios Web, para mayor referencia acerca de esta elección se le recomienda leer el documento Filesystem Hierarchy Standard en su versión 2.3.
$ sudo mkdir -p /srv/www
$ cd /srv/www
Generamos el ambiente de Trac. Básicamente se deben contestar ciertas preguntas como:
- Nombre del proyecto.
- Enlace con la base de datos que se utilizará.
- Sistema de control de versiones a utilizar (por defecto será SVN).
- Ubicación absoluta del repositorio a utilizar.
- Ubicación de las plantillas de Trac.
En el siguiente ejemplo se omitirán los comentarios brindados por el comando trac-admin
.
# trac-admin project initenv
Creating a new Trac environment at /srv/www/project
...
Project Name [My Project]> Demo
...
Database connection string [sqlite:db/trac.db]>
postgres://trac_user:trac_passwd@localhost:5432/trac_dev
...
Repository type [svn]>
...
Path to repository [/path/to/repos]> /srv/svn/project
...
Templates directory [/usr/share/trac/templates]>
Creating and Initializing Project
Installing default wiki pages
...
---------------------------------------------------------
Project environment for 'Demo' created.
You may now configure the environment by editing the file:
/srv/www/project/conf/trac.ini
...
Congratulations!
Se ha culminado la instalación del ambiente de Trac, ahora procederemos a crear el ambiente de subversion.
Subversion: Sistema Control de Versiones
La puesta a punto del sistema de control de versiones es bastante sencilla, se resume en los siguientes pasos.
Creación del espacio para prestar el servicio SVN, de igual manera se seguirá los lineamientos planteados en el FHS v2.3 mencionado previamente.
# mkdir -p /srv/svn
Seguidamente crearemos el proyecto subversion project
y haremos un importe inicial con la estructura básica de un proyecto de desarrollo de software.
$ cd /srv/svn
# svnadmin create project
$ mkdir -p /tmp/project/{trunk,tags,branches}
$ tree /tmp/project/
/tmp/project/
├── branches
├── tags
└── trunk
# svn import /tmp/project/ \
file:///srv/svn/project/ \
-m 'Importe inicial'
Adding /tmp/project/trunk
Adding /tmp/project/branches
Adding /tmp/project/tags
Committed revision 1.
Apache: Servidor Web
Es hora de configurar los sitios virtuales que utilizaremos tanto para Trac como para subversion.
A continuación se presenta la configuración básica de Trac.
# cat > /etc/apache2/sites-available/trac.example.com <<EOF
> <VirtualHost *>
> ServerAdmin webmaster@localhost
> ServerName trac.example.com
> CustomLog /var/log/apache2/trac.example.com/access.log combined
> ServerSignature Off
> ErrorLog /var/log/apache2/trac.example.com/error.log
> LogLevel warn
> DocumentRoot /srv/www/project
> <Location />
> SetHandler mod_python
> PythonInterpreter main_interpreter
> PythonHandler trac.web.modpython_frontend
> PythonOption TracEnv /srv/www/project
> PythonOption TracUriRoot /
> </Location>
> </VirtualHost>
> EOF
Ahora veamos la configuración básica de nuestro proyecto subversion.
# cat > /etc/apache2/sites-available/svn.example.com <<EOF
> <VirtualHost *>
> ServerAdmin webmaster@localhost
> ServerName svn.example.com
> CustomLog /var/log/apache2/svn.example.com/access.log combined
> ServerSignature Off
> ErrorLog /var/log/apache2/svn.example.com/error.log
> LogLevel warn
> DocumentRoot /srv/svn/project
> <Location />
> DAV svn
> SVNPath /srv/svn/project
> </Location>
> </VirtualHost>
> EOF
De acuerdo a la configuración mostrada es necesario crear los directorios /var/log/apache2/svn.example.com
y /var/log/apache2/trac.example.com
para mantener por separado el registro de accesos y errores de los sitios virtuales recién creados. De
lo contrario no podremos iniciar el servidor Web Apache.
# mkdir /var/log/apache2/{svn,trac}.example.com
Activamos el módulo DAV
necesario para cumplir con la configuración mostrada para el sitio virtual svn.example.com
.
# a2enmod dav
Activamos los sitios virtuales recién creados.
# a2ensite trac.example.com
# a2ensite svn.example.com
Como la puesta en marcha y configuración de un servidor DNS escapa a los fines de este artículo, simplemente definiremos los hosts en la tabla estática que se encuentra definida en el archivo /etc/hosts
de la siguiente manera.
# cat >> /etc/hosts <<EOF
> 127.0.0.1 trac.example.com trac
> 127.0.0.1 svn.example.com svn
> EOF
Finalmente debemos forzar la recarga de la configuración del servidor Web Apache, esto con el fin de cargar el módulo DAV
y los sitios virtuales definidos, es decir, trac.example.com
y svn.example.com
.
# /etc/init.d/apache2 force-reload
¡Felicitaciones!, ya puede ir a su navegador favorito y colocar cualquiera de los sitios virtuales que acaba de definir.
Recomendaciones
Una vez que haya llegado a este sección deberá comenzar a modificar adecuadamente los permisos para el usuario y grupo www-data
(Servidor Web Apache) para que escriba en las ubicaciones que sea necesario tanto en Trac como en subversion.
La configuración de Trac podrá encontrarla en /srv/www/project/conf/trac.ini
, para mayor detalle acerca de la configuración de este fichero se le recomienda leer el documento TracIni.
Si en su proyecto prevé que participarán otras personas, es recomendable establecer notificaciones de tickets y cambios en el
repositorio subversion, para esto último deberá revisar el hook post-commit
y la documentación del paquete libsvn-notify-perl que le ofrece una extraordinaria cantidad de opciones.
Conozca el entorno de Trac y Subversion. Si desea agregar nuevas funciones a su instalación le recomiendo visitar el sitio Trac Hacks.
Espero poder mostrarles en próximos artículos algunas configuraciones más avanzadas en Trac, incluyendo la instalación, configuración y uso de plugins.
Configurando nuestras interfaces de red con ifupdown
Si usted es de esas personas que suele mover su máquina portátil entre varias redes que no necesariamente proveen DHCP y usualmente vuelve a configurar sus preferencias de conexión, seguramente este artículo llame su atención puesto que se explicará acerca de la configuración de diversos perfiles de conexión vía línea de comandos.
En los sistemas Debian y los basados en él, Ubuntu por ejemplo, para lograr la configuración de las redes existe una herramienta de alto nivel que consiste en los comandos ifup
e ifdown
, adicionalmente se cuenta con el fichero de configuración /etc/network/interfaces
. También el paquete wireless-tools
incluye un script en /etc/network/if-pre-up.d/wireless-tools
que hace posible preparar el hardware de la interfaz inalámbrica antes de darla de alta, dicha configuración se hace a través del comando iwconfig
.
Para hacer uso de las ventajas que nos ofrece la herramienta de alto nivel ifupdown
, en primer lugar debemos editar el fichero /etc/network/interfaces
y establecer nuestros perfiles de la siguiente manera:
auto lo
iface lo inet loopback
# Conexión en casa usando WPA
iface home inet dhcp
wpa-driver wext
wpa-ssid foo
wpa-psk baz
wpa-keymgmt WPA-PSK
wpa-pairwise TKIP CCMP
wpa-group TKIP CCMP
wpa-proto WPA RSN
# Conexión en la oficina
# sin DHCP
iface office inet static
wireless-essid bar
wireless-key s:egg
address 192.168.1.97
netmask 255.255.255.0
broadcast 192.168.1.255
gateway 192.168.1.1
dns-search company.com #[email protected]
dns-nameservers 192.168.1.2 192.168.1.3 #[email protected]
# Conexión en reuniones
iface meeting inet dhcp
wireless-essid ham
wireless-key s:jam
En este ejemplo se encuentran 3 configuraciones particulares (home
, work
y meeting
), la primera de ellas define que nos vamos a conectar con un Access Point cuyo ssid es foo
con un tipo de cifrado WPA-PSK/WPA2-PSK, esto fue explicado en detalle en el artículo Haciendo el cambio de ipw3945 a iwl3945. La segunda configuración indica que nos vamos a conectar a un Access Point con una IP estática y configuramos los parámetros search
y nameserver
del fichero /etc/resolv.conf
(para más detalle lea la documentación del paquete resolvconf
). Finalmente se define una configuración similar a la anterior, pero en este caso haciendo uso de DHCP.
Llegados a este punto es importante aclarar lo que ifupdown
considera una interfaz lógica y una interfaz física. La interfaz lógica es un valor que puede ser asignado a los parámetros de una interfaz física, en nuestro caso home
, office
, meeting
. Mientras que la interfaz física es lo que propiamente conocemos como la interfaz, en otras palabras, lo que regularmente el kernel reconoce como eth0
, wlan0
, ath0
, ppp0
, entre otros.
Como puede verse en el ejemplo previo las definiciones adyacentes a iface
hacen referencia a interfaces lógicas, no a interfaces físicas.
Ahora bien, para dar de alta la interfaz física wlan0
haciendo uso de la interfaz lógica home
, como superusuario puede hacer lo siguiente:
# ifup wlan0=home
Si usted ahora necesita reconfigurar la interfaz física wlan0
, pero en este caso particular haciendo uso de la interfaz lógica work
, primero debe dar de baja la interfaz física wlan0
de la siguiente manera:
# ifdown wlan0
Seguidamente deberá ejecutar el siguiente comando:
# ifup wlan0=work
Es importante hacer notar que tal como está definido ahora el fichero /etc/network/interfaces
ya no es posible dar de alta la interfaz física wlan0
ejecutando solamente lo siguiente:
ifup wlan0
La razón de este comportamiento es que el comando ifup
utiliza el nombre de la interfaz física como el nombre de la interfaz lógica por omisión y evidentemente ahora no está definido en el ejemplo un nombre de interfaz lógica igual a wlan0
.
En un próximo artículo se harán mejoras en la definición del fichero /etc/network/interfaces
y su respectiva integración con una herramienta para la detección de redes que tome como entrada una lista de perfiles de redes candidatas, cada una de ellas incluyendo casos de pruebas. Teniendo esto como entrada ya no será necesario indicar la interfaz lógica a la que se hace referencia ya que la herramienta se encargará de probar todos los perfiles en paralelo y elegirá aquella que cumpla en primera instancia con los casos de prueba. De modo tal que ya podremos dar de alta nuestra interfaz física con solo hacer ifup wlan0
.
Configurando el sonido (HDA Intel) en Lenovo 3000 c200 en Debian GNU/Linux
La situación poco común se presentó con un portátil Lenovo, específicamente un 3000 c200; el computador en cuestión mostraba la tarjeta funcionando, como si estuviera todo normal, pero sucede que no había sonido en lo absoluto por más altos que estuvieran los indicadores gráficos del volumen. Indagando por Google me encontré que ya han habido muchos casos similares, no solamente para laptops Lenovo, sino para la mayoría que incluye ese tipo de tarjetas y me encontré con una solución en un foro que me funcionó perfecto. Acá voy a tratar de explicar paso a paso todo lo que hice para que funcionara como debe ser.
Lo primero que se hizo fué asegurarse que se trata realmente de una tarjeta HDA Intel, con la siguiente línea de comandos:
$ lspci | grep High
…a lo que se obtuvo la siguiente respuesta:
00:1b.0 Audio device: Intel Corporation 82801G (ICH7 Family) High Definition Audio Controller (rev 02)
…donde se puede verificar que se trata de la HDA de la familia ICH7 de la Intel. Una vez verificado ésto, se procede a instalar algunos paquetes necesarios para que todo funcione de manera correcta, que son los siguientes:
- build-essentials
- gettext
- libncurses5-dev
Ésto se logró con el aptitude, con la siguiente línea de comandos:
$ sudo aptitude install el_paquete_que_quiero_instalar
Luego hay que descargar las cabeceras del kernel que se está usando. Para ésto, la manera más fácil de hacerlo fué instalando el paquete module-assistant y haciendo lo siguiente en una terminal:
$ sudo m-a update
$ sudo m-a prepare
Y el programa automáticamente va a saber cuáles cabeceras descargar y el directorio donde ponerlas. Cuando estén instalados éstos tres paquetes también se va a necesitar descargar de la página del Proyecto Alsa tres archivos necesarios y que son nombrados a continuación:
Se pueden descargar con un gestor de descargas preferido, ésto se hizo con wget, utilizando la línea de comandos:
$ wget -c http://www.alsa-project.org/alsa-driver-1.0.14.tar.bz2
…y así para cada uno de los archivos. Cuando se tengan los tres archivos, se copian a la carpeta /usr/src/alsa/
la cual, probablemente no existe todavía en el sistema y por lo tanto tendrá que ser creada; ésto se puede lograr con la siguiente línea de comandos:
$ sudo mkdir /usr/src/alsa
…cuando se tenga el directorio, se copian los tres archivos tar.gz al mismo; ésto se puede lograr con:
$ sudo cp alsa* /usr/src/alsa/
Luego hay que descomprimir los ficheros tar.gz con:
$ sudo tar xvf el_archivo_que_vamos_a_descomprimir.tar.gz
Una vez descomprimidos nos ubicamos en la primera carpeta que va a ser alsa-driver-1.0.14/ y compilamos el alsa para las tarjetas HDA Intel con las siguientes líneas de comandos:
$ sudo ./configure --with-cards=hda-intel
$ sudo make
$ sudo make install
Luego vamos a necesitar compilar los otros 2 paquetes restantes, para ello, nos ubicamos en la carpeta correspondiente y hacemos en una terminal lo siguiente:
$ sudo ./configure
$ sudo make
$ sudo make install
Ésto se va a hacer tanto para alsa-lib como para alsa-utils, pues el procedimiento es el mismo. Cuando se hayan compilado los tres paquetes el sistema ya debería ser capaz de reconocer correctamente la tarjeta y por lo tanto debe haber sonido; Ésto puedes ser verificado (1) Abriendo un reproductor de preferencia y reproduciendo algo de musica ó (2) Se puede hacer con la siguiente línea:
$ cat /dev/urandom >> /dev/dsp/
Con lo cual se obtendrá un sonido algo parecido a unos aplausos, pero en realidad son sonidos producidos aleatoriamente.
Ésto debería ser todo. En las máquinas que se configuraron, cuando se conectaban los audífonos en el panel lateral, el sonido salía tanto por los audífonos como por las cornetas y al parecer se solucionó con una reiniciada, pero sino quieres reiniciar entonces lo que tienes que hacer es tumbar los módulos que se crearon y volverlos a cargar, tal cual reiniciaras el sistema:
$ sudo modprobe -r snd_hda_intel652145
$ sudo modprobe -r snd_pcm
$ sudo modprobe -r snd_page_alloc
Luego para cargarlos hacemos las mismas línea, pero sin la opción -r.
Transmission 0.72 en Debian y Ubuntu GNU/Linux AMD64
Bien, en realidad, no he podido esperar a tenerlo trabajando al 100%, se trata de la versión 0.72 de Transmission, el que a mi parecer, es el mejor cliente BitTorrent que jamás haya existido. Según lo describen en la página, cito textualmente:
Transmission has been built from the ground up to be a lightweight, yet powerful BitTorrent client. Its simple, intuitive interface is designed to integrate tightly with whatever computing environment you choose to use. Transmission strikes a balance between providing useful functionality without feature bloat. Furthermore, it is free for anyone to use or modify.
Su instalación es muy fácil, ya que lo único que tenemos que hacer, es bajarnos el .deb (sí, el .deb, imagínense lo fácil que nos va a resultar) de la página de nuestros amígos de GetDeb y luego usar una terminal ó el instalador de paquetes GDebi (aún más fácil) para instalar el paquete.
En el primer de los casos, usando la terminal, lo único que tenemos que hacer en escribir la siguiente línea de comandos:
$ sudo dpkg -i transmission_0.72-0~getdeb1_amd64.deb
`` …esperar a que termine el proceso de instalación y ya podrás ejecutar el Transmission desde Aplicaciones –> Internet –> Transmission.
Para el segundo de los casos, usando el instalador GDebi, tan sólo hay que hacer click encima del .deb con el botón derecho del ratón y seleccionamos la opción Abrir con “Instalador de paquetes GDebi” y luego click en el botón Instalar el paquete, finalmente esperar a que finalice la instalación del paquete y listo!. Una de las cosas que, debo admitir, más me gusta de ésta nueva versión, es que ahora podemos minimizar la aplicación en la bandeja del sistema :) .
Para más información de Transmission, visite su Página Oficial.
Recuperando una antigua Logitech Quickcam Express
No se porque motivo o razón comencé a revisar en unas cajas de mi cuarto, cuando de repente me encontré con la primera cámara web que compre, de hecho, vino como accesorio a mi máquina de escritorio Compaq Presario 5006LA. Así que me pregunté, ¿será que todavía funciona esta reliquia?.
Lo primero que hice fue conectar el dispositivo en cuestión a mi portátil actual, enseguida ejecuté el comando:
$ lsusb | grep -i logitech
Bus 002 Device 002: ID 046d:0840 Logitech, Inc. QuickCam Express</code>
Una vez conocido el PCI ID (046d:0840) del dispositivo realicé una búsqueda rápida en Google y llegué a un sitio muy interesante, en donde podemos obtener una descripción de los dispositivos USB para Linux, al usar la función de búsqueda en la base de datos del sitio mencionado previamente ingreso el dato correspondiente al Vendor ID (en mi caso, 046d), posteriormente filtre los resultados por el Product ID (en mi caso, 0840), sentía que ya estaba dando con la solución a mi problema, había encontrado información detallada acerca de mi Logitech Quickcam Express. Al llegar acá descubrí el Linux QuickCam USB Web Camera Driver Project.
En la página principal del Linux QuickCam USB Web Camera Driver Project observo que mi vejestorio de cámara es soportada por el driver qc-usb
.
Con la información anterior decido hacer uso del manejador de paquetes aptitude
y en los resultados avisté el nombre de un paquete qc-usb-source
, así que definitivamente nuestra salvación es module-assistant
.
# aptitude install qc-usb-source \\
build-essential \\
module-assistant \\
modconf \\
linux-headers-`uname -r`
# m-a update
# m-a prepare
# m-a a-i qc-usb
Una vez realizado el paso anterior recurro a la utilidad de configuración de módulos en Debian modconf
e instalo el módulo quickcam
, el cual se encuentra en
/lib/modules/2.6.18-4-686/misc/quickcam.ko
y verificamos.
# tail /var/log/messages
May 14 21:16:57 localhost kernel: Linux video capture interface: v2.00
May 14 21:16:57 localhost kernel: quickcam: QuickCam USB camera found (driver version QuickCam USB 0.6.6 $Date: 2006/11/04 08:38:14 $)
May 14 21:16:57 localhost kernel: quickcam: Kernel:2.6.18-4-686 bus:2 class:FF subclass:FF vendor:046D product:0840
May 14 21:16:57 localhost kernel: quickcam: Sensor HDCS-1000/1100 detected
May 14 21:16:57 localhost kernel: quickcam: Registered device: /dev/video0
May 14 21:16:57 localhost kernel: usbcore: registered new driver quickcam
Como puede observarse el dispositivo es reconocido y se ha registrado en /dev/video0
. En este instante que poseemos los módulos del driver qc-sub
para nuestro kernel, podemos instalar la utilidad qc-usb-utils
, esta utilidad nos permitirá modificar los parámetros de nuestra Logitech QuickCam Express.
# aptitude install qc-usb-utils
Ahora podemos hacer una prueba rápida de nuestra cámara, comienza la diversión, juguemos un poco con mplayer
.
$ mplayer tv:// -tv driver=v4l:width=352:height=288:outfmt=rgb24:device=/dev/video0:noaudio -flip
A partir de ahora podemos probar más aplicaciones ;)
Network Manager: Facilitando el manejo de redes inalámbricas
En la entrada previa, Establecer red inalámbrica en Dell m1210, comencé a describir el proceso que seguí para lograr hacer funcionar la tarjeta Broadcom Corporation Dell Wireless 1390 WLAN Mini-PCI Card (rev 01) en una portátil Dell m1210. El motivo de esta entrada se debe a que muchos usuarios hoy día no les interesa ni debe interesarles estar lidiando con la detección de redes inalámbricas, por eso les pasaré a comentar acerca de NetworkManager.
NetworkManager es una aplicación cuyo objetivo es que el usuario nunca tenga que lidiar con la línea de comandos o la edición de ficheros de configuración para manejar sus redes (ya sea cableada o inalámbrica), haciendo que la detección de dichas redes simplemente funcione tanto como se pueda y que interrumpa lo menos posible el flujo de trabajo del usuario. De manera que cuando usted se dirija a áreas en las cuales usted ha estado antes, NetworkManager se conectará automáticamente a la última red que haya escogido. Asimismo, cuando usted esté de vuelta al escritorio, NetworkManager cambiará a la red cableada más rápida y confiable.
Por los momentos, NetworkManager soporta redes cifradas WEP, el soporte para el cifrado WPA está contemplado para un futuro cercano. Respecto al soporte de VPN, NetworkManager soporta hasta ahora vpnc, aunque también está contemplado darle pronto soporte a otros clientes.
Para hacer funcionar NetworkManager en Debian los pasos que debemos seguir son los siguientes. En primera instancia instalamos el paquete.
# aptitude -r install network-manager-gnome
Que conste que NetworkManager funciona para entornos de escritorios como GNOME, KDE, XFCE, entre otros. En este caso particular estoy instalando el paquete disponible en Debian para GNOME en conjunto con sus recomendaciones.
De acuerdo al fichero /usr/share/doc/network-manager/README.Debian
NetworkManager consiste en dos partes: uno a nivel del demonio del sistema que se encarga de manejar las conexiones y recoge información acerca de las nuevas redes. La otra parte es un applet que el usuario emplea para interactuar con el demonio de NetworkManager, dicha interacción se lleva a cabo a través de D-Bus.
En Debian por seguridad, los usuarios que necesiten conectarse al demonio de NetworkManager deben estar en el grupo netdev
. Si usted desea agregar un usuario al grupo netdev
utilice el comando adduser usuario netdev
, luego de ello tendrá que recargar dbus
haciendo uso del comando /etc/init.d/dbus reload
.
Es necesario saber que NetworkManager manejará todos aquellos dispositivos que no estén listados en el fichero /etc/network/interfaces
, o aquellos que estén listados en dicho fichero con la opción auto
o dhcp
, de esta manera usted puede establecer una configuración para un dispositivo que sea estática y puede estar seguro que NetworkManager no tratará de sobreescribir dicha configuración. Para mayor información le recomiendo leer detenidamente el fichero /usr/share/doc/network-manager/README.Debian
.
Si usted desea que NetworkManager administre todas las interfaces posibles en su ordenador, lo más sencillo que puede hacer es dejar solo lo siguiente en el fichero /etc/network/interfaces
.
$ cat /etc/network/interfaces
auto lo
iface lo inet loopback
Una vez que se ha modificado el fichero /etc/network/interfaces
reiniciamos NetworkManager con el comando service network-manager restart
. El programa ahora se encargará de detectar las redes inalámbricas disponibles. Para ver una lista de las redes disponibles, simplemente haga clic en el icono, tal como se muestra en la figura al principio de este artículo.
Había mencionado previamente que NetworkManager se conectará automáticamente a las redes de las cuales tiene conocimiento con anterioridad, pero usted necesitará conectarse manualmente a una red al menos una vez. Para ello, simplemente seleccione una red de la lista y NetworkManager automáticamente intentará conectarse. Si la red requiere una llave de cifrado, NetworkManager le mostrará un cuadro de dialogo en el cual le preguntará acerca de ella. Una vez ingresada la llave correcta, la conexión se establecerá.
Para cambiar entre redes, simplemente escoja otra red desde el menú que le ofrece el applet.
Establecer red inalámbrica en Dell m1210
Hace ya algunos días Ana me comentaba que no le estaba funcionando la configuración que tenía para su red inalámbrica, eso ocurrió una vez que actualizó la versión del kernel de linux, espero entrar en detalle acerca de los pasos que seguí para configurarle todo como se debe bajo Debian Etch.
Lo primero que debía saber era el tipo de componente PCI al que me estaba enfrentando.
$ lspci -nn | grep Wireless
0c:00.0 Network controller [0280]:
Broadcom Corporation Dell Wireless 1390
WLAN Mini-PCI Card [14e4:4311] (rev 01)
Lo anterior dice que nos estamos enfrentando ante una Broadcom cuyo chipset id es el 4311, debemos saber que el módulo para linux de estos chips es el bcm43xx
y ha sido incluido al kernel de linux desde la versión 2.6.17-rc2Fuente: http://bcm43xx.berlios.de/, al revisar la lista de dispositivos soportados me percaté que el soporte para este chipset id aún es inestable, así que el siguiente paso era eliminar su presencia si aplicaba.
$ lsmod | grep bcm43xx
bcm43xx 148500 0
ieee80211softmac 40704 1 bcm43xx
ieee80211 39112 2 bcm43xx,ieee80211softmac
Como se puede observar en este caso aplica, así que comenzamos a eliminar su presencia.
# grep -q '^blacklist bcm43xx' /etc/modprobe.d/blacklist \\
|| tee -a 'blacklist bcm43xx' /etc/modprobe.d/blacklist
La inclusión de la línea blacklist bcm43xx
al fichero /etc/modprobe.d/blacklist
si aplica me permite indicar que dicho módulo no debe cargarse como resultado de la expansión de su alias, es decir, bcm43xx
, esto se hace con el propósito de evitar que el subsistema hotplug lo carge, aunque esto no evita que el módulo se carge automáticamente por el kernel.
Luego verifique el fichero /etc/modules
, el cual contiene los nombre de los módulos que serán cargados a la hora del inicio del sistema, no había entrada para el módulo bcm43xx
, ahora es necesario remover dicho módulo, para lo cual hacemos:
# modprobe -r bcm43xx
Una vez culminado este proceso es necesario hacer uso de ndiswrapper, el cual es un módulo que me permite cargar y ejecutar drivers propietarios de Windows para tarjetas inalámbricas.
# aptitude -r install build-essential \\
module-assistant ndiswrapper-common
# m-a update
# m-a prepare
# m-a a-i ndiswrapper
# modprobe ndiswrapper
Una vez cargado el módulo ndiswrapper
es necesario instalar el nuevo driver propietario, para ello debemos encontrar el fichero con extensión inf, este fichero especifica que ficheros necesitan estar presentes o descargarse para que el componente funcione correctamente, para dicho driver. Al consultar en la lista de tarjetas que funcionan con ndiswrapper me percato que han habido problemas de seguridad en algunos de los drivers recomendados para esta tarjeta, así que para asegurarme de obtener las versiones más recientes ingreso al sitio oficial de Dell, bajo la sección USA -> Support search: “m1210” -> Drivers and Downloads -> Network & Internet -> Network Driver, ingreso el campo correspondiente al service tag, y finalmente descargo el fichero R151517.EXE.
El siguiente paso es extraer los ficheros que se encuentran dentro de R151517.EXE, para ello:
unzip R151517.EXE
Ahora nos interesa el fichero bcmwl5.inf
que está dentro del directorio DRIVER
.
$ tree R151517/DRIVER/
R151517/DRIVER/
|-- bcm43xx.cat
|-- bcm43xx64.cat
|-- bcmwl5.inf
|-- bcmwl5.sys
`-- bcmwl564.sys
Una vez extraídos los ficheros, procedemos a cargar el driver, para ello hacemos lo siguiente:
# ndiswrapper -i R151517/DRIVER/bcmwl5.inf
Comprobamos que el driver se ha instalado correctamente.
# ndiswrapper -l
installed drivers:
bcmwl5 driver installed, hardware (14E4:4324) present (alternate driver: bcm43xx)
Luego verificamos nuestro trabajo al ejecutar el comando dmesg
, tal como se muestra a continuación:
$ dmesg
[44093.473325] ndiswrapper version 1.27 loaded (preempt=no,smp=yes)
[44095.311236] ndiswrapper (link_pe_images:577): fixing KI_USER_SHARED_DATA address in the driver
[44093.482777] ndiswrapper: driver bcmwl5 (Broadcom,03/23/2006, 4.40.19.0) loaded
[44093.483250] ACPI: PCI Interrupt 0000:0c:00.0[A] -> GSI 17 (level, low) -> IRQ 177
[44093.483367] PCI: Setting latency timer of device 0000:0c:00.0 to 64
[44093.491760] ndiswrapper: using IRQ 177
[44094.162703] wlan0: vendor:
[44094.162708] wlan0: ethernet device 00:18:f3:6b:fc:3b using NDIS driver bcmwl5, 14E4:4311.5.conf
[44094.162772] wlan0: encryption modes supported: WEP; TKIP with WPA, WPA2, WPA2PSK; AES/CCMP with WPA, WPA2, WPA2PSK
[44094.166554] usbcore: registered new driver ndiswrapper
[44094.167390] ndiswrapper: changing interface name from 'wlan0' to 'eth1'
En este preciso instante el comando ifconfig -a
debe mostrarnos la nueva interfaz, y el comando iwlist eth1 scan
al ejecutarse como superusuario devolverá la lista de redes que han sido detectadas.
Recuerde que para que todo esto siga funcionando aún después de reiniciar el sistema, es necesario cargar el módulo de ndiswrapper
, para ello hago uso del comando modconf.
*[PCI]: Peripheral Component Interconnect
Beryl y Emerald en Debian “Etch” AMD64
Sin mucho preámbulo, sólo tengo que decir que voy explicar cómo tener instalado éste famoso escritorio 3D (Beryl) en nuestros sistemas Debian AMD64. El proceso en general es muy fácil y se resume en unos pocos pasos. Antes que nada debo mencionar que la placa de video que uso es nVIDIA y que para poder utilizar el Beryl hay que hacer ciertas modificaciones al xorg.conf.
Lo primero que debemos hacer es modificar nuestro /etc/apt/sources.list para añadir una nueva entrada que va a ser el servidor desde donde se van a instalar Beryl y Emerald. Ésto lo logramos con la siguiente línea de comandos en una terminal:
# vim /etc/apt/sources.list
La línea que vamos a agregar a nuestro sources.list es la que se corresponde con el repositorio de Beryl para Debian y es la siguiente:
deb http://debian.beryl-project.org/ etch main
Luego, como han de sospechar, hay que actualizar la base de datos del aptitude, lo cual se logra así:
# aptitude update
Una vez actualizada la base de datos procedemos a instalar el Beryl con la siguente línea de comandos:
# aptitude install -ry beryl
Ésta última línea nos va a instalar el Beryl automáticamente con todos los paquetes recomendados y va a asumir “Sí” como respuesta para poder realizar la instalación. Una vez que está instalado podremos ejecutarlo desde Aplicaciones –> Herramientas del sistema –> Beryl Manager y los temas del Emeral los podemos seleccionar en Escritorio –> Preferencias –> Emerald Theme Manager. Las opciones del Beryl pueden ser modificadas con el Beryl Settings Manager, el cual puede ser localizado en la misma ruta que el Beryl Manager. Si queremos que el Beryl Manager sea ejecutado cada vez que iniciamos sesión debemos añadirlo a la lista de programas al inicio. Ésto lo hacemos ejecutando Escritorio –> Preferencias –> Sesiones _ y en la pestaña _Programas al inicio hacemos click en Añadir y escribimos beryl-manager. A continuación algunos atajos del teclado para lograr los efectos más comunes:
- Modo de movimiento de imagen borrosas = Ctrl + F12
- Rotar escritorios como un cubo = Ctrl + Alt + Flechas direccionales
- Efecto de lluvia = Shift + F9
- Zoom = Super + Scroll
- Selector de ventanas escalar = Super + Pausa
- Rotar ventana entre espacios de trabajo con el cubo = Ctrl + Alt + Shif + Teclas direccionales
- Modificar la opacidad de la ventana actual = Alt + Scroll
Por último un artículo donde explican las virtudes del Beryl 0.2 y dos videos, que a mi criterio son las mejores demostraciones de Beryl que jamas haya visto.
Identificar el Hardware de tu PC en Debian GNU/Linux
Bien, lo que vamos a hacer a continuación es muy fácil, tán fácil como instalar un paquete, luego ejecutarlo y leer la información que él nos “escupe” (me encanta como suena :) ). Como sabrán, soy usuario de Debian GNU/Linux en su versión Etch para la arquitectura AMD64, pero ésto en realidad no es tan relevante ya que el paquete se encuentra tanto en Testing como en Stable para la mayoría de las arquitecturas y en la sección main de los repositorios.
Lo que vamos a instalar es el paquete lshw-gtk, que bien como dice en la descripción del paquete: “es una pequeña herramienta que provee información detallada de la configuración de hardware de la máquina. Puede reportar la configuración exacta de la memoria, versión de firmware, configuración de la tarjeta madre, versión del procesador y su velocidad, configuración de la caché, velocidad del bus, etc. en sistemas x86 con soporte DMI, en algunas máquinas PowerPC (se sabe de su funcionamiento en las PowerMac G4) y ADM64”.
Como ya sabrán, para instalar el paquete es tan sencillo como abrir una terminal y escribir en modo superusuario los siguiente:
# aptitude install lshw-gtk
El paquete no es muy pesado, de hecho, con todo y dependencias a penas ha de superar el mega de información, por lo que el proceso de instalación es rápido (si se tiene una conexión decente claro).
Una vez instalado el paquete no tenemos que hacer más que ejecutarlo. Para poder ejecutarlo debemos hacerlo desde una terminal, ya que según tengo entendido, no se instala en los menús del Gnome. Así que debemos escribir en una terminal (en modo superusuario):
# lshw-gtk
y listo, se ejecutará perfectamente, dejándonos navegar por unos paneles donde se encuentran los distintos componentes de nuestro sistema.
Si lo que quieres es tener un lanzador en los menús del Gnome, es muy sencillo, sólo deberás crear uno de la siguiente manera. Abre una terminal en modo superusuario y escribe lo siguiente:
gedit /usr/share/applications/LSHW.desktop
luego de presionar la tecla Enter se abrirá una ventana con el gedit en la cual deberás pegar el siguiente texto:
[Desktop Entry]
Name=LSHW
Comment=Identifica el hardware del sistema
Exec=gksu lshw-gtk
Icon=(el icono que les guste)
Terminal=false
Type=Application
Categories=Application;System;
Y ya con eso deberías tener tu lanzador en el menú Aplicaciones –> Herramientas del sistema. Vas a necesitar de permisos de superusuario para poder ejecutarlo.
Acá una imagen de como se ve el lshw-gtk:
Creando un chroot en Etch AMD64
Bien la cosa es que tratando de instalar el Google Earth en mi Debian me he encontrado que no existe un paquete nativo para AMD64 (¿qué raro no?), por lo que me las he tenido que ingeniar para instalarlo. Nunca tuve la necesidad de hacer un chroot en el sistema ya que lo único que lo ameritaba era el Flash, pero no pensaba hacerme un chroot expresamente para el Flash y malgastar el espacio en mi disco, pero a la final siempre he tenido que hacerme uno!
Para aquellos que dominan el inglés se pueden leer el Debian GNU/Linux AMD64 HOW-TO ya que los pasos para crear el chroot los he seguido de ahí. Claro que para aquellos que no tengan mucho tiempo o no sientan la necesidad de hacer un chroot siempre existe una manera rápida de hacer funcionar las cosas en un apuro.
Para aquellos que todavía no saben qué es un chroot les recomiendo que le echen un ojo a la Guía de referencia Debian, de todas formas acá les cito textualmente de dicha guía lo que ellos definen como un chroot:
…el programa chroot, nos permite ejecutar diferentes instancias de un entorno GNU/Linux en un único sistema, simultáneamente y sin reiniciar…
El chroot en mi caso, está pensado para poder ejecutar aplicaciones a 32bits en un entorno 64 bits. El chroot es necesario ya que no se puede mezclar aplicaciones 32 bits con librerías 64 bits, por lo que se necesitan las librerías a 32 bits para correr dichas aplicaciones.
Lo que se hace en el chroot es instalar un sistema base para la arquitectura x86. Ésto lo puedes lograr haciendo en una terminal:
# debootstrap --arch i386 sid /var/chroot/sid-ia32 http://ftp.debian.org/debian/
…para lo cual, posiblemente, vas a necesitar el paquete debootstrap. Ahora bien, ¿qué hace el debootstrap
?; debootstrap
es usado para crear un sistema base debian from scratch (es algo como, desde la nada) sin tener que recurrir a la disponibilidad de dpkg
ó aptitude
. Todo ésto lo logra descargando los .deb de un servidor espejo y desempaquetándolos a un directorio, el cual, eventualmente sera utilizado con el comando ` chroot`. Por lo tanto la línea de comandos que introduciste anteriormente hace todo eso, sólo que lo vas a hacer para la rama unstable ó sid, en el directorio /var/chroot/sid-ia32 y desde el servidor espejo específicado.
El proceso anterior puede demorar según sea la velocidad de tu conexión. No pude saber cuánto demoro el proceso en mi caso porque cuando empecé a hacerlo eran altas horas de la madrugada y me quedé dormido :(. Lo que tienes que saber es que cuando éste proceso finalice, ya tendrás un sistema base x86 o 32 bits en un disco duro en el directorio /var/chroot/sid-ia32. Una vez finalizado deberías instalar algunas librerías adicionales, pero para hacerlo deberás moverte al chroot y hacerlo con aptitude:
# chroot /var/chroot/sid-ia32
…y luego instalas las librerías adicionales:
# aptitude install libx11-6
Para poder ejecutar aplicaciones dentro del chroot deberás tener también algunas partes del árbol de tu sistema 64 bits, lo cual puedes hacerlo mediante un montaje enlazado. El ejemplo a continuación, enlaza el directorio /tmp
a el chroot para que éste pueda utilizar los “sockets” del X11, los cuales están en el /tmp
de nuestro sistema 64 bits; y también enlaza el /home
para que podamos accesarlo desde el chroot. También es aconsajable enlazar los directorios /dev
, /proc
y /sys
. Para lograr ésto deberás editar tu fstab
que se encuentra en /etc
y añadir lo siguiente:
# sid32 chroot
/home /var/chroot/sid-ia32/home none bind 0 0
/tmp /var/chroot/sid-ia32/tmp none bind 0 0
/dev /var/chroot/sid-ia32/dev none bind 0 0
/proc /var/chroot/sid-ia32/proc none bind 0 0
…y luego montarlas:
# mount -a
Bien ya vamos llegando a final, unos cuántos pasos más y listo. Lo que necesitamos hacer a continuacióne es establecer los usuarios importantes en el chroot. La forma más rápida (sobretodo si tienes muchos usuarios) es copiar tus directorios /etc/passwd
, /etc/shadow
y /etc/group
al chroot, a menos claro que quieras tomarte la molestia de añadirlos manualmente.
ADVERTENCIA! Cuando enlazas tu directorio /home
al chroot, y borras éste último, todos tus datos personales se borrarán con éste, por consiguiente serán totalmente perdidos, por lo tanto debes recordar desmontar los enlaces antes de borrar el chroot.
Corriendo aplicaciones en el chroot
Después de hacer todos los pasos anteriores, ya deberías poder ejecutar aplicaciones desde el chroot. Para poder ejecutar aplicaciones desde el chroot debes hacer en una terminal (en modo root):
# chroot /var/chroot/sid-ia32
Luego deberás cambiarte al usuario con el que quieres ejecutar la aplicación:
# su - usuario
Establecer $DISPLAY:
# export DISPLAY=:0
Y finalmente ejecutar la aplicación que quieras, como por ejemplo, el firefox con el plugin de flash! Por supuesto deberás instalar la aplicación antes de ejecutarla, recuerda que lo que has instalado es un sistema base y algunas librerías adicionales.
Compilar aMSN en Debian Etch AMD64
Bien, sin mucho preámbulo, lo primero que debemos hacer es descargar el tarball de la página de amsn. Luego deberás descomprimirlo en la carpeta de tu preferencia, en mi caso está en ~/Sources/amsn-0.96RC1/. Una vez que lo descomprimes abre una terminal y obtén derechos de administrador (modo root); cuando tengas privilegios de root ubícate en el directorio donde descomprimiste el tarball y escribe lo siguiente:
$ ./configure
$ make
$ make install
Debes asegurarte de cumplir todos los requisitos cuando haces el ./configure, ya que te pide varias “dependencias” por así decirlo, como por ejemplo, tls y tk. Una vez que hayas hecho el make install quedará automágicamente instalado el amsn en tu sistema. Deberás poder verlo en Aplicaciones –> Internet –> aMSN. Bien eso es todo en lo que respecta al proceso de compilado, ¿nunca antes fué tan fácil verdad?.
Un problema que me dió una vez que lo compilé y lo ejecuté fué que no me permitía iniciar sesión porque me decía que no tenía instalado el módulo TLS. Entonces abrí una terminal e hice lo siguiente:
$ aptitude install tcltls
…pero ésto no me solucionó el problema, entonces me puse a indagar por la web y me encontré con la siguiente solución: editar el archivo /usr/lib/tls1.50/pkgIndex.tcl y ubicar la línea que dice algo como: package ifneeded tls 1.5 para entonces modificarla por package ifneeded tls 1.50 y listo :D
Smartmontools: aprendiendo a chequear tu disco duro…
Los discos duros modernos (y no tan modernos) vienen equipados con una tecnología conocida como S.M.A.R.T., el cual le permite al disco monitorear de manera contínua su propio estado de “salud” y alertar al usuario si es detectada alguna anormalidad, para que luego pueda ser corregida.
ADVERTENCIA: antes de continuar, sería recomendable hacer una copia de respaldo de todos sus datos importantes a pesar de todo lo que diga el S.M.A.R.T. Éste sistema es muy confiable pero no obstante, ésta información en alguno de los casos podría ser imprecisa, de hecho, los discos duro se dañan de manera inesperada, inclusive si el S.M.A.R.T te ha dicho que algo anda mal, posiblemente no tengas tiempo para respaldar tus datos o moverlos a un lugar más seguro.
¿Cómo instalar SMARTMONTOOLS?
Lo primero que debemos hacer, preferiblemente antes de instalar el SMT es chequear si nuestro disco duro soporta éste tipo de tecnología, lo cual puedes hacer visitando la página del fabricante de tu disco. De todas formas, si lo compraste después del año 1992, lo más seguro es que posea ésta tecnología.
Lo segundo, y no menos importante, es activar o asegurarte que en el BIOS de la tarjeta madre este activada ésta función. Lo puedes conseguir ya que luce algo como:
S.M.A.R.T for Hard Disk: Enable
Algunos BIOS no tienen ésta opción y reportan el S.M.A.R.T como inactivo, pero no te preocupes que el smartcl, uno de los dos programas de utilidad que tiene el Smartmontools, puede activarlo. Una vez que estemos seguros de todo ésto podemos proceder a instalar el Smartmontools, el cual, en la distribución que uso, Debian, es tan fácil como escribir en una terminal:
$ aptitude install smartmontools
Y de esa manera ya queda automágicamente instalado el paquete el sistema. Si quieres verificar si ya lo tienes instalado, entonces tendrías que escribir en una terminal lo siguiente:
$ aptitude show smartmontools
Y verificar que el atributo Estado se corresponda con Instalado. Una vez hecho ésto procedemos a verificar si nuestro disco soporta S.M.A.R.T con la siguiente línea de comandos:
$ smartctl -i /dev/hda
En caso que tu disco sea SATA tendrías que escribir la siguiente línea:
$ smartctl -i -d ata /dev/sda
La información se vería algo así:
=== START OF INFORMATION SECTION ===
Model Family: Western Digital Caviar family
Device Model: WDC WD1200BB-00RDA0
Serial Number: WD-WMANM1700779
Firmware Version: 20.00K20
User Capacity: 120,034,123,776 bytes
Device is: In smartctl database [for details use: -P show]
ATA Version is: 7
ATA Standard is: Exact ATA specification draft version not indicated
Local Time is: Sun Sep 24 22:27:09 2006 VET
SMART support is: Available - device has SMART capability.
SMART support is: Enabled
Si tu disco es SATA pero tiene el soporte S.M.A.R.T desactivado, entonces deberás usar la siguiente línea de comandos para activarlo:
$ smartctl -s on -d ata /dev/sda
Aprendiendo a usar SMT
Estado de “salud” de nuestro disco duro
Para leer la información que SMT ha recopilado acerca de nuestro disco, debemos escribir la siguiente linea de comandos:
$ smartctl -H /dev/hda
Para discos SATA no es suficiente con sustituir hda con sda, sino que debemos añadir las opciones extras que usamos anteriormente para obtener la información del disco. La línea de comandos entonces quedaría así:
$ smartctl -d ata -H /dev/sda
Si lees PASSED al final de la información, no tienes que preocuparte. Pero si lees FAILED deberías empezar a hacer respaldo de tus datos inmediatamente, ya que ésto quiere decir que tu disco ha presentado fallas anteriormente o es muy probable que falle dentro de un lapso de aproximadamente 24 horas.
Bitácora de errores de SMT
Para chequear la bitácora de errores de SMT debemos escribir la siguiente línea de comandos:
$ smartctl -l error /dev/hda
De manera análoga al caso anterior, añadimos los comandos extras si nuestro disco es SATA. La línea de comandos quedaría así:
$ smartctl -d ata -l error /dev/sda
Si leemos al final de la información No errors logged todo anda bien. Si hay varios errores pero éstos no son muy recientes, deberías empezar a preocuparte e ir comprando los discos para el respaldo. Pero si en vez de ésto hay muchos errores y una buena cantidad son recientes entonces deberías empezar a hacer respaldo de tus datos, inclusive antes de terminar de leer ésta línea. Apurate! :D
A pesar que smartctl nos da una información muy valiosa acerca de nuestros discos, el tan solo revisar ésta no es suficiente, realmente se deben hacer algunas pruebas específicas para corroborar los errores que conseguimos en la información anterior, dichas pruebas las menciono a continuación.
Pruebas con SMT
Las pruebas que se van a realizar a continuación no interfieren con el funcionamiento normal del disco y por lo tanto pueden ser realizadas en cualquier momento. Aquí solo describiré como ejecutarlas y entender los errores. Si quieres saber más te recomiendo que visites ésta pagina o que leas las páginas del manual.
Lo primero sería saber cuáles pruebas soporta tu disco, lo cual logramos mediante la siguiente línea de comandos:
$ smartctl -c /dev/hda
De ésta manera puedes saber cuáles pruebas soporta tu disco y también cuanto tiempo aproximadamente puede durar cada una. Bien, ahora ejecutemos Immediate Offline Test ó Prueba Inmediata Desconetado (si está soportada, por supuesto), con la siguiente línea de comandos:
$ smartctl -t offline /dev/hda
Como ya sabemos, los resultados de ésta prueba no son inmediatos, de hecho el resultado de ésta linea de comandos te dirá que la prueba ha comenzado, el tiempo que aproximadamente va a demorar la prueba en terminar con una hora aproximada para dicha finalización, y al final te dice la línea de comandos para abortar la operación. En uno de mis discos, un IDE de 120Gb, demoró 1 hora, para que tengan una idea. Por los momentos sólo te queda esperar por los resultados. Ahora te preguntarás ¿Cómo puedo saber los resultados?, pues tan sencillo como ejecutar la línea de comandos para leer la bitácora del SMT y seguir las recomendaciones.
Ahora vamos a ejecutar Short self-test routine ó Extended self-test routine, Rutina corta de autoprueba y Rutina extendida de autoprueba, respectivamente (de nuevo, si están soportadas). Éstas pruebas son similares, sólo que la segunda, como su nombre lo indica, es más rigurosa que la primera. Una vez más ésto lo logramos con los siguientes comandos:
$ smartctl -t short /dev/hda
$ smartctl -t long /dev/hda
Luego vamos a chequear el Self Test Error Log ó Bitácora de errores de autopruebas:
$ smartctl -l selftest /dev/hda
Luego ejecutamos Conveyance Self Test ó Autoprueba de Transporte:
$ smartctl -t conveyance /dev/hda
Y por último chequeamos Self Test Error Log de nuevo.
Algo que tengo que resaltar es que el SMT tiene dos bitácoras, una de las cuales es la Bitácora de errores y la otra es la Bitácora de Errores de Autopruebas.
¿Cómo monitorear el disco duro automáticamente?
Para lograr ésto tendrás que configurar el demonio smartd para que sea cargado cuando se inicia el sistema. A continuación un pequeño HOWTO.
ADVERTENCIA: el siguiente HOWTO es para monitorear un disco IDE, programar todas las pruebas cada viernes de la semana, de 11:00 a.m a 2:00 p.m, y luego ejecutar un script de Bash si algún error es detectado. Éste script escribirá un reporte bien detallado y luego apagará el equipo para su propia protección.
El archivo de configuración de smartd se encuentra en /etc/smartd.conf
, si éste no existe,
el cual sería un caso poco común, deberás crearlo en tu editor de elección.
...
#DEVICESCAN
...
/dev/hda \
-H \
-l error -l selftest \
-s (O/../../5/11|L/../../5/13|C/../../5/15) \
-m ThisIsNotUsed -M exec /usr/local/bin/smartd.sh
El script en Bash también puedes hacerlo en un editor de tu elección, y tendrá la siguiente forma:
#!/bin/bash
LOGFILE="/var/log/smartd.log"
echo -e "$(date)\n$SMARTD_MESSAGE\n" >> "$LOGFILE"
shutdown -h now
Luego de crear el script deberás hacerlo ejecutable cambiando sus atributos con la siguiente línea de comandos:
$ chmod +x /usr/local/bin/smartd.sh
Para probar todo, puedes agregar al final de tu /etc/smartd.conf
la línea
-M test
y luego ejecutar el demonio. Nota que ésto apagará tu equipo, hayan errores o no. Luego si algo sale mal deberás chequear la bitácora del sistema en /var/log/messages con:
$ tail /var/log/messages
Y así corregir el problema. Ahora tendrás que quitar la línea
-M test
y guardar los cambios. Por último debes hacer que smartd sea cargado al momento del arranque, lo cual lo logras con la siguiente línea:
$ rc-update add smartd default
Algunos enlaces de interés:
- S.M.A.R.T en la Wikipedia
- Página Oficial de smartmontools
- Ejemplos de salidas del SMT
- Atributos usados para recuperar el estado físico/lógico de una unidad y mostrar su significado de una forma más entendible para un usuario final
Nota: Ésta artículo está basado en un HOWTO del Wiki de Gentoo
Audigy SE en Etch AMD64
Hace días me hice con una tarjeta de sonido Audigy SE de la marca Creative y la verdad tuve que dar bastante golpes para dar con la configuración correcta. ¿Cómo lo logré? Muy fácil: Googleando :).
Resulta que el sistema (Debian, of course) reconoce bien el dispositivo y carga de manera perfecta los módulos necesarios; de hecho el alsa-mixer me mostraba todos los canales de la tarjeta pero el único que parecía funcionar era el Analog Front y los otros parecían estar muertos. Casi daño el mouse de tando hacer clicks y darle hacia arriba y hacia abajo :). No podía creer que no funcionara!.
Googleando llegué a la página de la gente de Alsa y me encontré una manera de configurar los drivers. Ahi confirmé que el sistema me estaba cargando el módulo correcto, el snd-ca0106. Entonces, después de ver la pequeña lista de instrucciones, no voy a decir que me espanté y maldije a Creative, no, no lo hice, en ése momento miré al cielo y pregunté: ¡¿Acaso no existe una manera más fácil de lograr que suenen la benditas cornetas?! y la respuesta a mi pregunta vino del wiki de Gentoo, ¿qué cosas no? imagínense todo lo que googleé; bueno específicamente de la sección que dice VIA Envy24HT (ice1724) chip. Ahora se preguntarán.. ¿VIA? éste tipo está loco…. pues sí, VIA. ¿Y qué fué lo que hice? Abrí una terminal e hice lo siguiente:
$ gedit .asoundrc
Luego lo que hice fué copiar el contenido del segundo .asoundrc y pegarlo al mío, luego guardar los cambios y voilá, sistema de sonido 5.1 andando ;). Se preguntarán ¿Cómo hizo éste loco para saber que ese .asoundrc funciona con la Audigy SE?, bueno, con el proceso estándar, prueba error. Copiando y pegando cada uno de los ficheros.
Ahora que el sistema suena perfectamente bien me ha surgido una nueva interrogante, debido a que para poder graduar el volumen del sistema tengo que graduar los tres controles, y la pregunta es: ¿Habrá alguna forma de graduar el volumen para los tres controles al mismo tiempo? Que lo disfruten…
ULAnix
Hace ya algún tiempo que la beta #3 de esta distribución LiveCD basada en Debian salió.
Podría decirse que ULAnix es la primera distribución GNU + Linux que nace dentro de una universidad venezolana, Universidad de Los Andes. Aunque muchos afirman que la primera distro venezolana con aval universitario fue Cachapa, no es cierto, Antonio Lopez, el creador de Cachapa, realizó dicho proyecto como una meta personal, posteriormente la Universidad de Carabobo se interesó en Cachapa. Al final, lo importante no es ser el primero, lo importante es que estas distribuciones han sido fruto del trabajo de venezolanos.
ULAnix es una iniciativa del Parque Tecnológico de Mérida.
Básicamente el equipo de trabajo está conformado por los profesores: Gilberto Díaz y Jacinto Dávila, el desarrollo está a cargo del bachiller Jesús Molina.
Si usted desea una copia de esta distribución puede obtenerla desde el repositorio: http://ftp.ula.ve/linux/distribuciones/ulanix/ o desde el mirror que he habilitado en http://ulanix.milmazz.com/.
El equipo de trabajo alrededor de ULAnix agradece que la mayor cantidad de personas se haga con esta distribución, la pruebe e informen los errores que vayan consiguiendo. Aún no existe una página oficial para el proyecto, aunque al parecer se está trabajando en ello, opcionalmente, puede notificar los errores de software en el foro de ULAnux.
Próximamente espero estar probando intensivamente esta distribución y realizar las observaciones que considere pertinentes.
Debian: Bienvenido al Sistema Operativo Universal (Parte II)
Esta serie de anotaciones comenzo con la entrada Debian: Bienvenido al Sistema Operativo Universal (Parte I).
Después de escribir en la tabla de particiones el esquema de particionamiento descrito en la parte anterior, el sistema base Debian comenzo a instalarse. Posterior a la Bienvenida al nuevo sistema Debian, reinicie y comence a configurar el sistema base debian, en la sección de selección de programas Debian escogí la última opción que nos brinda el asistente, selección manual de paquetes, luego configure las fuentes de aptitude y enseguida inicie la instalación de paquetes puntuales, los cuales describiré a continuación, de manera breve.
Como lo que tenía a mano era el CD Debian GNU/Linux testing Sarge- Official Snapshot i386 Binary-1, lo primero que hice fue actualizar a Sarge, seguidamente cambie las fuentes del fichero /etc/apt/sources.list
a Etch, actualice la lista de paquetes disponibles e inmediatamente hice un aptitude dist-upgrade
, el cambio de una rama a otra fué de lo más normal, no genero problema alguno.
Nota: No he descrito el proceso de instalación del sistema base de manera detallada ya que existe suficiente información en el sitio oficial de Debian, si lo desea, puede ver este video tutorial de instalación de Debian Sarge (aprox. 54MB.), en este video se explica como instalar el Entorno de Escritorio predeterminado que ofrece el asistente, no es el caso que explico en esta entrada, puesto que vamos a generar un Entorno de Escritorio de acuerdo a nuestras necesidades particulares.
Si tiene alguna duda acerca de la funcionalidad de un paquete en particular, puede consultar la descripción del mismo al hacer uso del comando aptitude show _package-name_
, en donde package-name es el nombre del paquete en cuestión.
En los siguientes pasos haré uso intensivo de aptitude
, anteriormente ya he explicado las ventajas que presenta aptitude
sobre los comandos apt-get
y sobre la interfaz gráfica Synaptic, puede encontrar mayor información en los artículos:
Sistema X Window
Instalando los componentes esenciales para el Sistema X Window.
# aptitude install x-window-system-core
GNOME
Instalando los componentes esenciales para el entorno de escritorio GNOME.
# aptitude install gnome-core
GNOME Display Manager
Si usted hubiese instalado el paquete x-window-system
, metapaquete que incluye todos los componentes para el Sistema X Window, se instalaría por defecto XDM (X Display Manager), normalmente debería recurrir a la línea de comandos para resolver los problemas de configuración de este manejador, mientras que con GDM (GNOME Display Manager) no debe preocuparse por ello, puede personalizarlo o solucionar los problemas sin recurrir a la línea de comandos. De manera adicional, puede mejorar su presentación con la instalación de temas.
# aptitude install gdm gdm-themes
Mensajería Instantánea, IRC, Jabber
GAIM
Todo lo anterior se puede encontrar al instalar GAIM.
# aptitude install gaim gaim-themes
irssi
Si le agrada utilizar IRC modo texto, puede instalar irssi.
# aptitude install irssi
Centericq
Centericq es un cliente de mensajería instantánea multiprotocolo, soporta ICQ2000, Yahoo!, AIM, IRC, MSN, Gadu-Gadu y Jabber.
# aptitude install centericq
Programas para la manipulación de imágenes
GIMP por defecto no puede abrir ficheros SVG, si desea manipularlos desde GIMP y no desde Inkscape puede hacer uso del paquete gimp-svg
.
# aptitude install gimp gimp-python gimp-svg inkscape
Navegador Web
Definitivamente Firefox.
# aptitude install firefox firefox-locale-es-es
Creación de CDs y DVDs
# aptitude install k3b cdrdao
Para quienes quieran su version de K3b en español pueden instalar el paquete k3b-i18n, yo no lo considere necesario puesto que aporta 11,5MB, inútiles desde mi punto de vista.
Cliente Bittorrent
No le recomiendo instalar el cliente bittorrent Azureus, consume demasiados recursos, acerca de ello explico brevemente en el artículo Clientes Bittorrent.
# aptitude install freeloader
Lector de feeds
Normalmente utilizo Liferea. También cabe la posibilidad de utilizar el servicio que presta Bloglines.
# aptitude install liferea
Editor
# aptitude install vim-full
Cliente de correo electrónico
Para la fecha, a la rama testing de Debian no ingresa la versión 1.5 del cliente de correo Thunderbird (mi favorito), así que vamos a instalarlo manualmente.
En primer lugar deberá descargar (se asume que la descarga se realizará al escritorio) la última versión del cliente de correo, el paquete empaquetado y comprimido lo encontrará en el sitio oficial de Thunderbird.
Seguidamente, proceda con los siguientes comandos.
# tar -C /opt/ -x -v -z -f ~/Desktop/thunderbird*.tar.gz
# ln -s /opt/thunderbird/thunderbird /usr/bin/thunderbird
Instalar Diccionario en español
wget -c http://downloads.mozdev.org/dictionaries/spell-es-ES.xpi
Aplicaciones -> Herramientas del Sistema -> Root Terminal. Desde allí procedará a ejecutar el comando thunderbird
.
Desde Thunderbird, seleccione la opción Extensiones del menú Herramientas. Seguidamente proceda a dar click en el botón Instalar y posteriormente busque la ruta del paquete que contiene el diccionario.
Thunderbird + GPG = Enigmail
Esta excelente extensión le permitira cifrar y descifrar correos electrónicos, a su vez, le permitirá autenticar usuarios usando OpenPGP.
wget -c http://releases.mozilla.org/pub/mozilla.org/extensions/enigmail/enigmail-0.94.0-mz+tb-linux.xpi
Como usuario normal, proceda a invocar el cliente de correo electrónico Thunderbird, seleccione la opción Extensiones del menú Herramientas y proceda a instalar la extensión en cuestión, similar al proceso seguido para lograr instalar el diccionario.
Reproductor de videos
Aunque existen reproductores muy buenos como el VLC y XINE, mi reproductor favorito es, sin lugar a dudas, MPlayer. La mejor opción es compilarlo, aún en la misma página oficial del proyecto MPlayer lo recomiendan, existe mucha documentación al respecto. Sin embargo, si no tiene tiempo para documentarse puede seguir los siguientes pasos, le advierto que el rendimiento quizá no sea el mismo que al compilar el programa.
# echo "deb ftp://ftp.nerim.net/debian-marillat/ etch main" >> /etc/apt/sources.list
# aptitude update
# aptitude install mplayer-386 w32codecs
Extensiones para Mozilla Firefox
Estas son las que he instalado hasta ahora, siempre uso un poco más, puede encontrarlas en la sección Firefox Add-ons del sitio oficial.
- Answers
- del.icio.us
- FireFoxMenuButtons
- Colorful Tabs
- Tab Mix Plus
Gestor de Arranque
Vamos a personalizar un poco el gestor de arranque GRUB.
# aptitude install grub-splashimages
$ cd /boot/grub/splashimages
En este instante le recomiendo escoger alguno de los motivos que incluye el paquete grub-splashimages, una vez hecho esto, proceda a realizar lo siguiente.
$ cd /boot/grub/
# ln -s splashimages/image.xpm.gz splash.xpm.gz
# update-grub
En donde, evidentemente, debe cambiar el nombre del fichero image.xpm.gz por el nombre de fichero de la imagen que le haya gustado en /boot/grub/splashimages.
Creando listas de reproducción para XMMS y MPlayer
Normalmente acostumbro a respaldar toda la información que pueda en medios de almacenamiento ópticos, sobretodo audio digital, ya sea en ficheros Ogg Vorbis o en MPEG 1 Layer 3. Desde hace poco más de un año hasta la actualidad me he acostumbrado a mantener una estructura lógica, la cual es más o menos como sigue:
/music/
Pero hace mucho tiempo no era tan organizado en cuanto a la estructura de los respaldos, entonces, la pregunta en cuestión es, ¿cómo lograr detectar la presencia de ficheros de audio digital almacenados de manera persistente en un dispositivo óptico de manera automática?
Al igual que lo expresado en la entrada Eliminando ficheros inútiles de manera
recursiva,
haremos uso del comando find
.
Antes de entrar en detalle debo aclarar que voy a realizar una búsqueda recursiva de ficheros en el path correspondiente a mi unidad lectora de CDs. Usted debe ajustar el path por uno apropiado en su caso particular.
Si solo desea buscar ficheros MPEG 1 Layer 3:
find /media/cdrom1/ -name \*.mp3 -fprint playlist
Pero si usted acostumbra a almacenar ficheros Ogg Vorbis en conjunto con ficheros MPEG 1 Layer 3, debería proceder así:
find /media/cdrom1/ \( -name \*.mp3 -or -name \*.ogg \) -fprint playlist
El comando anterior también es aplicable para generar listas de reproducción de video digital, en cuyo caso lo único que debe cambiar es la extensión de los ficheros que desea buscar. El fichero que contendrá la lista de reproducción generada en los casos expuestos previamente será playlist.
Reproduciendo la lista generada
Para hacerlo desde XMMS es realmente sencillo, acá una muestra:
xmms --play playlist --toggle-shuffle=on
Si usted no desea que las pistas en la lista de reproducción se reproduzcan
de manera aleatoria, cambie el argumento on
de la opción
--toggle-shuffle
por off
, quedando como --toggle-shuffle=off
.
Si desea hacerlo desde MPlayer es aún más sencillo:
mplayer --playlist playlist -shuffle
De nuevo, si no desea reproducir de manera aleatoria las pistas que se
encuentran en la lista de reproducción, elimine la opción del reproductor
MPlayer -shuffle
del comando anterior.
Si usted desea suprimir la cantidad de información que le ofrece MPlayer al
reproducir una pista le recomiendo utilizar alguna de las opciones -quiet
o
-really-quiet
.
Vim al rescate
Al examinar el día de hoy el último fichero de respaldo de la base de datos de este blog, me percate que existe una cantidad inmensa de registros que en realidad no me hacen falta, sobretodo respecto a las estadísticas, es increible que los registros de una simple base de datos llegara a ocupar unos 24MB, dicha información no tiene mayor relevancia para los lectores puesto que dichos datos suelen ser visualizados en la interfaz administrativa del blog, pero al ocupar mayor espacio en la base de datos, pueden retardar las consultas de los usuarios. Por lo tanto, era necesario realizar una limpieza y eliminar unos cuantos plugins que generaban los registros de las estadísticas.
Ahora bien, imagínese abrir un documento de 266.257 líneas, 24.601.803 carácteres desde algun editor de textos gráfico, eso sería un crimen. ¿Qué podemos hacer?, la única respuesta razonable es utilizar Vim.
Vim es un avanzado editor de textos que intenta proporcionar todas las funcionalidades del editor de facto en los sistemas *nix, Vi. De manera adicional, proporciona muchas otras características interesantes. Mientras que Vi funciona solo bajo ambientes *nix, Vim es compatible con sistemas Macintosh, Amiga, OS/2, MS-Windows, VMS, QNX y otros sistemas, en donde por supuesto se encuentran los sistemas *nix.
A continuación detallo más o menos lo que hice:
En primer lugar respalde la base de datos del blog, enseguida procedí a descomprimir el fichero y revisarlo desde Vim.
$ vim wordpress.sql
Comence a buscar todos los CREATE TABLE
que me interesaban. Para realizar esto, simplemente desde el modo normal de Vim escribí lo siguiente:
/CREATE TABLE <strong><Enter></strong>
Por supuesto, el
Con todo la información necesaria, lo único que restaba por hacer era copiar la sección que me interesaba en otro fichero, para ello debemos proceder como sigue desde el modo normal de Vim:
:264843,266257 w milmazz.sql
El comando anterior es muy sencillo de interpretar: Copia todo el contenido encontrado desde la línea 264.843 hasta la línea 266.257 y guardalo en el fichero milmazz.sql.
Inmediatamente restaure el contenido de mi base de datos y listo.
Algunos datos interesantes.
Fichero original
- Tamaño: 24MB
- Número total de líneas: 266.257
Fichero resultado
- Tamaño: 1.2MB
- Número total de líneas: 1.415
Tiempo aproximado de trabajo: 4 minutos.
¿Crees que tu editor favorito puede hacer todo esto y más en menos tiempo?. Te invito a que hagas la prueba ;)
That’s All Folks!
Breve reseña del FLISOL 2006, Capítulo Mérida-Venezuela
Al llegar a eso de las 9:30 a.m. (hora local) estaban transmitiendo el video Trusted Computing (subtítulos español), un excelente video en donde nos muestran cuan peligroso puede ser la “mala interpretación” que tiene la industria acerca del concepto “Trusted Computing”, modelo en el cual la industria no le permite a los usuarios (comunidad) elegir entre lo que ellos consideran malo o nó, el problema es que ya deciden por tí, simplemente porque la industria no confía en nosotros.
Después de mostrar el video, Hector Colina, uno de los coordinadores del evento, procedió a dar la bienvenida a los asistentes al II Festival Latinoamericano de Instalación de Software Libre, capítulo Mérida, Venezuela. De inmediato, Hector continúo hablando y nos sorprendió con una charla denominada Software Libre y Libre Empresa, en donde nos hablaba de la interesante filosofía detrás del modelo de Software Libre, algunos piensan equivocadamente que bajo el esquema de Software Libre no se es posible generar ganancias, se demostró que es posible hacerlo. También hablo sobre las ventajas técnicas que brinda el Software Libre frente al Software Privativo.
Posteriormente se dió comienzo a las demostraciones de LTSP (Linux Terminal Server Project) por parte de José David Gutierrez, quien también coordinó el evento y es miembro de la Cooperativa AndiNuX, no recuerdo en este instante cuales eran las características que poseía el servidor, pero recuerdo que el cliente sobre el cual se hizo la demostración tenía apenas 40 MB de RAM (sí, leyo bien, 40 MB) y se logró levantar el entorno de escritorio KDE y ejecutar algunas aplicaciones, José comentaba que los requisitos mínimos de memoria RAM eran 16, mientras que lo óptimo erán 32 MB de RAM, así que amigo, si usted esta leyendo esto, no bote su potecito (equipo de bajo recursos de hardware), bajo el esquema de Software Libre podemos recuperarlo, quizá podría donarlo y regalarle una sonrisa a un niño que reciba educación en una escuela con pocos recursos.
Posteriormente comenzaron a colocar algunos videos a los asistentes, entre los cuales recuerdo haber visto Revolution OS, en paralelo, se realizaba el proceso de instalación desde tempranas horas de la mañana, al final de la jornada se lograron contabilizar más de 20 máquinas a las cuales se instaló GNU/Linux, incluyendo potecitos de 32 MB de RAM hasta máquinas de escritorio con procesadores de 64 bits, por supuesto, a una que otra portátil también se le instaló GNU/Linux, además, se regalaron CDs de Debian, Ubuntu, entre otros.
En la tarde el profesor Francisco Palm comenzó su charla Carpintería del Software Libre: un enfoque desde el lenguaje de Programación Python, en ella se nos hace reflexionar acerca de nuestra realidad actual en Venezuela, presentamos poca penetración de internet en nuestra sociedad. Bajo el esquema de Software Privativo, no se le brinda apoyo a la comunidad, no se presenta una innovación alguna.
El profesor Palm también converso sobre puntos interesantes acerca de la Ingeniería de Software Libre, como la Fundación Apache, Debian o Mozilla no presentan certificaciones y no les importa éste hecho en particular, puesto que su desarrollo es robusto, de hecho, muestran como funcionan por dentro. Entre otras cosas bastante interesantes.
Enseguida comenzaron otra charla 2 pupilos del profesor Palm, Diego Díaz y Freddy López, en donde se expuso el Proyecto SIGMA: Soluciones Libres para el mundo Científico, en esta charla pudimos observar una serie de demostraciones del sistema estadistico R. El proyecto SIGMA resulta de una iniciativa de los miembros de la Escuela de Estadística y el Instituto de Estadística Aplicada y Computación (IEAC) de la Universidad de Los Andes.
Sin mucho receso, Leonardo Caballero comenzó su charla acerca de Desarrollo Web con Mozilla FireFox, aca se explicó acerca de las extensiones que resultan muy útiles al desarrollador de páginas web, como por ejemplo, la extensión Web Developer, de manera adicional, se demostró cuan personalizable (desde utilizar temas hasta incluso simular comportarse como otro navegador) puede ser Firefox para un usuario particular, desde extensiones para el clima (ForecastFox) hasta herramientas de blogging.
Particularmente, para el desarrollo web utilizo más extensiones de las que mencionó Leonardo, entre ellas puedo mencionar: CSS Validator, ColorZilla, entre otras. Prefiero no continuar mencionando la lista de extensiones que poseo, se supone que sea una breve reseña, quizá en otro artículo hablaremos acerca de las extensiones de Firefox.
Un poco más tarde, el licenciado Axel Pizzi, quien pertenece a la agencia de traducción y servicios lingüisticos translinguas, conversó acerca del uso de herramientas CAT (Computer aided Translation) bajo el esquema de Software Libre, simplemente se mostraba las bondades de la traducción asistida por computadora, es una manera de traducir contenido en donde el ser humano (traductor) utiliza software diseñado para brindar soporte y facilitar ésta ardua tarea.
Algo nervioso se encontraba Jesús Rivero (no confundir con neurogeek, ok?), pues se estaba haciendo tarde para su charla, Cooperativismo y Software Libre, en donde Jesús mostró como el esquema de desarrollo colaborativo es sumamente útil en las Cooperativas.
Y ya para finalizar la jornada, comence mi charla sobre Desarrolo Web en Python utilizando el framework Django, a manera de introducción, comence a hablar del lenguaje de programación Python, sus bondades, que empresas le utilizan actualmente y que proyectos han desarrollado, entre dicha lista se incluyen las siguientes: Google, Yahoo!, empresas farmacéuticas (AstraZeneca) de gran escala mundial, Industrial Light & Magic (sí, esa misma que está pensando, es la empresa iniciada por George Lucas en el año de 1.975, la encargada de los efectos especiales de la saga “Star Wars”, no solo eso, en su lista se incluyen películas como “Forrest Gump”, “Jurassic Park”, “Terminator 2”, entre otros).
Posteriormente comence a adentrarme ya en el tema que me interesaba, Desarrollo Web, en mi caso particular, hable sobre como utilizar el framework Django, desde la instalación del framework, la instalación de PostgreSQL (recomendada) y del adaptador a dicha base de datos en python, psycopg
, hasta la construcción de la aplicación. Para mayor detalle acerca de esta presentación solo esperen un próxima entrada, quisiera ampliar algunos tópicos para dejarlos un poco más claros.
Si desean ver algunas fotos que logré tomar del II Festival Latinoamericano de Instalación de Software Libre (FLISOL), Capítulo Mérida - Venezuela, pueden revisar el set de fotos FLISOL 2006 de mi cuenta en flickr.
Debo confesar que estaba bastante nervioso al principio porque era mi primera charla. Espero que todo haya salido bien y les haya gustado.
Bueno, finalizamos las actividades como a las 7:30 p.m. (hora local), luego de ello ayudamos a los muchachos a acomodar las cosas y guardarlas en las oficinas de Fundacite Mérida.
Desde mi punto de vista, ha sido una grata experiencia, cualquier corrección a la reseña es bienvenida, pido disculpas si he dejado a alguien por fuera, esta reseña no estaba anotada en ningún medio escrito, solo he comenzado a describir las situaciones que recuerdo, lo más seguro es que olvide algún detalle importante, andaba un poco distraído instalando Debian y Ubuntu en el Festival.
Por supuesto, cualquier corrección, crítica constructiva acerca de la charla que dí se los agradecería, todo sea por mejorar dicho material y publicarlo, por supuesto, manteniendo una licencia libre.
nVIDIA en Ubuntu 6.04
Hace unos días actualicé mi Ubuntu 5.10 a una de sus últimas versiones de testing: Flight 5. Debo admitir que quedé anonadado por lo cambios en la distribución, ya que con todas las mejoras que tiene parece que hubiera pasado, no sólo 6 meses sino años. El Dapper Drake (Flight 5, Ubuntu 6.04) es mucho mejor que sus antecesores. Pero la razón por la cual me decidí a escribir éste artículo es otra: la instalación de los drivers de mi tarjeta nVIDIA y su puesta en funcionamiento a punto.
Cuando actualicé mi sistema no hubo ningún problema, y lo digo en serio, ningún problema de ninguna índole. Toda mi configuración de escritorio quedó intacta; pero empecé a notar que la configuración de la tarjeta de video no se cargaba con el sistema. Entonces supe que, por alguna razón, los drivers de la tarjeta habían cambiado, es decir, el sistema asignó el driver por defecto para la tarjeta, más no los drivers de la tarjeta misma. Entonces tuve que ponerme a configurar la tarjeta.
Lo primero que hice fué verificar que los drivers vinieran con la distribución. Lo hice con la siguiente línea:
$ sudo aptitude search nvidia
Con lo cual obtuve lo siguiente:
i nvidia-glx - NVIDIA binary XFree86 4.x/X.Org driver
v nvidia-kernel-1.0.7174 -
v nvidia-kernel-1.0.8178 -
i nvidia-kernel-common - NVIDIA binary kernel module common files
Entonces ya sabía que los drivers venían con la distro, lo cual me pareció fascinante, ya que en realidad el Flight 5, no es la versión definitiva del Dapper Drake. Luego procedí a verificar la documentación de dicho paquete. Ésto lo hice con la siguiente línea de comandos:
$ sudo aptitude show nvidia-glx
Esto lo hice para verificar que no haya alguna clase de conflictos con otros paquetes, pero en realidad no es un paso necesario, ya que aptitude
resuelve todo tipo de conflictos y dependencias. Después de verificar que todo estaba en orden me decidí a instalar los drivers. Ésto lo hice con la siguiente linea de comandos:
$ sudo aptitude install nvidia-glx
Con lo cual quedaron instalados los drivers de la tarjeta de manera trasparente y rápida. Lo siguiente que debía hacer, era activar la configuración de la tarjeta. Lo cual hice con la siguiente línea de comandos:
$ sudo nvidia-glx-config enable
Una vez hecho ésto ya podía configurar la tarjeta. Algo que hay que hacer notar es que, para las distribuciones anteriores de Ubuntu, había que instalar de manera separada el paquete nvidia-glx
y el nvidia-settings
, sin embargo, aquí queda todo instalado de una vez. Lo que sigue es iniciar la configuración de la tarjeta, lo cual hice con la siguiente línea de comandos:
$ nvidia-settings
Y ya tenía acceso a la configuración de mi tarjeta. Sin embargo, al hacer todo ésto, la configuración no se carga al iniciar el sistema, pero no fué problema, porque lo solucioné colocando en los programas de inicio del gnome-session-manager
los siguiente:
nvidia-settings -l
Este comando carga la configuración de nvidia-settings
que tengamos actualmente. Es lo mismo que, una vez que haya cargado el sistema, ejecutemos en la consola éste comando, sólo que ahora se va a ejecutar apenas inicie el sistema operativo.
Otros ajustes…
Si quieren colocar un lanzador en los menús del panel de gnome deben hacer los siguiente:
$ sudo gedit /usr/share/applications/NVIDIA-Settings.desktop
Y luego insertar lo siguiente en dicho fichero:
[Desktop Entry]
Name=Configuración nVIDIA
Comment=Abre la configuración de nVIDIA
Exec=nvidia-settings
Icon=(el icono que les guste)
Terminal=false
Type=Application
Categories=Application;System;
Y ya tendrán un lanzador en los menús del panel de gnome. Una opción sería utilizar el editor de menús Alacarte.
nvidia-xconf
nvidia-xconf
es una utilidad diseñada para hacer fácil la edición de la configuración de X. Para ejecutarlo simplemente debemos escribir en nuestra consola lo siguiente:
$ sudo nvidia-xconfig
Pero en realidad, ¿qué hace nvidia-xconfig
? nvidia-xconfig
, encontrará el fichero de configuración de X y lo modificará para usar el driver nVIDIA X. Cada vez que se necesite reconfigurar el servidor X se puede ejecutar desde la terminal. Algo interesante es que cada vez que modifiquemos el fichero de configuración de X con nvidia-xconfig
, éste hará una copia de respaldo del fichero y nos mostrará el nombre de dicha copia. Algo muy parecido a lo que sucede cada vez que hacemos:
dpkg-reconfigure xserver-xorg
Una opción muy útil de nvidia-xconfig
es que podemos añadir resoluciones al fichero de configuración de X simplemente haciendo:
$ sudo nvidia-xconfig --mode=1280x1024
…por ejemplo.
Propuesta de diseño para Planeta Linux
En estos últimos días he estado trabajando en mi propuesta de diseño para Planeta Linux, sitio del cual escribí previamente en la entrada acerca de Planeta Linux, hasta ahora considero que está bastante avanzado el diseño.
A continuación, algunos detalles acerca del por qué y el cómo del trabajo realizado hasta ahora.
La estructura del diseño
La estructura del diseño es bastante sencilla, consiste en 3 partes:
- Cabecera
- Contenido
- Pie de página
Hasta ahora el pie de página presenta cierta redundancia de datos, puesto que la documentación que se ubicará en la página principal aún no está completa (que conste que no es una medida de presión para Damog).
El modo en el cual se presenta la información pretende darle prioridad al contenido expuesto por cada uno de los miembros del Planeta Linux, facilitándole la tarea al lector, es decir, encontrar la información que él desea en el menor tiempo posible, esto es de suma importancia en estos tiempos tan agitados.
Se le ha agregado cierta presencia al pie de página, pero no tanta como a la sección de contenido; la funcionalidad del pie de página ahora reemplaza al uso de la común barra lateral. Regularmente el pie de página es ocupado solo para mostrar notas sin mayor relevancia y el copyright que aplique, en esta propuesta, las cosas cambian un poco.
¿Qué herramientas he utilizado?
Todo el trabajo se ha realizado usando herramientas libres, entre ellas sobresalen:
Respecto a los iconos
Los iconos que he usado hasta ahora se encuentran en la serie Silk, la cual cuenta con más de 700 iconos de 16x16 pixels en formato PNG, estos iconos están bajo la licencia Creative Commons Attribution 2.5 License.
Para las banderas que se muestran en la barra de navegación de la cabecera, he usado la serie Flag, ésta serie cuenta con 239 banderas, tanto en formato GIF como PNG, se pueden utilizar libremente para cualquier propósito.
También he utilizado el set de íconos nuoveXT, el cual provee una completa gama de iconos tanto para GNOME como KDE.
Ya para finalizar la sección de los iconos, Damog hizo bien al recomendarme el set de iconos propuesto en Tango Desktop Project.
TODO (cosas por hacer)
- Hacer que el contenido se ajuste a un determinado porcentaje de la resolución de la pantalla, para aprovechar el espacio en resoluciones muy altas.
-
Eliminar el efecto scroll. Se ha eliminado en la versión 0.2 - Mejorar la barra de navegación de la cabecera.
- Diseñar un logo decente, quizá Jonathan Hernández (líder del proyecto Jaws) nos ayude en esto, según contaba Damog en la lista de correos de Planeta Linux.
- ¿Sería conveniente colocar el URI del feed del autor correspondiente en su campo de información?, la cual está ubicada antes de cada globo de dialógo.
Por supuesto, cualquier actividad que haga falta será añadida a la lista de cosas por hacer
Cualquier sugerencia, corrección, comentario es bienvenido.
hwinfo: Detectando el hardware actual
hwinfo
es un programa que nos permite conocer rápidamente el hardware detectado actualmente en nuestros ordenadores, por ejemplo, si deseamos obtener los datos de dispositivo SCSI, simplemente utilizamos el comando hwinfo --scsi
.
Para instalar este programa en Ubuntu Linux en primer lugar debemos tener activados el repositorio universe
, seguidamente haremos uso de aptitude
, tal cual como sigue:
$ sudo aptitude install hwinfo
Si deseamos conocer el uso de este programa de manera detallada, simplemente escribimos hwinfo --help
.
En el caso que haga uso del comando hwinfo
sin parámetro alguno nos mostrará la lista completa del hardware detectado actualmente, es importante resaltar que esta lista puede ser muy extensa, por lo cual le recomiendo hacer uso de un pipe para administrar la salida generada por hwinfo
y poder visualizarla página a página, tal cual como sigue.
$ hwinfo | less
Si por el contrario, usted solo desea conocer una lista resumida del hardware detectado haga uso del parámetro --short
, lo anterior quedaría de la siguiente manera:
$ hwinfo --short
Este programa nos brinda bastantes opciones, es recomendable hacer uso de los parámetros cuando necesitamos información referente a un dispositivo en específico, por ejemplo, si deseamos conocer la información acerca de la tarjeta de sonido, hacemos lo siguiente:
$ hwinfo --sound
Como le mencione anteriormente, para conocer en detalle las opciones que nos brinda este programa, le recomiendo leer el manual. Espero sea de provecho ;)
Planeta Linux
Hace tiempo que no revisaba algunas de las estadísticas del sitio, me he percatado que han llegado algunos enlaces desde Planeta Linux Venezuela. El principal objetivo de este sitio es:
Planeta Linux es un pequeño proyecto que pretende fomentar la comunicación e intercambio sencillo de información sobre cualquier usuario de GNU/Linux o software libre, en Venezuela. Con esta breve comunicación, podremos conformar una comunidad mucho má sólida, unificada e integral.
Lo anterior también es extensible para aquellas personas mexicanas, puesto que existe un Planeta Linux México.
¿Desea colaborar con el proyecto?
El proceso de registro es muy sencillo, solamente debes enviar un correo a lista de correos [email protected], si desea suscribirse a dicha lista solamente rellene los datos solicitados página de información de la lista de correos de Planeta Linux.
Para su admision usted debe suministrar los siguientes datos:
- Nombre completo
- Lugar de residencia
- URI del feed RSS/Atom
Opcionalmente puede enviar su Hackergotchi, imagen de un escritor que es utilizada como ícono para identificar al autor de un feed dado dentro de un agregador de blogs, ésta no debe exceder un ancho de 95 pixels y un alto de 95 pixels.
Conociendo un poco más acerca del proyecto
Me ha interesado mucho esta iniciativa, así que no dude en ponerme en contacto con David Moreno Garza (a.k.a. damog), él cual me ha contestado muy amablemente. En las siguientes líneas expongo nuestro intercambio de correos electrónicos.
- MilMazz: Hola David, en realidad no tengo el placer de conocerte personalmente, pero he notado recientemente algunos enlaces entrantes desde el Planeta Linux Venezuela, no se quien me dio de alta, se agradece, así que gracias.
- Damog: Hola Milton, no, al parecer no nos conocemos. Yo te di de alta en el rol debido a que José Parrella, a.k.a bureado, me pasó tu nombre y feed.
- MilMazz: El motivo de este mensaje es para pedirte un poco de informacion respecto al proyecto, para publicar un artículo en mi blog y así colaborar con la difusión de esta interesante idea.
- Damog: ¡Muchas gracias! Así es como el proyecto va ganando adeptos y más gente se va uniendo y leyendo el contenido de Planeta Linux.
- MilMazz: Espero no te molesten las siguientes preguntas, tomalo a manera de entrevista :)
- Damog: Desde luego que no, ¡bienvenidas! Antes que cualquier cosa, espero que no te importe que reenvíe este correo a la lista de Planeta Linux.
- MilMazz: ¿Quién o quienes se plantearon en principio la idea de crear Planeta Linux?, ¿quién lo llevaron a cabo?
- Damog: Debido al boom que han tenido los blogs entre usuarios y desarrolladores de software libre en el mundo, se ve la necesidad de crear nuevas herramientas para «monitorear» los contenidos dependiendo de los gustos de cada uno de los usuarios. Wieland Kublun, un mexicano radicado en Guadalajara, en el estado de Jalisco, en el occidente de México, alguna vez me comentó que estaría bien tener una especie de «planeta», como los que se han dado a conocer por proyectos grandes como Planet Debian o Planet GNOME. Creí que la idea era estupenda y empezamos a poner el agregador en marcha y añadiendo a nuestros conocidos al rol.
Otro factor que ha influído mucho en la gran proliferación de Planeta Linux es Jaws. Jaws es un proyecto, iniciado por Jonathan Hernández, radicado en Chihuahua, en el norte de México, de software libre para construir fácilmente un blog. El proyecto Jaws ha avanzado ya muchísimo, pues el software desarollado es altamente útil, funcional y bastante bonito. Por ende, muchos usuarios mexicanos empezaron a montar sus blogs en él y la mancha de usuarios blogueadores mexicanos creció mucho.
- MilMazz: Tengo entendido que el primer planeta de la “serie” fue el Planeta Linux Mexico, ¿desde cuando está en línea?
- Damog: Así es, fue el primero. Ha estado en línea desde octubre de 2004. Antes utilizábamos el dominio planetalinux.com.mx, pero recientemente abrimos el 2006 con el dominio, más genérico y permitible de expansión, planetalinux.org.
- MilMazz: ¿Por qué decidiste incluir a Venezuela como parte del Planeta Linux?, ¿alguna persona te pidio que lo hicieras?
- Damog: No. Personalmente tengo mucha relación con Venezuela, pues mi novia es de allá y tengo bastantes amigos, en el mundillo del software libre, allá. Quise lanzarlo por que empecé a conocer a gente que tenía un blog y llegó a un punto donde consideré pertinente lanzarlo, y donde la gente se interesaría por él. Mucha gente, hasta donde tengo entendido, ni siquiera sabe que está en el planeta. Como tú mismo, a muchas personas se han agregado teniendo conocimientos de ellos por terceras partes. Sin embargo, la forma de ver crecer un proyectito así es precisamente de boca en boca, de blog en blog.
- MilMazz: ¿Tienes pensado en el futuro incluir a mas paises?, si es así, ¿cuáles serían?
- Damog: Sí, la idea también era esa al iniciar con el dominio que usamos actualmente. Al principio creí que lo ideal sería empezar con México y Venezuela por razones ya explicadas, y además con Estados Unidos (sindicando a la gente latina que radica en ese país y que bloguea), usando la dirección us.planetalinux.org. Sin embargo, aún no se ha juntado suficiente gente para llevar a cabo tal subproyecto. En general cualquier país latinoamericano podría entrar mientras se junte suficiente gente y vaya creciendo como han ido creciendo los correspondientes a México y Venezuela. Creo que sería interesante seguirse luego con Brasil, donde hay una enorme actividad de software libre, o incluso en Argentina. Sin embargo, esto depende de la gente: Hace falta todavía escribir mucho contenido, hace falta escribir una especie de FAQ donde se explique qué pueden hacer si alguien quiere iniciar una instancia de Planeta Linux en un país donde no exista, hace falta hacer ese tipo de cosas y generar esos contenidos.
- MilMazz: Estaba por documentarme acerca de los lineamientos, al parecer el enlace de los lineamientos de Planeta Linux está roto por ahora, ¿cuáles serían los lineamientos que debe seguir un miembro del Planeta Linux?
- Damog: Bueno, como te digo, uno más de los contenidos inconclusos. Básicamente, los lineamientos establecerán algunos reglas o consejos, como que deberán hablar de Linux y Software Libre con cierta regularidad en su blog, que su feed debe ser válido, etc. Ese tipo de cosas.
- MilMazz: ¿Quienes pueden participar en el Planeta Linux?
- Damog: Cualquier persona que lleve un blog y toque periódicamente temas sobre Linux o Software Libre.
- MilMazz: ¿Deseas agregar algo más?
- Damog: Pues si alguien se quiere unir, es más que bienvenido. Simplemente escriban a la lista: [email protected] o suscríbanse.
Antes de culminar, quisiera agradecerle públicamente a José Parella por la sugerencia hecha a David Moreno Garza.
Instalinux: Instalando Linux de manera desatentida
Instalar GNU/Linux de manera desatendida ahora es realmente fácil haciendo uso de instalinux, esta interfaz web a través de unas preguntas acerca de como deseamos configurar nuestro sistema, nos permitirá crear una imagen que facilitará la instalación del sistema GNU/Linux de manera desatendida. Usted lo inserta, escribe install, y luego cuando regrese más tarde, tendrá un sistema GNU/Linux (la distribución de su escogencia) totalmente funcional esperando por usted.
Para todo lo descrito previamente, instalinux hace uso de scripts escritos en Perl que son parte del proyecto de código abierto LinuxCOE, desarrollado por Hewlett Packard.
Hasta ahora este servicio web gratuito permite crear métodos de instalación desatendida para las siguientes distribuciones:
- Fedora Core 4
- Debian
- SUSE
- Ubuntu
Instalinux nos permite seleccionar aquellos componentes que deseamos, posteriormente se crea una imagen de aproximadamente 30MB, la cual es clave para realizar la instalacion desatendida. Una vez culminado el proceso debemos descargar dicha imagen a nuestro disco duro.
Hasta ahora la propuesta que trae dicha interfaz gráfica me fascina, quizá el único punto débil que le veo es que posterior a la descarga de los aproximadamente 30MB usted deberá descargar los paquetes que solicite la instalación en su caso, esto último puede generar trauma en aquellas personas que no cuenten con conexiones de banda ancha.
O3 Magazine
O3 Magazine es una revista distribuida de manera electrónica en formato PDF. El enfoque que pretende O3 es promover el uso/integración de programas basados en Software Libre y Código Abierto (FOSS) en ambientes empresariales.
O3 ha sido creada usando exclusivamente herramientas de código abierto. Como por ejemplo:
Scribus, permite crear publicaciones de escritorio profesionales, es usado para definir el layout y producir los PDFs. The Gimp, usado para la creación y manipulación de imágenes y Open Office, el cual es usado por los escritores para la creación de los artículos.
Cada edición de la revista O3 tratará de cubrir los siguientes tópicos:
- Seguridad
- Internet
- Tecnologías web
- Negocios
- Voz/Multimedia (VoIP)
- Redes
- Aplicaciones para redes
- Seguridad en redes
O3 Magazine pretende demostrar a sus lectores los beneficios y el ahorro que se genera al usar soluciones de código abierto en el ambiente de los negocios. También puede interesar a aquellos dueños de pequeñas y medianas empresas que estén interesados en una infraestructura IT fuerte, segura y escalable sin incurrir en altos costos.
Si desean tener la primera edición de O3 Magazine, pueden hacerlo en: Issue #1 (November 2005)
Como era de esperarse la publicación viene en inglés. De hecho, todas las revistas electrónicas que conozco y leo vienen en este idioma. Por lo descrito previamente me atrevo a preguntarles lo siguiente, ¿conocen alguna publicación electrónica de buena calidad que venga en español?.
Evolution y Gmail
Si desea configurar el cliente de correo Evolution (también brinda una agenda de contactos, calendario, entre otras funcionalidades) para manejar su cuenta de Gmail, estos son los pasos.
Habilitando el acceso POP en su cuenta de Gmail
- Identificarse en Gmail.
- Un vez dentro del sistema, ir a la opción de Configuración
- Seguidamente proceda a seleccionar Reenvío y correo POP del menú.
- Dentro de la sección Descargar correo POP encontramos tres derivaciones:
- La primera se refiere al Estado, en ella debemos habilitar cualquiera de las dos opciones que se muestran al principio, la primera permite Habilitar POP para todos los mensajes (incluso si ya se han descargado), la segunda opción permite Habilitar POP para los mensajes que se reciban a partir de ahora.
- La segunda derivación se refiere a qué debe hacer Gmail cuando se accede a los mensajes a través de POP, eliga la respuesta de su conveniencia, yo por lo menos tengo conservar una copia de Gmail en la bandeja de entrada.
- La tercera derivacion se refiere a como lograr configurar el cliente de correo electrónico, en nuestro caso, será Evolution.
- Guardar cambios.
Ahora vamos a configurar nuestra cuenta Gmail desde Evolution. En primer lugar veamos como configurar la recepción de correos.
Recibiendo Mensajes
- Tipo de servidor: POP
- Servidor:
pop.gmail.com
- Usuario: [email protected], evidentemente debe cambiar la cadena nombredeusuario por su login verdadero, no olvide colocar seguido del nombre de usuario la cadena @gmail.com.
- Usar onexión segura: Siempre
- Tipo de autenticación: Password
Ahora veamos como configurar el envio de correos desde Evolution.
Enviando correos
- Tipo de servidor: SMTP
- Servidor: Puede usar las siguientes:
smtp.gmail.com
,smtp.gmail.com:587
ósmtp.gmail.com:465
. Debe marcar la casilla de verificación El servidor requiere autenticación - Usar conexión segura: Cuando sea posible
- Tipo (dentro de la sección de autenticación): Login
- Usuario (dentro de la sección de autenticación): [email protected], recuerde sustituir la cadena nombredeusuario por el parámetro correspondiente, no olvide colocar después del nombre de usuario la cadena @gmail.com, es importante.
Finalmente revise las opciones que le brinda Evolution y comience una vida llena de placeres.
Repositorios de Ubuntu
Desde hace unas horas hasta hace poco el servidor principal que mantiene los archivos de los paquetes binarios y fuentes estaba caído.
Obteniendo respuesta desde http://archive.ubuntu.com/ubuntu.
<code>$ wget http://archive.ubuntu.com
--09:56:27-- http://archive.ubuntu.com/
=> `index.html'
Resolving archive.ubuntu.com... 82.211.81.151, 82.211.81.182
Connecting to archive.ubuntu.com[82.211.81.151]:80... failed: Connection refused.
Connecting to archive.ubuntu.com[82.211.81.182]:80... failed: Connection refused.</code>
En cambio, el servicio por ftp
si estaba habilitado. Obteniendo respuesta
desde ftp://archive.ubuntu.com/ubuntu
<code>$ wget ftp://archive.ubuntu.com
--09:58:24-- ftp://archive.ubuntu.com/
=> `.listing'
Resolving archive.ubuntu.com... 82.211.81.182, 82.211.81.151
Connecting to archive.ubuntu.com[82.211.81.182]:21... connected.
Logging in as anonymous ... Logged in!
==> SYST ... done. ==> PWD ... done.
==> TYPE I ... done. ==> CWD not needed.
==> PASV ... done. ==> LIST ... done.
[ < => ] 64 --.--K/s
09:58:24 (48.75 KB/s) - `.listing' saved [64]
Removed `.listing'.
Wrote HTML-ized index to `index.html' [302].</code>
Ahora bien, en este caso simplemente bastaba con cambiar la entrada http
por
ftp
en el fichero /etc/apt/sources. Para evitar cualquier tipo de
inconvenientes en el futuro, es recomendable hacer uso de sitios espejo o
mirrors.
En https://wiki.ubuntu.com/Archive encontrará toda la información necesaria, si utiliza los repositorios del proyecto Ubuntu Backport es recomendable que vea su sección de las URL de los Repositorios.
NOTA: Siempre es recomendable hacer uso de sitios espejos puesto que estos presentan menos demanda que los sitios oficiales de los proyectos.
Cambiando la ubicación del cache de apt
El día 21 de Septiembre Jorge Villarreal preguntó en la entrada Creando un repositorio local lo siguiente:
… tengo un laptop lentisimo , ahora mi pregunta ya que puedo navegar desde la oficina y en ella solo tienen windows como hago para descargar actualizaciones y llevarlas en una pen o en cd?. a como anexo en las tardes navego con cd-live ubuntu, me pregunto si podre bajar virtualmente desde ahi?
Mi respuesta es la siguiente:
Sí, en efecto puedes descargar los paquetes desde tu LiveCD de Ubuntu, de hecho, existen dos maneras para mí, las expongo a continuación.
Primer método
La primera es usar la memoria que dispones, la cual es limitada, recuerda que
los ficheros que descarga la interfaz apt
(o aptitude
) se almacenan en el
directorio /var/cache/apt/archives, como te mencione anteriormente, este método
puede ser limitado.
Veamos ahora el segundo método, te recomiendo éste porque vamos a escribir en el disco duro.
Segundo método
Ya que en la oficina utilizas Windows, el único requisito que se necesita es disponer de una partición cuyo formato de ficheros sea FAT, asumiré en el resto de mi respuesta que dicha partición se encuentra en /dev/hdb1 y se ha montado en /mnt/backup. Por lo tanto:
$ sudo mount -t vfat /dev/hdb1 /mnt/backup
Posteriormente se debe crear el fichero /etc/apt.conf, esto se puede hacer fácilmente con cualquier editor. Dicho fichero debe contener lo siguiente:
DIR "/"
{
Cache "mnt/backup/apt/" {
Archives "archives/";
srcpkgcache "srcpkgcache.bin";
pkgcache "pkgcache.bin";
};
};
Lo anterior simplemente está cambiando el directorio usual
(/var/cache/apt/archives) del cache, de ahora en adelante se estará
escribiendo de manera permanente en disco duro. Previamente debes haber creado
el directorio /mnt/backup/apt/archives/. Seguidamente tienes que crear el
fichero lock
y el directorio partial
. Resumiendo tenemos:
$ mkdir -p /mnt/backup/apt/archives/partial
$ touch /mnt/backup/apt/archives/lock
Pasos comunes en ambos métodos
Recuerda que sea cual sea el método que decidas usar, debes editar el fichero /etc/apt/sources.list, mejora la lista de repositorios que se presentan, luego de guardar los cambios en el fichero, ejecuta el siguiente comando.
$ sudo aptitude update
El comando anterior actualizará tú lista de paquetes con los que se encuentran en los repositorios que añadiste previamente. Ahora bien, para almacenar ficheros en el directorio cache haz uso del comando.
$ sudo aptitude --download-only install <em>packages</em>
Cuando me refiero a packages recuerda que son los nombres de los paquetes.
Seguidamente puedes seguir los pasos que se te indican en la entrada Creando un
repositorio local, por
supuesto, si cambias la dirección del cache que hará uso la interfaz apt
(o
aptitude
) debes hacer los ajustes necesarios. Espero te sirva la información.
Si alguien desea realizar un aporte bienvenido será.
Automatiza el uso de pastebin desde la línea de comandos
Si deseas colocar gran cantidad de código en un canal IRC, Chat o haciendo uso de la mensajería instantánea, es realmente recomendable que haga uso de un sistema pastebin, por ejemplo, pastebin.com, el cual es una herramienta colaborativa que permite depurar código.
Además, siguiendo esta metodología se evita incurrir en el conocido flood, el cual consiste en el envio de gran cantidad de información a un usuario o canal, la mayoría de las ocasiones con el fin de molestar, incluso, puede lograr desconectar a otros usuarios. Este tipo de prácticas se castigan en muchos canales IRC.
Si no está familiariazado con la idea de los sistemas pastebin, un resúmen le puede ayudar en algo:
- Envie un fragmento de código al sistema pastebin de su preferencia, obtendrá
una dirección similar a
http://pastebin.com/1234
- Informe de la URL obtenida en los canales IRC o a través de la conversación que mantenga por mensajería instantánea.
- Cualquier persona puede leer su código, a su vez, pueden enviar modificaciones de éste.
- Si no se da cuenta de las modificaciones a primera vista, puede hacer uso de las opciones que le muestran las diferencias entre los ficheros de manera detallada.
Existe un script hecho en Python que le permite de manera automática y fácil el colocar la salida del terminal o de otros programas hechos en Python al sitio de pastebin que usted prefiera.
Instalación
Ejecute los siguientes pasos:
$ wget http://www.ubuntulinux.nl/files/pastebin
$ chmod +x pastebin
$ sudo ./pastebin --install
El comando anterior instalará el script dentro del directorio /usr/bin/
con permisos de ejecución.
Uso
pastebin [--name Autor] [--pid Entrada_Padre] [--bin URL_Pastebin]
Los valores entre corchetes son opcionales, cada uno significa lo siguiente:
-
--name
: Recibe como valor el nombre del autor del código. -
--pid
: Debe usarlo cuando está dando una respuesta o corrección a alguna entrada. Normalmente es el número que le sigue inmediatamente al nombre del servidor por ejemplo: Si usted tiene una URL de este tipo,http://pastebin.com/2401
, elpid
sería2401
. -
--bin
: Recibe como valor el sistema pastebin que esté usando.
Si no desea estar especificando a todo momento el nombre del autor (--name
) y
el servicio pastebin que usa (--bin
), puede crear un fichero en
/etc/pastebinrc
o en ~/.pastebinrc
. El primero aplica a todos los usuarios y
el segundo a un usuario local. En cualquiera de los casos, dicho fichero debe
contener lo siguiente:
poster = Nombre Autor
pastebin = Servicio Pastebin
Por ejemplo, en mi caso particular, el contenido del fichero /etc/pastebinrc
es el siguiente:
poster = [MilMazz]
pastebin = paste.ubuntulinux.nl
Haciendo uso de la tubería o pipe
Colocando la salida estándar
`$ comando | pastebin`
Colocando la salida estándar y los posibles errores
`$ comando 2>&1 | pastebin`
Recuerde que debe sustituir comando
en los dos ejemplos mostrados previamente por el nombre real del comando del cual desea obtener una respuesta.
Vía: Ubuntu Blog.
Conozca la temperatura de su disco duro
Si desea conocer cual es el valor en grados centígrados de la temperatura de su
disco duro, simplemente instale el paquete hddtemp
desde el repositorio
universe
haciendo lo siguiente:
$ sudo aptitude install hddtemp
Después, siempre que desee conocer la temperatura actual de su disco duro, proceda de la siguiente manera:
$ sudo hddtemp /dev/hdb
Por supuesto, recuerde que en la línea anterior /dev/hdb
es el identificador
de mi segundo disco duro, proceda a cambiarlo si es necesario.
Mi temperatura actual en el segundo disco duro es de:
milmazz@omega:~$ sudo hddtemp /dev/hdb
/dev/hdb: ST340014A: 46°C
Antes de finalizar, es importante resaltar que hddtemp
le mostrará la
temperatura de su disco duro IDE o SCSI solamente si éstos soportan la
tecnología SMART (acrónimo de: Self-Monitoring, Analysis and Reporting
Technology).
SMART simplemente es una tecnología que de manera automática realiza un monitoreo, análisis e informes, ésta tiene un sistema de alarma que en la actualidad viene de manera predeterminada en muchos modelos de discos duros, lo anterior puede ayudarle a evitar fallas que de una u otra manera pueden afectarle de manera contundente.
En esencia, SMART realiza un monitoreo del comportamiento del disco duro y si éste presenta un comportamiento poco común, será analizado y reportado al usuario.
Vía: Ubuntu Blog.
Registro de la segunda charla en el canal #ubuntu-es
Ya se encuentra disponible el registro de la segunda charla dada en el canal #ubuntu-es del servidor FreeNode. En esta charla se discutió lo siguiente:
- Ventajas y desventajas del uso de
aptitude
frente aapt
ysynaptic
. - Resumen de comandos en
aptitude
,apt
,dpkg
. - ¿Qué es un repositorio?.
- Agregando nuevos repositorios.
- Proyecto Ubuntu Backports.
- Editando el fichero
/etc/apt/sources.list
. - Estructura de los repositorios.
- Ejemplos de uso de
aptitude
. - Como actualizar de manera segura su sistema.
- ¿Es importante la firma de paquetes?.
- ¿Como verificamos la autencidad de los paquetes?.
- Como se importa la llave pública desde un servidor GPG.
- Como se exporta la llave pública y se añade a nuestra lista de claves seguras.
- Sesión de preguntas y respuestas.
Puede ver el registro de la charla al seguir el enlace anterior.
En ubuntuchannel.org estamos haciendo todo lo posible por mejorar cada día más, si está interesado en informarse acerca de las siguientes charlas puede ver como siempre nuestra sección de Eventos.
Recientemente nos hemos dedicado a realizar una especie de listado alfabético de
los comandos en GNU/Linux, dicha información se encuentra disponible en la
sección de Comandos, si desea
colaborar, su ayuda es bien recibida, solo recuerde comunicarse previamente
conmigo, para ello puede hacer uso del formulario de
contacto, para ponernos de acuerdo al
respecto. También puede recibir información de manera interactiva acerca del
proyecto en el canal IRC #ubuntu-es
del
servidor FreeNode, sino me encuentro conectado (nick
[MilMazz]
) en ese instante puede preguntarle al operador del canal (si se
encuentra conectado claro está), P3L|C4N0
con gusto le atenderá.
Seleccionando el mejor mirror para debian
El día de ayer decidí instalar Debian Sarge en uno de los ordenadores de casa, la instalación base de maravilla, luego procedi a levantar el entorno gráfico de GNOME haciendo uso de aptitude, deje de lado muchas aplicaciones que no voy utilizar extensivamente. Mientras intento solucionar un problemita con el sonido me dispuse a indagar acerca de los repositorios que ofrece Debian.
Leyendo la lista de mirrors en el sitio
oficial de Debian se me ocurrio que debia existir una manera de medir la rapidez
de cada uno de ellos, quizá para muchos esto no es nuevo, para mí si lo es,
recien comienzo con esta
distro, aunque aún
mantengo Ubuntu (no se preocupen mis dos o tres
lectores que seguiré escribiendo acerca de esta excelente distro). Bueno, he
hecho uso de apt-spy
, este paquete hace una serie de pruebas sobre los mirrors
de debian, midiendo la su ancho de banda y su latencia.
El paquete apt-spy
por defecto reescribe el fichero /etc/apt/sources.list
con los servidores con los resultados más rápidos.
Para instalarlo simplemente hacer lo siguiente:
# aptitude install apt-spy
Leyendo el manual de esta aplicación se puede observar que existe la opción de seleccionar a cuales mirrors se les harán las pruebas de acuerdo a su localización geográfica.
Por ejemplo:
# apt-spy -d stable -a South-America -o mirror.txt
Lo anterior genera un fichero fichero, cuyo nombre será mirror.txt
, la opción
-a
indica un área, esta opción acepta los valores siguientes: Africa
,
Asia
, Europe
, North-America
, Oceania
y South-America
, aunque es
posible definir sus propias áreas. La opción -d
indica la distribución, esta
opcion acepta los valores siguiente: stable
, testing
o unstable
.
He obtenido como resultado lo siguiente:
milmazz@nautilus:~$ cat mirror.txt
deb http://ftp.br.debian.org/debian/ stable main
deb-src http://ftp.br.debian.org/debian/ stable main
deb http://security.debian.org/ stable/updates main
También he realizado una segunda prueba.
# apt-spy -d stable -e 10 -o mirror.txt
Obteniendo como respuesta lo siguiente:
milmazz@nautilus:~$ cat mirror.txt
deb http://ftp.tu-graz.ac.at/mirror/debian/ stable main
deb-src http://ftp.tu-graz.ac.at/mirror/debian/ stable main
deb http://security.debian.org/ stable/updates main
La opción -e
es para detener el análisis después de haber completado 10 (o el
número entero indicado como parámetro en dicha opción) servidores.
Me he quedado con los mirrors de Brazil (los mostrados en la primera prueba) por su cercanía geográfica, los del segundo análisis resultan ser de Austria y entran en la categoría de mirrors secundarios.
Charlas en #ubuntu-es
El día de ayer se llevo a cabo la primera de la serie de charlas que se
emitirán por el canal #ubuntu-es
del servidor FreeNode, en esta oportunidad
el ponente ha sido zodman, el tema que abordo zodman
fue acerca de Cómo montar un servidor casero haciendo uso de Ubuntu Linux como
plataforma, en el transcurrir de la charla se explico como configurar y
establecer un servidor con los siguientes servicios.
- Apache2
- MySQL
- PHP4
- FTP
- SSH
También se hablo acerca de la configuración de dominios .com, .net y .org sin hacer uso de bind, aplicando dichas configuraciones en el servidor que se está estableciendo.
Si desgraciadamente no pudo estar presente en el evento, no se preocupe, ya he habilitado un registro de la charla. Por motivos de tiempo se decidio dividir la charla en dos partes, si le interesa asistir a la segunda parte de esta charla, esté atentos a los cambios en la sección de Eventos en Ubuntuchannel.org.
LinuxMag
Después de concretar algunas negociaciones con la imprenta sale la primera edición de LinuxMag, la primera revista impresa orientada a los fanáticos de GNU/Linux en mi ciudad, por ahora la distribución es local, esperemos la mayor receptividad posible y esperamos expander, tanto en contenido como en número de ejemplares, nuestras ediciones posteriores.
Nuestra portada este mes.
¿Le ha parecido interesante lo que ha visto?, le invito a seguirnos de cerca. Si desea saber un poco más acerca de nosotros, puede consultar el uso de esta herramienta para generar covers de revistas y obtendrá muchas respuestas.
Antes de finalizar, debo agradecer públicamente a José Vicente Nuñez Zuleta, nos brindó su apoyo incondicional, este proyecto no se hubiese llevado a cabo sin su ayuda.
Versión Previa a Kubuntu Breezy
Una vez hecho el anuncio de la versión previa a Ubuntu 5.10 (Breezy Badger), era de esperarse otro anuncio por parte del proyecto relacionado Kubuntu.
¿Qué hay de nuevo en esta versión?
-
KDE 3.4.2
-
OpenOffice 2 (Beta 2)
-
X.org 6.8.2
Se incluyen otras características tentadoras, como por ejemplo editores de imágenes, una mejora en la usabilidad para el manejo de las preferencias del sistema, entre otras.
Al igual que Ubuntu, la versión previa a la salida oficial de Kubuntu Breezy está disponible tanto en CD instalable como en en LiveCD para tres arquitecturas: x86 (PC), AMD64 (PC 64 bits) y PowerPC (Mac).
Puede descargar la imagen de esta versión en Kubuntu 5.10 (Breezy Badger) Preview. Recuerde usar en la medida de lo posible BitTorrent, para evitar la sobrecarga del servidor.
Si lo desea, puede ver el anuncio de esta versión previa.
Ubuntu 5.10 (Breezy Badger)
Se anuncia la versión previa a la salida oficial de Ubuntu 5.10, cuyo nombre clave es Breezy Badger, esta versión previa incluye tanto un CD instalable como un CD en “vivo” (Live CD) para tres arquitecturas en específico: Intel x86 (PC), PowerPC (Mac) y AMD64 (PC de 64 bits).
Ubuntu Linux es una distribución orientada al escritorio, aunque también es funcional para servidores, ofrece una instalación fácil y rápida, emisión regular de nuevas versiones, selección exhaustiva de excelentes paquetes instalados de manera predeterminada, además, existe un compromiso de ofrecer actualizaciones de seguridad por un lapso de 18 meses para cada una de las versiones.
¿Qué ofrece Ubuntu 5.10 en el escritorio?
-
GNOME 2.12, cuyo lanzamiento ocurrio ¡ayer!.
-
OpenOffice.org 2.0 (beta 2).
-
X.org 6.8.2, con excelente soporte de hardware.
-
Se ofrece una herramienta que facilita enormemente la instalación de nuevas aplicaciones, se puede ver en el menú System Administration -> Add/Remove Programs
-
Una nueva herramienta (Language Selector) que le permitirá instalar fácilmente el soporte para un idioma determinado.
-
Los menús en GNOME son editables.
-
Se ofrece soporte para la grabación de CDs, se utiliza la aplicación Serpentine.
-
Ahora podrá ver una barra de progreso (USplash) mientras su sistema se inicia.
Ubuntu 5.10 tambien ofrece algunos avances en cuanto a la rama de servidores y modos de instalación, en cuanto a los avances en el soporte de hardware nos encontramos con ciertos puntos interesantes, como por ejemplo.
-
Kernel 2.6.12.5 con actualizaciones de drivers provenientes de terceras partes.
-
Mejora en el soporte de hardware para portátiles.
-
Soporte (todo en uno) para los dispositivos (impresoras y scanners) HP.
-
Soporte para dispositivos Bluetooth de entrada (como teclados o ratones).
-
Mejoras en cuanto al manejo de dispositivos de sonido.
-
Disponibilidad del kernel para la arquitectura PowerPC (64 bits).
Puede seleccionar una imagen de la versión previa a la salida oficial de Ubuntu 5.10 al seguir el enlace Ubuntu 5.10 (Breezy Badger) Preview, si es posible realice la descarga usando Bittorrent, evitando la sobrecarga de los servidores.
COMO actualizar de manera segura su sistema
Antes de comenzar es importante hacer notar que esta guía se enfocará al mundo Debian GNU/Linux y sus derivadas, en donde por supuesto se incluye Ubuntu Linux. Después de hacer la breve aclaratoria podemos comenzar.
¿Es importante la firma de los paquetes?
La firma de los paquetes es una funcionalidad fundamental para evitar el posible cambio adrede en los ficheros binarios o fuentes distribuidos a través de sitios espejos (mirrors), de esta manera nos libramos de la posibilidad de un ataque man in the middle, el cual básicamente consiste en la intercepción de la comunicación entre el origen y el destino, el atacante puede leer, insertar y modificar los mensajes (en este caso particular, los ficheros) compartidos entre las partes sin que cada una de ellas se percate que la comunicación se ha visto comprometida.
Nuestro objetivo
Un sistema automatizado de actualización de paquetes, también es sumamente importante eliminar cualquier posibilidad de amenaza que pueda surgir al aprovecharse de la automatización del proceso de actualización, por ejemplo, debemos evitar a toda costa la distribución de troyanos que comprometarán la integridad de nuestros sistemas.
Un poco de historia…
No fue sino hasta la aparición de la versión 0.6 de la interfaz apt
en donde se realiza la autenticación de ficheros binarios y fuentes de manera transparente haciendo uso de una Infraestructura de clave pública (en inglés, Public Key Infrastructure o PKI). La PKI se basa en el modelo GNU Privacy Guard (GnuPG) y se ofrece un enorme despliegue de keyservers internacionales.
Detectando la autenticidad de los paquetes
Como se menciono anteriormente desde la versión 0.6 de la interfaz apt
se maneja de manera transparente el proceso de autentificación de los paquetes. Asi que vamos a hacer una prueba, voy a simular la instalación del paquete clamav
.
$ sudo aptitude --simulate install clamav
Obteniendo por respuesta lo siguiente:
Leyendo lista de paquetes... Hecho
Creando árbol de dependencias
Leyendo la información de estado extendido
Inicializando el estado de los paquetes... Hecho
Se instalarán automáticamente los siguientes paquetes NUEVOS:
arj clamav-base clamav-freshclam libclamav1 libgmp3 unzoo
Se instalarán los siguiente paquetes NUEVOS:
arj clamav clamav-base clamav-freshclam libclamav1 libgmp3 unzoo
0 paquetes actualizados, 7 nuevos instalados, 0 para eliminar y 0 sin actualizar.
Necesito descargar 3248kB de ficheros. Después de desempaquetar se usarán 4193kB.
¿Quiere continuar? [Y/n/?] Y
The following packages are not AUTHENTICATED:
clamav clamav-freshclam clamav-base libclamav1
Do you want to continue? [y/N] N
Cancela.
Si nos fijamos bien en la respuesta anterior notaremos que ciertos paquetes no han podido ser autentificados. A partir de este punto es responsabilidad del administrador del sistema el instalar o no dichos paquetes, por supuesto, cada quien es responsable de sus acciones, yo prefiero declinar mi intento por el momento y asegurarme de la autenticidad de los paquetes, para luego proceder con la instalación normal.
Comienza la diversión
Ahora bien, vamos a mostrar la secuencia de comandos a seguir para agregar las llaves públicas dentro del keyring por defecto. Antes de entrar en detalle es importante aclarar que el ejemplo agregará la llave pública del grupo os-cillation, quienes se encargan de mantener paquetes para el entorno de escritorio Xfce (siempre actualizados y manera no-oficial) para la distribución Debian GNU/Linux (también sirven para sus derivadas, como por ejemplo Ubuntu Linux).
Importando la llave pública desde un servidor GPG
$ gpg --keyserver hkp://wwwkeys.eu.pgp.net --recv-keys 8AC2C0A6
El comando anterior simplemente importara la llave especificada (8AC2C0A6
) desde el servidor con el cual se ha establecido la comunicación, el valor de la opción --keyserver
sigue cierto formato, el cual es: esquema:[//]nombreservidor[:puerto]
, los valores ubicados entre corchetes son opcionales, cuando hablamos del esquema nos referimos al tipo de servidor, regularmente utilizaremos como esquema hkp
para servidores HTTP o compatibles.
Si el comando anterior se ejecuto de manera correcta, el proceso nos arrojará una salida similar a la siguiente:
gpg: key 8AC2C0A6: public key "os-cillation Debian Package Repository
(Xfld Package Maintainer) <[email protected]>" imported
La instrucción anterior solamente variará de acuerdo al keyserver
y la clave que deseemos importar. En www.pgp.net está disponible un buscador que le facilitará la obtención de los datos necesarios.
Exportando y añadiendo la llave pública
$ gpg --armor --export 8AC2C0A6 | sudo apt-key add -
Con el comando anterior procedemos a construir la salida en formato ASCII producto de la exportación de la llave especificada y a través del pipe capturamos la salida estándar y la utilizamos como entrada estándar en el comando apt-key add
, el cual simplemente agregará una nueva llave a la lista de llaves confiables, dicha lista puede visualizarse al hacer uso del comando apt-key list
.
Aunque parezca evidente la aclaratoria, recuerde que si usted no puede hacer uso de sudo, debe identificarse previamente como superusuario.
Finalmente…
Para finalizar recuerde que debe actualizar la lista de paquetes.
$ sudo aptitude update
Ahora podemos proceder a instalar los paquetes desde el repositorio que hemos añadido como fuente confiable.
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
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
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:
- Acceder a la interfaz del phpMyAdmin, para lograrlo escribe en la barra de direcciones de tu navegador http://localhost/phpmyadmin.
- Selecciona la opción de Privilegios, ésta se ubica en el menú principal.
- 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.
- 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.
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.
Beagle
Beagle es una poderosa herramienta de búsqueda escrita en C# usando Mono y Gtk# que le permitirá buscar hasta en lo más recóndito de su espacio personal y de esta manera encontrar lo que está buscando. Beagle también puede buscar en distintos dominios.
Usando Beagle ud. fácilmente podrá encontrar.
- Documentos.
- Correos electrónicos.
- Historial web.
- Conversaciones de Mensajería Instantánea o del IRC.
- Código fuente.
- Imagénes.
- Ficheros de audio.
- Aplicaciones.
- Otros…
Beagle puede extraer información desde:
- Evolution, tanto los correos electrónicos como de la libreta de contactos.
- Gaim, desde los registros de mensajería instantánea.
- Firefox, páginas web.
- Blam y Liferea, agregadores RSS.
- Tomboy, notas.
De manera adicional Beagle soporta los siguientes formatos.
- OpenOffice.org
- Microsoft Office (
doc
,ppt
,xls
). - HTML.
- PDF.
- Imágenes (jpeg, png).
- Audio (mp3, ogg, flac).
- AbiWord.
- Rich Text Format (RTF).
- Texinfo.
- Páginas del manual (man pages).
- Código Fuente (C, C++, C#, Fortran, Java, JavaScript, Pascal, Perl, PHP, Python).
- Texto sin formato.
Beagle aún se encuentra en una etapa temprana de desarrollo, así que aún faltan muchas características que le darían un plus a esta herramienta, por ejemplo, agregar el soporte a los sistemas de ficheros: NFS, Reiser4, NTFS y FAT.
En el caso de los sistemas de ficheros tipo FAT, muchos usuarios aún emplean este tipo de particiones para compartir datos entre los mundos GNU/Linux y Windows, por lo que sería conveniente el hecho de agregar esta funcionalidad a esta estupenda herramienta.
Si desea comenzar con esta herramienta, le recomiendo leer los primeros pasos del wiki de Beagle. A los usuarios de Ubuntu Linux le recomiendo la serie de pasos mostrados en el tema ¿Cómo instalar el buscador Beagle? de guia-ubuntu.org.
Existen algunas demostraciones sobre el uso de Beagle, propuestas por Nat Friedman, en una de ellas se podrá apreciar la funcionalidad de “búsqueda en vivo”, para ello es necesario activar el soporte de Inotify.
Inotify es un sistema de notificación de ficheros para el núcleo (kernel) de Linux. Actualmente esta característica no es incluida en la serie estable del núcleo de Linux, por lo que es muy probable que deba añadir esta característica al núcleo por si solo para poder utilizarlo. Existen algunas versiones del núcleo para distribuciones que si incluyen el soporte a Inotify.
Beagle como tal no requiere de Inotify para funcionar, solamente se recomienda su uso puesto que mejora la experiencia del usuario. Sin el soporte de Inotify, Beagle no podrá detectar automáticamente (en vivo) todos los cambios en su directorio personal, por lo que no podrá indexar los datos de manera oportuna.
De manera oportuna, los usuarios de Ubuntu Linux tienen cierta ventaja, no será necesario reparar el núcleo ni compilarlo, solamente hay que añadir la opción de Inotify en el fichero de configuración de Grub, de la manera siguiente:
$ sudo vi /boot/grub/menu.lst
title Ubuntu, kernel 2.6.10-5-k7
root (hd0,5)
kernel /vmlinuz-2.6.10-5-k7 root=/dev/hda8 ro quiet splash <strong>inotify</strong>
initrd /initrd.img-2.6.10-5-k7
savedefault
boot
Luego de hacer los cambios al fichero de configuración del gestor de arranque Grub, procedemos a actualizarlo.
$ sudo update-grub
Si utilizas Firefox y deseas que Beagle indexe las páginas que vas navegando, seguramente desearás instalar esta extensión.
ImageMagick
ImageMagick, es una suite de software libre, sirve para crear, editar y componer imágenes en mapa de bits. Puede leer, convertir y crear imágenes en una larga variedad de formatos (más de 90 formatos soportados). Las imágenes pueden ser cortadas, los colores pueden ser cambiados, ciertos efectos pueden ser aplicados, las imágenes pueden rotadas y combinadas, se pueden agregar a las imágenes, textos, líneas, polígonos, elipses, entre otros.
Es una suite realmente potente bajo la línea de comandos, puede ver una serie de ejemplos, esto le demostrará lo que puede llegar a hacer con esta eficaz aplicación.
Esta herramienta me ha facilitado enormemente el procesamiento de gran cantidad de imágenes que requieren el mismo tratamiento, solamente con una línea de comandos voy a establecer todas las opciones que deseo. Por ejemplo:
convert origen.jpg -resize 50% -bordercolor "#666"
-border 4 destino.png
Imagen Original -> Imagen modificada con ImageMagick.
Con esta simple línea de comandos estoy realizando las siguientes conversiones sobre la imagen origen.jpg, en primer lugar estoy reduciendo las proporciones de anchura y altura al 50%, posteriormente estoy designando el color del borde al valor hexadecimal (#666, gris), el ancho de dicho borde será de 4px, finalmente estoy cambiando el formato de la imagen, estoy convirtiendo de jpg a png, los resultados se podrán apreciar en la imagen destino.png. Ahora bien, imagínese procesar 500 imágenes desde una aplicación con interfaz gráfica que le brinde la rapidez que le ofrece ImageMagick, creo que hasta la fecha es imposible, por lo que resulta un buen recurso el emplear esta herramienta para el procesamiento de grandes lotes de imágenes.
Ahora vamos a “jugar” un poco para colocar una “marca de agua” a la imagen en cuestión.
convert origen.jpg -resize 50% -bordercolor "#666"
-border 4 -font "Bitstream Vera Sans" -pointsize 16 -gravity SouthEast
-fill "#FFF" -draw "text 10,10 'http://blog.milmazz.com.ve'" destino.png
Imagen Original -> Imagen modificada con ImageMagick.
Esta vez el número de opciones que he empleado han aumentado ligeramente. Vamos
a explicar brevemente cada una de ellas, la opción font nos permite elegir una
fuente, en el ejemplo he escogido la fuente Bitstream Vera Sans, la opción
pointsize permite escoger el tamaño de la fuente, la opción gravity nos permite
establecer la colocación horizontal y vertical del texto, he elegido la
primitiva SouthEast, la cual colocará el texto en la parte inferior derecha de
la imagen, la opción fill me permite establecer el color de relleno del texto
que se dibujará con la opción draw, esta última opción escribirá la cadena
http://blog.milmazz.com.ve
.
Para mayor información acerca de las distintas opciones que puede manejar le recomiendo leer detenidamente la descripción de las herramientas en línea de comando de ImageMagick.
Elizabeth Garbeth
Elizabeth Garbeth, una niña de apenas 13 años de edad, dará este año una presentación en una conferencia de GNU/Linux en Australia, su presentación es Extending Tuxracer - Learning by Playing. En este seminario, Elizabeth describirá como crear nuevos recorridos para competir en Tuxracer y demostrará los pasos que están envueltos para realizar tal operación.
A pesar de los pocos años que ha vivido Elizabeth, ha tenido bastante contacto con los ordernadores y el mundo GNU/Linux desde muy pequeña, su historia es realmente impresionante.
I have had my own computer since I turned two. By the time I was nine, my computer ran Debian… and before I turned ten my dad convinced me to install Debian for him on the server that became raff.debian.org. That just proves that installing Debian really isn’t very hard, particularly when my Dad is around to answer questions! I also play the violin, am treasurer of my 4H club, and have performed in musicals at my school.
Bdale Garbee, Linux CTO para HP y sirve como lider del proyecto Debian, es el padre de Elizabeth, así que se podrán imaginar la influencia que ha generado éste en su hija, de hecho, Bdale le planteó el reto a su hija de aprender a como crear sus propios recorridos en el juego Tuxracer, puesto que Elizabeth le dijo que al igual que muchos juegos de computadora, al inicio Tuxracer es divertido, pero que eventualmente te fue cansando de recorrer los mismos caminos de siempre. Elizabeth no solamente cumplió el reto planteado por su padre, sino que ahora hará una presentación sobre ello.
deborphan, eliminando librerias huérfanas
deborphan simplemente se encarga de buscar librerias huérfanas. Se mostrará un listado de paquetes que posiblemente no fueron desinstalados en su momento y que actualmente no son requeridas en el sistema por ningún otro paquete o aplicación. Esta aplicación es realmente útil para mantener “limpio” el sistema en caso de ser necesario.
Para instalar deborphan en nuestro sistema simplemente debe proceder como sigue:
sudo apt-get install deborphan
Para remover todos los paquetes huérfanos encontrados simplemente debemos proceder como sigue:
sudo deborphan | sudo xargs apt-get remove -y
Esta aplicación me ha sido realmente útil, sobretodo por la reciente actualización que he realizado en la versión mi distribución Ubuntu Linux, la versión anterior era Warty Warthog (v.4.10), la nueva es Hoary Hedgehog (v.5.04). En dicha actualización ocurrieron muchos “rompimientos” de dependencias, muchas librerias quedaron huérfanas, con esta aplicación he depurado el sistema.
Renombrando ficheros con rename
Si ud. es una de esas personas que al igual que yo le gusta ahorrar tiempo en
esas tareas cotidianas que a veces se convierten en algo aburridas por lo
repetitivas que suelen ser, seguramente este breve artículo acerca del uso de
rename
le va a interesar, puedo asegurarle que le facilitará la vida, claro,
siempre y cuando ud. regularmente modifique nombres de ficheros. Seguramente se
ha encontrado alguna vez que el formato de nombres de los ficheros de audio
(p.ej. mp3) no le parece el adecuado, en estas situaciones lo más recomendable
es recurrir a rename
, ya que éste último le automátizara el renombrado de los
ficheros al indicarle un parámetro, el cual será una expresión regular de Perl.
Algunos ejemplos de esto son los siguientes:
milton@omega ~ $ ls
01 - Main Theme From Star Wars & Leia's Nightmare.mp3
milton@omega ~ $ rename 's/\ -\ /-/' *.mp3
Obtenemos como resultado lo siguiente:
milton@omega ~ $ ls
01-Main Theme From Star Wars & Leia's Nightmare.mp3
Como pudo haberse dado cuenta el comando rename 's/\ -\ /-/' *.mp3
simplemente
sustituyó la cadena “ - “ por ‘-‘, recuerde que los espacios en sistemas
GNU/Linux son “carácteres especiales”, por lo tanto, al carácter debe
precederle una barra invertida (**), los ficheros que modificará son aquellos
que posean la extensión **mp3.
También puede notar que en el nombre del fichero anterior aún existen espacios en blanco, si deseamos convertir dichos espacios en blanco por el carácter ‘_’, simplemente realizamos lo siguiente:
milton@omega ~ $ rename 'y/\ /_/' *.mp3<br></br>
milton@omega ~ $ ls<br></br>
01-Main_Theme_From_Star_Wars_&_Leia's_Nightmare.mp3
Como puede darse cuenta, el comando rename 'y/\ /_/' *.mp3
sustituirá
todos los carácteres que representan los espacios en blanco por el carácter ‘-‘
en todos los nombres ficheros con extensión mp3.
Otra posibilidad interesante que tenemos es la de convertir todos los carácteres en mayúsculas a mínusculas y viceversa.
milton@omega ~ $ ls
10_MOS_EISLEY_SPACEPORT.mp3
milton@omega ~ $ rename -v 'y/A-Z/a-z/' *.mp3
10_MOS_EISLEY_SPACEPORT.mp3 renamed as 10_mos_eisley_spaceport.mp3
Como vemos, el cambio es realmente sencillo, al utilizar la opción -v simplemente estamos habilitando la impresión de los nombres de los archivos que se han modificado correctamente, esta opción es bastante útil para percatarnos de los cambios que se han generado.
Este tratamiento también es aplicable para renombrar directorios, recuerde que los directorios en sistemas GNU/Linux son tratados de manera equivalente a los archivos, así que vamos a mostrar un ejemplo para aclarar la situación.
milton@omega ~ $ ls
Shadows of the Empire
Star Wars A New Hope
Star Wars Attack Of The Clones
Star Wars Return of the Jedi
Star Wars The Empire Striks Back
Star Wars The Phantom Menace
Arriba vemos los directorios que representan la mayoría de los álbumes de la colección de Star Wars, por comodidad, regularmente suelo hacer una estructura similar a la siguiente: Music » Artista » Título del Álbum » #Pista-Nombre de la Pista. Por lo que los títulos de los álbumes deben ser especificos, no deben contener el nombre del artista. En mi caso he cambiado los nombres de los directorios de la siguiente manera:
milton@omega ~ $ rename -v 's/Star\ Wars\ //' *
Star Wars A New Hope renamed as A New Hope
Star Wars Attack Of The Clones renamed as Attack Of The Clones
Star Wars Return of the Jedi renamed as Return of the Jedi
Star Wars The Empire Striks Back renamed as The Empire Striks Back
Star Wars The Phantom Menace renamed as The Phantom Menace
En el ejemplo anterior simplemente se ha eliminado la cadena “Star Wars “. Es de suponer que el directorio Shadows of the Empire no será renombrado ya que no cumple con las pautas necesarias.
Es importante aclarar, que éste no es el único método existente para la
modificación de los nombres de los ficheros, existen muchos otros, pero desde mi
punto de vista, el uso de rename
me parece bastante adecuado y fácil de
implantar.
Software
Subversion: Notificaciones vía correo electrónico
Al darse un proceso de desarrollo colectivo es recomendable mantener una o varias listas de notificación acerca de los cambios hechos (commits) en el repositorio de código fuente. Para este tipo de actividades es muy útil emplear SVN::Notify
.
SVN::Notify
le ofrece un número considerable de opciones, a continuación resumo algunas de ellas:
- Obtiene información relevante acerca de los cambios ocurridos en el repositorio Subversion.
- Realiza análisis sobre la información recolectada y brinda la posibilidad de reconocer distintos formatos vía filtros (Ej. Textile, Markdown, Trac).
- Puede obtener la salida tanto en texto sin formato como en XHTML.
- Le brinda la posibilidad de construir correos electrónicos en base a la salida obtenida.
- Permite el envío de correo, ya sea por el comando
sendmail
o SMTP. - Es posible indicar el método de autenticación ante el servidor SMTP.
Para instalar el SVN::Notify
en sistemas Debian o derivados proceda de la siguiente manera:
# aptitude install libsvn-notify-perl
Una vez instalado SVN::Notify
, es hora de definir su comportamiento. Aunque es posible hacerlo vía comando svnnotify
y empotrarlo en un script escrito en Bash he preferido hacerlo en Perl, es más natural y legible hacerlo de este modo.
#!/usr/bin/perl -w
use strict;
use SVN::Notify;
my $path = $ARGV[0];
my $rev = $ARGV[1];
my %params = (
repos_path => $path,
revision => $rev,
handler => 'HTML::ColorDiff',
trac_url => 'http://trac.example.com/project',
filters => ['Trac'],
with_diff => 1,
diff_switches => '--no-diff-added --no-diff-deleted',
subject_cx => 1,
strip_cx_regex => [ '^trunk/', '^branches/', '^tags/' ],
footer => 'Administrado por: BOFH ',
max_sub_length => 72,
max_diff_length => 1024,
from => '[email protected]',
subject_prefix => '[project]',
smtp => 'smtp.example.com',
smtp_user => 'example',
smtp_pass => 'example',
);
my $developers = '[email protected]';
my $admins = '[email protected]';
$params{to_regex_map} = {
$developers => '^trunk|^branches',
$admins => '^tags|^trunk'
};
my $notifier = SVN::Notify->new(%params);
$notifier->prepare;
$notifier->execute;
Si seguimos con el ejemplo indicado en el artículo anterior, Instalación básica de Trac y Subversion, este hook lo vamos a colocar en /srv/svn/project/hooks/post-commit
, dicho fichero deberá tener permisos de ejecución para el Servidor Web Apache.
Con este sencillo script en Perl se ha logrado lo siguiente:
- La salida se generará en XHTML.
- Las diferencias de código serán resaltadas o coloreadas, esto es posible por el handler
SVN::Notify::ColorDiff
- El sistema de notificación está integrado a la sintaxis de enlaces de Trac. Por lo tanto, los commits que posean este tipo de enlaces serán interpretados correctamente. Ej.
#123 changeset:234 r234
Aunque el código es sucinto y claro, trataré de resumir cada uno de los parámetros utilizados.
-
repos_path
: Define la ruta al repositorio Subversion, la cual es obtenida a partir del primer argumento que pasa Subversion al ejecutar el hookpost-commit
. -
revision
: El número de la revisión del commit actual. El número de la revisión se obtiene a partir del segundo argumento que pasa Subversion al ejecutar el hookpost-commit
-
handler
: Especifica una subclase deSVN::Notify
que será utilizada para el manejo de las notificaciones. En el ejemplo se hace uso deHTML::ColorDiff
, el cual permite colorear o resaltar la sintaxis del comandosvnlook diff
-
trac_url
: Este parámetro será usado para generar enlaces al Trac para los números de revisiones y similares en el mensaje de notificación. -
filters
: Especifica la carga de más módulos que terminan de difinir la salida de la notificación. En el ejemplo, se hace uso del filtroTrac
, filtro que convierte el log del commit que cumple con el formato de Trac a HTML. -
with_diff
: Valor lógico que especifica si será o no incluida la salida del comandosvnlook diff
en la notificación vía correo electrónico. -
diff_switches
: Permite el pase de opciones al comandosvnlook diff
, en particular recomiendo utilizar--no-diff-deleted
y--no-diff-added
para evitar ver las diferencias para los archivos borrados y añadidos respectivamente. -
subject_cx
: Valor lógico que indica si incluir o nó el contexto del commit en la línea de asunto del correo electrónico de notificación. -
strip_cx_regex
: Acá se indican las expresiones regulares que serán utilizadas para eliminar información del contexto de la línea de asunto del correo electrónico de notificación. -
footer
: Agrega la cadena definida al final del cuerpo del correo electrónico de notificación -
max_sub_length
: Indica la longitud máxima de la línea de asunto del correo electrónico de notificación. -
max_diff_length
: Máxima longitud deldiff
(esté adjunto o en el cuerpo de la notificación). -
from
: Define la dirección de correo que será usada en la líneaFrom
. Si no se especifica será utilizado el nombre de usuario definido en el commit, esta información se obtiene vía el comandosvnlook
. -
subject_prefix
: Define una cadena de texto que será el prefijo de la línea correspondiente al asunto del correo electrónico de notificación. -
smtp
: Indica la dirección para el servidor SMTP que el cual se enviarán las notificaciones de correo electrónico. Si no se utiliza este parámetro,SVN::Notify
utilizará el comandosendmail
para el envío del mensaje. -
smtp_user
: El nombre de usuario para la autenticación SMTP. -
smtp_pass
: Contraseña para la autenticación SMTP -
to_regex_map
: Este parámetro contiene un hash que mantiene referencias de direcciones de correo electrónico contra expresiones regulares. La idea es enviar las notificaciones si y solo si el nombre de uno o más directorios son afectados por un commit y dicha ruta coincide con las expresiones regulares definidas. Este parámetro resulta muy útil en proyectos de desarrollo de software grandes y donde es posible disponer de varias listas de correo para informar a los desarrolladores interesados en secciones específicas. Para mayor detalle de las opciones mencionadas previamente veaSVN::Notify
, acá también encontrará más opciones de configuración.
Observación
Hasta ahora he encontrado que el coloreado o resaltado de la sintaxis no funciona en algunos sistemas Webmail, como por ejemplo Gmail, SquirrelMail. Sin embargo, en otros sistemas Webmail como RoundCube si funciona. Este comportamiento se presenta porque en sistemas como Gmail las hojas de estilos en cascada (CSS) internas no son aplicadas en la interfaz. Es por ello que en estos casos es necesario recurrir a la definición de estilos en línea.
Instalación básica de Trac y Subversion
En este artículo se pretenderá mostrarle el proceso de instalación de un ambiente de desarrollo que le permitirá hacerle seguimiento a su proyecto personal, de igual manera se le indicará el modo en el cual puede comenzar a utilizar un sistema de control de versiones. Todas las indicaciones mostradas en este documento han sido probadas en la distribución Debian GNU/Linux 5.0 (nombre código Lenny).
La herramienta de seguimiento o manejo del proyecto que se procederá a instalar es Trac, el sistema de control de versiones que se presentará será Subversion. Todo lo anterior se presentará vía Web haciendo uso del servidor Apache, de manera adicional se utilizará el servidor de bases de datos PostgreSQL como backend de Trac.
Dependencias
En primer lugar proceda a instalar las siguientes dependencias.
# aptitude install apache2 \
libapache2-mod-python \
postgresql \
subversion \
python-psycopg2 \
libapache2-svn \
python-subversion \
trac
La versión de Trac que se encuentra en los archivos de Debian Lenny es estable (0.11.1). Sin embargo, si usted compara esta versión con lo publicado en el sitio oficial de Trac, podrá encontrar que existen nuevas versiones estables de mantenimiento que contienen correcciones a errores de programación y algunas nuevas funcionalidades de bajo impacto, para el momento de la redacción de este artículo se encuentra la versión 0.11.7. Es recomendable que utilice el paquete trac
desde el archivo backports de Debian.
# aptitude -t lenny-backports install trac
Si desea usar el paquete proveniente del archivo backports le recomiendo leer las instrucciones de uso de este repositorio de paquetes.
Con el fin de mantener este artículo lo más sencillo y conciso posible se describirá la versión que viene por defecto con la distribución utilizada en este caso.
Versión de desarrollo de Trac
Si desea conocer algunas características interesantes que se han agregado a Trac en las nuevas versiones, o si su interés particular es
examinar las bondades que le ofrece Trac en su versión de desarrollo puede hacer uso del comando pip
, si no tiene instalado pip proceda como sigue:
# aptitude install python-setuptools
# easy_install pip
Proceda a instalar la versión de desarrollo de Trac.
# pip install https://svn.edgewall.org/repos/trac/trunk
Creación de usuario y base de datos
Antes de proceder con la instalación de Trac se debe establecer el usuario y la base de datos que se utilizará para trabajar.
En el siguiente ejemplo el usuario de la base de datos PostgreSQL que utilizará Trac será trac_user
, su contraseña será trac_passwd
. El uso de la contraseña lo del usuario trac_user
lo veremos más tarde al proceder a configurar el ambiente de Trac.
# su postgres
$ createuser \
--no-superuser \
--no-createdb \
--no-createrole \
--pwprompt \
--encrypted trac_user
Enter password for new role:
Enter it again:
CREATE ROLE
Nótese que se debe utilizar el usuario postgres
(u otro usuario con los privilegios necesarios) del sistema para proceder a crear los usuarios.
Ahora procedemos a crear la base de datos trac_dev
, cuyo dueño será el usuario trac_user
.
$ createdb --encoding UTF8 --owner trac_user trac_dev
Ambiente de Trac
Creamos el directorio /srv/www
que será utilizado para prestar servicios Web, para mayor referencia acerca de esta elección se le recomienda leer el documento Filesystem Hierarchy Standard en su versión 2.3.
$ sudo mkdir -p /srv/www
$ cd /srv/www
Generamos el ambiente de Trac. Básicamente se deben contestar ciertas preguntas como:
- Nombre del proyecto.
- Enlace con la base de datos que se utilizará.
- Sistema de control de versiones a utilizar (por defecto será SVN).
- Ubicación absoluta del repositorio a utilizar.
- Ubicación de las plantillas de Trac.
En el siguiente ejemplo se omitirán los comentarios brindados por el comando trac-admin
.
# trac-admin project initenv
Creating a new Trac environment at /srv/www/project
...
Project Name [My Project]> Demo
...
Database connection string [sqlite:db/trac.db]>
postgres://trac_user:trac_passwd@localhost:5432/trac_dev
...
Repository type [svn]>
...
Path to repository [/path/to/repos]> /srv/svn/project
...
Templates directory [/usr/share/trac/templates]>
Creating and Initializing Project
Installing default wiki pages
...
---------------------------------------------------------
Project environment for 'Demo' created.
You may now configure the environment by editing the file:
/srv/www/project/conf/trac.ini
...
Congratulations!
Se ha culminado la instalación del ambiente de Trac, ahora procederemos a crear el ambiente de subversion.
Subversion: Sistema Control de Versiones
La puesta a punto del sistema de control de versiones es bastante sencilla, se resume en los siguientes pasos.
Creación del espacio para prestar el servicio SVN, de igual manera se seguirá los lineamientos planteados en el FHS v2.3 mencionado previamente.
# mkdir -p /srv/svn
Seguidamente crearemos el proyecto subversion project
y haremos un importe inicial con la estructura básica de un proyecto de desarrollo de software.
$ cd /srv/svn
# svnadmin create project
$ mkdir -p /tmp/project/{trunk,tags,branches}
$ tree /tmp/project/
/tmp/project/
├── branches
├── tags
└── trunk
# svn import /tmp/project/ \
file:///srv/svn/project/ \
-m 'Importe inicial'
Adding /tmp/project/trunk
Adding /tmp/project/branches
Adding /tmp/project/tags
Committed revision 1.
Apache: Servidor Web
Es hora de configurar los sitios virtuales que utilizaremos tanto para Trac como para subversion.
A continuación se presenta la configuración básica de Trac.
# cat > /etc/apache2/sites-available/trac.example.com <<EOF
> <VirtualHost *>
> ServerAdmin webmaster@localhost
> ServerName trac.example.com
> CustomLog /var/log/apache2/trac.example.com/access.log combined
> ServerSignature Off
> ErrorLog /var/log/apache2/trac.example.com/error.log
> LogLevel warn
> DocumentRoot /srv/www/project
> <Location />
> SetHandler mod_python
> PythonInterpreter main_interpreter
> PythonHandler trac.web.modpython_frontend
> PythonOption TracEnv /srv/www/project
> PythonOption TracUriRoot /
> </Location>
> </VirtualHost>
> EOF
Ahora veamos la configuración básica de nuestro proyecto subversion.
# cat > /etc/apache2/sites-available/svn.example.com <<EOF
> <VirtualHost *>
> ServerAdmin webmaster@localhost
> ServerName svn.example.com
> CustomLog /var/log/apache2/svn.example.com/access.log combined
> ServerSignature Off
> ErrorLog /var/log/apache2/svn.example.com/error.log
> LogLevel warn
> DocumentRoot /srv/svn/project
> <Location />
> DAV svn
> SVNPath /srv/svn/project
> </Location>
> </VirtualHost>
> EOF
De acuerdo a la configuración mostrada es necesario crear los directorios /var/log/apache2/svn.example.com
y /var/log/apache2/trac.example.com
para mantener por separado el registro de accesos y errores de los sitios virtuales recién creados. De
lo contrario no podremos iniciar el servidor Web Apache.
# mkdir /var/log/apache2/{svn,trac}.example.com
Activamos el módulo DAV
necesario para cumplir con la configuración mostrada para el sitio virtual svn.example.com
.
# a2enmod dav
Activamos los sitios virtuales recién creados.
# a2ensite trac.example.com
# a2ensite svn.example.com
Como la puesta en marcha y configuración de un servidor DNS escapa a los fines de este artículo, simplemente definiremos los hosts en la tabla estática que se encuentra definida en el archivo /etc/hosts
de la siguiente manera.
# cat >> /etc/hosts <<EOF
> 127.0.0.1 trac.example.com trac
> 127.0.0.1 svn.example.com svn
> EOF
Finalmente debemos forzar la recarga de la configuración del servidor Web Apache, esto con el fin de cargar el módulo DAV
y los sitios virtuales definidos, es decir, trac.example.com
y svn.example.com
.
# /etc/init.d/apache2 force-reload
¡Felicitaciones!, ya puede ir a su navegador favorito y colocar cualquiera de los sitios virtuales que acaba de definir.
Recomendaciones
Una vez que haya llegado a este sección deberá comenzar a modificar adecuadamente los permisos para el usuario y grupo www-data
(Servidor Web Apache) para que escriba en las ubicaciones que sea necesario tanto en Trac como en subversion.
La configuración de Trac podrá encontrarla en /srv/www/project/conf/trac.ini
, para mayor detalle acerca de la configuración de este fichero se le recomienda leer el documento TracIni.
Si en su proyecto prevé que participarán otras personas, es recomendable establecer notificaciones de tickets y cambios en el
repositorio subversion, para esto último deberá revisar el hook post-commit
y la documentación del paquete libsvn-notify-perl que le ofrece una extraordinaria cantidad de opciones.
Conozca el entorno de Trac y Subversion. Si desea agregar nuevas funciones a su instalación le recomiendo visitar el sitio Trac Hacks.
Espero poder mostrarles en próximos artículos algunas configuraciones más avanzadas en Trac, incluyendo la instalación, configuración y uso de plugins.
Sistema de manejo y seguimiento de proyectos: Trac
Trac es un sistema multiplataforma desarrollado y mantenido por Edgewall Software, el cual está orientado al seguimiento y manejo de proyectos de desarrollo de software haciendo uso de un enfoque minimalista basado en la Web, su misión es ayudar a los desarrolladores a escribir software de excelente calidad mientras busca no interferir con el proceso y políticas de desarrollo. Incluye un sistema wiki que es adecuado para el manejo de la base de conocimiento del proyecto, fácil integración con sistemas de control de versiones ((Por defecto Trac se integra con subversion)). Además incluye una interfaz para el seguimiento de tareas, mejoras y reporte de errores por medio de un completo y totalmente personalizable sistema de tickets, todo esto con el fin de ofrecer una interfaz integrada y consistente para acceder a toda información referente al proyecto de desarrollo de software. Además, todas estas capacidades son extensibles por medio de plugins o complementos desarrollados específicamente para Trac.
Breve historia de Trac
El origen de Trac no es una idea original, algunos de sus objetivos se basan en los diversos sistemas de manejo y seguimiento de errores que existen en la actualidad, particularmente del sistema CVSTrac y sus autores.
Trac comenzó como la reimplementación del sistema CVSTrac en el lenguaje de programación Python y como ejercicio de entretenimiento, además de utilizar la base de datos embebida SQLite ((Hoy día también se le da soporte a PostgreSQL, mayor detalle en Database Backend)). En un corto lapso de tiempo, el alcance de estos esfuerzos iniciales crecieron en gran medida, se establecieron metas y en el presente Trac presenta un curso de desarrollo propio.
Los desarrolladores de Edgewall Software esperan que Trac sea una plataforma viable para explorar y expandir el cómo y qué puede hacerse con sistemas de manejo de proyectos de desarrollo de software basados en sistemas wiki.
Características de Trac
A continuación se presenta una descripción breve de las distintas características de Trac.
Herramienta de código abierto para el manejo de proyectos
Trac es una herramienta ligera para el manejo de proyectos basada en la Web, desarrollada en el lenguaje de programación Python. Está enfocada en el manejo de proyectos de desarrollo de software, aunque es lo suficientemente flexible para usarla en muchos tipos de proyectos. Al ser una herramienta de código abierto, si Trac no llena completamente sus necesidades, puede aplicar los cambios necesarios usted mismo, escribir complementos o plugins, o contratar a alguien calificado que lo haga por usted.
Sistema de tickets
El sistema de tickets le permite hacer seguimiento del progreso en la resolución de problemas de programación particulares, requerimientos de nuevas características, problemas e ideas, cada una de ellas en su propio ticket, los cuales son enumerados de manera ascendente. Puede resolver o reconciliar aquellos tickets que buscan un mismo objetivo o donde más de una persona reporta el mismo requerimiento. Permite hacer búsquedas o filtrar tickets por severidad, componente del proyecto, versión, responsable de atender el ticket, entre otros.
Para mejorar el seguimiento de los tickets Trac ofrece la posibilidad de activar notificaciones vía correo electrónico, de este modo se mantiene informado a los desarrolladores de los avances en la resolución de las actividades planificadas.
Vista de progreso
Existen varias maneras convenientes de estar al día con los acontecimientos y cambios que ocurren dentro de un proyecto. Puede establecer hitos y ver un mapa del progreso (así como los logros históricos) de manera resumida. Además, puede visualizar desde una interfaz centralizada los cambios ocurridos cronológicamente en el wiki, hitos, tickets y repositorios de código fuente, comenzando con los eventos más recientes, toda esta información es accesible vía Web o de manera alternativa Trac le ofrece la posibilidad de exportar esta información a otros formatos como el RSS, permitiendo que los usuarios puedan observar esos cambios fuera de la interfaz centralizada de Trac, así como la notificación por correo electrónico.
Vista del repositorio en línea
Una de las características de mayor uso en Trac es el navegador o visor del repositorio en línea, se le ofrece una interfaz bastante amigable para el sistema de control de versiones que esté usando ((Por defecto Trac se integra con subversion, la integración con otros sistemas es posible gracias a plugins o complementos.)). Este visualizador en línea le ofrece una manera clara y elegante de observar el código fuente resaltado, así como también la comparación de ficheros, apreciando fácilmente las diferencias entre ellos.
Manejo de usuarios
Trac ofrece un sistema de permisología para controlar cuales usuarios pueden acceder o no a determinadas secciones del sistema de manejo y seguimiento del proyecto, esto se logra a través de la interfaz administrativa. Además, esta interfaz es posible integrarla con la definición de permisos de lectura y escritura de los usuarios en el sistema de control de versiones, de ese modo se logra una administración centralizada de usuarios.
Wiki
El sistema wiki es ideal para mantener la base de conocimientos del proyecto, la cual puede ser usada por los desarrolladores o como medio para ofrecerles recursos a los usuarios. Tal como funcionan otros sistemas wiki, puede permitirse la edición compartida. La sintaxis del sistema wiki es bastante sencilla, si esto no es suficiente, es posible integrar en Trac un editor WYSIWYG (lo que se ve es lo que se obtiene, por sus siglas en inglés) que facilita la edición de los documentos.
Características adicionales
Al ser Trac un sistema modular puede ampliarse su funcionalidad por medio de complementos o plugins, desde sistemas anti-spam hasta diagramas de Gantt o sistemas de seguimiento de tiempo.
Configurando el sonido (HDA Intel) en Lenovo 3000 c200 en Debian GNU/Linux
La situación poco común se presentó con un portátil Lenovo, específicamente un 3000 c200; el computador en cuestión mostraba la tarjeta funcionando, como si estuviera todo normal, pero sucede que no había sonido en lo absoluto por más altos que estuvieran los indicadores gráficos del volumen. Indagando por Google me encontré que ya han habido muchos casos similares, no solamente para laptops Lenovo, sino para la mayoría que incluye ese tipo de tarjetas y me encontré con una solución en un foro que me funcionó perfecto. Acá voy a tratar de explicar paso a paso todo lo que hice para que funcionara como debe ser.
Lo primero que se hizo fué asegurarse que se trata realmente de una tarjeta HDA Intel, con la siguiente línea de comandos:
$ lspci | grep High
…a lo que se obtuvo la siguiente respuesta:
00:1b.0 Audio device: Intel Corporation 82801G (ICH7 Family) High Definition Audio Controller (rev 02)
…donde se puede verificar que se trata de la HDA de la familia ICH7 de la Intel. Una vez verificado ésto, se procede a instalar algunos paquetes necesarios para que todo funcione de manera correcta, que son los siguientes:
- build-essentials
- gettext
- libncurses5-dev
Ésto se logró con el aptitude, con la siguiente línea de comandos:
$ sudo aptitude install el_paquete_que_quiero_instalar
Luego hay que descargar las cabeceras del kernel que se está usando. Para ésto, la manera más fácil de hacerlo fué instalando el paquete module-assistant y haciendo lo siguiente en una terminal:
$ sudo m-a update
$ sudo m-a prepare
Y el programa automáticamente va a saber cuáles cabeceras descargar y el directorio donde ponerlas. Cuando estén instalados éstos tres paquetes también se va a necesitar descargar de la página del Proyecto Alsa tres archivos necesarios y que son nombrados a continuación:
Se pueden descargar con un gestor de descargas preferido, ésto se hizo con wget, utilizando la línea de comandos:
$ wget -c http://www.alsa-project.org/alsa-driver-1.0.14.tar.bz2
…y así para cada uno de los archivos. Cuando se tengan los tres archivos, se copian a la carpeta /usr/src/alsa/
la cual, probablemente no existe todavía en el sistema y por lo tanto tendrá que ser creada; ésto se puede lograr con la siguiente línea de comandos:
$ sudo mkdir /usr/src/alsa
…cuando se tenga el directorio, se copian los tres archivos tar.gz al mismo; ésto se puede lograr con:
$ sudo cp alsa* /usr/src/alsa/
Luego hay que descomprimir los ficheros tar.gz con:
$ sudo tar xvf el_archivo_que_vamos_a_descomprimir.tar.gz
Una vez descomprimidos nos ubicamos en la primera carpeta que va a ser alsa-driver-1.0.14/ y compilamos el alsa para las tarjetas HDA Intel con las siguientes líneas de comandos:
$ sudo ./configure --with-cards=hda-intel
$ sudo make
$ sudo make install
Luego vamos a necesitar compilar los otros 2 paquetes restantes, para ello, nos ubicamos en la carpeta correspondiente y hacemos en una terminal lo siguiente:
$ sudo ./configure
$ sudo make
$ sudo make install
Ésto se va a hacer tanto para alsa-lib como para alsa-utils, pues el procedimiento es el mismo. Cuando se hayan compilado los tres paquetes el sistema ya debería ser capaz de reconocer correctamente la tarjeta y por lo tanto debe haber sonido; Ésto puedes ser verificado (1) Abriendo un reproductor de preferencia y reproduciendo algo de musica ó (2) Se puede hacer con la siguiente línea:
$ cat /dev/urandom >> /dev/dsp/
Con lo cual se obtendrá un sonido algo parecido a unos aplausos, pero en realidad son sonidos producidos aleatoriamente.
Ésto debería ser todo. En las máquinas que se configuraron, cuando se conectaban los audífonos en el panel lateral, el sonido salía tanto por los audífonos como por las cornetas y al parecer se solucionó con una reiniciada, pero sino quieres reiniciar entonces lo que tienes que hacer es tumbar los módulos que se crearon y volverlos a cargar, tal cual reiniciaras el sistema:
$ sudo modprobe -r snd_hda_intel652145
$ sudo modprobe -r snd_pcm
$ sudo modprobe -r snd_page_alloc
Luego para cargarlos hacemos las mismas línea, pero sin la opción -r.
Transmission 0.72 en Debian y Ubuntu GNU/Linux AMD64
Bien, en realidad, no he podido esperar a tenerlo trabajando al 100%, se trata de la versión 0.72 de Transmission, el que a mi parecer, es el mejor cliente BitTorrent que jamás haya existido. Según lo describen en la página, cito textualmente:
Transmission has been built from the ground up to be a lightweight, yet powerful BitTorrent client. Its simple, intuitive interface is designed to integrate tightly with whatever computing environment you choose to use. Transmission strikes a balance between providing useful functionality without feature bloat. Furthermore, it is free for anyone to use or modify.
Su instalación es muy fácil, ya que lo único que tenemos que hacer, es bajarnos el .deb (sí, el .deb, imagínense lo fácil que nos va a resultar) de la página de nuestros amígos de GetDeb y luego usar una terminal ó el instalador de paquetes GDebi (aún más fácil) para instalar el paquete.
En el primer de los casos, usando la terminal, lo único que tenemos que hacer en escribir la siguiente línea de comandos:
$ sudo dpkg -i transmission_0.72-0~getdeb1_amd64.deb
`` …esperar a que termine el proceso de instalación y ya podrás ejecutar el Transmission desde Aplicaciones –> Internet –> Transmission.
Para el segundo de los casos, usando el instalador GDebi, tan sólo hay que hacer click encima del .deb con el botón derecho del ratón y seleccionamos la opción Abrir con “Instalador de paquetes GDebi” y luego click en el botón Instalar el paquete, finalmente esperar a que finalice la instalación del paquete y listo!. Una de las cosas que, debo admitir, más me gusta de ésta nueva versión, es que ahora podemos minimizar la aplicación en la bandeja del sistema :) .
Para más información de Transmission, visite su Página Oficial.
Beryl y Emerald en Debian “Etch” AMD64
Sin mucho preámbulo, sólo tengo que decir que voy explicar cómo tener instalado éste famoso escritorio 3D (Beryl) en nuestros sistemas Debian AMD64. El proceso en general es muy fácil y se resume en unos pocos pasos. Antes que nada debo mencionar que la placa de video que uso es nVIDIA y que para poder utilizar el Beryl hay que hacer ciertas modificaciones al xorg.conf.
Lo primero que debemos hacer es modificar nuestro /etc/apt/sources.list para añadir una nueva entrada que va a ser el servidor desde donde se van a instalar Beryl y Emerald. Ésto lo logramos con la siguiente línea de comandos en una terminal:
# vim /etc/apt/sources.list
La línea que vamos a agregar a nuestro sources.list es la que se corresponde con el repositorio de Beryl para Debian y es la siguiente:
deb http://debian.beryl-project.org/ etch main
Luego, como han de sospechar, hay que actualizar la base de datos del aptitude, lo cual se logra así:
# aptitude update
Una vez actualizada la base de datos procedemos a instalar el Beryl con la siguente línea de comandos:
# aptitude install -ry beryl
Ésta última línea nos va a instalar el Beryl automáticamente con todos los paquetes recomendados y va a asumir “Sí” como respuesta para poder realizar la instalación. Una vez que está instalado podremos ejecutarlo desde Aplicaciones –> Herramientas del sistema –> Beryl Manager y los temas del Emeral los podemos seleccionar en Escritorio –> Preferencias –> Emerald Theme Manager. Las opciones del Beryl pueden ser modificadas con el Beryl Settings Manager, el cual puede ser localizado en la misma ruta que el Beryl Manager. Si queremos que el Beryl Manager sea ejecutado cada vez que iniciamos sesión debemos añadirlo a la lista de programas al inicio. Ésto lo hacemos ejecutando Escritorio –> Preferencias –> Sesiones _ y en la pestaña _Programas al inicio hacemos click en Añadir y escribimos beryl-manager. A continuación algunos atajos del teclado para lograr los efectos más comunes:
- Modo de movimiento de imagen borrosas = Ctrl + F12
- Rotar escritorios como un cubo = Ctrl + Alt + Flechas direccionales
- Efecto de lluvia = Shift + F9
- Zoom = Super + Scroll
- Selector de ventanas escalar = Super + Pausa
- Rotar ventana entre espacios de trabajo con el cubo = Ctrl + Alt + Shif + Teclas direccionales
- Modificar la opacidad de la ventana actual = Alt + Scroll
Por último un artículo donde explican las virtudes del Beryl 0.2 y dos videos, que a mi criterio son las mejores demostraciones de Beryl que jamas haya visto.
Identificar el Hardware de tu PC en Debian GNU/Linux
Bien, lo que vamos a hacer a continuación es muy fácil, tán fácil como instalar un paquete, luego ejecutarlo y leer la información que él nos “escupe” (me encanta como suena :) ). Como sabrán, soy usuario de Debian GNU/Linux en su versión Etch para la arquitectura AMD64, pero ésto en realidad no es tan relevante ya que el paquete se encuentra tanto en Testing como en Stable para la mayoría de las arquitecturas y en la sección main de los repositorios.
Lo que vamos a instalar es el paquete lshw-gtk, que bien como dice en la descripción del paquete: “es una pequeña herramienta que provee información detallada de la configuración de hardware de la máquina. Puede reportar la configuración exacta de la memoria, versión de firmware, configuración de la tarjeta madre, versión del procesador y su velocidad, configuración de la caché, velocidad del bus, etc. en sistemas x86 con soporte DMI, en algunas máquinas PowerPC (se sabe de su funcionamiento en las PowerMac G4) y ADM64”.
Como ya sabrán, para instalar el paquete es tan sencillo como abrir una terminal y escribir en modo superusuario los siguiente:
# aptitude install lshw-gtk
El paquete no es muy pesado, de hecho, con todo y dependencias a penas ha de superar el mega de información, por lo que el proceso de instalación es rápido (si se tiene una conexión decente claro).
Una vez instalado el paquete no tenemos que hacer más que ejecutarlo. Para poder ejecutarlo debemos hacerlo desde una terminal, ya que según tengo entendido, no se instala en los menús del Gnome. Así que debemos escribir en una terminal (en modo superusuario):
# lshw-gtk
y listo, se ejecutará perfectamente, dejándonos navegar por unos paneles donde se encuentran los distintos componentes de nuestro sistema.
Si lo que quieres es tener un lanzador en los menús del Gnome, es muy sencillo, sólo deberás crear uno de la siguiente manera. Abre una terminal en modo superusuario y escribe lo siguiente:
gedit /usr/share/applications/LSHW.desktop
luego de presionar la tecla Enter se abrirá una ventana con el gedit en la cual deberás pegar el siguiente texto:
[Desktop Entry]
Name=LSHW
Comment=Identifica el hardware del sistema
Exec=gksu lshw-gtk
Icon=(el icono que les guste)
Terminal=false
Type=Application
Categories=Application;System;
Y ya con eso deberías tener tu lanzador en el menú Aplicaciones –> Herramientas del sistema. Vas a necesitar de permisos de superusuario para poder ejecutarlo.
Acá una imagen de como se ve el lshw-gtk:
Compilar aMSN en Debian Etch AMD64
Bien, sin mucho preámbulo, lo primero que debemos hacer es descargar el tarball de la página de amsn. Luego deberás descomprimirlo en la carpeta de tu preferencia, en mi caso está en ~/Sources/amsn-0.96RC1/. Una vez que lo descomprimes abre una terminal y obtén derechos de administrador (modo root); cuando tengas privilegios de root ubícate en el directorio donde descomprimiste el tarball y escribe lo siguiente:
$ ./configure
$ make
$ make install
Debes asegurarte de cumplir todos los requisitos cuando haces el ./configure, ya que te pide varias “dependencias” por así decirlo, como por ejemplo, tls y tk. Una vez que hayas hecho el make install quedará automágicamente instalado el amsn en tu sistema. Deberás poder verlo en Aplicaciones –> Internet –> aMSN. Bien eso es todo en lo que respecta al proceso de compilado, ¿nunca antes fué tan fácil verdad?.
Un problema que me dió una vez que lo compilé y lo ejecuté fué que no me permitía iniciar sesión porque me decía que no tenía instalado el módulo TLS. Entonces abrí una terminal e hice lo siguiente:
$ aptitude install tcltls
…pero ésto no me solucionó el problema, entonces me puse a indagar por la web y me encontré con la siguiente solución: editar el archivo /usr/lib/tls1.50/pkgIndex.tcl y ubicar la línea que dice algo como: package ifneeded tls 1.5 para entonces modificarla por package ifneeded tls 1.50 y listo :D
StarDict: El diccionario que buscaba
Leyendo el ejemplar #14 de la revista Tux Magazine me encuentro con un interesante artículo, Learning Foreign Languages with jVLT and StarDict, la segunda aplicación descrita en dicho artículo, StartDict, llamó mi atención, así que a continuación se dará una breve revisión de la aplicación en cuestión.
¿Qué es StarDict?
StarDict es un diccionario internacional multiplataforma escrito en Gtk2, puede ser utilizado sin conexión a la web.
Características
-
Búsqueda de patrones: Usted puede buscar patrones de cadenas o caracteres usando comodines, por ejemplo, podrá usar el comodín
*
para buscar una cadena arbitraria, el resultado puede ser vacío, mientras que con el uso del comodín?
buscará una coincidencia con un carácter arbitrario. e.g. Suponiendo que tiene instalado el diccionario Inglés – Español, al buscar el patrón hell? encontrará como resultado la traducción de hello, mientras que con el uso del patrón hell* encontrará todas aquellas posibles coincidencias que comiencen con la cadena hell, hell (infierno en inglés), hell (suerte en noruego), los resultados encontrados dependerá de los diccionarios que haya instalado. - Búsqueda difusa: Si usted por casualidad no recuerda exactamente como deletrear una palabra, podrá intentar realizar dicha búsqueda desde StarDict, éste utilizará el algoritmo de la Distancia de Levenshtein El algoritmo de la Distancia de Levenshtein o la distancia de edición entre dos cadenas, se refiere al número mínimo de operaciones necesarias para transformar una cadena en otra, bajo éste algoritmo se considera una operación a la inserción, eliminación o substitución de un carácter. Para mayor información le recomiendo leer el artículo Levenshtein Distance, in Three Flavors.. Para utilizar esta característica simplemente comience la búsqueda con el carácter /, e.g., suponga que tiene instalado el diccionario Español – Inglés, usted cree que la palabra acero realmente se escribe así: asero, simplemente introduzca en el formulario la cadena /asero, obtendrá el resultado deseado.
-
Búsqueda por palabras seleccionadas:
Si usted desea activar esta característica, deberá marcar la casilla de verificación que se encuentra en la parte inferior izquierda de la ventana principal de la aplicación. StarDict automáticamente buscará palabras o frases que usted haya seleccionado en cualquier aplicación, esto incluye navegadores, OpenOffice.org, etc., usted obtendrá un cuadro de dialogo que le mostrará la definición acerca de la palabra seleccionada.
-
Manejo de diccionarios:
StarDict le permite activar (desactivar) aquellos diccionarios que necesite (no necesite), también puede establecer el orden de búsqueda en los distintos diccionarios instalados. Todo lo anterior podrá realizarlo desde la sección Manage Dictionaries (Recurso: Imagen).
- ¿No encuentra lo que necesita?: StarDict le permite realizar búsquedas en la web, solo deberá seleccionar el botón de búsqueda en Internet y escoger cualquiera de las 10 opciones actuales de búsqueda.
Ahora bien, seguramente esta aplicación resultará útil para muchas personas, si usted es uno de ellos y está interesado en instalarlo, es muy sencillo.
¿Cómo instalar StarDict?
Si usted es tan afortunado como yo, debe estar usando Debian, así que simplemente tendrá que hacer:
# aptitude install stardict
Ahora bien, si usted utiliza por ejemplo, Ubuntu, también puede instalarlo fácilmente, ¿cómo?, en primer lugar debe activar el repositorio universe (recuerde actualizar la lista de paquetes disponibles), posteriormente debe hacer:
$ sudo aptitude install stardict
Si usted utiliza otra distribución de GNU+Linux o es usuario de Windows, lea la documentación de la página oficial del proyecto, lamento informarle que este artículo es una revisión breve de la aplicación StarDict.
¿Cómo instalar diccionarios?
Primero que nada, debe descargar los diccionarios que necesite, para ello le recomiendo ir a la página de Descarga de Diccionarios del proyecto.
Una vez que haya descargado los diccionarios, debe proceder como sigue:
tar -C /usr/share/stardict/dic -x -v -j -f \\
diccionario.tar.bz2
Personalizando la aplicación
Ya para finalizar, usted puede personalizar la aplicación desde la sección de preferencias, desde ella podrá modificar el comportamiento del programa.
Una característica de StarDict que puede resultar realmente molesta es cuando se encuentra activo el modo Scan, es decir, toda palabra o frase resaltada con el ratón generará un cuadro de dialogo con la definición de dicha palabra o frase, si usted desea controlar este comportamiento, le recomiendo activar las siguientes casillas de verificación:
- Only do scanning while modifier key being pressed.
- Hide floating window when modifier key pressed.
Las casillas de verificación previamente mencionadas podrá encontrarlas bajo la sección Dictionary -> Scan Selection.
Si usted esta inconforme con las opciones de búsqueda en Internet, puede agregar las que usted desea desde la sección Main Window -> Search Website.
FeedJack: Ya está disponible
Ya había comentado acerca de ésta aplicación en la entrada FeedJack: Un Planet con esteroides, resulta que hace pocos días Gustavo Picón anunció la salida de la versión 0.9.6 bajo licencia BSD. Algunas de las características más resaltantes de esta aplicación son:
- Soporte de virtual hosts: Esto quiere decir que desde la misma instalación y la misma Base de Datos e interfaz de administración, se manejan múltiples planetas. Si hay feeds en común estos se bajan una sola vez para optimizar recursos.
- Temas (Themes): Cada sitio (virtual host) puede tener temas distintos.
- Soporte de folcsonomías (etiquetas o tags): Muy popular en las aplicaciones de la Web 2.0, se ha optimizado el algoritmo.
- Generación de páginas o feeds por folcsonomías: http://www.chichaplanet.org/tag/django/
- Generación de páginas o feeds por miembros: http://www.chichaplanet.org/user/1/
- Generación de páginas o feeds de una categoría en especial de un miembro particular: http://www.chichaplanet.org/user/1/tag/django/
- Generar un feed general: http://www.chichaplanet.org/feed/
- Histórico de entradas: Entre muchas otras cosas. La principal ventaja frente a Planet es el soporte de un histórico de entradas o posts, por el uso de una Base de Datos.
Para conocer los detalles acerca de los requerimientos, el proceso de instalación, configuración y la modificación de los temas lea con detenimiento la entrada Feedjack - A Django+Python Powered Feed Aggregator (Planet).
Primer documental de Software Libre hecho en Venezuela
Para todos aquellos que aún no han tenido la oportunidad de ver el primer documental sobre Software Libre realizado en Venezuela, Software Libre, Capítulo Venezuela, ahora pueden hacerlo gracias a la colaboración hecha por Luigino Bracci Roa, quien realizó la codificación del fichero.
El documental, cuya duración es de 25 minutos, fué producido por el Ministerio de la Cultura a través de la Fundación Villa Cine, dicha fundación busca estimular, desarrollar y consolidar la industria cinematográfica a nivel nacional, a su vez, favorece el acercamiento del pueblo venezolano a sus valores e idiosincrasia.
Se pueden observar algunas entrevistas muy interesantes, el documental pretende orientar al ciudadano común, aquel que no domina profundamente los temas de la informática y específicamente el tema del Software Libre, entre otras cosas se explican los conceptos e importancia detrás de él.
A continuación una serie de sitios espejos desde los cuales puede descargar el documental, de igual manera a lo dicho por Ricardo Fernandez: por favor no use siempre el mismo mirror, es para compartir anchos de banda y para dar un mejor servicio a todos.
Formato OGG (aprox. 43.5MB)
- https://www.ututo.org/utiles/torrent/sl-capitulo-vzla-001.ogg.torrent
- ftp://ftp.gnu.org/gnu+linux-distros/ututo-e/sl-capitulo-vzla-001.ogg
- http://ftp.gnu.org/gnu+linux-distros/ututo-e/sl-capitulo-vzla-001.ogg
Free TV
Daniel Olivera nos informa que:
Ya esta en UTUTO FreeTv emitiendose luego de cada video que ya estaba.
Pueden verlo en radio.ututo.org:8000/ o en WebConference en el sitio de UTUTO.
Esta las 24 horas funcionando FreeTv.
Formato AVI (aprox. 170MB)
- http://blog.milmazz.com.ve/soft-libre-venezuela.avi
- http://koshrf.fercusoft.com/koshrf/soft-libre-venezuela.avi
- http://www.xpolinux.org/soft-libre-venezuela.avi
- http://two.fsphost.com/softlibre/soft-libre-venezuela.avi
- http://www.conexionsocial.cl/video/soft-libre-venezuela.avi
- http://ieac.faces.ula.ve/files/fpalm/soft-libre-venezuela.avi
- http://heartagram.com.ve/soft-libre-venezuela.avi
Puede encontrar mayor información acerca del tema en los siguientes artículos:
- ¡Descarga el documental sobre Software Libre en Venezuela!
- Video de Software Libre hecho en Venezuela
Actualización: Se añaden nuevos sitios espejos para el formato AVI, además, Daniel Olivera ha facilitado algunos enlaces de gran ancho de banda para el formato OGG. ¡Gracias Daniel!.
Creando listas de reproducción para XMMS y MPlayer
Normalmente acostumbro a respaldar toda la información que pueda en medios de almacenamiento ópticos, sobretodo audio digital, ya sea en ficheros Ogg Vorbis o en MPEG 1 Layer 3. Desde hace poco más de un año hasta la actualidad me he acostumbrado a mantener una estructura lógica, la cual es más o menos como sigue:
/music/
Pero hace mucho tiempo no era tan organizado en cuanto a la estructura de los respaldos, entonces, la pregunta en cuestión es, ¿cómo lograr detectar la presencia de ficheros de audio digital almacenados de manera persistente en un dispositivo óptico de manera automática?
Al igual que lo expresado en la entrada Eliminando ficheros inútiles de manera
recursiva,
haremos uso del comando find
.
Antes de entrar en detalle debo aclarar que voy a realizar una búsqueda recursiva de ficheros en el path correspondiente a mi unidad lectora de CDs. Usted debe ajustar el path por uno apropiado en su caso particular.
Si solo desea buscar ficheros MPEG 1 Layer 3:
find /media/cdrom1/ -name \*.mp3 -fprint playlist
Pero si usted acostumbra a almacenar ficheros Ogg Vorbis en conjunto con ficheros MPEG 1 Layer 3, debería proceder así:
find /media/cdrom1/ \( -name \*.mp3 -or -name \*.ogg \) -fprint playlist
El comando anterior también es aplicable para generar listas de reproducción de video digital, en cuyo caso lo único que debe cambiar es la extensión de los ficheros que desea buscar. El fichero que contendrá la lista de reproducción generada en los casos expuestos previamente será playlist.
Reproduciendo la lista generada
Para hacerlo desde XMMS es realmente sencillo, acá una muestra:
xmms --play playlist --toggle-shuffle=on
Si usted no desea que las pistas en la lista de reproducción se reproduzcan
de manera aleatoria, cambie el argumento on
de la opción
--toggle-shuffle
por off
, quedando como --toggle-shuffle=off
.
Si desea hacerlo desde MPlayer es aún más sencillo:
mplayer --playlist playlist -shuffle
De nuevo, si no desea reproducir de manera aleatoria las pistas que se
encuentran en la lista de reproducción, elimine la opción del reproductor
MPlayer -shuffle
del comando anterior.
Si usted desea suprimir la cantidad de información que le ofrece MPlayer al
reproducir una pista le recomiendo utilizar alguna de las opciones -quiet
o
-really-quiet
.
Vim al rescate
Al examinar el día de hoy el último fichero de respaldo de la base de datos de este blog, me percate que existe una cantidad inmensa de registros que en realidad no me hacen falta, sobretodo respecto a las estadísticas, es increible que los registros de una simple base de datos llegara a ocupar unos 24MB, dicha información no tiene mayor relevancia para los lectores puesto que dichos datos suelen ser visualizados en la interfaz administrativa del blog, pero al ocupar mayor espacio en la base de datos, pueden retardar las consultas de los usuarios. Por lo tanto, era necesario realizar una limpieza y eliminar unos cuantos plugins que generaban los registros de las estadísticas.
Ahora bien, imagínese abrir un documento de 266.257 líneas, 24.601.803 carácteres desde algun editor de textos gráfico, eso sería un crimen. ¿Qué podemos hacer?, la única respuesta razonable es utilizar Vim.
Vim es un avanzado editor de textos que intenta proporcionar todas las funcionalidades del editor de facto en los sistemas *nix, Vi. De manera adicional, proporciona muchas otras características interesantes. Mientras que Vi funciona solo bajo ambientes *nix, Vim es compatible con sistemas Macintosh, Amiga, OS/2, MS-Windows, VMS, QNX y otros sistemas, en donde por supuesto se encuentran los sistemas *nix.
A continuación detallo más o menos lo que hice:
En primer lugar respalde la base de datos del blog, enseguida procedí a descomprimir el fichero y revisarlo desde Vim.
$ vim wordpress.sql
Comence a buscar todos los CREATE TABLE
que me interesaban. Para realizar esto, simplemente desde el modo normal de Vim escribí lo siguiente:
/CREATE TABLE <strong><Enter></strong>
Por supuesto, el
Con todo la información necesaria, lo único que restaba por hacer era copiar la sección que me interesaba en otro fichero, para ello debemos proceder como sigue desde el modo normal de Vim:
:264843,266257 w milmazz.sql
El comando anterior es muy sencillo de interpretar: Copia todo el contenido encontrado desde la línea 264.843 hasta la línea 266.257 y guardalo en el fichero milmazz.sql.
Inmediatamente restaure el contenido de mi base de datos y listo.
Algunos datos interesantes.
Fichero original
- Tamaño: 24MB
- Número total de líneas: 266.257
Fichero resultado
- Tamaño: 1.2MB
- Número total de líneas: 1.415
Tiempo aproximado de trabajo: 4 minutos.
¿Crees que tu editor favorito puede hacer todo esto y más en menos tiempo?. Te invito a que hagas la prueba ;)
That’s All Folks!
Foro: Software Libre vs. Software Privativo en el gobierno electrónico
El día de hoy se realizó en el Palacio Federal Legislativo de la Asamblea Nacional el foro Software Libre vs. Software Privativo en el gobierno electrónico, el cual fué organizado por los diputados de la Comisión Permanente de Ciencia, Tecnología y Medios de Comunicación del parlamento venezolano.
Como representantes de la comunidad de Software Libre venezolana se encontraban el economista Felipe Pérez Martí, ex ministro de Planificación y Desarrollo, y Ernesto Hernández Novich, ingeniero en computación y profesor de la Universidad “Simón Bolívar”.
Este foro es el primero de una serie que se realizarán con el fin de ayudar a aclarar todas aquellas dudas que presenten los diputados para la correcta redacción del proyecto de Ley de Tecnologías de Información. Dicho proyecto de ley ha sido propuesto por los diputados: Angel Rodríguez, Luís Tascón, Oscar Pérez Cristancho y Julio Moreno.
El objeto del proyecto de Ley de Tecnologías de Información es el siguiente:
…establecer las normas, principios, sistemas de información, planes, acciones, lineamientos y estándares, aplicables a las tecnologías de información que utilicen los sujetos a que se refiere el artículo 5 de esta Ley y estipular los mecanismos que impulsarán su extensión, desarrollo, promoción y masificación en todo el ámbito del Estado.
Si usted desea escuchar lo discutido en el foro Software Libre vs. Software Privativo en el gobierno electrónico, puede hacerlo en:
- 7 Ponencias (MP3 16kbps), mirror (XpolinuX), mirror (gusl).
- 7 Ponencias (baja calidad)
- Ponencia de Ernesto Hernández Novich
Todos estos ficheros han sido codificados por Luigino Bracci Roa. La mayoría del evento fué cubierto en vivo por ANTV (es una lástima que utilicen flash, ASP y estén alojados en un servidor con Windows Server 2003).
hwinfo: Detectando el hardware actual
hwinfo
es un programa que nos permite conocer rápidamente el hardware detectado actualmente en nuestros ordenadores, por ejemplo, si deseamos obtener los datos de dispositivo SCSI, simplemente utilizamos el comando hwinfo --scsi
.
Para instalar este programa en Ubuntu Linux en primer lugar debemos tener activados el repositorio universe
, seguidamente haremos uso de aptitude
, tal cual como sigue:
$ sudo aptitude install hwinfo
Si deseamos conocer el uso de este programa de manera detallada, simplemente escribimos hwinfo --help
.
En el caso que haga uso del comando hwinfo
sin parámetro alguno nos mostrará la lista completa del hardware detectado actualmente, es importante resaltar que esta lista puede ser muy extensa, por lo cual le recomiendo hacer uso de un pipe para administrar la salida generada por hwinfo
y poder visualizarla página a página, tal cual como sigue.
$ hwinfo | less
Si por el contrario, usted solo desea conocer una lista resumida del hardware detectado haga uso del parámetro --short
, lo anterior quedaría de la siguiente manera:
$ hwinfo --short
Este programa nos brinda bastantes opciones, es recomendable hacer uso de los parámetros cuando necesitamos información referente a un dispositivo en específico, por ejemplo, si deseamos conocer la información acerca de la tarjeta de sonido, hacemos lo siguiente:
$ hwinfo --sound
Como le mencione anteriormente, para conocer en detalle las opciones que nos brinda este programa, le recomiendo leer el manual. Espero sea de provecho ;)
mp3wrap: Concatenando ficheros mp3
mp3wrap es una utilidad en línea de comando que nos permite fusionar o concatenar dos o más ficheros mp3
, todo esto sin perder los nombres de ficheros y la información de los ID3, estándar que permite la inclusión de metadatos en contenedores multimedia. También es posible añadir otros ficheros que no sean mp3
, como por ejemplo, listas de reproducción, ficheros de información, imágenes de portada. Claro, este proceso es posible revertirlo gracias a mp3splt, el cual describiré en un próximo artículo.
Con mp3wrap
, usted puede fácilmente fusionar hasta un máximo de 255 ficheros en uno solo, lo cual pareciese ser suficiente para la mayoría. De igual manera, como se mencionó previamente, usted puede añadir ficheros que no sean mp3
, pero hay algunas consideraciones al respecto.
- Si el fichero es de texto, como pueden ser las listas de reproducción, los ficheros de información, entre otros, se recomienda que estos se ubiquen al principio del fichero a generar, puesto que el reproductor los descartará rápidamente.
- Si el fichero es binario, como las imágenes por ejemplo, usted debe colocarlas al final del fichero a generar, de esta manera el reproductor se los encontrará después de reproducir y no los confundirá con ficheros
mp3
.
Instalación del programa
Para poder instalar esta aplicación en Ubuntu, en primer lugar debemos tener activo en nuestro fichero /etc/apt/sources.list
el repositorio universe
, después de haber verificado esto procedemos a instalarlo.
$ sudo aptitude install mp3wrap
A continuación explicaré el uso de mp3wrap
a través de un ejemplo.
En primer lugar, mostraré la lista de ficheros a fusionar.
$ ls
01.mp3 02.mp3 03.mp3 04.mp3
Ahora fusionaré las 2 primeras canciones.
$ mp3wrap album.mp3 01.mp3 02.mp3
He obviado el mensaje que nos muestra mp3wrap
para evitar extender más de lo necesario este artículo. También es importante acotar que el fichero generado no se llamará album.mp3
(lo que pareciese lógico), sino album_MP3WRAP.mp3
, es recomendable no borrar la cadena MP3WRAP
, ésta le indicará al programa mp3splt
, el cual nos permite separar de nuevo los ficheros fusionados, que dicho fichero fué fusionado utilizando mp3wrap
, lo anterior nos facilitará su extracción con mp3splt
, en caso de darse.
Ahora bien, voy a añadir las otras dos canciones, que conste que este paso lo hago solamente para demostrar como añadir otros ficheros a una compilación previamente hecha con mp3wrap
.
$ mp3wrap -a album_MP3WRAP.mp3 03.mp3 04.mp3
Si deseamos conocer cuales son los archivos que contiene el fichero generado por mp3wrap
, simplemente debemos hacer lo siguiente.
mp3wrap -l album_MP3WRAP.mp3
List of wrapped files in album_MP3WRAP.mp3:
01.mp3
02.mp3
03.mp3
04.mp3
Si en la instrucción anterior hubiesemos hecho uso de la opción -v
(verbose), mp3wrap
nos mostraría información adicional acerca de los ficheros. Por ejemplo:
mp3wrap -lv album_MP3WRAP.mp3
List of wrapped files in album_MP3WRAP.mp3:
# Size Name
--- -------- --------
1) 6724962 01.mp3
2) 9225205 02.mp3
--- -------- --------
15950240 2 files
Pueden observar en el ejemplo anterior que se nos muestra el tamaño en bytes de cada uno de los ficheros, así como el número total de ficheros que han sido fusionados y su tamaño correspondiente en bytes.
Como se ha podido ver a través del articulo el uso de mp3wrap
es bastante sencillo, si tiene alguna duda acerca de su uso consulte el manual de mp3wrap
, man mp3wrap
, o la sección de preguntas mas frecuentes acerca de mp3wrap.
Cowbell: Organiza tu música
Cowbell, es una aplicación que te permite organizar tus compilaciones musicales de una manera fácil y divertida, ya no tienes que aburrirte por horas al intentar organizar tus colección musical manualmente.
Una de las cosas que me han agradado de este programa es que aparte de poder editar las etiquetas manualmentede en una interfaz bastante agradable y sencilla, también puedes obtener toda la información necesaria a través de Amazon Web Services, lo anterior incluye: Número, Título, Año, Estilo, Portada y demás información relacionada con las canciones. Al utilizar este servicio cuentas con una amplia bases de datos, lo anterior en realidad permite ahorrar mucho tiempo.
Dentro de las preferencias de este programa nos encontraremos con opciones que nos permitirán renombrar ficheros de acuerdo a un patrón, el cual lo podemos generar al combinar cualquiera de las siguientes palabras claves.
- Artist
- Album
- Title
- Track
- Genre
- Year
Las palabras claves anteriores se explican por sí solas. Simplemente escoge el patrón que más se ajuste a tus necesidades. Entre otras de las características de este programa, cabe mencionar la posibilidad de generar un fichero de lista de reproducción del álbum.
¿Tienes una larga colección de música cuyas etiquetas debes arreglar?, no te preocupes, Cowbell también puedes usar desde la línea de comandos, la manera de invocar el comando es la siguiente:
$ cowbell --batch /ruta/a/tu/musica
Donde evidentemente debes modificar el directorio /ruta/a/tu/musica
de acuerdo a tus necesidades.
Para instalar esta aplicación en ubuntu debes tener activo el repositorio universe
en tu fichero /etc/apt/sources.list
. Una vez actualizada la lista de repositorios, puedes instalar Cowbell de la siguiente manera:
$ sudo aptitude cowbell
Gnickr: Gnome + Flickr
Gnickr le permite manejar las fotos de su cuenta del sitio Flickr como si fueran archivos locales de su escritorio Gnome. Todo lo anterior lo hace creando un sistema de ficheros virtual de su cuenta en Flickr.
Hasta ahora, Gnickr le permite realizar las siguientes operaciones:
- Subir fotos.
- Renombrar fotos y set de fotos.
- Borrar fotos.
- Insertar fotos en sets previamente creados.
- Eficiente subida de fotos, escala las imágenes a
1024 x 768
Se planea que en futuras versiones se pueda editar la descripción de cada foto, la creación/eliminación de sets de fotos, establecer las opciones de privacidad en cada una de las fotos, así como también integrar el proceso de autorización en nautilus.
Si desea instalar Gnickr, previamente debe cumplir con los siguientes requisitos.
- Gnome 2.12
- Python 2.4
- gnome-python >= 2.12.3
- Librería de imágenes de Python (PIL)
Instalando Gnickr en Ubuntu Breezy
En primer lugar debemos actualizar el paquete gnome-python
(en ubuntu recibe el nombre de python2.4-gnome2
) como mínimo a la versión 2.12.3
, para ello descargamos el paquete python2.4-gnome2_2.12.1-0ubuntu2_i386.deb.
Seguidamente descargamos el paquete Gnickr-0.0.3 para Ubuntu Breezy. Una vez descargados los paquetes procedemos a instalar cada uno de ellos, para ello hacemos.
$ sudo dpkg -i python2.4-gnome2_2.12.1-0ubuntu2_i386.deb
$ sudo dpkg -i gnickr_0.0.3-1_i386.deb
Una vez que hemos instalado el paquete Gnickr para Ubuntu Breezy debemos autorizarlo en nuestra cuenta Flickr para que éste programa pueda manipular las fotos, para ello hacemos lo siguiente.
$ gnickr-auth.py
Simplemente debe seguiremos las instrucciones que nos indica el cuadro de dialogo. Una vez completado el proceso de autorización debe reiniciar nautilus
.
$ pkill nautilus
Uso de Gnickr
El manejo de Gnickr es muy sencillo, para acceder a sus fotos en su cuenta Flickr simplemente apunte nautilus a flickr:///
.
$ nautilus flickr:///
También puede ver las fotos de cualquier otra cuenta en Flickr apuntando a flickr://[nombreusuario]
.
Para agregar fotos a un set, simplemente arrastre desde la carpeta Unsorted hasta la carpeta que representa el set de fotos que usted desea, lo anterior también puede aplicarse para mover una foto de un set a otro.
Para renombrar una foto, simplemente modifique el nombre del fichero de la foto.
Clientes BitTorrent
Desde mi punto de vista Azureus es un cliente BitTorrent que cae en los excesos, aparte de ello es demasiado lento y por si fuera poco consume una gran cantidad de recursos del sistema.
Si usted es usuario de Ubuntu Linux, seguramente estará preguntándose, ¿por qué buscar un cliente BitTorrent si Breezy incluye uno? , bueno, si le soy sincero, ese cliente apesta, tiene muy pocas opciones.
En los siguientes párrafos veremos dos alternativas, que desde mi punto de vista tienen ciertas virtudes, las cuales muestro a continuación.
- No caen en los excesos.
- Son rápidos.
- No consumen gran cantidad de recursos del sistema.
- Ofrecen muchas opciones.
Sin mas preámbulos, les presento a Rufus y freeloader, clientes BitTorrents alternativos de gran envergadura.
FreeLoader
Freeloader, es un manejador de descargas escrito en Python y brinda soporte a torrents.
Para instalar freeloader debemos seguir los siguientes pasos en Breezy.
sudo aptitude install python-gnome2-extras python2.4-gamin
Seguidamente diríjase al sitio oficial de freeloader y descargue las fuentes del programa, para la fecha en la cual se redactó este artículo la versión más reciente de este programa es la 0.3.
wget http://www.ruinedsoft.com/freeloader/freeloader-0.3.tar.bz2
Luego de haber descargado el paquete proceda de la siguiente manera:
$ tar xvjf freeloader-0.3.tar.bz2
$ cd freeloader-0.3
$ ./configure
$ make
$ sudo make install
Recuerde que para poder compilar paquetes desde las fuentes necesita tener instalado previamente el paquete build-essential
Rufus
Rufus es otro cliente BitTorrent escrito en Python.
Vamos a aprovecharnos del hecho que existe una versión estable (0.6.9) compilada * para Breezy, los pasos son los siguientes:
$ wget http://strikeforce.dyndns.org/files/breezy/rufus.0.6.9/rufus_0.6.9-0ubuntu1_i386.deb
$ sudo dpkg -i rufus_0.6.9-0ubuntu1_i386.deb
- Esta versión ha sido compilada por strikeforce, para mayor información lea el hilo Rufus .deb Package.
deskbar-applet, realiza tus búsquedas desde el escritorio
deskbar-applet
es una de esas aplicaciones que parecen no tener mucho sentido en un principio, pero desde el mismo momento en que comienzas a utilizarla se te facilitan muchas actividades cotidianas.
deskbar-applet
provee una versátil interfaz de búsqueda, incluso, puede abrir aplicaciones, ficheros, búsquedas locales (se integra complemente con beagle si lo tienes instalado) o directamente en internet; aquellos términos que desee buscar, simplemente tendrá que escribirlos dentro de la casilla correspondiente en el panel. En caso de escribir una dirección de correo electrónico en la barra de búsqueda se le brindará la opción de escribir un correo al destinario que desee.
Si desea probarlo es muy sencilla su instalación. En primer lugar debe tener activa la sección universe
en su lista de repositorios.
deb http://us.archive.ubuntu.com/ubuntu breezy universe
deb-src http://us.archive.ubuntu.com/ubuntu breezy universe
Una vez que haya editado el fichero /etc/apt/sources.list
debe actualizar la nueva lista de paquetes.
$ sudo aptitude update
Seguidamente puede proceder a instalar el paquete deskbar-applet
, para ello simplemente haga.
$ sudo aptitude install deskbar-applet
Una vez culminado el proceso de instalación debe activar deskbar-applet
(esta aplicación aparece en la sección de Accesorios) para que aparezca en el panel que desee, recuerde que para agregar un elemento al panel simplemente debe hacer click con el botón derecho del mouse y seleccionar la opción Añadir al panel.
Su uso es muy sencillo, posee una combinación de teclas (Alt + F3) que le facilitará enfocar la casilla de entrada, inmediatamente podrá comenzar a escribir.
Flock, el nuevo navegador social
Flock, es un nuevo navegador que toma sus bases en Mozilla Firefox, su objetivo es captar la atención de usuarios que suelen usar herramientas de comunicación social que están en boga, como por ejemplo:
- del.icio.us: Almacena y comparte tus enlaces favoritos.
- Flickr: Almacena y comparte tus imágenes.
- Technorati: Entérate acerca de lo que se habla actualmente en los blogs. Colección de enlaces a bitácoras organizados por etiquetas o tags.
- Sistemas de Blogging: Entre ellos: WordPress, Blogger, Movable Type, entre otros.
Sistema de publicación
Respecto a la posibilidad de publicar entradas o posts en tu blog desde el mismo navegador, Flock le ofrece una ventana aparte, tendrá que rellenar apropiadamente las distintas opciones que se le muestran para configurar el programa y de esa manera comenzar a redactar sus noticias, artículos, entre otros.
Siguiendo con el tema de la publicación de artículos, Flock, le permite
conectarse con su cuenta en Flickr y añadir fotos, esta posibilidad no se
restringe solo a las cuentas de Flickr, podrá incluir fotos que se muestren en
otros sitios, solamente deberá arrastrar dicha imagen a la interfaz que le
proporciona el editor en cuestión.
De igual manera lo explicado en el párrafo anterior puede aplicarse al texto, podrá arrastrar a la zona de edición cualquier texto disponible en la web, tambien Flock ofrece una opción denominada blog this, su funcionamiento es muy sencillo, solamente deberá seleccionar un texto que le interese publicar, seguidamente proceda a dar click con el botón derecho del mouse blog this, el texto en cuestión aparecerá en la zona de edición como una cita.
El sistema de publicación que le ofrece Flock le permite guardar sus artículos como borradores o marcarlos para su publicación inmediata, otra característica que cabe resaltar es la posibilidad de indicar explícitamente con cuales etiquetas o tags desea que se almacene la entrada para su clasificación en Technorati.
Favoritos
El sistema de favoritos se integra con tu cuenta en del.icio.us, gestor de
enlaces favoritos o bookmarks comunitario. y organizado por etiquetas o
tags.
Lectura de feeds
Flock nos indica cuando un blog o bitácora dispone de un feed, la manera de
indicarlo es muy agradable a la vista, simplemente muestra un icono al lado
derecho de la ventana de la URL. Si lo desea, puede ver el contenido del feed
desde el mismo Flock, que le ofrece un visualizador de feeds, en él podrá
ordenar las entradas por fechas o por la fuente, de manera adicional podrá
contraer o expander todas las noticias, si decide contraer (o expander) las
noticias de acuerdo al orden que haya elegido (por fecha o por fuente), puede ir
expandiendo (o contrayendo) dichas noticias una por una.
¿Desea probar Flock?
Si lo desea, puede probar fácilmente Flock al hacer uso de los ficheros binarios que se ofrecen, en ubuntu (aplicable en otras distribuciones) debe hacerse lo siguiente:
En primer lugar deberá descargar el paquete binario que se ofrece para la plataforma Linux desde la sección Developer de Flock.
Antes de continuar, debe saber que Flock está compilado haciendo uso de
libstdc++
en su versión 5, si, se encuentra en
Breezy, debe instalarla de la
siguiente manera:
$ sudo aptitude install libstdc++5
Una vez que se haya completado la transferencia del paquete binario de Flock, debe ubicarse en el directorio destino de la descarga y proceder a descompimir y desempaquetar el paquete en cuestion, para ello, debe hacer lo siguiente.
$ tar xvzf flock-0.4.10.en-US.linux-i686.tar.gz
Por supuesto, es de suponerse que en este ejemplo particular el paquete que se
descargó fué flock-0.4.10.en-US.linux-i686.tar.gz
, usted debe ajustar este
argumento de acuerdo al fichero que haya descargado.
Una vez culminado el paso anterior lo que sigue es sencillo, debe entrar en el
directorio generado y ejecutar el comando flock
, más o menos similar a lo que
sigue a continuacion.
$ cd flock
$ ./flock
Recuerde que en Breezy usted puede generar una entrada al menú haciendo uso de Herramientas del Sistema -> Applications Menu Editor, seguidamente seleccione el submenu Internet y genere una nueva entrada con las siguientes propiedades.
- Name: Flock
- Comment: Internet Browser
- Command: /directorio_donde_esta_flock/flock
- Icon: /directorio_donde_esta_flock/icons/mozicon128.png
Referencias
Atajos Dinámicos en GIMP
Muchas de las opciones en GIMP no ofrecen una combinación de teclas o atajo (shortcut) que nos permita utilizar dichas opciones de manera rápida. En este artículo plantearemos la creación de atajos dinámicos en GIMP.
En
primer lugar debemos tener abierto GIMP, parece evidente, ¿verdad?, seguidamente
nos vamos al menú de GIMP y seleccionamos Archivos -> Preferencias. Una vez
ubicados en la ventana de Preferencias seleccionamos la opción Interfaz de
la lista de categorías que se nos presenta. Seguidamente seleccionamos la
casilla de verificación que hace referencia a Usar combinaciones de teclas
dinámicas y aceptamos los cambios presionando el botón OK.
Una vez hecho lo anterior vamos a crear un nuevo fichero, no importan sus
medidas, la idea es asignarle un atajo a una opción cualquiera, o aquellas que
usamos comúnmente y que no disponen de una combinación de teclas, en este
artículo tomaré como ejemplo la opción Imagen -> Tamaño del lienzo…, el
atajo combinación de teclas que le asignaré a dicha opcion será Ctrl + F11. Para
lograr lo planteado anteriomente simplemente debe posicionarse con el cursor del
mouse en dicha opción, mientrás se encuentra encima de ella, proceda a
escribir la combinación de teclas que desee.
Programación Extrema
La Programación Extrema es ideal en aquellos proyectos en donde se requiere un desarrollo a corto plazo, en donde los requerimientos pueden ser cambiados en cualquier instante, de hecho, su principal objetivo es reducir los costos generados por los cambios en los requerimientos. Se propone como un paradigma en donde se proveen numerosas ventajas en la reutilización del código.
Se evita el diseño extensivo que presentan los modelos tradicionales, en donde los requerimientos del sistema son determinados al inicio del desarrollo del proyecto y a menudo son corregidos desde ese punto, esto implica que los costos ocasionados por los cambios de los requerimientos en una fase avanzada del proyecto sean bastante elevados, esto evidentemente es un problema para empresas que presentan cambios constantes.
Las prácticas principales en la Programación Extrema son aquellas que generalmente son aceptadas como buenas, pero en este paradigma se llevan al extremo.
La comunicación entre los desarrolladores y los clientes debe ser excelente. De hecho, se supone que un grupo de desarrollores tenga al menos un cliente en el sitio, que especifique y dé prioridad al trabajo que realizan los desarrolladores, que responda las preguntas tan pronto como se presenten.
Se busca la simplicidad en la escritura del código fuente, cuando éste se vuelve complejo, se recomienda una reescritura del código.
Las revisiones del código también se llevan al extremo, el paradigma de la Programación Extrema propone que los desarrolladores trabajen en parejas, compartiendo la pantalla y el teclado del ordenador, esto a la vez de promover la comunicación entre los desarrolladores permite que el código sea revisado mientras se escribe.
La Programación Extrema asegura la calidad en la aplicación desarrollada al momento de realizar lo que ellos llaman refactorización, el cual es un proceso de reestructuración del sistema, en donde se elimina la duplicación, se promueve simplificación y se le agrega flexibilidad sin cambiar la funcionalidad de operación del código.
Este paradigma funciona mejor en proyectos de pequeña o mediana escala (los grupos de desarrolladores no deben sobrepasar las 10 personas cada uno). Ideal en aquellas aplicaciones que necesitan una nueva versión cada 2 ó 3 semanas.
Evolution y Gmail
Si desea configurar el cliente de correo Evolution (también brinda una agenda de contactos, calendario, entre otras funcionalidades) para manejar su cuenta de Gmail, estos son los pasos.
Habilitando el acceso POP en su cuenta de Gmail
- Identificarse en Gmail.
- Un vez dentro del sistema, ir a la opción de Configuración
- Seguidamente proceda a seleccionar Reenvío y correo POP del menú.
- Dentro de la sección Descargar correo POP encontramos tres derivaciones:
- La primera se refiere al Estado, en ella debemos habilitar cualquiera de las dos opciones que se muestran al principio, la primera permite Habilitar POP para todos los mensajes (incluso si ya se han descargado), la segunda opción permite Habilitar POP para los mensajes que se reciban a partir de ahora.
- La segunda derivación se refiere a qué debe hacer Gmail cuando se accede a los mensajes a través de POP, eliga la respuesta de su conveniencia, yo por lo menos tengo conservar una copia de Gmail en la bandeja de entrada.
- La tercera derivacion se refiere a como lograr configurar el cliente de correo electrónico, en nuestro caso, será Evolution.
- Guardar cambios.
Ahora vamos a configurar nuestra cuenta Gmail desde Evolution. En primer lugar veamos como configurar la recepción de correos.
Recibiendo Mensajes
- Tipo de servidor: POP
- Servidor:
pop.gmail.com
- Usuario: [email protected], evidentemente debe cambiar la cadena nombredeusuario por su login verdadero, no olvide colocar seguido del nombre de usuario la cadena @gmail.com.
- Usar onexión segura: Siempre
- Tipo de autenticación: Password
Ahora veamos como configurar el envio de correos desde Evolution.
Enviando correos
- Tipo de servidor: SMTP
- Servidor: Puede usar las siguientes:
smtp.gmail.com
,smtp.gmail.com:587
ósmtp.gmail.com:465
. Debe marcar la casilla de verificación El servidor requiere autenticación - Usar conexión segura: Cuando sea posible
- Tipo (dentro de la sección de autenticación): Login
- Usuario (dentro de la sección de autenticación): [email protected], recuerde sustituir la cadena nombredeusuario por el parámetro correspondiente, no olvide colocar después del nombre de usuario la cadena @gmail.com, es importante.
Finalmente revise las opciones que le brinda Evolution y comience una vida llena de placeres.
COMO actualizar de manera segura su sistema
Antes de comenzar es importante hacer notar que esta guía se enfocará al mundo Debian GNU/Linux y sus derivadas, en donde por supuesto se incluye Ubuntu Linux. Después de hacer la breve aclaratoria podemos comenzar.
¿Es importante la firma de los paquetes?
La firma de los paquetes es una funcionalidad fundamental para evitar el posible cambio adrede en los ficheros binarios o fuentes distribuidos a través de sitios espejos (mirrors), de esta manera nos libramos de la posibilidad de un ataque man in the middle, el cual básicamente consiste en la intercepción de la comunicación entre el origen y el destino, el atacante puede leer, insertar y modificar los mensajes (en este caso particular, los ficheros) compartidos entre las partes sin que cada una de ellas se percate que la comunicación se ha visto comprometida.
Nuestro objetivo
Un sistema automatizado de actualización de paquetes, también es sumamente importante eliminar cualquier posibilidad de amenaza que pueda surgir al aprovecharse de la automatización del proceso de actualización, por ejemplo, debemos evitar a toda costa la distribución de troyanos que comprometarán la integridad de nuestros sistemas.
Un poco de historia…
No fue sino hasta la aparición de la versión 0.6 de la interfaz apt
en donde se realiza la autenticación de ficheros binarios y fuentes de manera transparente haciendo uso de una Infraestructura de clave pública (en inglés, Public Key Infrastructure o PKI). La PKI se basa en el modelo GNU Privacy Guard (GnuPG) y se ofrece un enorme despliegue de keyservers internacionales.
Detectando la autenticidad de los paquetes
Como se menciono anteriormente desde la versión 0.6 de la interfaz apt
se maneja de manera transparente el proceso de autentificación de los paquetes. Asi que vamos a hacer una prueba, voy a simular la instalación del paquete clamav
.
$ sudo aptitude --simulate install clamav
Obteniendo por respuesta lo siguiente:
Leyendo lista de paquetes... Hecho
Creando árbol de dependencias
Leyendo la información de estado extendido
Inicializando el estado de los paquetes... Hecho
Se instalarán automáticamente los siguientes paquetes NUEVOS:
arj clamav-base clamav-freshclam libclamav1 libgmp3 unzoo
Se instalarán los siguiente paquetes NUEVOS:
arj clamav clamav-base clamav-freshclam libclamav1 libgmp3 unzoo
0 paquetes actualizados, 7 nuevos instalados, 0 para eliminar y 0 sin actualizar.
Necesito descargar 3248kB de ficheros. Después de desempaquetar se usarán 4193kB.
¿Quiere continuar? [Y/n/?] Y
The following packages are not AUTHENTICATED:
clamav clamav-freshclam clamav-base libclamav1
Do you want to continue? [y/N] N
Cancela.
Si nos fijamos bien en la respuesta anterior notaremos que ciertos paquetes no han podido ser autentificados. A partir de este punto es responsabilidad del administrador del sistema el instalar o no dichos paquetes, por supuesto, cada quien es responsable de sus acciones, yo prefiero declinar mi intento por el momento y asegurarme de la autenticidad de los paquetes, para luego proceder con la instalación normal.
Comienza la diversión
Ahora bien, vamos a mostrar la secuencia de comandos a seguir para agregar las llaves públicas dentro del keyring por defecto. Antes de entrar en detalle es importante aclarar que el ejemplo agregará la llave pública del grupo os-cillation, quienes se encargan de mantener paquetes para el entorno de escritorio Xfce (siempre actualizados y manera no-oficial) para la distribución Debian GNU/Linux (también sirven para sus derivadas, como por ejemplo Ubuntu Linux).
Importando la llave pública desde un servidor GPG
$ gpg --keyserver hkp://wwwkeys.eu.pgp.net --recv-keys 8AC2C0A6
El comando anterior simplemente importara la llave especificada (8AC2C0A6
) desde el servidor con el cual se ha establecido la comunicación, el valor de la opción --keyserver
sigue cierto formato, el cual es: esquema:[//]nombreservidor[:puerto]
, los valores ubicados entre corchetes son opcionales, cuando hablamos del esquema nos referimos al tipo de servidor, regularmente utilizaremos como esquema hkp
para servidores HTTP o compatibles.
Si el comando anterior se ejecuto de manera correcta, el proceso nos arrojará una salida similar a la siguiente:
gpg: key 8AC2C0A6: public key "os-cillation Debian Package Repository
(Xfld Package Maintainer) <[email protected]>" imported
La instrucción anterior solamente variará de acuerdo al keyserver
y la clave que deseemos importar. En www.pgp.net está disponible un buscador que le facilitará la obtención de los datos necesarios.
Exportando y añadiendo la llave pública
$ gpg --armor --export 8AC2C0A6 | sudo apt-key add -
Con el comando anterior procedemos a construir la salida en formato ASCII producto de la exportación de la llave especificada y a través del pipe capturamos la salida estándar y la utilizamos como entrada estándar en el comando apt-key add
, el cual simplemente agregará una nueva llave a la lista de llaves confiables, dicha lista puede visualizarse al hacer uso del comando apt-key list
.
Aunque parezca evidente la aclaratoria, recuerde que si usted no puede hacer uso de sudo, debe identificarse previamente como superusuario.
Finalmente…
Para finalizar recuerde que debe actualizar la lista de paquetes.
$ sudo aptitude update
Ahora podemos proceder a instalar los paquetes desde el repositorio que hemos añadido como fuente confiable.
aptitude, ¿aún no lo usas?
Si usted es de los que piensa que aptitude por ser simplemente un frontend de apt no puede aportar alguna ventaja al manejo óptimo de paquetes, trataré en lo posible en este artículo hacerle cambiar de parecer, o por lo menos mostrarle que en realidad aptitude si ofrece ciertas ventajas sobre apt.
La útil y avanzada herramienta que le permite manejar cómodamente los paquetes, apt (y dpkg) no lleva un registro (ni hace distinciones) de las aplicaciones que se instalan de manera explícita y las que se instalan de manera implícita por consecuencia del primer punto (es decir, para establecer la resolución de dependencias). Esta característica genera ciertos inconvenientes a la hora de desinstalar un paquete que posee dependencias que no son empleadas por otros programas, al momento de realizar la desinstalación lo más seguro es que no queden las cosas muy “limpias” en el sistema.
Un remedio que en principio puede servirle es hacer uso de deborphan (también puede hacer uso de orphaner, un frontend para deborphan); una herramienta de mayor potencia es debfoster, el primero de los mencionados busca librerias huérfanas (como se explico en un artículo anterior) y al pasarle estos resultados al apt-get remove se puede resolver de cierta manera el problema.
El problema de deborphan es que su campo de acción es limitado, por lo que la “limpieza” puede no ser muy buena del todo. En cambio debfoster si hace la distinción de la cual hablaba al principio de este artículo, los paquetes instalados de manera explícita y aquellos que son instalados de manera implícita para resolver las dependencias, por lo tanto debfoster eliminará no solamente las librerias huérfanas tal cual lo hace deborphan si no que también eliminará aquellos paquetes que fueron instalados de manera implícita y que actualmente ningún otro programa dependa de él, también serán eliminados en el caso en que se de una actualización y ya la dependencia no sea necesaria.
Ahora bien, se presenta otra alternativa, aptitude, este frontend de apt si recuerda las dependencias de un programa en particular, por lo que el proceso de remoción del programa se da correctamente. Ya anteriormente había mencionado que apt y dpkg no hacen distinción de las aplicaciones instaladas y Synaptic apenas lleva un histórico, esto en realidad no cumple con las espectativas para mantener un sistema bastante “limpio”.
Aparte de lo mencionado previamente, otra ventaja que he encontrado en la migración a aptitude es que tienes dos opciones de manejo, la linea de comandos, la cual ha sido mi elección desde el comienzo, debido a la similitud de los comandos con los de apt y porque consigo lo que deseo inmediatamente, la interfaz gráfica no me llama la atención, pero quizás a usted si le guste. Adicionalmente, aptitude maneja de manera más adecuada el sistema de dependencias.
Para lograr ejecutar la interfaz gráfica de aptitude simplemente debe hacer:
$ sudo aptitude
De verdad le recomiendo emplear aptitude como herramienta definitiva para el manejo de sus paquetes, primero, si es usuario habitual de apt, el cambio prácticamente no lo notará, me refiero al tema de la similitud de los comandos entre estas dos aplicaciones, segundo, no tendrá que estar buscando “remedios” para mantener limpio el sistema, aptitude lo hará todo por usted.
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
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
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:
- Acceder a la interfaz del phpMyAdmin, para lograrlo escribe en la barra de direcciones de tu navegador http://localhost/phpmyadmin.
- Selecciona la opción de Privilegios, ésta se ubica en el menú principal.
- 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.
- 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.
Feedness libera su código
Feedness es una aplicación que te permite gestionar tus canales o feeds, por lo cual podrás leer y gestionar los contenidos de las páginas que ofrecen sus artículos en XML. Esto implica que puedes manejar todos tus canales favoritos desde una misma aplicación, sin necesidad de visitar dichos sitios, lo cual optimiza el tiempo de lectura de tus noticias a diario manteniendote constante actualizado a través del notificador disponible.
Walter Kobylanski anuncia la liberación del código de feedness, según el anuncio uno de los motivos por los cuales han tomado esta decisión se debe al parcial estancamiento en el desarrollo de la aplicación.
Sin embargo, nuestro estudio ha cambiado desde el lanzamiento, las cosas han mejorado mucho y hace ya más de 3 meses que no paramos de trabajar en proyectos para clientes. En consecuencia, hemos visto como feedness ha quedado paralizado en términos de desarrollo mientras que cada día tenemos más personas que utilizan este servicio.
Feedness es liberado bajo la licencia MIT, por cual podrá:
Cualquier persona puede obtener el software y la documentación asociada gratuitamente, sin ninguna restricción, siendo posible usarlo, modificarlo, copiarlo, hacerlo público, sub-licenciarlo o venderlo - entre otras posibilidades - siempre y cuando se mantengan la noticia de la licencia en los lugares donde se encuentra.
Si deseas colaborar con el proyecto, toda la información que busca al respecto estará disponible en OpenFeedness.
Beagle
Beagle es una poderosa herramienta de búsqueda escrita en C# usando Mono y Gtk# que le permitirá buscar hasta en lo más recóndito de su espacio personal y de esta manera encontrar lo que está buscando. Beagle también puede buscar en distintos dominios.
Usando Beagle ud. fácilmente podrá encontrar.
- Documentos.
- Correos electrónicos.
- Historial web.
- Conversaciones de Mensajería Instantánea o del IRC.
- Código fuente.
- Imagénes.
- Ficheros de audio.
- Aplicaciones.
- Otros…
Beagle puede extraer información desde:
- Evolution, tanto los correos electrónicos como de la libreta de contactos.
- Gaim, desde los registros de mensajería instantánea.
- Firefox, páginas web.
- Blam y Liferea, agregadores RSS.
- Tomboy, notas.
De manera adicional Beagle soporta los siguientes formatos.
- OpenOffice.org
- Microsoft Office (
doc
,ppt
,xls
). - HTML.
- PDF.
- Imágenes (jpeg, png).
- Audio (mp3, ogg, flac).
- AbiWord.
- Rich Text Format (RTF).
- Texinfo.
- Páginas del manual (man pages).
- Código Fuente (C, C++, C#, Fortran, Java, JavaScript, Pascal, Perl, PHP, Python).
- Texto sin formato.
Beagle aún se encuentra en una etapa temprana de desarrollo, así que aún faltan muchas características que le darían un plus a esta herramienta, por ejemplo, agregar el soporte a los sistemas de ficheros: NFS, Reiser4, NTFS y FAT.
En el caso de los sistemas de ficheros tipo FAT, muchos usuarios aún emplean este tipo de particiones para compartir datos entre los mundos GNU/Linux y Windows, por lo que sería conveniente el hecho de agregar esta funcionalidad a esta estupenda herramienta.
Si desea comenzar con esta herramienta, le recomiendo leer los primeros pasos del wiki de Beagle. A los usuarios de Ubuntu Linux le recomiendo la serie de pasos mostrados en el tema ¿Cómo instalar el buscador Beagle? de guia-ubuntu.org.
Existen algunas demostraciones sobre el uso de Beagle, propuestas por Nat Friedman, en una de ellas se podrá apreciar la funcionalidad de “búsqueda en vivo”, para ello es necesario activar el soporte de Inotify.
Inotify es un sistema de notificación de ficheros para el núcleo (kernel) de Linux. Actualmente esta característica no es incluida en la serie estable del núcleo de Linux, por lo que es muy probable que deba añadir esta característica al núcleo por si solo para poder utilizarlo. Existen algunas versiones del núcleo para distribuciones que si incluyen el soporte a Inotify.
Beagle como tal no requiere de Inotify para funcionar, solamente se recomienda su uso puesto que mejora la experiencia del usuario. Sin el soporte de Inotify, Beagle no podrá detectar automáticamente (en vivo) todos los cambios en su directorio personal, por lo que no podrá indexar los datos de manera oportuna.
De manera oportuna, los usuarios de Ubuntu Linux tienen cierta ventaja, no será necesario reparar el núcleo ni compilarlo, solamente hay que añadir la opción de Inotify en el fichero de configuración de Grub, de la manera siguiente:
$ sudo vi /boot/grub/menu.lst
title Ubuntu, kernel 2.6.10-5-k7
root (hd0,5)
kernel /vmlinuz-2.6.10-5-k7 root=/dev/hda8 ro quiet splash <strong>inotify</strong>
initrd /initrd.img-2.6.10-5-k7
savedefault
boot
Luego de hacer los cambios al fichero de configuración del gestor de arranque Grub, procedemos a actualizarlo.
$ sudo update-grub
Si utilizas Firefox y deseas que Beagle indexe las páginas que vas navegando, seguramente desearás instalar esta extensión.
ImageMagick
ImageMagick, es una suite de software libre, sirve para crear, editar y componer imágenes en mapa de bits. Puede leer, convertir y crear imágenes en una larga variedad de formatos (más de 90 formatos soportados). Las imágenes pueden ser cortadas, los colores pueden ser cambiados, ciertos efectos pueden ser aplicados, las imágenes pueden rotadas y combinadas, se pueden agregar a las imágenes, textos, líneas, polígonos, elipses, entre otros.
Es una suite realmente potente bajo la línea de comandos, puede ver una serie de ejemplos, esto le demostrará lo que puede llegar a hacer con esta eficaz aplicación.
Esta herramienta me ha facilitado enormemente el procesamiento de gran cantidad de imágenes que requieren el mismo tratamiento, solamente con una línea de comandos voy a establecer todas las opciones que deseo. Por ejemplo:
convert origen.jpg -resize 50% -bordercolor "#666"
-border 4 destino.png
Imagen Original -> Imagen modificada con ImageMagick.
Con esta simple línea de comandos estoy realizando las siguientes conversiones sobre la imagen origen.jpg, en primer lugar estoy reduciendo las proporciones de anchura y altura al 50%, posteriormente estoy designando el color del borde al valor hexadecimal (#666, gris), el ancho de dicho borde será de 4px, finalmente estoy cambiando el formato de la imagen, estoy convirtiendo de jpg a png, los resultados se podrán apreciar en la imagen destino.png. Ahora bien, imagínese procesar 500 imágenes desde una aplicación con interfaz gráfica que le brinde la rapidez que le ofrece ImageMagick, creo que hasta la fecha es imposible, por lo que resulta un buen recurso el emplear esta herramienta para el procesamiento de grandes lotes de imágenes.
Ahora vamos a “jugar” un poco para colocar una “marca de agua” a la imagen en cuestión.
convert origen.jpg -resize 50% -bordercolor "#666"
-border 4 -font "Bitstream Vera Sans" -pointsize 16 -gravity SouthEast
-fill "#FFF" -draw "text 10,10 'http://blog.milmazz.com.ve'" destino.png
Imagen Original -> Imagen modificada con ImageMagick.
Esta vez el número de opciones que he empleado han aumentado ligeramente. Vamos
a explicar brevemente cada una de ellas, la opción font nos permite elegir una
fuente, en el ejemplo he escogido la fuente Bitstream Vera Sans, la opción
pointsize permite escoger el tamaño de la fuente, la opción gravity nos permite
establecer la colocación horizontal y vertical del texto, he elegido la
primitiva SouthEast, la cual colocará el texto en la parte inferior derecha de
la imagen, la opción fill me permite establecer el color de relleno del texto
que se dibujará con la opción draw, esta última opción escribirá la cadena
http://blog.milmazz.com.ve
.
Para mayor información acerca de las distintas opciones que puede manejar le recomiendo leer detenidamente la descripción de las herramientas en línea de comando de ImageMagick.
Opera 8
A pesar de ser un navegador con pocos adeptos, Opera es un excelente navegador, ofrece tanto seguridad, rapidez y una interfaz sencilla de manejar.
En esta nueva versión se ofrecen ciertas características que valen la pena mencionar, bloqueador de ventanas emergentes (pop-up), navegación por pestañas, busquedas integradas, e-mail, entre otros.
Opera soporta la mayoría de las distribuciones GNU/Linux, entre ellas se encuentran: RedHat, SuSE, Mandrake, Debian, etc., también se incluyen versiones PowerPC y Sparc.
En esta nueva versión se ha propuesto una interfaz que permite realizar funciones avanzadas de una manera fácil y de una manera efectiva. En cuanto a la seguridad, Opera ahora despliega información dentro de la barra de direcciones, indicándole el nivel de seguridad del sitio en el que navega actualmente, también ofrece protección para evitar el phishing (duplicación de páginas web, normalmente con propósitos ilegales), de manera automática se revisa si existen actualizaciones disponibles para el navegador.
Le recomiendo vea la sección de las características del navegador.
Adobe adquiere Macromedia
Adobe Systems Incorporated ha anunciado a través de un comunicado de prensa la adquisición de Macromedia Inc., se estima que el valor de dicha adquisición es de aproximadamente 3.4 billones de dolares.
Esta noticia está generando controversia y no es para menos, algunos apoyan la adquisición hecha por Adobe, yo pienso que estas personas están siendo muy entusiastas, pero la historia nos recuerda que los monopolios no son nada buenos, ¿necesito dar ejemplos?. Sí, efectivamente, Adobe por medio de esta adquisición ha “dejado fuera” a quien en los últimos años era su máximo competidor. Macromedia ofrecía mejores opciones en cuanto aplicaciones dirijidas al campo del dasarrollo/diseño web, aunque Adobe cuenta con Photoshop, para muchos la mejor herramienta gráfica que ha salido al mercado en todos estos años.
Por ejemplo, para Diego Lafuente la fusión puede generar ciertos beneficios:
…Esto es groso, genial, brutal, de hecho quiero ver las cosas que saldrán de esta fusión (por ej.): PDF + Flash + Flex… oh Dios, lo que viene lo que viene…
Pero desde mi punto de vista Diego no está considerando un factor muy importante, y es que históricamente las empresas monopolistas, al no tener competencia en el mercado, hacen lo que les da la gana con él, por ejemplo, podrían aumentar los precios de sus productos y sus clientes estarían obligados (en caso de realizar una actualización de la suite o de alguna de las aplicaciones en particular) a cancelar montos bastante considerables, por lo que habría que evaluar los posibles aumentos en los costos de dichas inversiones en pequeñas y medianas empresas, por otra parte, es bien sabido que las empresas monopolistas no actualizan su software con regularidad, en ciertos casos, solo aplican “parches”, los cuales son considerados mejoras al software por parte de la empresa (en este caso en particular, Adobe), para adquirir estas “mejoras” el cliente debe cancelar ciertos montos, pero una mejora drástica no se llega a ver tan seguido como en los casos cuando existe competencia en el mercado.
El mismo Diego en uno de los comentarios dejados en su artículo Adobe compra Macromedia parece comprender el riesgo que se genera en el momento en que una empresa controla el mercado, sobretodo, en cuanto a los precios.
Sí eran competidores, competían… Adobe pujaba por la web permanentemente. Aunque FW costaba 4 veces menos, era competidor. Le quitaba un gran mercado, yo siempre usé Photoshop es que no es que me disgustara el FW simplemente no me gustaba el sistema de trabajo que tiene. Muchos lo encontraron muy cómodo.
También podriamos considerar otro hecho bastante peculiar, y es que una persona que venía trabajando con la suite ofrecida por Macromedia hace varios años, puede que no esté acostumbrada al posible cambio en el flujo de trabajo que proponga Adobe en las aplicaciones de ahora en adelante, ¿es posible medir el costo generado por estos cambios?, en realidad no es una tarea sencilla, pero es suficientemente claro que este proceso de “adaptación” representa ciertos costos para una empresa, ya que en el caso de sufrir cambios drásticos, habría que dedicar cierto tiempo al proceso de adaptación, y es que nosotros los seres humanos, somos animales de costumbres, es decir, ciertos cambios podrían generar pequeños inconvenientes a la hora de trabajar con estas aplicaciones.
Ya para finalizar, quisiera mostrar mi apoyo a la opinión emitida por Gez.
No me traten de utópico. Sólo creo que el acceso masivo a la información y la universalización del conocimiento es el paso evolutivo lógico para la humanidad, y no le veo mucha vida a estas corporaciones cuyo único vector son las ganancias.
La aparición de la imprenta marcó en su momento una gran revolución, porque le quitaba poder a la iglesia, que entonces era poseedora del poder que da el conocimiento.
Ahora estamos en los umbrales de una nueva revolución, donde el conocimiento y la tecnología se empezarán a ver como un bien de la humanidad y no como algo a lo que sólo empresas multimillonarias puedan acceder.
Amén. Existen alternativas libres que pueden igualar o mejorar el rendimiento de las aplicaciones descritas anteriormente, pero de igual manera, como mencione anteriormente, el hombre es un animal de costumbres, allí radica la esencia del cambio.
debian
apt-get detrás de proxy con autenticación NTLM
Por motivos que no vienen al caso discutir en este artículo tuve que instalar Debian GNU/Linux detrás de un proxy que aún utiliza NTLM como medio de autenticación, aunque NTLM ya no es recomendado por Microsoft desde hace años en pro de usar Kerberos.
Una vez instalada la distribución quería utilizar apt-get
para actualizarla e
instalar nuevos paquetes, el resultado fue que apt-get
no funciona de manera
transparente detrás de un proxy con autenticación NTLM. La solución fue
colocar un proxy interno que esté atento a peticiones en un puerto particular
en el host, el proxy interno se encargará de proveer de manera correcta las
credenciales al proxy externo.
La solución descrita previamente resulta sencilla al utilizar cntlm
. En
principio será necesario instalarlo vía dpkg
, posteriormente deberá editar los
campos apropiados en el fichero /etc/cntlm.conf
- Username
- Domain
- Password
- Proxy
Seguidamente reinicie el servicio:
# /etc/init.d/cntlm restart
Ahora solo resta configurar apt-get
para que utilice nuestro proxy interno,
para ello edite el fichero /etc/apt.conf.d/02proxy
Acquire::http::Proxy "http://127.0.0.1:3128";
NOTA: Se asume que el puerto de escucha de cntlm
es el 3128.
Ahora puede hacer uso correcto de apt-get
:
# apt-get update
# apt-get upgrade
...
NOTA FINAL: Es evidente que cualquier comando o herramienta que necesite
autenticarse contra el proxy externo deberá configurarlo para que utilice el
proxy interno, lo explicado en este artículo no solo aplica para el comando
apt-get
.
Construyendo de manera efectiva y rápida imágenes ISO de Debian con jigdo
Si usted desea el conjunto de CD o DVD para instalar Debian, tiene muchas posibilidades, desde la compra de los mismos, muchos de los vendedores contribuyen con Debian. También puede realizar descargas vía HTTP/FTP, vía torrent o rsync. Pero en este artículo se discutirá sobre un método para construir las imágenes ISO de Debian de manera eficiente, sobretodo si cuenta con un repositorio local de paquetes, dicho método se conoce de manera abreviada como jigdo o Jigsaw Download.
Las ventajas que ofrece jigdo están bien claras en el portal de Debian, cito:
¿Por qué jigdo es mejor que una descarga directa?
¡Porque es más rápido! Por varias razones, hay muchas menos réplicas para imágenes de CDs que para el archivo «normal» de Debian. Consecuentemente, si descarga desde una réplica de imágenes de CD, esa réplica no sólo estará más lejos de su ubicación, además estará sobrecargada, especialmente justo después de una publicación.
Además, algunos tipos de imágenes no están disponibles para descarga completa como .iso porque no hay suficiente espacio en nuestros servidores para alojarlas.
Considero que la pregunta pertinente ahora es: ¿Cómo descargo la imagen con jigdo?.
En primer lugar, instalamos el paquete jigdo-file
.
# aptitude install jigdo-file
Mi objetivo era generar los 2 primeros CD para Debian Lenny, para la fecha de publicación de este artículo la versión más reciente es la 5.0.7. La lista de imágenes oficiales para jigdo las puede encontrar acá.
milmazz@manaslu /tmp $ cat files
http://cdimage.debian.org/debian-cd/5.0.7/i386/jigdo-cd/debian-507-i386-CD-1.jigdo
http://cdimage.debian.org/debian-cd/5.0.7/i386/jigdo-cd/debian-507-i386-CD-1.template
http://cdimage.debian.org/debian-cd/5.0.7/i386/jigdo-cd/debian-507-i386-CD-2.jigdo
http://cdimage.debian.org/debian-cd/5.0.7/i386/jigdo-cd/debian-507-i386-CD-2.template
milmazz@manaslu /tmp $ wget -c -i files
--2010-12-02 12:39:52-- http://cdimage.debian.org/debian-cd/5.0.7/i386/jigdo-cd/debian-507-i386-CD-1.jigdo
Resolving cdimage.debian.org... 130.239.18.163, 130.239.18.173, 2001:6b0:e:2018::173, ...
Connecting to cdimage.debian.org|130.239.18.163|:80... connected.
HTTP request sent, awaiting response... 200 OK
Length: 31737 (31K) [text/plain]
Saving to: `debian-507-i386-CD-1.jigdo'
100%[===================================================================================================================>] 31.737 44,7K/s in 0,7s
...
FINISHED --2010-12-02 12:50:15--
Downloaded: 4 files, 27M in 10m 21s (44,7 KB/s)
milmazz@manaslu /tmp $ ls
debian-507-i386-CD-1.jigdo debian-507-i386-CD-1.template debian-507-i386-CD-2.jigdo debian-507-i386-CD-2.template files
Una vez descargados los ficheros necesarios, es hora de ejecutar el comando
jigdo-lite
, siga las instrucciones del asistente.
milmazz@manaslu ~ $ jigdo-lite debian-507-i386-CD-2.jigdo
Jigsaw Download "lite"
Copyright (C) 2001-2005 | jigdo@
Richard Atterer | atterer.net
Loading settings from `/home/milmazz/.jigdo-lite'
-----------------------------------------------------------------
Images offered by `debian-507-i386-CD-2.jigdo':
1: 'Debian GNU/Linux 5.0.7 "Lenny" - Official i386 CD Binary-2 20101127-16:55 (20101127)' (debian-507-i386-CD-2.iso)
Further information about `debian-507-i386-CD-2.iso':
Generated on Sat, 27 Nov 2010 17:02:14 +0000
-----------------------------------------------------------------
If you already have a previous version of the CD you are
downloading, jigdo can re-use files on the old CD that are also
present in the new image, and you do not need to download them
again. Mount the old CD ROM and enter the path it is mounted under
(e.g. `/mnt/cdrom').
Alternatively, just press enter if you want to start downloading
the remaining files.
Files to scan:
El comando despliega información acerca de la imagen ISO que generará, en este
caso particular, debian-507-i386-CD-2.iso
. Además, jigdo-lite
puede
reutilizar ficheros que se encuentren en CD viejos y así no tener que
descargarlos de nuevo. Sin embargo, este no era mi caso así que presione la
tecla ENTER.
-----------------------------------------------------------------
The jigdo file refers to files stored on Debian mirrors. Please
choose a Debian mirror as follows: Either enter a complete URL
pointing to a mirror (in the form
`ftp://ftp.debian.org/debian/'), or enter any regular expression
for searching through the list of mirrors: Try a two-letter
country code such as `de', or a country name like `United
States', or a server name like `sunsite'.
Debian mirror [http://debian.example.com/debian/]:
En esta fase jigdo-lite
solicita la dirección URL completa de un
repositorio, aproveche la oportunidad de utilizar su repositorio local si es que
cuenta con uno. Luego de presionar la tecla ENTER es tiempo de relajarse y
esperar que jigdo
descargue todos y cada uno de los ficheros que componen la
imagen ISO.
Luego de descargar los paquetes y realizar las operaciones necesarias para la
construcción de la imagen ISO jigdo
le informará los resultados.
FINISHED --2010-12-01 14:43:50--
Downloaded: 6 files, 2,5M in 1,8s (1,39 MB/s)
Found 6 of the 6 files required by the template
Successfully created `debian-507-i386-CD-2.iso'
-----------------------------------------------------------------
Finished!
The fact that you got this far is a strong indication that `debian-507-i386-CD-2.iso'
was generated correctly. I will perform an additional, final check,
which you can interrupt safely with Ctrl-C if you do not want to wait.
OK: Checksums match, image is good!
Ahora bien, haciendo uso de un repositorio local, es bueno preguntarse en cuanto
tiempo aproximadamente puedes construir tu imagen ISO, en mi caso el tiempo de
construcción de debian-507-i386-CD-2.iso
fue de:
milmazz@manaslu ~ $ time jigdo-lite debian-507-i386-CD-2.jigdo
...
real 8m35.704s
user 0m13.101s
sys 0m16.569s
Nada mal, ¿no les parece?.
Ahora bien, haciendo uso de un repositorio local, es bueno preguntarse en cuanto
tiempo aproximadamente puedes construir tu imagen ISO, en mi caso el tiempo de
construcción de debian-507-i386-CD-2.iso
fue de:
Referencias
Instalando dependencias no-libres de JAVA en ambientes pbuilder
El día de hoy asumí la construcción de unos paquetes internos compatibles con
Debian 5.0 (a.k.a. Lenny) que anteriormente eran responsabilidad de
ex-compañeros de labores. El paquete en cuestión posee una dependencia
no-libre, sun-java6-jre
. En este artículo se describirá como lograr
adecuar su configuración de pbuilder
para la correcta construcción del
paquete.
Asumiendo que tiene un configuración similar a la siguiente:
$ cat /etc/pbuilderrc
MIRRORSITE=http://example.com/debian
DEBEMAIL="Maintainer Name <[email protected]>"
DISTRIBUTION=lenny
DEBOOTSTRAP="cdebootstrap"
COMPONENTS="main contrib non-free"
Para mayor información sobre estas opciones sírvase leer:
$ man 5 pbuilderrc
Mientras intenta compilar su paquete en el ambiente proporcionado por pbuilder
el proceso fallará ya que no se mostró la ventana para aceptar la licencia de
JAVA. Podrá observar en el registro de la construcción del build un mensaje
similar al siguiente:
Unpacking sun-java6-jre (from .../sun-java6-jre_6-20-0lenny1_all.deb) ...
sun-dlj-v1-1 license could not be presented
try 'dpkg-reconfigure debconf' to select a frontend other than noninteractive
dpkg: error processing /var/cache/apt/archives/sun-java6-jre_6-20-0lenny1_all.deb (--unpack):
subprocess pre-installation script returned error exit status 2
Para evitar esto altere la configuración del fichero pbuilderrc
de la
siguiente manera:
$ cat /etc/pbuilderrc
MIRRORSITE=http://example.com/debian
DEBEMAIL="Maintainer Name <[email protected]>"
DISTRIBUTION=lenny
DEBOOTSTRAP="cdebootstrap"
COMPONENTS="main contrib non-free"
export DEBIAN_FRONTEND="readline"
Una vez alterada la configuración podrá interactuar con las opciones que le
ofrece debconf
.
Ahora bien, si usted constantemente tiene que construir paquetes con dependencias no-libres como las de JAVA, es probable que le interese lo que se menciona a continuación.
Si lee detenidamente la página del manual de pbuilder
en su sección 8 podrá
encontrar lo siguiente:
$ man 8 pbuilder
...
--save-after-login
--save-after-exec
Save the chroot image after exiting from the chroot instead of deleting changes. Effective for login and execute session.
...
Por lo tanto, usaremos esta funcionalidad que ofrece pbuilder
para insertar
valores por omisión en la base de datos de debconf
para que no se nos pregunte
si deseamos aceptar la licencia de JAVA:
# pbuilder login --save-after-login
I: Building the build Environment
I: extracting base tarball [/var/cache/pbuilder/base.tgz]
I: creating local configuration
I: copying local configuration
I: mounting /proc filesystem
I: mounting /dev/pts filesystem
I: Mounting /var/cache/pbuilder/ccache
I: policy-rc.d already exists
I: Obtaining the cached apt archive contents
I: entering the shell
File extracted to: /var/cache/pbuilder/build//27657
pbuilder:/# cat > java-license << EOF
> sun-java6-bin shared/accepted-sun-dlj-v1-1 boolean true
> sun-java6-jdk shared/accepted-sun-dlj-v1-1 boolean true
> sun-java6-jre shared/accepted-sun-dlj-v1-1 boolean true
> EOF
pbuilder:/# debconf-set-selections < java-license
pbuilder:/# exit
logout
I: Copying back the cached apt archive contents
I: Saving the results, modifications to this session will persist
I: unmounting /var/cache/pbuilder/ccache filesystem
I: unmounting dev/pts filesystem
I: unmounting proc filesystem
I: creating base tarball [/var/cache/pbuilder/base.tgz]
I: cleaning the build env
I: removing directory /var/cache/pbuilder/build//27657 and its subdirectories
Subversion: Notificaciones vía correo electrónico
Al darse un proceso de desarrollo colectivo es recomendable mantener una o varias listas de notificación acerca de los cambios hechos (commits) en el repositorio de código fuente. Para este tipo de actividades es muy útil emplear SVN::Notify
.
SVN::Notify
le ofrece un número considerable de opciones, a continuación resumo algunas de ellas:
- Obtiene información relevante acerca de los cambios ocurridos en el repositorio Subversion.
- Realiza análisis sobre la información recolectada y brinda la posibilidad de reconocer distintos formatos vía filtros (Ej. Textile, Markdown, Trac).
- Puede obtener la salida tanto en texto sin formato como en XHTML.
- Le brinda la posibilidad de construir correos electrónicos en base a la salida obtenida.
- Permite el envío de correo, ya sea por el comando
sendmail
o SMTP. - Es posible indicar el método de autenticación ante el servidor SMTP.
Para instalar el SVN::Notify
en sistemas Debian o derivados proceda de la siguiente manera:
# aptitude install libsvn-notify-perl
Una vez instalado SVN::Notify
, es hora de definir su comportamiento. Aunque es posible hacerlo vía comando svnnotify
y empotrarlo en un script escrito en Bash he preferido hacerlo en Perl, es más natural y legible hacerlo de este modo.
#!/usr/bin/perl -w
use strict;
use SVN::Notify;
my $path = $ARGV[0];
my $rev = $ARGV[1];
my %params = (
repos_path => $path,
revision => $rev,
handler => 'HTML::ColorDiff',
trac_url => 'http://trac.example.com/project',
filters => ['Trac'],
with_diff => 1,
diff_switches => '--no-diff-added --no-diff-deleted',
subject_cx => 1,
strip_cx_regex => [ '^trunk/', '^branches/', '^tags/' ],
footer => 'Administrado por: BOFH ',
max_sub_length => 72,
max_diff_length => 1024,
from => '[email protected]',
subject_prefix => '[project]',
smtp => 'smtp.example.com',
smtp_user => 'example',
smtp_pass => 'example',
);
my $developers = '[email protected]';
my $admins = '[email protected]';
$params{to_regex_map} = {
$developers => '^trunk|^branches',
$admins => '^tags|^trunk'
};
my $notifier = SVN::Notify->new(%params);
$notifier->prepare;
$notifier->execute;
Si seguimos con el ejemplo indicado en el artículo anterior, Instalación básica de Trac y Subversion, este hook lo vamos a colocar en /srv/svn/project/hooks/post-commit
, dicho fichero deberá tener permisos de ejecución para el Servidor Web Apache.
Con este sencillo script en Perl se ha logrado lo siguiente:
- La salida se generará en XHTML.
- Las diferencias de código serán resaltadas o coloreadas, esto es posible por el handler
SVN::Notify::ColorDiff
- El sistema de notificación está integrado a la sintaxis de enlaces de Trac. Por lo tanto, los commits que posean este tipo de enlaces serán interpretados correctamente. Ej.
#123 changeset:234 r234
Aunque el código es sucinto y claro, trataré de resumir cada uno de los parámetros utilizados.
-
repos_path
: Define la ruta al repositorio Subversion, la cual es obtenida a partir del primer argumento que pasa Subversion al ejecutar el hookpost-commit
. -
revision
: El número de la revisión del commit actual. El número de la revisión se obtiene a partir del segundo argumento que pasa Subversion al ejecutar el hookpost-commit
-
handler
: Especifica una subclase deSVN::Notify
que será utilizada para el manejo de las notificaciones. En el ejemplo se hace uso deHTML::ColorDiff
, el cual permite colorear o resaltar la sintaxis del comandosvnlook diff
-
trac_url
: Este parámetro será usado para generar enlaces al Trac para los números de revisiones y similares en el mensaje de notificación. -
filters
: Especifica la carga de más módulos que terminan de difinir la salida de la notificación. En el ejemplo, se hace uso del filtroTrac
, filtro que convierte el log del commit que cumple con el formato de Trac a HTML. -
with_diff
: Valor lógico que especifica si será o no incluida la salida del comandosvnlook diff
en la notificación vía correo electrónico. -
diff_switches
: Permite el pase de opciones al comandosvnlook diff
, en particular recomiendo utilizar--no-diff-deleted
y--no-diff-added
para evitar ver las diferencias para los archivos borrados y añadidos respectivamente. -
subject_cx
: Valor lógico que indica si incluir o nó el contexto del commit en la línea de asunto del correo electrónico de notificación. -
strip_cx_regex
: Acá se indican las expresiones regulares que serán utilizadas para eliminar información del contexto de la línea de asunto del correo electrónico de notificación. -
footer
: Agrega la cadena definida al final del cuerpo del correo electrónico de notificación -
max_sub_length
: Indica la longitud máxima de la línea de asunto del correo electrónico de notificación. -
max_diff_length
: Máxima longitud deldiff
(esté adjunto o en el cuerpo de la notificación). -
from
: Define la dirección de correo que será usada en la líneaFrom
. Si no se especifica será utilizado el nombre de usuario definido en el commit, esta información se obtiene vía el comandosvnlook
. -
subject_prefix
: Define una cadena de texto que será el prefijo de la línea correspondiente al asunto del correo electrónico de notificación. -
smtp
: Indica la dirección para el servidor SMTP que el cual se enviarán las notificaciones de correo electrónico. Si no se utiliza este parámetro,SVN::Notify
utilizará el comandosendmail
para el envío del mensaje. -
smtp_user
: El nombre de usuario para la autenticación SMTP. -
smtp_pass
: Contraseña para la autenticación SMTP -
to_regex_map
: Este parámetro contiene un hash que mantiene referencias de direcciones de correo electrónico contra expresiones regulares. La idea es enviar las notificaciones si y solo si el nombre de uno o más directorios son afectados por un commit y dicha ruta coincide con las expresiones regulares definidas. Este parámetro resulta muy útil en proyectos de desarrollo de software grandes y donde es posible disponer de varias listas de correo para informar a los desarrolladores interesados en secciones específicas. Para mayor detalle de las opciones mencionadas previamente veaSVN::Notify
, acá también encontrará más opciones de configuración.
Observación
Hasta ahora he encontrado que el coloreado o resaltado de la sintaxis no funciona en algunos sistemas Webmail, como por ejemplo Gmail, SquirrelMail. Sin embargo, en otros sistemas Webmail como RoundCube si funciona. Este comportamiento se presenta porque en sistemas como Gmail las hojas de estilos en cascada (CSS) internas no son aplicadas en la interfaz. Es por ello que en estos casos es necesario recurrir a la definición de estilos en línea.
Instalación básica de Trac y Subversion
En este artículo se pretenderá mostrarle el proceso de instalación de un ambiente de desarrollo que le permitirá hacerle seguimiento a su proyecto personal, de igual manera se le indicará el modo en el cual puede comenzar a utilizar un sistema de control de versiones. Todas las indicaciones mostradas en este documento han sido probadas en la distribución Debian GNU/Linux 5.0 (nombre código Lenny).
La herramienta de seguimiento o manejo del proyecto que se procederá a instalar es Trac, el sistema de control de versiones que se presentará será Subversion. Todo lo anterior se presentará vía Web haciendo uso del servidor Apache, de manera adicional se utilizará el servidor de bases de datos PostgreSQL como backend de Trac.
Dependencias
En primer lugar proceda a instalar las siguientes dependencias.
# aptitude install apache2 \
libapache2-mod-python \
postgresql \
subversion \
python-psycopg2 \
libapache2-svn \
python-subversion \
trac
La versión de Trac que se encuentra en los archivos de Debian Lenny es estable (0.11.1). Sin embargo, si usted compara esta versión con lo publicado en el sitio oficial de Trac, podrá encontrar que existen nuevas versiones estables de mantenimiento que contienen correcciones a errores de programación y algunas nuevas funcionalidades de bajo impacto, para el momento de la redacción de este artículo se encuentra la versión 0.11.7. Es recomendable que utilice el paquete trac
desde el archivo backports de Debian.
# aptitude -t lenny-backports install trac
Si desea usar el paquete proveniente del archivo backports le recomiendo leer las instrucciones de uso de este repositorio de paquetes.
Con el fin de mantener este artículo lo más sencillo y conciso posible se describirá la versión que viene por defecto con la distribución utilizada en este caso.
Versión de desarrollo de Trac
Si desea conocer algunas características interesantes que se han agregado a Trac en las nuevas versiones, o si su interés particular es
examinar las bondades que le ofrece Trac en su versión de desarrollo puede hacer uso del comando pip
, si no tiene instalado pip proceda como sigue:
# aptitude install python-setuptools
# easy_install pip
Proceda a instalar la versión de desarrollo de Trac.
# pip install https://svn.edgewall.org/repos/trac/trunk
Creación de usuario y base de datos
Antes de proceder con la instalación de Trac se debe establecer el usuario y la base de datos que se utilizará para trabajar.
En el siguiente ejemplo el usuario de la base de datos PostgreSQL que utilizará Trac será trac_user
, su contraseña será trac_passwd
. El uso de la contraseña lo del usuario trac_user
lo veremos más tarde al proceder a configurar el ambiente de Trac.
# su postgres
$ createuser \
--no-superuser \
--no-createdb \
--no-createrole \
--pwprompt \
--encrypted trac_user
Enter password for new role:
Enter it again:
CREATE ROLE
Nótese que se debe utilizar el usuario postgres
(u otro usuario con los privilegios necesarios) del sistema para proceder a crear los usuarios.
Ahora procedemos a crear la base de datos trac_dev
, cuyo dueño será el usuario trac_user
.
$ createdb --encoding UTF8 --owner trac_user trac_dev
Ambiente de Trac
Creamos el directorio /srv/www
que será utilizado para prestar servicios Web, para mayor referencia acerca de esta elección se le recomienda leer el documento Filesystem Hierarchy Standard en su versión 2.3.
$ sudo mkdir -p /srv/www
$ cd /srv/www
Generamos el ambiente de Trac. Básicamente se deben contestar ciertas preguntas como:
- Nombre del proyecto.
- Enlace con la base de datos que se utilizará.
- Sistema de control de versiones a utilizar (por defecto será SVN).
- Ubicación absoluta del repositorio a utilizar.
- Ubicación de las plantillas de Trac.
En el siguiente ejemplo se omitirán los comentarios brindados por el comando trac-admin
.
# trac-admin project initenv
Creating a new Trac environment at /srv/www/project
...
Project Name [My Project]> Demo
...
Database connection string [sqlite:db/trac.db]>
postgres://trac_user:trac_passwd@localhost:5432/trac_dev
...
Repository type [svn]>
...
Path to repository [/path/to/repos]> /srv/svn/project
...
Templates directory [/usr/share/trac/templates]>
Creating and Initializing Project
Installing default wiki pages
...
---------------------------------------------------------
Project environment for 'Demo' created.
You may now configure the environment by editing the file:
/srv/www/project/conf/trac.ini
...
Congratulations!
Se ha culminado la instalación del ambiente de Trac, ahora procederemos a crear el ambiente de subversion.
Subversion: Sistema Control de Versiones
La puesta a punto del sistema de control de versiones es bastante sencilla, se resume en los siguientes pasos.
Creación del espacio para prestar el servicio SVN, de igual manera se seguirá los lineamientos planteados en el FHS v2.3 mencionado previamente.
# mkdir -p /srv/svn
Seguidamente crearemos el proyecto subversion project
y haremos un importe inicial con la estructura básica de un proyecto de desarrollo de software.
$ cd /srv/svn
# svnadmin create project
$ mkdir -p /tmp/project/{trunk,tags,branches}
$ tree /tmp/project/
/tmp/project/
├── branches
├── tags
└── trunk
# svn import /tmp/project/ \
file:///srv/svn/project/ \
-m 'Importe inicial'
Adding /tmp/project/trunk
Adding /tmp/project/branches
Adding /tmp/project/tags
Committed revision 1.
Apache: Servidor Web
Es hora de configurar los sitios virtuales que utilizaremos tanto para Trac como para subversion.
A continuación se presenta la configuración básica de Trac.
# cat > /etc/apache2/sites-available/trac.example.com <<EOF
> <VirtualHost *>
> ServerAdmin webmaster@localhost
> ServerName trac.example.com
> CustomLog /var/log/apache2/trac.example.com/access.log combined
> ServerSignature Off
> ErrorLog /var/log/apache2/trac.example.com/error.log
> LogLevel warn
> DocumentRoot /srv/www/project
> <Location />
> SetHandler mod_python
> PythonInterpreter main_interpreter
> PythonHandler trac.web.modpython_frontend
> PythonOption TracEnv /srv/www/project
> PythonOption TracUriRoot /
> </Location>
> </VirtualHost>
> EOF
Ahora veamos la configuración básica de nuestro proyecto subversion.
# cat > /etc/apache2/sites-available/svn.example.com <<EOF
> <VirtualHost *>
> ServerAdmin webmaster@localhost
> ServerName svn.example.com
> CustomLog /var/log/apache2/svn.example.com/access.log combined
> ServerSignature Off
> ErrorLog /var/log/apache2/svn.example.com/error.log
> LogLevel warn
> DocumentRoot /srv/svn/project
> <Location />
> DAV svn
> SVNPath /srv/svn/project
> </Location>
> </VirtualHost>
> EOF
De acuerdo a la configuración mostrada es necesario crear los directorios /var/log/apache2/svn.example.com
y /var/log/apache2/trac.example.com
para mantener por separado el registro de accesos y errores de los sitios virtuales recién creados. De
lo contrario no podremos iniciar el servidor Web Apache.
# mkdir /var/log/apache2/{svn,trac}.example.com
Activamos el módulo DAV
necesario para cumplir con la configuración mostrada para el sitio virtual svn.example.com
.
# a2enmod dav
Activamos los sitios virtuales recién creados.
# a2ensite trac.example.com
# a2ensite svn.example.com
Como la puesta en marcha y configuración de un servidor DNS escapa a los fines de este artículo, simplemente definiremos los hosts en la tabla estática que se encuentra definida en el archivo /etc/hosts
de la siguiente manera.
# cat >> /etc/hosts <<EOF
> 127.0.0.1 trac.example.com trac
> 127.0.0.1 svn.example.com svn
> EOF
Finalmente debemos forzar la recarga de la configuración del servidor Web Apache, esto con el fin de cargar el módulo DAV
y los sitios virtuales definidos, es decir, trac.example.com
y svn.example.com
.
# /etc/init.d/apache2 force-reload
¡Felicitaciones!, ya puede ir a su navegador favorito y colocar cualquiera de los sitios virtuales que acaba de definir.
Recomendaciones
Una vez que haya llegado a este sección deberá comenzar a modificar adecuadamente los permisos para el usuario y grupo www-data
(Servidor Web Apache) para que escriba en las ubicaciones que sea necesario tanto en Trac como en subversion.
La configuración de Trac podrá encontrarla en /srv/www/project/conf/trac.ini
, para mayor detalle acerca de la configuración de este fichero se le recomienda leer el documento TracIni.
Si en su proyecto prevé que participarán otras personas, es recomendable establecer notificaciones de tickets y cambios en el
repositorio subversion, para esto último deberá revisar el hook post-commit
y la documentación del paquete libsvn-notify-perl que le ofrece una extraordinaria cantidad de opciones.
Conozca el entorno de Trac y Subversion. Si desea agregar nuevas funciones a su instalación le recomiendo visitar el sitio Trac Hacks.
Espero poder mostrarles en próximos artículos algunas configuraciones más avanzadas en Trac, incluyendo la instalación, configuración y uso de plugins.
Configurando nuestras interfaces de red con ifupdown
Si usted es de esas personas que suele mover su máquina portátil entre varias redes que no necesariamente proveen DHCP y usualmente vuelve a configurar sus preferencias de conexión, seguramente este artículo llame su atención puesto que se explicará acerca de la configuración de diversos perfiles de conexión vía línea de comandos.
En los sistemas Debian y los basados en él, Ubuntu por ejemplo, para lograr la configuración de las redes existe una herramienta de alto nivel que consiste en los comandos ifup
e ifdown
, adicionalmente se cuenta con el fichero de configuración /etc/network/interfaces
. También el paquete wireless-tools
incluye un script en /etc/network/if-pre-up.d/wireless-tools
que hace posible preparar el hardware de la interfaz inalámbrica antes de darla de alta, dicha configuración se hace a través del comando iwconfig
.
Para hacer uso de las ventajas que nos ofrece la herramienta de alto nivel ifupdown
, en primer lugar debemos editar el fichero /etc/network/interfaces
y establecer nuestros perfiles de la siguiente manera:
auto lo
iface lo inet loopback
# Conexión en casa usando WPA
iface home inet dhcp
wpa-driver wext
wpa-ssid foo
wpa-psk baz
wpa-keymgmt WPA-PSK
wpa-pairwise TKIP CCMP
wpa-group TKIP CCMP
wpa-proto WPA RSN
# Conexión en la oficina
# sin DHCP
iface office inet static
wireless-essid bar
wireless-key s:egg
address 192.168.1.97
netmask 255.255.255.0
broadcast 192.168.1.255
gateway 192.168.1.1
dns-search company.com #[email protected]
dns-nameservers 192.168.1.2 192.168.1.3 #[email protected]
# Conexión en reuniones
iface meeting inet dhcp
wireless-essid ham
wireless-key s:jam
En este ejemplo se encuentran 3 configuraciones particulares (home
, work
y meeting
), la primera de ellas define que nos vamos a conectar con un Access Point cuyo ssid es foo
con un tipo de cifrado WPA-PSK/WPA2-PSK, esto fue explicado en detalle en el artículo Haciendo el cambio de ipw3945 a iwl3945. La segunda configuración indica que nos vamos a conectar a un Access Point con una IP estática y configuramos los parámetros search
y nameserver
del fichero /etc/resolv.conf
(para más detalle lea la documentación del paquete resolvconf
). Finalmente se define una configuración similar a la anterior, pero en este caso haciendo uso de DHCP.
Llegados a este punto es importante aclarar lo que ifupdown
considera una interfaz lógica y una interfaz física. La interfaz lógica es un valor que puede ser asignado a los parámetros de una interfaz física, en nuestro caso home
, office
, meeting
. Mientras que la interfaz física es lo que propiamente conocemos como la interfaz, en otras palabras, lo que regularmente el kernel reconoce como eth0
, wlan0
, ath0
, ppp0
, entre otros.
Como puede verse en el ejemplo previo las definiciones adyacentes a iface
hacen referencia a interfaces lógicas, no a interfaces físicas.
Ahora bien, para dar de alta la interfaz física wlan0
haciendo uso de la interfaz lógica home
, como superusuario puede hacer lo siguiente:
# ifup wlan0=home
Si usted ahora necesita reconfigurar la interfaz física wlan0
, pero en este caso particular haciendo uso de la interfaz lógica work
, primero debe dar de baja la interfaz física wlan0
de la siguiente manera:
# ifdown wlan0
Seguidamente deberá ejecutar el siguiente comando:
# ifup wlan0=work
Es importante hacer notar que tal como está definido ahora el fichero /etc/network/interfaces
ya no es posible dar de alta la interfaz física wlan0
ejecutando solamente lo siguiente:
ifup wlan0
La razón de este comportamiento es que el comando ifup
utiliza el nombre de la interfaz física como el nombre de la interfaz lógica por omisión y evidentemente ahora no está definido en el ejemplo un nombre de interfaz lógica igual a wlan0
.
En un próximo artículo se harán mejoras en la definición del fichero /etc/network/interfaces
y su respectiva integración con una herramienta para la detección de redes que tome como entrada una lista de perfiles de redes candidatas, cada una de ellas incluyendo casos de pruebas. Teniendo esto como entrada ya no será necesario indicar la interfaz lógica a la que se hace referencia ya que la herramienta se encargará de probar todos los perfiles en paralelo y elegirá aquella que cumpla en primera instancia con los casos de prueba. De modo tal que ya podremos dar de alta nuestra interfaz física con solo hacer ifup wlan0
.
Haciendo el cambio de ipw3945 a iwl3945
Si usted es de esas personas que cuenta con una tarjeta inalámbrica Intel Corporation PRO/Wireless 3945, seguramente sabrá que existen al menos dos proyectos que le dan soporte. El primero de ellos es ipw3945 y se encuentra obsoleto, el desarrollo pasó al proyecto iwlwifi.
Aprovechando que recientemente ha ingresado a la versión inestable de Debian la serie del kernel 2.6.24
, este contiene el nuevo modulo iwl3945
que reemplaza al viejo ipw3945
. Una de las ventajas de este cambio es que ya no hay necesidad de tener activo el demonio ipw3945d
. Sin embargo, aun se necesita del firmware que se encuentra en la sección non-free
del repositorio de Debian.
Hasta donde he leído el plan será remover los paquetes ipw3945-modules-*
e ipw3945d
de los repositorios de Debian (al menos en testing y en unstable) una vez que la serie 2.6.24
del kernel llegue a la versión de pruebas (testing). Aquellos que se encuentren hoy día en la versión inestable (unstable) de Debian deberán cambiar el driver desde ipw3945
a iwl3945
. Para aquellos que trabajan en etch también es posible usar el driver iwl3945
si actualiza su versión del kernel por medio del repositorio etch-backports (el nuevo stack mac80211
que usa iwlwifi
se encuentra a partir de la versión del kernel 2.6.22
).
Las instrucciones que verá a continuación se han aplicado en Debian inestable, si usted desea instalar iwlwifi
en etch puede seguir estas instrucciones.
Obteniendo algunos datos de interés antes de proceder con la actualización.
Versión del kernel:
$ uname -r
2.6.22-3-686
Verifique que en realidad tiene una tarjeta Intel Corporation PRO/Wireless 3945 $ lspci -nn | grep Wireless 03:00.0 Network controller [0280]: Intel Corporation PRO/Wireless 3945ABG Network Connection [8086:4227] (rev 02)
Paquetes necesarios
Ahora bien, es necesario instalar el nuevo kernel y el firmware necesario para hacer funcionar a iwlwifi
# aptitude install linux-image-2.6-686 \\
linux-image-2.6.24-1-686 \\
firmware-iwlwifi
Evitando problemas
Verifique que no existe alguna entrada que haga referencia al modulo ipw3945
en el fichero /etc/modules
. Para ello recurrimos a Perl que nos facilita la vida.
# perl -i -ne 'print unless /^ipw3945/' /etc/modules
Debido a algunos problemas que se presentan en el paquete network-manager si anteriormente ha venido usando el modulo ipw3945
se recomienda eliminar la entrada que genera udev
para dicho modulo en el fichero /etc/udev/rules.d/z25_persistent-net.rules
, la entrada es similar a la siguiente:
# PCI device 0x8086:0x4227 (ipw3945)
SUBSYSTEM=="net", DRIVERS=="?*", ATTRS{address}=="00:13:02:4c:12:12", NAME="eth2"
Fichero /etc/network/interfaces
Este paso es opcional, agregamos la nueva interfaz wlan0
al fichero /etc/network/interfaces
y procedemos a configurarla de acuerdo a nuestras necesidades.
auto lo
iface lo inet loopback
auto wlan0
iface wlan0 inet dhcp
wpa-driver wext
wpa-ssid foo
wpa-psk baz
wpa-key-mgmt WPA-PSK
wpa-pairwise TKIP CCMP
wpa-group TKIP CCMP
wpa-proto WPA RSN
En este caso particular se está indicando que nos vamos a conectar a un Access Point cuyo ssid
es foo
con tipo de cifrado WPA-PSK/WPA2-PSK, haciendo uso del driver wext
que funciona como backend para wpa_supplicant
. Es de hacer notar que el driver wext
es utilizado por todos los adaptadores Intel Pro Wireless, eso incluye ipw2100
, ipw2200
e ipw3945
.
Para hacer funcionar WPA recuerde que debe haber instalado previamente el paquete wpasupplicant
.
# aptitude install wpasupplicant
De igual manera se le recuerda adaptar todos aquellos parámetros como wpa-ssid
y wpa-psk
a aquellos adecuados en su caso. En particular el campo wpa-psk
lo puede generar con el siguiente comando:
$ wpa_passphrase su_ssid su_passphrase
Aunque mi recomendación es usar el comando wpa_passphrase
de la siguiente manera.
$ wpa_passphrase su_ssid
Posteriormente deberá introducir su_passphrase
desde la entrada estándar, esto evitará que su_passphrase
quede en el historial de comandos.
Para mayor detalle de los campos expuestos en la configuración del fichero /etc/network/interfaces
se le recomienda leer la documentación expuesta en /usr/share/doc/wpasupplicant/README.modes.gz
.
Una vez concluidos estos pasos reiniciamos el sistema y seleccionamos en nuestro Gestor de Arranque (ej. GRUB) la versión del kernel recien instalada. Al momento de iniciar su sesión verifique que su tarjeta inalámbrica esté funcionando, de lo contrario haga las revisiones que se indican en la siguiente sección.
En caso de persistir los problemas
Remueva y reinserte el modulo iwl3945
# modprobe -r iwl3945
# modprobe iwl3945
De manera adicional compruebe que udev
haya generado una nueva entrada para iwl3945
.
$ cat /etc/udev/rules.d/z25_persistent-net.rules
...
# PCI device 0x8086:0x4227 (iwl3945)
SUBSYSTEM=="net", DRIVERS=="?*", ATTR{address}=="00:13:02:4c:12:12", ATTR{type}=="1", NAME="wlan0"
Finalmente, reestablecemos la interfaz de red.
# ifdown wlan0
# ifup wlan0
Elimine ipw3945
Una vez verificado el correcto funcionamiento del módulo iwl3945
puede eliminar con seguridad todo aquello relacionado con el modulos ipw3945
.
# aptitude --purge remove firmware-ipw3945 \\
ipw3945-modules-$(uname -r) \\
ipw3945-source ipw3945d
Estas instrucciones también aplican para el modulo iwl4965
. Mayor información en Debian Wiki § iwlwifi.
Configurando el sonido (HDA Intel) en Lenovo 3000 c200 en Debian GNU/Linux
La situación poco común se presentó con un portátil Lenovo, específicamente un 3000 c200; el computador en cuestión mostraba la tarjeta funcionando, como si estuviera todo normal, pero sucede que no había sonido en lo absoluto por más altos que estuvieran los indicadores gráficos del volumen. Indagando por Google me encontré que ya han habido muchos casos similares, no solamente para laptops Lenovo, sino para la mayoría que incluye ese tipo de tarjetas y me encontré con una solución en un foro que me funcionó perfecto. Acá voy a tratar de explicar paso a paso todo lo que hice para que funcionara como debe ser.
Lo primero que se hizo fué asegurarse que se trata realmente de una tarjeta HDA Intel, con la siguiente línea de comandos:
$ lspci | grep High
…a lo que se obtuvo la siguiente respuesta:
00:1b.0 Audio device: Intel Corporation 82801G (ICH7 Family) High Definition Audio Controller (rev 02)
…donde se puede verificar que se trata de la HDA de la familia ICH7 de la Intel. Una vez verificado ésto, se procede a instalar algunos paquetes necesarios para que todo funcione de manera correcta, que son los siguientes:
- build-essentials
- gettext
- libncurses5-dev
Ésto se logró con el aptitude, con la siguiente línea de comandos:
$ sudo aptitude install el_paquete_que_quiero_instalar
Luego hay que descargar las cabeceras del kernel que se está usando. Para ésto, la manera más fácil de hacerlo fué instalando el paquete module-assistant y haciendo lo siguiente en una terminal:
$ sudo m-a update
$ sudo m-a prepare
Y el programa automáticamente va a saber cuáles cabeceras descargar y el directorio donde ponerlas. Cuando estén instalados éstos tres paquetes también se va a necesitar descargar de la página del Proyecto Alsa tres archivos necesarios y que son nombrados a continuación:
Se pueden descargar con un gestor de descargas preferido, ésto se hizo con wget, utilizando la línea de comandos:
$ wget -c http://www.alsa-project.org/alsa-driver-1.0.14.tar.bz2
…y así para cada uno de los archivos. Cuando se tengan los tres archivos, se copian a la carpeta /usr/src/alsa/
la cual, probablemente no existe todavía en el sistema y por lo tanto tendrá que ser creada; ésto se puede lograr con la siguiente línea de comandos:
$ sudo mkdir /usr/src/alsa
…cuando se tenga el directorio, se copian los tres archivos tar.gz al mismo; ésto se puede lograr con:
$ sudo cp alsa* /usr/src/alsa/
Luego hay que descomprimir los ficheros tar.gz con:
$ sudo tar xvf el_archivo_que_vamos_a_descomprimir.tar.gz
Una vez descomprimidos nos ubicamos en la primera carpeta que va a ser alsa-driver-1.0.14/ y compilamos el alsa para las tarjetas HDA Intel con las siguientes líneas de comandos:
$ sudo ./configure --with-cards=hda-intel
$ sudo make
$ sudo make install
Luego vamos a necesitar compilar los otros 2 paquetes restantes, para ello, nos ubicamos en la carpeta correspondiente y hacemos en una terminal lo siguiente:
$ sudo ./configure
$ sudo make
$ sudo make install
Ésto se va a hacer tanto para alsa-lib como para alsa-utils, pues el procedimiento es el mismo. Cuando se hayan compilado los tres paquetes el sistema ya debería ser capaz de reconocer correctamente la tarjeta y por lo tanto debe haber sonido; Ésto puedes ser verificado (1) Abriendo un reproductor de preferencia y reproduciendo algo de musica ó (2) Se puede hacer con la siguiente línea:
$ cat /dev/urandom >> /dev/dsp/
Con lo cual se obtendrá un sonido algo parecido a unos aplausos, pero en realidad son sonidos producidos aleatoriamente.
Ésto debería ser todo. En las máquinas que se configuraron, cuando se conectaban los audífonos en el panel lateral, el sonido salía tanto por los audífonos como por las cornetas y al parecer se solucionó con una reiniciada, pero sino quieres reiniciar entonces lo que tienes que hacer es tumbar los módulos que se crearon y volverlos a cargar, tal cual reiniciaras el sistema:
$ sudo modprobe -r snd_hda_intel652145
$ sudo modprobe -r snd_pcm
$ sudo modprobe -r snd_page_alloc
Luego para cargarlos hacemos las mismas línea, pero sin la opción -r.
Transmission 0.72 en Debian y Ubuntu GNU/Linux AMD64
Bien, en realidad, no he podido esperar a tenerlo trabajando al 100%, se trata de la versión 0.72 de Transmission, el que a mi parecer, es el mejor cliente BitTorrent que jamás haya existido. Según lo describen en la página, cito textualmente:
Transmission has been built from the ground up to be a lightweight, yet powerful BitTorrent client. Its simple, intuitive interface is designed to integrate tightly with whatever computing environment you choose to use. Transmission strikes a balance between providing useful functionality without feature bloat. Furthermore, it is free for anyone to use or modify.
Su instalación es muy fácil, ya que lo único que tenemos que hacer, es bajarnos el .deb (sí, el .deb, imagínense lo fácil que nos va a resultar) de la página de nuestros amígos de GetDeb y luego usar una terminal ó el instalador de paquetes GDebi (aún más fácil) para instalar el paquete.
En el primer de los casos, usando la terminal, lo único que tenemos que hacer en escribir la siguiente línea de comandos:
$ sudo dpkg -i transmission_0.72-0~getdeb1_amd64.deb
`` …esperar a que termine el proceso de instalación y ya podrás ejecutar el Transmission desde Aplicaciones –> Internet –> Transmission.
Para el segundo de los casos, usando el instalador GDebi, tan sólo hay que hacer click encima del .deb con el botón derecho del ratón y seleccionamos la opción Abrir con “Instalador de paquetes GDebi” y luego click en el botón Instalar el paquete, finalmente esperar a que finalice la instalación del paquete y listo!. Una de las cosas que, debo admitir, más me gusta de ésta nueva versión, es que ahora podemos minimizar la aplicación en la bandeja del sistema :) .
Para más información de Transmission, visite su Página Oficial.
Recuperando una antigua Logitech Quickcam Express
No se porque motivo o razón comencé a revisar en unas cajas de mi cuarto, cuando de repente me encontré con la primera cámara web que compre, de hecho, vino como accesorio a mi máquina de escritorio Compaq Presario 5006LA. Así que me pregunté, ¿será que todavía funciona esta reliquia?.
Lo primero que hice fue conectar el dispositivo en cuestión a mi portátil actual, enseguida ejecuté el comando:
$ lsusb | grep -i logitech
Bus 002 Device 002: ID 046d:0840 Logitech, Inc. QuickCam Express</code>
Una vez conocido el PCI ID (046d:0840) del dispositivo realicé una búsqueda rápida en Google y llegué a un sitio muy interesante, en donde podemos obtener una descripción de los dispositivos USB para Linux, al usar la función de búsqueda en la base de datos del sitio mencionado previamente ingreso el dato correspondiente al Vendor ID (en mi caso, 046d), posteriormente filtre los resultados por el Product ID (en mi caso, 0840), sentía que ya estaba dando con la solución a mi problema, había encontrado información detallada acerca de mi Logitech Quickcam Express. Al llegar acá descubrí el Linux QuickCam USB Web Camera Driver Project.
En la página principal del Linux QuickCam USB Web Camera Driver Project observo que mi vejestorio de cámara es soportada por el driver qc-usb
.
Con la información anterior decido hacer uso del manejador de paquetes aptitude
y en los resultados avisté el nombre de un paquete qc-usb-source
, así que definitivamente nuestra salvación es module-assistant
.
# aptitude install qc-usb-source \\
build-essential \\
module-assistant \\
modconf \\
linux-headers-`uname -r`
# m-a update
# m-a prepare
# m-a a-i qc-usb
Una vez realizado el paso anterior recurro a la utilidad de configuración de módulos en Debian modconf
e instalo el módulo quickcam
, el cual se encuentra en
/lib/modules/2.6.18-4-686/misc/quickcam.ko
y verificamos.
# tail /var/log/messages
May 14 21:16:57 localhost kernel: Linux video capture interface: v2.00
May 14 21:16:57 localhost kernel: quickcam: QuickCam USB camera found (driver version QuickCam USB 0.6.6 $Date: 2006/11/04 08:38:14 $)
May 14 21:16:57 localhost kernel: quickcam: Kernel:2.6.18-4-686 bus:2 class:FF subclass:FF vendor:046D product:0840
May 14 21:16:57 localhost kernel: quickcam: Sensor HDCS-1000/1100 detected
May 14 21:16:57 localhost kernel: quickcam: Registered device: /dev/video0
May 14 21:16:57 localhost kernel: usbcore: registered new driver quickcam
Como puede observarse el dispositivo es reconocido y se ha registrado en /dev/video0
. En este instante que poseemos los módulos del driver qc-sub
para nuestro kernel, podemos instalar la utilidad qc-usb-utils
, esta utilidad nos permitirá modificar los parámetros de nuestra Logitech QuickCam Express.
# aptitude install qc-usb-utils
Ahora podemos hacer una prueba rápida de nuestra cámara, comienza la diversión, juguemos un poco con mplayer
.
$ mplayer tv:// -tv driver=v4l:width=352:height=288:outfmt=rgb24:device=/dev/video0:noaudio -flip
A partir de ahora podemos probar más aplicaciones ;)
Network Manager: Facilitando el manejo de redes inalámbricas
En la entrada previa, Establecer red inalámbrica en Dell m1210, comencé a describir el proceso que seguí para lograr hacer funcionar la tarjeta Broadcom Corporation Dell Wireless 1390 WLAN Mini-PCI Card (rev 01) en una portátil Dell m1210. El motivo de esta entrada se debe a que muchos usuarios hoy día no les interesa ni debe interesarles estar lidiando con la detección de redes inalámbricas, por eso les pasaré a comentar acerca de NetworkManager.
NetworkManager es una aplicación cuyo objetivo es que el usuario nunca tenga que lidiar con la línea de comandos o la edición de ficheros de configuración para manejar sus redes (ya sea cableada o inalámbrica), haciendo que la detección de dichas redes simplemente funcione tanto como se pueda y que interrumpa lo menos posible el flujo de trabajo del usuario. De manera que cuando usted se dirija a áreas en las cuales usted ha estado antes, NetworkManager se conectará automáticamente a la última red que haya escogido. Asimismo, cuando usted esté de vuelta al escritorio, NetworkManager cambiará a la red cableada más rápida y confiable.
Por los momentos, NetworkManager soporta redes cifradas WEP, el soporte para el cifrado WPA está contemplado para un futuro cercano. Respecto al soporte de VPN, NetworkManager soporta hasta ahora vpnc, aunque también está contemplado darle pronto soporte a otros clientes.
Para hacer funcionar NetworkManager en Debian los pasos que debemos seguir son los siguientes. En primera instancia instalamos el paquete.
# aptitude -r install network-manager-gnome
Que conste que NetworkManager funciona para entornos de escritorios como GNOME, KDE, XFCE, entre otros. En este caso particular estoy instalando el paquete disponible en Debian para GNOME en conjunto con sus recomendaciones.
De acuerdo al fichero /usr/share/doc/network-manager/README.Debian
NetworkManager consiste en dos partes: uno a nivel del demonio del sistema que se encarga de manejar las conexiones y recoge información acerca de las nuevas redes. La otra parte es un applet que el usuario emplea para interactuar con el demonio de NetworkManager, dicha interacción se lleva a cabo a través de D-Bus.
En Debian por seguridad, los usuarios que necesiten conectarse al demonio de NetworkManager deben estar en el grupo netdev
. Si usted desea agregar un usuario al grupo netdev
utilice el comando adduser usuario netdev
, luego de ello tendrá que recargar dbus
haciendo uso del comando /etc/init.d/dbus reload
.
Es necesario saber que NetworkManager manejará todos aquellos dispositivos que no estén listados en el fichero /etc/network/interfaces
, o aquellos que estén listados en dicho fichero con la opción auto
o dhcp
, de esta manera usted puede establecer una configuración para un dispositivo que sea estática y puede estar seguro que NetworkManager no tratará de sobreescribir dicha configuración. Para mayor información le recomiendo leer detenidamente el fichero /usr/share/doc/network-manager/README.Debian
.
Si usted desea que NetworkManager administre todas las interfaces posibles en su ordenador, lo más sencillo que puede hacer es dejar solo lo siguiente en el fichero /etc/network/interfaces
.
$ cat /etc/network/interfaces
auto lo
iface lo inet loopback
Una vez que se ha modificado el fichero /etc/network/interfaces
reiniciamos NetworkManager con el comando service network-manager restart
. El programa ahora se encargará de detectar las redes inalámbricas disponibles. Para ver una lista de las redes disponibles, simplemente haga clic en el icono, tal como se muestra en la figura al principio de este artículo.
Había mencionado previamente que NetworkManager se conectará automáticamente a las redes de las cuales tiene conocimiento con anterioridad, pero usted necesitará conectarse manualmente a una red al menos una vez. Para ello, simplemente seleccione una red de la lista y NetworkManager automáticamente intentará conectarse. Si la red requiere una llave de cifrado, NetworkManager le mostrará un cuadro de dialogo en el cual le preguntará acerca de ella. Una vez ingresada la llave correcta, la conexión se establecerá.
Para cambiar entre redes, simplemente escoja otra red desde el menú que le ofrece el applet.
Establecer red inalámbrica en Dell m1210
Hace ya algunos días Ana me comentaba que no le estaba funcionando la configuración que tenía para su red inalámbrica, eso ocurrió una vez que actualizó la versión del kernel de linux, espero entrar en detalle acerca de los pasos que seguí para configurarle todo como se debe bajo Debian Etch.
Lo primero que debía saber era el tipo de componente PCI al que me estaba enfrentando.
$ lspci -nn | grep Wireless
0c:00.0 Network controller [0280]:
Broadcom Corporation Dell Wireless 1390
WLAN Mini-PCI Card [14e4:4311] (rev 01)
Lo anterior dice que nos estamos enfrentando ante una Broadcom cuyo chipset id es el 4311, debemos saber que el módulo para linux de estos chips es el bcm43xx
y ha sido incluido al kernel de linux desde la versión 2.6.17-rc2Fuente: http://bcm43xx.berlios.de/, al revisar la lista de dispositivos soportados me percaté que el soporte para este chipset id aún es inestable, así que el siguiente paso era eliminar su presencia si aplicaba.
$ lsmod | grep bcm43xx
bcm43xx 148500 0
ieee80211softmac 40704 1 bcm43xx
ieee80211 39112 2 bcm43xx,ieee80211softmac
Como se puede observar en este caso aplica, así que comenzamos a eliminar su presencia.
# grep -q '^blacklist bcm43xx' /etc/modprobe.d/blacklist \\
|| tee -a 'blacklist bcm43xx' /etc/modprobe.d/blacklist
La inclusión de la línea blacklist bcm43xx
al fichero /etc/modprobe.d/blacklist
si aplica me permite indicar que dicho módulo no debe cargarse como resultado de la expansión de su alias, es decir, bcm43xx
, esto se hace con el propósito de evitar que el subsistema hotplug lo carge, aunque esto no evita que el módulo se carge automáticamente por el kernel.
Luego verifique el fichero /etc/modules
, el cual contiene los nombre de los módulos que serán cargados a la hora del inicio del sistema, no había entrada para el módulo bcm43xx
, ahora es necesario remover dicho módulo, para lo cual hacemos:
# modprobe -r bcm43xx
Una vez culminado este proceso es necesario hacer uso de ndiswrapper, el cual es un módulo que me permite cargar y ejecutar drivers propietarios de Windows para tarjetas inalámbricas.
# aptitude -r install build-essential \\
module-assistant ndiswrapper-common
# m-a update
# m-a prepare
# m-a a-i ndiswrapper
# modprobe ndiswrapper
Una vez cargado el módulo ndiswrapper
es necesario instalar el nuevo driver propietario, para ello debemos encontrar el fichero con extensión inf, este fichero especifica que ficheros necesitan estar presentes o descargarse para que el componente funcione correctamente, para dicho driver. Al consultar en la lista de tarjetas que funcionan con ndiswrapper me percato que han habido problemas de seguridad en algunos de los drivers recomendados para esta tarjeta, así que para asegurarme de obtener las versiones más recientes ingreso al sitio oficial de Dell, bajo la sección USA -> Support search: “m1210” -> Drivers and Downloads -> Network & Internet -> Network Driver, ingreso el campo correspondiente al service tag, y finalmente descargo el fichero R151517.EXE.
El siguiente paso es extraer los ficheros que se encuentran dentro de R151517.EXE, para ello:
unzip R151517.EXE
Ahora nos interesa el fichero bcmwl5.inf
que está dentro del directorio DRIVER
.
$ tree R151517/DRIVER/
R151517/DRIVER/
|-- bcm43xx.cat
|-- bcm43xx64.cat
|-- bcmwl5.inf
|-- bcmwl5.sys
`-- bcmwl564.sys
Una vez extraídos los ficheros, procedemos a cargar el driver, para ello hacemos lo siguiente:
# ndiswrapper -i R151517/DRIVER/bcmwl5.inf
Comprobamos que el driver se ha instalado correctamente.
# ndiswrapper -l
installed drivers:
bcmwl5 driver installed, hardware (14E4:4324) present (alternate driver: bcm43xx)
Luego verificamos nuestro trabajo al ejecutar el comando dmesg
, tal como se muestra a continuación:
$ dmesg
[44093.473325] ndiswrapper version 1.27 loaded (preempt=no,smp=yes)
[44095.311236] ndiswrapper (link_pe_images:577): fixing KI_USER_SHARED_DATA address in the driver
[44093.482777] ndiswrapper: driver bcmwl5 (Broadcom,03/23/2006, 4.40.19.0) loaded
[44093.483250] ACPI: PCI Interrupt 0000:0c:00.0[A] -> GSI 17 (level, low) -> IRQ 177
[44093.483367] PCI: Setting latency timer of device 0000:0c:00.0 to 64
[44093.491760] ndiswrapper: using IRQ 177
[44094.162703] wlan0: vendor:
[44094.162708] wlan0: ethernet device 00:18:f3:6b:fc:3b using NDIS driver bcmwl5, 14E4:4311.5.conf
[44094.162772] wlan0: encryption modes supported: WEP; TKIP with WPA, WPA2, WPA2PSK; AES/CCMP with WPA, WPA2, WPA2PSK
[44094.166554] usbcore: registered new driver ndiswrapper
[44094.167390] ndiswrapper: changing interface name from 'wlan0' to 'eth1'
En este preciso instante el comando ifconfig -a
debe mostrarnos la nueva interfaz, y el comando iwlist eth1 scan
al ejecutarse como superusuario devolverá la lista de redes que han sido detectadas.
Recuerde que para que todo esto siga funcionando aún después de reiniciar el sistema, es necesario cargar el módulo de ndiswrapper
, para ello hago uso del comando modconf.
*[PCI]: Peripheral Component Interconnect
Beryl y Emerald en Debian “Etch” AMD64
Sin mucho preámbulo, sólo tengo que decir que voy explicar cómo tener instalado éste famoso escritorio 3D (Beryl) en nuestros sistemas Debian AMD64. El proceso en general es muy fácil y se resume en unos pocos pasos. Antes que nada debo mencionar que la placa de video que uso es nVIDIA y que para poder utilizar el Beryl hay que hacer ciertas modificaciones al xorg.conf.
Lo primero que debemos hacer es modificar nuestro /etc/apt/sources.list para añadir una nueva entrada que va a ser el servidor desde donde se van a instalar Beryl y Emerald. Ésto lo logramos con la siguiente línea de comandos en una terminal:
# vim /etc/apt/sources.list
La línea que vamos a agregar a nuestro sources.list es la que se corresponde con el repositorio de Beryl para Debian y es la siguiente:
deb http://debian.beryl-project.org/ etch main
Luego, como han de sospechar, hay que actualizar la base de datos del aptitude, lo cual se logra así:
# aptitude update
Una vez actualizada la base de datos procedemos a instalar el Beryl con la siguente línea de comandos:
# aptitude install -ry beryl
Ésta última línea nos va a instalar el Beryl automáticamente con todos los paquetes recomendados y va a asumir “Sí” como respuesta para poder realizar la instalación. Una vez que está instalado podremos ejecutarlo desde Aplicaciones –> Herramientas del sistema –> Beryl Manager y los temas del Emeral los podemos seleccionar en Escritorio –> Preferencias –> Emerald Theme Manager. Las opciones del Beryl pueden ser modificadas con el Beryl Settings Manager, el cual puede ser localizado en la misma ruta que el Beryl Manager. Si queremos que el Beryl Manager sea ejecutado cada vez que iniciamos sesión debemos añadirlo a la lista de programas al inicio. Ésto lo hacemos ejecutando Escritorio –> Preferencias –> Sesiones _ y en la pestaña _Programas al inicio hacemos click en Añadir y escribimos beryl-manager. A continuación algunos atajos del teclado para lograr los efectos más comunes:
- Modo de movimiento de imagen borrosas = Ctrl + F12
- Rotar escritorios como un cubo = Ctrl + Alt + Flechas direccionales
- Efecto de lluvia = Shift + F9
- Zoom = Super + Scroll
- Selector de ventanas escalar = Super + Pausa
- Rotar ventana entre espacios de trabajo con el cubo = Ctrl + Alt + Shif + Teclas direccionales
- Modificar la opacidad de la ventana actual = Alt + Scroll
Por último un artículo donde explican las virtudes del Beryl 0.2 y dos videos, que a mi criterio son las mejores demostraciones de Beryl que jamas haya visto.
GRUB: Mejorando nuestro gestor de arranque
Anteriormente había comentado en la primera entrega del artículo Debian: Bienvenido al Sistema Operativo Universal que por medidas de seguridad establezco las opciones de montaje ro
, nodev
, nosuid
, noexec
en la partición /boot
, donde se encuentran los ficheros estáticos del gestor de arranque.
El gestor de arranque que manejo es GRUB. Por lo tanto, el motivo de este artículo es explicar como suelo personalizarlo, tanto para dotarle de seguridad como mejorar su presentación.
Seguridad
Lo primero que hago es verificar el dueño y los permisos que posee el fichero /boot/grub/menu.lst
, en mi opinión la permisología más abierta y peligrosa sería 644, pero normalmente la establezco en 600, evitando de ese modo que todos los usuarios (excepto el dueño del fichero, que en este caso será root
) puedan leer y escribir en dicho fichero. Para lograr esto recurrimos al comando chmod
.
# chmod 600 /boot/grub/menu.lst
Si usted al igual que yo mantiene a /boot
como una partición de solo lectura, deberá montar de nuevo la partición /boot
estableciendo la opción de escritura, para lo cual hacemos:
# mount -o remount,rw /boot
Después de ello si podrá cambiar la permisología del fichero /boot/grub/menu.lst
de ser necesario.
El segundo paso es evitar que se modifique de manera interactiva las opciones de inicio del kernel desde el gestor de arranque, para ello estableceremos una contraseña para poder editar dichas opciones, pero primero nos aseguraremos de cifrar esa contraseña con el algoritmo MD5. Por lo tanto, haremos uso de grub-md5-crypt
# grub-md5-crypt
Password:
Retype password:
$1$56z5r1$yMeSchRfnxdS3QDzLpovV1
La última línea es el resultado de aplicarle el algoritmo MD5 a nuestra contraseña, la copiaremos e inmediatamente procedemos a modificar de nuevo el fichero /boot/grub/menu.lst
, el cual debería quedar más o menos como se muestra a continuación.
password --md5 $1$56z5r1$yMeSchRfnxdS3QDzLpovV1
title Debian GNU/Linux, kernel 2.6.18-3-686
root (hd0,1)
kernel /vmlinuz-2.6.18-3-686 root=/dev/sda1 ro
initrd /initrd.img-2.6.18-3-686
savedefault
title Debian GNU/Linux, kernel 2.6.18-3-686 (single-user mode)
root (hd0,1)
kernel /vmlinuz-2.6.18-3-686 root=/dev/sda1 ro single
initrd /initrd.img-2.6.18-3-686
savedefault
La instrucción password --md5
aplica a nivel global, así que cada vez que desee editar las opciones de inicio del kernel, tendrá que introducir la clave (deberá presionar la tecla p para que la clave le sea solicitada) que le permitirá editar dichas opciones.
Presentación del gestor de arranque
A muchos quizá no les agrade el aspecto inicial que posee el GRUB, una manera de personalizar la presentación de nuestro gestor de arranque puede ser la descrita en la segunda entrega de la entrada Debian: Bienvenido al Sistema Operativo Universal en donde instalaba el paquete grub-splashimages
y posteriormente establecía un enlace simbólico, el problema de esto es que estamos limitados a las imágenes que trae solo ese paquete.
A menos que a usted le guste diseñar sus propios fondos, puede usar los siguientes recursos:
Después de escoger la imagen que servirá de fondo para el gestor de arranque, la descargamos y la colocamos dentro del directorio /boot/grub/
, una vez allí procedemos a modificar el fichero /boot/grub/menu.lst y colocaremos lo siguiente:
splashimage=(hd0,1)/grub/debian.xpm.gz
En la línea anterior he asumido lo siguiente:
- La imagen que he colocado dentro del directorio
/boot/grub/
lleva por nombredebian.xpm.gz
-
He ajustado la ubicación de mi partición
/boot
, es probable que en su caso sea diferente, para obtener dicha información puede hacerlo al leer la tabla de particiones confdisk -l
o haciendo uso del comandomount
.$ mount | grep /boot /dev/sda2 on /boot type ext2 (rw,noexec,nosuid,nodev)
fdisk -l | grep ^/dev/sda2
/dev/sda2 1217 1226 80325 83 Linux
Por lo tanto, la ubicación de la partición /boot
es en el primer disco duro, en la segunda partición, recordando que la notación en el grub comienza a partir de cero y no a partir de uno, tenemos como resultado hd0,1
.
También puede darse el caso que ninguno de los fondos para el gestor de arranque mostrados en los recursos señalados previamente sean de su agrado. En ese caso, puede que le sirva el siguiente video demostrativo sobre como convertir un fondo de escritorio en un Grub Splash Image (2 MB) haciendo uso de The Gimp, espero le sea útil.
Después de personalizar el fichero /boot/grub/menu.lst
recuerde ejecutar el comando update-grub
como superusuario para actualizar las opciones.
Identificar el Hardware de tu PC en Debian GNU/Linux
Bien, lo que vamos a hacer a continuación es muy fácil, tán fácil como instalar un paquete, luego ejecutarlo y leer la información que él nos “escupe” (me encanta como suena :) ). Como sabrán, soy usuario de Debian GNU/Linux en su versión Etch para la arquitectura AMD64, pero ésto en realidad no es tan relevante ya que el paquete se encuentra tanto en Testing como en Stable para la mayoría de las arquitecturas y en la sección main de los repositorios.
Lo que vamos a instalar es el paquete lshw-gtk, que bien como dice en la descripción del paquete: “es una pequeña herramienta que provee información detallada de la configuración de hardware de la máquina. Puede reportar la configuración exacta de la memoria, versión de firmware, configuración de la tarjeta madre, versión del procesador y su velocidad, configuración de la caché, velocidad del bus, etc. en sistemas x86 con soporte DMI, en algunas máquinas PowerPC (se sabe de su funcionamiento en las PowerMac G4) y ADM64”.
Como ya sabrán, para instalar el paquete es tan sencillo como abrir una terminal y escribir en modo superusuario los siguiente:
# aptitude install lshw-gtk
El paquete no es muy pesado, de hecho, con todo y dependencias a penas ha de superar el mega de información, por lo que el proceso de instalación es rápido (si se tiene una conexión decente claro).
Una vez instalado el paquete no tenemos que hacer más que ejecutarlo. Para poder ejecutarlo debemos hacerlo desde una terminal, ya que según tengo entendido, no se instala en los menús del Gnome. Así que debemos escribir en una terminal (en modo superusuario):
# lshw-gtk
y listo, se ejecutará perfectamente, dejándonos navegar por unos paneles donde se encuentran los distintos componentes de nuestro sistema.
Si lo que quieres es tener un lanzador en los menús del Gnome, es muy sencillo, sólo deberás crear uno de la siguiente manera. Abre una terminal en modo superusuario y escribe lo siguiente:
gedit /usr/share/applications/LSHW.desktop
luego de presionar la tecla Enter se abrirá una ventana con el gedit en la cual deberás pegar el siguiente texto:
[Desktop Entry]
Name=LSHW
Comment=Identifica el hardware del sistema
Exec=gksu lshw-gtk
Icon=(el icono que les guste)
Terminal=false
Type=Application
Categories=Application;System;
Y ya con eso deberías tener tu lanzador en el menú Aplicaciones –> Herramientas del sistema. Vas a necesitar de permisos de superusuario para poder ejecutarlo.
Acá una imagen de como se ve el lshw-gtk:
Creando un chroot en Etch AMD64
Bien la cosa es que tratando de instalar el Google Earth en mi Debian me he encontrado que no existe un paquete nativo para AMD64 (¿qué raro no?), por lo que me las he tenido que ingeniar para instalarlo. Nunca tuve la necesidad de hacer un chroot en el sistema ya que lo único que lo ameritaba era el Flash, pero no pensaba hacerme un chroot expresamente para el Flash y malgastar el espacio en mi disco, pero a la final siempre he tenido que hacerme uno!
Para aquellos que dominan el inglés se pueden leer el Debian GNU/Linux AMD64 HOW-TO ya que los pasos para crear el chroot los he seguido de ahí. Claro que para aquellos que no tengan mucho tiempo o no sientan la necesidad de hacer un chroot siempre existe una manera rápida de hacer funcionar las cosas en un apuro.
Para aquellos que todavía no saben qué es un chroot les recomiendo que le echen un ojo a la Guía de referencia Debian, de todas formas acá les cito textualmente de dicha guía lo que ellos definen como un chroot:
…el programa chroot, nos permite ejecutar diferentes instancias de un entorno GNU/Linux en un único sistema, simultáneamente y sin reiniciar…
El chroot en mi caso, está pensado para poder ejecutar aplicaciones a 32bits en un entorno 64 bits. El chroot es necesario ya que no se puede mezclar aplicaciones 32 bits con librerías 64 bits, por lo que se necesitan las librerías a 32 bits para correr dichas aplicaciones.
Lo que se hace en el chroot es instalar un sistema base para la arquitectura x86. Ésto lo puedes lograr haciendo en una terminal:
# debootstrap --arch i386 sid /var/chroot/sid-ia32 http://ftp.debian.org/debian/
…para lo cual, posiblemente, vas a necesitar el paquete debootstrap. Ahora bien, ¿qué hace el debootstrap
?; debootstrap
es usado para crear un sistema base debian from scratch (es algo como, desde la nada) sin tener que recurrir a la disponibilidad de dpkg
ó aptitude
. Todo ésto lo logra descargando los .deb de un servidor espejo y desempaquetándolos a un directorio, el cual, eventualmente sera utilizado con el comando ` chroot`. Por lo tanto la línea de comandos que introduciste anteriormente hace todo eso, sólo que lo vas a hacer para la rama unstable ó sid, en el directorio /var/chroot/sid-ia32 y desde el servidor espejo específicado.
El proceso anterior puede demorar según sea la velocidad de tu conexión. No pude saber cuánto demoro el proceso en mi caso porque cuando empecé a hacerlo eran altas horas de la madrugada y me quedé dormido :(. Lo que tienes que saber es que cuando éste proceso finalice, ya tendrás un sistema base x86 o 32 bits en un disco duro en el directorio /var/chroot/sid-ia32. Una vez finalizado deberías instalar algunas librerías adicionales, pero para hacerlo deberás moverte al chroot y hacerlo con aptitude:
# chroot /var/chroot/sid-ia32
…y luego instalas las librerías adicionales:
# aptitude install libx11-6
Para poder ejecutar aplicaciones dentro del chroot deberás tener también algunas partes del árbol de tu sistema 64 bits, lo cual puedes hacerlo mediante un montaje enlazado. El ejemplo a continuación, enlaza el directorio /tmp
a el chroot para que éste pueda utilizar los “sockets” del X11, los cuales están en el /tmp
de nuestro sistema 64 bits; y también enlaza el /home
para que podamos accesarlo desde el chroot. También es aconsajable enlazar los directorios /dev
, /proc
y /sys
. Para lograr ésto deberás editar tu fstab
que se encuentra en /etc
y añadir lo siguiente:
# sid32 chroot
/home /var/chroot/sid-ia32/home none bind 0 0
/tmp /var/chroot/sid-ia32/tmp none bind 0 0
/dev /var/chroot/sid-ia32/dev none bind 0 0
/proc /var/chroot/sid-ia32/proc none bind 0 0
…y luego montarlas:
# mount -a
Bien ya vamos llegando a final, unos cuántos pasos más y listo. Lo que necesitamos hacer a continuacióne es establecer los usuarios importantes en el chroot. La forma más rápida (sobretodo si tienes muchos usuarios) es copiar tus directorios /etc/passwd
, /etc/shadow
y /etc/group
al chroot, a menos claro que quieras tomarte la molestia de añadirlos manualmente.
ADVERTENCIA! Cuando enlazas tu directorio /home
al chroot, y borras éste último, todos tus datos personales se borrarán con éste, por consiguiente serán totalmente perdidos, por lo tanto debes recordar desmontar los enlaces antes de borrar el chroot.
Corriendo aplicaciones en el chroot
Después de hacer todos los pasos anteriores, ya deberías poder ejecutar aplicaciones desde el chroot. Para poder ejecutar aplicaciones desde el chroot debes hacer en una terminal (en modo root):
# chroot /var/chroot/sid-ia32
Luego deberás cambiarte al usuario con el que quieres ejecutar la aplicación:
# su - usuario
Establecer $DISPLAY:
# export DISPLAY=:0
Y finalmente ejecutar la aplicación que quieras, como por ejemplo, el firefox con el plugin de flash! Por supuesto deberás instalar la aplicación antes de ejecutarla, recuerda que lo que has instalado es un sistema base y algunas librerías adicionales.
Compilar aMSN en Debian Etch AMD64
Bien, sin mucho preámbulo, lo primero que debemos hacer es descargar el tarball de la página de amsn. Luego deberás descomprimirlo en la carpeta de tu preferencia, en mi caso está en ~/Sources/amsn-0.96RC1/. Una vez que lo descomprimes abre una terminal y obtén derechos de administrador (modo root); cuando tengas privilegios de root ubícate en el directorio donde descomprimiste el tarball y escribe lo siguiente:
$ ./configure
$ make
$ make install
Debes asegurarte de cumplir todos los requisitos cuando haces el ./configure, ya que te pide varias “dependencias” por así decirlo, como por ejemplo, tls y tk. Una vez que hayas hecho el make install quedará automágicamente instalado el amsn en tu sistema. Deberás poder verlo en Aplicaciones –> Internet –> aMSN. Bien eso es todo en lo que respecta al proceso de compilado, ¿nunca antes fué tan fácil verdad?.
Un problema que me dió una vez que lo compilé y lo ejecuté fué que no me permitía iniciar sesión porque me decía que no tenía instalado el módulo TLS. Entonces abrí una terminal e hice lo siguiente:
$ aptitude install tcltls
…pero ésto no me solucionó el problema, entonces me puse a indagar por la web y me encontré con la siguiente solución: editar el archivo /usr/lib/tls1.50/pkgIndex.tcl y ubicar la línea que dice algo como: package ifneeded tls 1.5 para entonces modificarla por package ifneeded tls 1.50 y listo :D
Smartmontools: aprendiendo a chequear tu disco duro…
Los discos duros modernos (y no tan modernos) vienen equipados con una tecnología conocida como S.M.A.R.T., el cual le permite al disco monitorear de manera contínua su propio estado de “salud” y alertar al usuario si es detectada alguna anormalidad, para que luego pueda ser corregida.
ADVERTENCIA: antes de continuar, sería recomendable hacer una copia de respaldo de todos sus datos importantes a pesar de todo lo que diga el S.M.A.R.T. Éste sistema es muy confiable pero no obstante, ésta información en alguno de los casos podría ser imprecisa, de hecho, los discos duro se dañan de manera inesperada, inclusive si el S.M.A.R.T te ha dicho que algo anda mal, posiblemente no tengas tiempo para respaldar tus datos o moverlos a un lugar más seguro.
¿Cómo instalar SMARTMONTOOLS?
Lo primero que debemos hacer, preferiblemente antes de instalar el SMT es chequear si nuestro disco duro soporta éste tipo de tecnología, lo cual puedes hacer visitando la página del fabricante de tu disco. De todas formas, si lo compraste después del año 1992, lo más seguro es que posea ésta tecnología.
Lo segundo, y no menos importante, es activar o asegurarte que en el BIOS de la tarjeta madre este activada ésta función. Lo puedes conseguir ya que luce algo como:
S.M.A.R.T for Hard Disk: Enable
Algunos BIOS no tienen ésta opción y reportan el S.M.A.R.T como inactivo, pero no te preocupes que el smartcl, uno de los dos programas de utilidad que tiene el Smartmontools, puede activarlo. Una vez que estemos seguros de todo ésto podemos proceder a instalar el Smartmontools, el cual, en la distribución que uso, Debian, es tan fácil como escribir en una terminal:
$ aptitude install smartmontools
Y de esa manera ya queda automágicamente instalado el paquete el sistema. Si quieres verificar si ya lo tienes instalado, entonces tendrías que escribir en una terminal lo siguiente:
$ aptitude show smartmontools
Y verificar que el atributo Estado se corresponda con Instalado. Una vez hecho ésto procedemos a verificar si nuestro disco soporta S.M.A.R.T con la siguiente línea de comandos:
$ smartctl -i /dev/hda
En caso que tu disco sea SATA tendrías que escribir la siguiente línea:
$ smartctl -i -d ata /dev/sda
La información se vería algo así:
=== START OF INFORMATION SECTION ===
Model Family: Western Digital Caviar family
Device Model: WDC WD1200BB-00RDA0
Serial Number: WD-WMANM1700779
Firmware Version: 20.00K20
User Capacity: 120,034,123,776 bytes
Device is: In smartctl database [for details use: -P show]
ATA Version is: 7
ATA Standard is: Exact ATA specification draft version not indicated
Local Time is: Sun Sep 24 22:27:09 2006 VET
SMART support is: Available - device has SMART capability.
SMART support is: Enabled
Si tu disco es SATA pero tiene el soporte S.M.A.R.T desactivado, entonces deberás usar la siguiente línea de comandos para activarlo:
$ smartctl -s on -d ata /dev/sda
Aprendiendo a usar SMT
Estado de “salud” de nuestro disco duro
Para leer la información que SMT ha recopilado acerca de nuestro disco, debemos escribir la siguiente linea de comandos:
$ smartctl -H /dev/hda
Para discos SATA no es suficiente con sustituir hda con sda, sino que debemos añadir las opciones extras que usamos anteriormente para obtener la información del disco. La línea de comandos entonces quedaría así:
$ smartctl -d ata -H /dev/sda
Si lees PASSED al final de la información, no tienes que preocuparte. Pero si lees FAILED deberías empezar a hacer respaldo de tus datos inmediatamente, ya que ésto quiere decir que tu disco ha presentado fallas anteriormente o es muy probable que falle dentro de un lapso de aproximadamente 24 horas.
Bitácora de errores de SMT
Para chequear la bitácora de errores de SMT debemos escribir la siguiente línea de comandos:
$ smartctl -l error /dev/hda
De manera análoga al caso anterior, añadimos los comandos extras si nuestro disco es SATA. La línea de comandos quedaría así:
$ smartctl -d ata -l error /dev/sda
Si leemos al final de la información No errors logged todo anda bien. Si hay varios errores pero éstos no son muy recientes, deberías empezar a preocuparte e ir comprando los discos para el respaldo. Pero si en vez de ésto hay muchos errores y una buena cantidad son recientes entonces deberías empezar a hacer respaldo de tus datos, inclusive antes de terminar de leer ésta línea. Apurate! :D
A pesar que smartctl nos da una información muy valiosa acerca de nuestros discos, el tan solo revisar ésta no es suficiente, realmente se deben hacer algunas pruebas específicas para corroborar los errores que conseguimos en la información anterior, dichas pruebas las menciono a continuación.
Pruebas con SMT
Las pruebas que se van a realizar a continuación no interfieren con el funcionamiento normal del disco y por lo tanto pueden ser realizadas en cualquier momento. Aquí solo describiré como ejecutarlas y entender los errores. Si quieres saber más te recomiendo que visites ésta pagina o que leas las páginas del manual.
Lo primero sería saber cuáles pruebas soporta tu disco, lo cual logramos mediante la siguiente línea de comandos:
$ smartctl -c /dev/hda
De ésta manera puedes saber cuáles pruebas soporta tu disco y también cuanto tiempo aproximadamente puede durar cada una. Bien, ahora ejecutemos Immediate Offline Test ó Prueba Inmediata Desconetado (si está soportada, por supuesto), con la siguiente línea de comandos:
$ smartctl -t offline /dev/hda
Como ya sabemos, los resultados de ésta prueba no son inmediatos, de hecho el resultado de ésta linea de comandos te dirá que la prueba ha comenzado, el tiempo que aproximadamente va a demorar la prueba en terminar con una hora aproximada para dicha finalización, y al final te dice la línea de comandos para abortar la operación. En uno de mis discos, un IDE de 120Gb, demoró 1 hora, para que tengan una idea. Por los momentos sólo te queda esperar por los resultados. Ahora te preguntarás ¿Cómo puedo saber los resultados?, pues tan sencillo como ejecutar la línea de comandos para leer la bitácora del SMT y seguir las recomendaciones.
Ahora vamos a ejecutar Short self-test routine ó Extended self-test routine, Rutina corta de autoprueba y Rutina extendida de autoprueba, respectivamente (de nuevo, si están soportadas). Éstas pruebas son similares, sólo que la segunda, como su nombre lo indica, es más rigurosa que la primera. Una vez más ésto lo logramos con los siguientes comandos:
$ smartctl -t short /dev/hda
$ smartctl -t long /dev/hda
Luego vamos a chequear el Self Test Error Log ó Bitácora de errores de autopruebas:
$ smartctl -l selftest /dev/hda
Luego ejecutamos Conveyance Self Test ó Autoprueba de Transporte:
$ smartctl -t conveyance /dev/hda
Y por último chequeamos Self Test Error Log de nuevo.
Algo que tengo que resaltar es que el SMT tiene dos bitácoras, una de las cuales es la Bitácora de errores y la otra es la Bitácora de Errores de Autopruebas.
¿Cómo monitorear el disco duro automáticamente?
Para lograr ésto tendrás que configurar el demonio smartd para que sea cargado cuando se inicia el sistema. A continuación un pequeño HOWTO.
ADVERTENCIA: el siguiente HOWTO es para monitorear un disco IDE, programar todas las pruebas cada viernes de la semana, de 11:00 a.m a 2:00 p.m, y luego ejecutar un script de Bash si algún error es detectado. Éste script escribirá un reporte bien detallado y luego apagará el equipo para su propia protección.
El archivo de configuración de smartd se encuentra en /etc/smartd.conf
, si éste no existe,
el cual sería un caso poco común, deberás crearlo en tu editor de elección.
...
#DEVICESCAN
...
/dev/hda \
-H \
-l error -l selftest \
-s (O/../../5/11|L/../../5/13|C/../../5/15) \
-m ThisIsNotUsed -M exec /usr/local/bin/smartd.sh
El script en Bash también puedes hacerlo en un editor de tu elección, y tendrá la siguiente forma:
#!/bin/bash
LOGFILE="/var/log/smartd.log"
echo -e "$(date)\n$SMARTD_MESSAGE\n" >> "$LOGFILE"
shutdown -h now
Luego de crear el script deberás hacerlo ejecutable cambiando sus atributos con la siguiente línea de comandos:
$ chmod +x /usr/local/bin/smartd.sh
Para probar todo, puedes agregar al final de tu /etc/smartd.conf
la línea
-M test
y luego ejecutar el demonio. Nota que ésto apagará tu equipo, hayan errores o no. Luego si algo sale mal deberás chequear la bitácora del sistema en /var/log/messages con:
$ tail /var/log/messages
Y así corregir el problema. Ahora tendrás que quitar la línea
-M test
y guardar los cambios. Por último debes hacer que smartd sea cargado al momento del arranque, lo cual lo logras con la siguiente línea:
$ rc-update add smartd default
Algunos enlaces de interés:
- S.M.A.R.T en la Wikipedia
- Página Oficial de smartmontools
- Ejemplos de salidas del SMT
- Atributos usados para recuperar el estado físico/lógico de una unidad y mostrar su significado de una forma más entendible para un usuario final
Nota: Ésta artículo está basado en un HOWTO del Wiki de Gentoo
Audigy SE en Etch AMD64
Hace días me hice con una tarjeta de sonido Audigy SE de la marca Creative y la verdad tuve que dar bastante golpes para dar con la configuración correcta. ¿Cómo lo logré? Muy fácil: Googleando :).
Resulta que el sistema (Debian, of course) reconoce bien el dispositivo y carga de manera perfecta los módulos necesarios; de hecho el alsa-mixer me mostraba todos los canales de la tarjeta pero el único que parecía funcionar era el Analog Front y los otros parecían estar muertos. Casi daño el mouse de tando hacer clicks y darle hacia arriba y hacia abajo :). No podía creer que no funcionara!.
Googleando llegué a la página de la gente de Alsa y me encontré una manera de configurar los drivers. Ahi confirmé que el sistema me estaba cargando el módulo correcto, el snd-ca0106. Entonces, después de ver la pequeña lista de instrucciones, no voy a decir que me espanté y maldije a Creative, no, no lo hice, en ése momento miré al cielo y pregunté: ¡¿Acaso no existe una manera más fácil de lograr que suenen la benditas cornetas?! y la respuesta a mi pregunta vino del wiki de Gentoo, ¿qué cosas no? imagínense todo lo que googleé; bueno específicamente de la sección que dice VIA Envy24HT (ice1724) chip. Ahora se preguntarán.. ¿VIA? éste tipo está loco…. pues sí, VIA. ¿Y qué fué lo que hice? Abrí una terminal e hice lo siguiente:
$ gedit .asoundrc
Luego lo que hice fué copiar el contenido del segundo .asoundrc y pegarlo al mío, luego guardar los cambios y voilá, sistema de sonido 5.1 andando ;). Se preguntarán ¿Cómo hizo éste loco para saber que ese .asoundrc funciona con la Audigy SE?, bueno, con el proceso estándar, prueba error. Copiando y pegando cada uno de los ficheros.
Ahora que el sistema suena perfectamente bien me ha surgido una nueva interrogante, debido a que para poder graduar el volumen del sistema tengo que graduar los tres controles, y la pregunta es: ¿Habrá alguna forma de graduar el volumen para los tres controles al mismo tiempo? Que lo disfruten…
Debian GNU/Linux 4.0
Según puede verse en el sitio oficial del Proyecto Debian, en una noticia aparecida el día de hoy, Upcoming Release of Debian GNU/Linux 4.0, se confirma que el próximo mes de diciembre del presente año será la fecha de publicación de la siguiente versión 4.0 de Debian GNU/Linux, cuyo código nombre es “etch”.
Entre las novedades que podremos observar en esta nueva versión se encuentran las siguientes:
- Será la primera versión que ofrezca soporte oficial a la arquitectura AMD64. De manera simultánea, esta versión se publicará para 11 arquitecturas.
- La versión 4.0 ofrecerá la versión 2.6.17 del núcleo linux de manera predeterminada. Además, esta misma versión se utilizará en todas las arquitecturas y a su vez en el instalador.
- Debian GNU/Linux 4.0 presentará la colección de compiladores de GNU versión 4.1.
- Debian GNU/Linux deja de utilizar XFree86 como implementación de X11 (sistema de ventanas X) para darle paso a X.Org.
- Al menejador de paquetes APT seguramente se le añadan algunas mejoras en cuanto a seguridad, admitiendo criptografía modo paranoico y firmas digitales.
Reuniones para eliminar fallos
En la misma noticia podemos enterarnos que el Proyecto Debian está planeando algunas reuniones previas al nuevo lanzamiento en búsqueda de fallos y establecer las debidas correcciones, de esta manera, se ofrecerá al público una versión que presente la mínima cantidad de errores críticos de programación.
Estas reuniones se llevarán a cabo en varias ciudades alrededor del mundo. Por lo tanto, podrá participar el mayor número de personas en la búsqueda y corrección de estos errores de programación.
Si usted está interesado en participar pero no puede reunirse personalmente con los desarrolladores en las distintas ciudades que se describen en BSPMarathon, puede conectarse al canal #debian-bugs en el servidor irc.debian.org y de esta manera participar.
La situación en Venezuela
En mi humilde opinión, considero oportuno que la comunidad Debian Venezuela debe tomar las riendas en este asunto, organizar reuniones para eliminar fallos en nuestra distribución favorita, aprovechando la cercanía del Día Debian para organizar actividades de este tipo. ¿Qué opinan en este sentido?.
ULAnix
Hace ya algún tiempo que la beta #3 de esta distribución LiveCD basada en Debian salió.
Podría decirse que ULAnix es la primera distribución GNU + Linux que nace dentro de una universidad venezolana, Universidad de Los Andes. Aunque muchos afirman que la primera distro venezolana con aval universitario fue Cachapa, no es cierto, Antonio Lopez, el creador de Cachapa, realizó dicho proyecto como una meta personal, posteriormente la Universidad de Carabobo se interesó en Cachapa. Al final, lo importante no es ser el primero, lo importante es que estas distribuciones han sido fruto del trabajo de venezolanos.
ULAnix es una iniciativa del Parque Tecnológico de Mérida.
Básicamente el equipo de trabajo está conformado por los profesores: Gilberto Díaz y Jacinto Dávila, el desarrollo está a cargo del bachiller Jesús Molina.
Si usted desea una copia de esta distribución puede obtenerla desde el repositorio: http://ftp.ula.ve/linux/distribuciones/ulanix/ o desde el mirror que he habilitado en http://ulanix.milmazz.com/.
El equipo de trabajo alrededor de ULAnix agradece que la mayor cantidad de personas se haga con esta distribución, la pruebe e informen los errores que vayan consiguiendo. Aún no existe una página oficial para el proyecto, aunque al parecer se está trabajando en ello, opcionalmente, puede notificar los errores de software en el foro de ULAnux.
Próximamente espero estar probando intensivamente esta distribución y realizar las observaciones que considere pertinentes.
StarDict: El diccionario que buscaba
Leyendo el ejemplar #14 de la revista Tux Magazine me encuentro con un interesante artículo, Learning Foreign Languages with jVLT and StarDict, la segunda aplicación descrita en dicho artículo, StartDict, llamó mi atención, así que a continuación se dará una breve revisión de la aplicación en cuestión.
¿Qué es StarDict?
StarDict es un diccionario internacional multiplataforma escrito en Gtk2, puede ser utilizado sin conexión a la web.
Características
-
Búsqueda de patrones: Usted puede buscar patrones de cadenas o caracteres usando comodines, por ejemplo, podrá usar el comodín
*
para buscar una cadena arbitraria, el resultado puede ser vacío, mientras que con el uso del comodín?
buscará una coincidencia con un carácter arbitrario. e.g. Suponiendo que tiene instalado el diccionario Inglés – Español, al buscar el patrón hell? encontrará como resultado la traducción de hello, mientras que con el uso del patrón hell* encontrará todas aquellas posibles coincidencias que comiencen con la cadena hell, hell (infierno en inglés), hell (suerte en noruego), los resultados encontrados dependerá de los diccionarios que haya instalado. - Búsqueda difusa: Si usted por casualidad no recuerda exactamente como deletrear una palabra, podrá intentar realizar dicha búsqueda desde StarDict, éste utilizará el algoritmo de la Distancia de Levenshtein El algoritmo de la Distancia de Levenshtein o la distancia de edición entre dos cadenas, se refiere al número mínimo de operaciones necesarias para transformar una cadena en otra, bajo éste algoritmo se considera una operación a la inserción, eliminación o substitución de un carácter. Para mayor información le recomiendo leer el artículo Levenshtein Distance, in Three Flavors.. Para utilizar esta característica simplemente comience la búsqueda con el carácter /, e.g., suponga que tiene instalado el diccionario Español – Inglés, usted cree que la palabra acero realmente se escribe así: asero, simplemente introduzca en el formulario la cadena /asero, obtendrá el resultado deseado.
-
Búsqueda por palabras seleccionadas:
Si usted desea activar esta característica, deberá marcar la casilla de verificación que se encuentra en la parte inferior izquierda de la ventana principal de la aplicación. StarDict automáticamente buscará palabras o frases que usted haya seleccionado en cualquier aplicación, esto incluye navegadores, OpenOffice.org, etc., usted obtendrá un cuadro de dialogo que le mostrará la definición acerca de la palabra seleccionada.
-
Manejo de diccionarios:
StarDict le permite activar (desactivar) aquellos diccionarios que necesite (no necesite), también puede establecer el orden de búsqueda en los distintos diccionarios instalados. Todo lo anterior podrá realizarlo desde la sección Manage Dictionaries (Recurso: Imagen).
- ¿No encuentra lo que necesita?: StarDict le permite realizar búsquedas en la web, solo deberá seleccionar el botón de búsqueda en Internet y escoger cualquiera de las 10 opciones actuales de búsqueda.
Ahora bien, seguramente esta aplicación resultará útil para muchas personas, si usted es uno de ellos y está interesado en instalarlo, es muy sencillo.
¿Cómo instalar StarDict?
Si usted es tan afortunado como yo, debe estar usando Debian, así que simplemente tendrá que hacer:
# aptitude install stardict
Ahora bien, si usted utiliza por ejemplo, Ubuntu, también puede instalarlo fácilmente, ¿cómo?, en primer lugar debe activar el repositorio universe (recuerde actualizar la lista de paquetes disponibles), posteriormente debe hacer:
$ sudo aptitude install stardict
Si usted utiliza otra distribución de GNU+Linux o es usuario de Windows, lea la documentación de la página oficial del proyecto, lamento informarle que este artículo es una revisión breve de la aplicación StarDict.
¿Cómo instalar diccionarios?
Primero que nada, debe descargar los diccionarios que necesite, para ello le recomiendo ir a la página de Descarga de Diccionarios del proyecto.
Una vez que haya descargado los diccionarios, debe proceder como sigue:
tar -C /usr/share/stardict/dic -x -v -j -f \\
diccionario.tar.bz2
Personalizando la aplicación
Ya para finalizar, usted puede personalizar la aplicación desde la sección de preferencias, desde ella podrá modificar el comportamiento del programa.
Una característica de StarDict que puede resultar realmente molesta es cuando se encuentra activo el modo Scan, es decir, toda palabra o frase resaltada con el ratón generará un cuadro de dialogo con la definición de dicha palabra o frase, si usted desea controlar este comportamiento, le recomiendo activar las siguientes casillas de verificación:
- Only do scanning while modifier key being pressed.
- Hide floating window when modifier key pressed.
Las casillas de verificación previamente mencionadas podrá encontrarlas bajo la sección Dictionary -> Scan Selection.
Si usted esta inconforme con las opciones de búsqueda en Internet, puede agregar las que usted desea desde la sección Main Window -> Search Website.
Perl: Primeras experiencias
La noche del sábado pasado, después de terminar de estudiar con Ana la cátedra Programación Paralela y Distribuida, me dispuse a revisar las distintas instancias de Planeta Linux, como normalmente hago, pero eso no fué suficiente, me puse a validar el feed que se estaba generando en ese momento (en particular, el feed de la instancia venezolana). Me percate de varios errores y advertencias, entre ellos me llamo la atención:
This feed does not validate.
In addition, this feed has an issue that may cause problems for some users. We recommend fixing this issue.
line 11, column 71: title should not contain HTML (20 occurrences) [help]
Luego de leer la ayuda noto que es recomendable cambiar todos los nombres de las entidades html a su equivalente decimal, es decir, si tenemos por ejemplo: ©
debe modificarse ©
, de igual manera con el resto.
Tenía varias opciones, una de ellas era realizar el reemplazo masivo desde vim, pero esta tarea es realmente ineficiente por el hecho de tener que reemplazar todos los nombres de las entidades html a su equivalente decimal uno por uno, además de eso, debía hacerlo para las tres instancias presentes en Planeta Linux, primera opción descartada de entrada.
Aprovechando que la semana pasada, al igual que el profesor Francisco Palm, estuve presente en un curso sobre el lenguaje de programación Perl, el cual fué dictado por José Luis Rey con la ayuda de Daniel Rodríguez en las instalaciones de Fundacite Mérida, quería poner en práctica algunas de las cosas que aprendí en dicho curso.
Antes de continuar debo agradecer al profesor José Aguilar, a la ingeniera Blanca Abraham, y a la Sra. Tauka Shults por la oportunidad que me brindaron.
Una de las cosas que nos recalcó José Luis fué acerca de las virtudes que debía tener un programador, una de ellas debe ser la flojera, es decir, comenzar a escribir código realmente útil de inmediato, sin ningún requerimiento adicional como ocurre en lenguajes de programación como el C/C++, en donde es necesario realizar una serie de procedimientos antes de comenzar a escribir código útil.
Como mencione en el párrafo anterior, la idea es llegar a ser lo más productivo en el menor tiempo posible. Generar un hash de entidades de nombres html no me parecía el camino idóneo, así que recorde el tema de la flojera, sin pensarlo dos veces comence a buscar en search.cpan.org un módulo que me permitiera convertir los nombres de las entidades html a su equivalente decimal, como primer resultado obtuve lo que buscaba, el módulo HTML::Entities::Numbered, había encontrado mi salvación, leo un poco acerca de su uso y es más sencillo de lo que pensaba, siguiente paso, proceder a instalarlo.
Para debianizar un módulo en Perl es muy sencillo, en primer lugar debemos recurrir al comando dh-make-perl
, si no lo tenemos instalado ya, debemos proceder como sigue:
# aptitude install dh-make-perl
Ahora ya podemos debianizar el módulo que requerimos, para ello tuve que realizar lo siguiente:
# dh-make-perl --build --cpan HTML::Entities::Numbered
Como lo puede apreciar, su uso es realmente sencillo, para una mejor explicación acerca de este último comando le recomiendo leer la entrada Instalando módulos de Perl en Debian escrita por Christian Sánchez, como era la primera vez que hacia uso del comando cpan
tuve que configurarlo, esto no tomo mucho tiempo, el asistente ofrece explicaciones bastante detalladas.
Una vez realizado el proceso más complicado de toda la operación, el resto era escribir el código fuente que me permitiese convertir los nombres de las entidades html a su equivalente decimal, he aquí el resultado.
#!/usr/bin/perl -l
use strict;
use warnings;
use HTML::Entities::Numbered;
unless(open(INPUT, $ARGV[0])) { die "ERROR: No se especifico archivo para abrir. $!"; }
open(OUTPUT, ">$ARGV[0].bak");
while(<INPUT>){ print OUTPUT name2decimal($_) if chomp; }
¡Listo!, en tan pocas líneas de código he logrado resolver el problema, por supuesto, todo se redujo a buscar el módulo apropiado, una vez hecho los cambios a los ficheros de configuración de Planeta Linux procedí a actualizar la última versión en subversion.
Puede apreciar el antes y después de los cambios realizados.
Debian: Bienvenido al Sistema Operativo Universal (Parte II)
Esta serie de anotaciones comenzo con la entrada Debian: Bienvenido al Sistema Operativo Universal (Parte I).
Después de escribir en la tabla de particiones el esquema de particionamiento descrito en la parte anterior, el sistema base Debian comenzo a instalarse. Posterior a la Bienvenida al nuevo sistema Debian, reinicie y comence a configurar el sistema base debian, en la sección de selección de programas Debian escogí la última opción que nos brinda el asistente, selección manual de paquetes, luego configure las fuentes de aptitude y enseguida inicie la instalación de paquetes puntuales, los cuales describiré a continuación, de manera breve.
Como lo que tenía a mano era el CD Debian GNU/Linux testing Sarge- Official Snapshot i386 Binary-1, lo primero que hice fue actualizar a Sarge, seguidamente cambie las fuentes del fichero /etc/apt/sources.list
a Etch, actualice la lista de paquetes disponibles e inmediatamente hice un aptitude dist-upgrade
, el cambio de una rama a otra fué de lo más normal, no genero problema alguno.
Nota: No he descrito el proceso de instalación del sistema base de manera detallada ya que existe suficiente información en el sitio oficial de Debian, si lo desea, puede ver este video tutorial de instalación de Debian Sarge (aprox. 54MB.), en este video se explica como instalar el Entorno de Escritorio predeterminado que ofrece el asistente, no es el caso que explico en esta entrada, puesto que vamos a generar un Entorno de Escritorio de acuerdo a nuestras necesidades particulares.
Si tiene alguna duda acerca de la funcionalidad de un paquete en particular, puede consultar la descripción del mismo al hacer uso del comando aptitude show _package-name_
, en donde package-name es el nombre del paquete en cuestión.
En los siguientes pasos haré uso intensivo de aptitude
, anteriormente ya he explicado las ventajas que presenta aptitude
sobre los comandos apt-get
y sobre la interfaz gráfica Synaptic, puede encontrar mayor información en los artículos:
Sistema X Window
Instalando los componentes esenciales para el Sistema X Window.
# aptitude install x-window-system-core
GNOME
Instalando los componentes esenciales para el entorno de escritorio GNOME.
# aptitude install gnome-core
GNOME Display Manager
Si usted hubiese instalado el paquete x-window-system
, metapaquete que incluye todos los componentes para el Sistema X Window, se instalaría por defecto XDM (X Display Manager), normalmente debería recurrir a la línea de comandos para resolver los problemas de configuración de este manejador, mientras que con GDM (GNOME Display Manager) no debe preocuparse por ello, puede personalizarlo o solucionar los problemas sin recurrir a la línea de comandos. De manera adicional, puede mejorar su presentación con la instalación de temas.
# aptitude install gdm gdm-themes
Mensajería Instantánea, IRC, Jabber
GAIM
Todo lo anterior se puede encontrar al instalar GAIM.
# aptitude install gaim gaim-themes
irssi
Si le agrada utilizar IRC modo texto, puede instalar irssi.
# aptitude install irssi
Centericq
Centericq es un cliente de mensajería instantánea multiprotocolo, soporta ICQ2000, Yahoo!, AIM, IRC, MSN, Gadu-Gadu y Jabber.
# aptitude install centericq
Programas para la manipulación de imágenes
GIMP por defecto no puede abrir ficheros SVG, si desea manipularlos desde GIMP y no desde Inkscape puede hacer uso del paquete gimp-svg
.
# aptitude install gimp gimp-python gimp-svg inkscape
Navegador Web
Definitivamente Firefox.
# aptitude install firefox firefox-locale-es-es
Creación de CDs y DVDs
# aptitude install k3b cdrdao
Para quienes quieran su version de K3b en español pueden instalar el paquete k3b-i18n, yo no lo considere necesario puesto que aporta 11,5MB, inútiles desde mi punto de vista.
Cliente Bittorrent
No le recomiendo instalar el cliente bittorrent Azureus, consume demasiados recursos, acerca de ello explico brevemente en el artículo Clientes Bittorrent.
# aptitude install freeloader
Lector de feeds
Normalmente utilizo Liferea. También cabe la posibilidad de utilizar el servicio que presta Bloglines.
# aptitude install liferea
Editor
# aptitude install vim-full
Cliente de correo electrónico
Para la fecha, a la rama testing de Debian no ingresa la versión 1.5 del cliente de correo Thunderbird (mi favorito), así que vamos a instalarlo manualmente.
En primer lugar deberá descargar (se asume que la descarga se realizará al escritorio) la última versión del cliente de correo, el paquete empaquetado y comprimido lo encontrará en el sitio oficial de Thunderbird.
Seguidamente, proceda con los siguientes comandos.
# tar -C /opt/ -x -v -z -f ~/Desktop/thunderbird*.tar.gz
# ln -s /opt/thunderbird/thunderbird /usr/bin/thunderbird
Instalar Diccionario en español
wget -c http://downloads.mozdev.org/dictionaries/spell-es-ES.xpi
Aplicaciones -> Herramientas del Sistema -> Root Terminal. Desde allí procedará a ejecutar el comando thunderbird
.
Desde Thunderbird, seleccione la opción Extensiones del menú Herramientas. Seguidamente proceda a dar click en el botón Instalar y posteriormente busque la ruta del paquete que contiene el diccionario.
Thunderbird + GPG = Enigmail
Esta excelente extensión le permitira cifrar y descifrar correos electrónicos, a su vez, le permitirá autenticar usuarios usando OpenPGP.
wget -c http://releases.mozilla.org/pub/mozilla.org/extensions/enigmail/enigmail-0.94.0-mz+tb-linux.xpi
Como usuario normal, proceda a invocar el cliente de correo electrónico Thunderbird, seleccione la opción Extensiones del menú Herramientas y proceda a instalar la extensión en cuestión, similar al proceso seguido para lograr instalar el diccionario.
Reproductor de videos
Aunque existen reproductores muy buenos como el VLC y XINE, mi reproductor favorito es, sin lugar a dudas, MPlayer. La mejor opción es compilarlo, aún en la misma página oficial del proyecto MPlayer lo recomiendan, existe mucha documentación al respecto. Sin embargo, si no tiene tiempo para documentarse puede seguir los siguientes pasos, le advierto que el rendimiento quizá no sea el mismo que al compilar el programa.
# echo "deb ftp://ftp.nerim.net/debian-marillat/ etch main" >> /etc/apt/sources.list
# aptitude update
# aptitude install mplayer-386 w32codecs
Extensiones para Mozilla Firefox
Estas son las que he instalado hasta ahora, siempre uso un poco más, puede encontrarlas en la sección Firefox Add-ons del sitio oficial.
- Answers
- del.icio.us
- FireFoxMenuButtons
- Colorful Tabs
- Tab Mix Plus
Gestor de Arranque
Vamos a personalizar un poco el gestor de arranque GRUB.
# aptitude install grub-splashimages
$ cd /boot/grub/splashimages
En este instante le recomiendo escoger alguno de los motivos que incluye el paquete grub-splashimages, una vez hecho esto, proceda a realizar lo siguiente.
$ cd /boot/grub/
# ln -s splashimages/image.xpm.gz splash.xpm.gz
# update-grub
En donde, evidentemente, debe cambiar el nombre del fichero image.xpm.gz por el nombre de fichero de la imagen que le haya gustado en /boot/grub/splashimages.
Creando listas de reproducción para XMMS y MPlayer
Normalmente acostumbro a respaldar toda la información que pueda en medios de almacenamiento ópticos, sobretodo audio digital, ya sea en ficheros Ogg Vorbis o en MPEG 1 Layer 3. Desde hace poco más de un año hasta la actualidad me he acostumbrado a mantener una estructura lógica, la cual es más o menos como sigue:
/music/
Pero hace mucho tiempo no era tan organizado en cuanto a la estructura de los respaldos, entonces, la pregunta en cuestión es, ¿cómo lograr detectar la presencia de ficheros de audio digital almacenados de manera persistente en un dispositivo óptico de manera automática?
Al igual que lo expresado en la entrada Eliminando ficheros inútiles de manera
recursiva,
haremos uso del comando find
.
Antes de entrar en detalle debo aclarar que voy a realizar una búsqueda recursiva de ficheros en el path correspondiente a mi unidad lectora de CDs. Usted debe ajustar el path por uno apropiado en su caso particular.
Si solo desea buscar ficheros MPEG 1 Layer 3:
find /media/cdrom1/ -name \*.mp3 -fprint playlist
Pero si usted acostumbra a almacenar ficheros Ogg Vorbis en conjunto con ficheros MPEG 1 Layer 3, debería proceder así:
find /media/cdrom1/ \( -name \*.mp3 -or -name \*.ogg \) -fprint playlist
El comando anterior también es aplicable para generar listas de reproducción de video digital, en cuyo caso lo único que debe cambiar es la extensión de los ficheros que desea buscar. El fichero que contendrá la lista de reproducción generada en los casos expuestos previamente será playlist.
Reproduciendo la lista generada
Para hacerlo desde XMMS es realmente sencillo, acá una muestra:
xmms --play playlist --toggle-shuffle=on
Si usted no desea que las pistas en la lista de reproducción se reproduzcan
de manera aleatoria, cambie el argumento on
de la opción
--toggle-shuffle
por off
, quedando como --toggle-shuffle=off
.
Si desea hacerlo desde MPlayer es aún más sencillo:
mplayer --playlist playlist -shuffle
De nuevo, si no desea reproducir de manera aleatoria las pistas que se
encuentran en la lista de reproducción, elimine la opción del reproductor
MPlayer -shuffle
del comando anterior.
Si usted desea suprimir la cantidad de información que le ofrece MPlayer al
reproducir una pista le recomiendo utilizar alguna de las opciones -quiet
o
-really-quiet
.
Debian: Bienvenido al Sistema Operativo Universal (Parte I)
Desde el día ayer tengo en mi ordenador de escritorio solo Debian, anteriormente tenía las tres versiones actuales de Ubuntu (warty, hoary y breezy), las cuales compartían la misma particion /home, sentía que estaba desperdiciando espacio, aunque siempre trataba de usar las tres versiones de Ubuntu, una buena excusa que encontre para arreglar las cosas fué la noticia en la que se anunciaba que el período de soporte para Ubuntu 4.10 (Warty Hedgehog) estaba llegando a su fín, después del día 30 de Abril de 2006, no se incluirá información acerca de las actualizaciones de seguridad en los paquetes de Ubuntu 4.10.
Esta entrada viene a ser una recopilación de los pasos que he seguido para migrar de Ubuntu a Debian, a manera de recordatorio, espero pueda servirle a alguien más.
¿Por qué Debian?
Los siguientes puntos son solo opiniones personales.
- El paso de Ubuntu a Debian es poco traumático.
- Había trabajado con Debian en mi portátil por mucho tiempo.
- Debian no depende de ninguna compañía ni del financiamiento de un solo hombre, es un trabajo realizado solo por una comunidad de voluntarios.
- Existe demasiada (y excelente) documentación.
- Tenía que probar algo nuevo, algo mejor, algunos amigos me convencieron, y aún más después del bautizo que me dio José Parrella en el canal IRC #velug en el servidor freenode.
Primeros pasos
En primer lugar procedí a realizar respaldos de la información almacenada en programas como Mozilla Thunderbird, Liferea, Mozilla Firefox, bases de datos en PostgreSQL, MySQL, entre otros. Este proceso es realmente sencillo.
En todos los programas mencionados anteriormente fué suficiente con copiar la raíz de su directorio correspondiente, por ejemplo:
$ tar cvzf /path/respaldo/thunderbird.tgz ~/.thunderbird
El comando anterior generará un fichero empaquetado y comprimido en el directorio /path/respaldo/ (por supuesto, la ruta debe adaptarla según sus necesidades), dicho fichero contendrá la configuración personal e información almacenada por el programa Mozilla Thunderbird (según el ejemplo) del usuario en cuestión.
Obteniendo el CD de Debian
Puede conseguir Debian de muchas maneras, yo por lo menos descargue hace mucho tiempo la imagen del CD Debian GNU/Linux testing Sarge- Official Snapshot i386 Binary-1 por Bitorrent, aunque también contaba con la imagen del CD de Debian 3.1r2, desgraciadamente no pude encontrarle.
Analizando el esquema de particionamiento
Siempre acostumbro dedicarle un buen tiempo al esquema de particionamiento que utilizaré antes de proceder a instalar una distribución en particular, leyendo el manual de instalación de Debian GNU/Linux 3.1 (le dije que existe una excelente documentación), específicamente en el Apéndice B. Particionado en Debian, tenía pensado hacer lo siguiente:
Partición Tamaño Tipo
/ 200MB ext2
/usr 6GB ext3
/var 500MB ext2
/tmp 3GB ext2
/opt 200MB ext2
swap 1GB Intercambio
/home Resto ext3
Por supuesto, estaba siguiendo las recomendaciones del manual de instalación previamente mencionado, antes de continuar pregunte en el canal IRC #velug del servidor freenode y entre algunos amigos me recomendaron lo siguiente:
Partición Tamaño Tipo
/boot 80MB ext2
/tmp 3GB ext2
swap 1GB Intercambio
/ 10GB ext3
/home Resto ext3
Algunos seguramente se preguntaran por qué se le ha asignado tanto espacio a la partición /tmp, simplemente porque continúamente estaré haciendo uso de herramientas para la creación de CDs ó DVDs, además de algunos programas multimedia y siempre he configurado mis clientes Bittorrent para que hagan uso de esta partición antes de finalizar la descarga de los ficheros.
Por medidas de seguridad he establecido nodev, nosuid, noexec como opciones de montaje para la partición /tmp y las opciones ro, nodev, nosuid, noexec en la partición /boot.
¿Por qué a la final no he seguido las indicaciones del manual de instalación de Debian GNU/Linux?
Según un comentario que me hizo José Parrella, el cual más o menos decía así: cuando vas a utilizar el sistema Debian GNU/Linux para la casa, es muy probable que las particiones crezcan de manera desproporcionada y sin sentido (de acuerdo al uso que le dé el usuario), debido a esto es díficil adaptarlo a un modelo realmente conocido, entonces, la idea es no desperdiciar espacio alguno.
Resumiendo un poco la opinión de José:
- No sabemos que vamos a hacer con la máquina.
- Al no saberlo, no podemos particionarla más allá de lo que la lógica indica (separar /home, o /tmp).
- Uno sabe que el sistema raíz de Debian, para un usuario en sus cabales (no soy uno de ellos), normalmente no excede los 4.5GB., muy probablemente menos.
- A menos que sepamos exactamente la funcionalidad principal del Sistema Operativo, no podemos monitorear las particiones /var y /home.
- La partición /tmp normalmente no debe exceder más de 1GB. de espacio, a menos que se haga uso intensivo de ella como prentendo hacerlo.
- Si quisieramos un servidor de archivos, dejaríamos /var en la partición raíz y separaríamos /home.
- Si quisieramos un servidor de bases de datos, dejaríamos /home en la partición raíz y separaríamos /var.
Sus razones me convencieron y desde mi punto de vista tenían lógica, sobretodo para alguien que le gusta hacer pruebas (a veces extremas) directamente desde su ordenador de escritorio.
En la siguiente entrega disertaré acerca del proceso de instalación del sistema base de Debian GNU/Linux y la puesta en marcha de la interfaz gráfica.
Correcciones, críticas constructivas siempre serán bien recibidas.
Breve reseña del FLISOL 2006, Capítulo Mérida-Venezuela
Al llegar a eso de las 9:30 a.m. (hora local) estaban transmitiendo el video Trusted Computing (subtítulos español), un excelente video en donde nos muestran cuan peligroso puede ser la “mala interpretación” que tiene la industria acerca del concepto “Trusted Computing”, modelo en el cual la industria no le permite a los usuarios (comunidad) elegir entre lo que ellos consideran malo o nó, el problema es que ya deciden por tí, simplemente porque la industria no confía en nosotros.
Después de mostrar el video, Hector Colina, uno de los coordinadores del evento, procedió a dar la bienvenida a los asistentes al II Festival Latinoamericano de Instalación de Software Libre, capítulo Mérida, Venezuela. De inmediato, Hector continúo hablando y nos sorprendió con una charla denominada Software Libre y Libre Empresa, en donde nos hablaba de la interesante filosofía detrás del modelo de Software Libre, algunos piensan equivocadamente que bajo el esquema de Software Libre no se es posible generar ganancias, se demostró que es posible hacerlo. También hablo sobre las ventajas técnicas que brinda el Software Libre frente al Software Privativo.
Posteriormente se dió comienzo a las demostraciones de LTSP (Linux Terminal Server Project) por parte de José David Gutierrez, quien también coordinó el evento y es miembro de la Cooperativa AndiNuX, no recuerdo en este instante cuales eran las características que poseía el servidor, pero recuerdo que el cliente sobre el cual se hizo la demostración tenía apenas 40 MB de RAM (sí, leyo bien, 40 MB) y se logró levantar el entorno de escritorio KDE y ejecutar algunas aplicaciones, José comentaba que los requisitos mínimos de memoria RAM eran 16, mientras que lo óptimo erán 32 MB de RAM, así que amigo, si usted esta leyendo esto, no bote su potecito (equipo de bajo recursos de hardware), bajo el esquema de Software Libre podemos recuperarlo, quizá podría donarlo y regalarle una sonrisa a un niño que reciba educación en una escuela con pocos recursos.
Posteriormente comenzaron a colocar algunos videos a los asistentes, entre los cuales recuerdo haber visto Revolution OS, en paralelo, se realizaba el proceso de instalación desde tempranas horas de la mañana, al final de la jornada se lograron contabilizar más de 20 máquinas a las cuales se instaló GNU/Linux, incluyendo potecitos de 32 MB de RAM hasta máquinas de escritorio con procesadores de 64 bits, por supuesto, a una que otra portátil también se le instaló GNU/Linux, además, se regalaron CDs de Debian, Ubuntu, entre otros.
En la tarde el profesor Francisco Palm comenzó su charla Carpintería del Software Libre: un enfoque desde el lenguaje de Programación Python, en ella se nos hace reflexionar acerca de nuestra realidad actual en Venezuela, presentamos poca penetración de internet en nuestra sociedad. Bajo el esquema de Software Privativo, no se le brinda apoyo a la comunidad, no se presenta una innovación alguna.
El profesor Palm también converso sobre puntos interesantes acerca de la Ingeniería de Software Libre, como la Fundación Apache, Debian o Mozilla no presentan certificaciones y no les importa éste hecho en particular, puesto que su desarrollo es robusto, de hecho, muestran como funcionan por dentro. Entre otras cosas bastante interesantes.
Enseguida comenzaron otra charla 2 pupilos del profesor Palm, Diego Díaz y Freddy López, en donde se expuso el Proyecto SIGMA: Soluciones Libres para el mundo Científico, en esta charla pudimos observar una serie de demostraciones del sistema estadistico R. El proyecto SIGMA resulta de una iniciativa de los miembros de la Escuela de Estadística y el Instituto de Estadística Aplicada y Computación (IEAC) de la Universidad de Los Andes.
Sin mucho receso, Leonardo Caballero comenzó su charla acerca de Desarrollo Web con Mozilla FireFox, aca se explicó acerca de las extensiones que resultan muy útiles al desarrollador de páginas web, como por ejemplo, la extensión Web Developer, de manera adicional, se demostró cuan personalizable (desde utilizar temas hasta incluso simular comportarse como otro navegador) puede ser Firefox para un usuario particular, desde extensiones para el clima (ForecastFox) hasta herramientas de blogging.
Particularmente, para el desarrollo web utilizo más extensiones de las que mencionó Leonardo, entre ellas puedo mencionar: CSS Validator, ColorZilla, entre otras. Prefiero no continuar mencionando la lista de extensiones que poseo, se supone que sea una breve reseña, quizá en otro artículo hablaremos acerca de las extensiones de Firefox.
Un poco más tarde, el licenciado Axel Pizzi, quien pertenece a la agencia de traducción y servicios lingüisticos translinguas, conversó acerca del uso de herramientas CAT (Computer aided Translation) bajo el esquema de Software Libre, simplemente se mostraba las bondades de la traducción asistida por computadora, es una manera de traducir contenido en donde el ser humano (traductor) utiliza software diseñado para brindar soporte y facilitar ésta ardua tarea.
Algo nervioso se encontraba Jesús Rivero (no confundir con neurogeek, ok?), pues se estaba haciendo tarde para su charla, Cooperativismo y Software Libre, en donde Jesús mostró como el esquema de desarrollo colaborativo es sumamente útil en las Cooperativas.
Y ya para finalizar la jornada, comence mi charla sobre Desarrolo Web en Python utilizando el framework Django, a manera de introducción, comence a hablar del lenguaje de programación Python, sus bondades, que empresas le utilizan actualmente y que proyectos han desarrollado, entre dicha lista se incluyen las siguientes: Google, Yahoo!, empresas farmacéuticas (AstraZeneca) de gran escala mundial, Industrial Light & Magic (sí, esa misma que está pensando, es la empresa iniciada por George Lucas en el año de 1.975, la encargada de los efectos especiales de la saga “Star Wars”, no solo eso, en su lista se incluyen películas como “Forrest Gump”, “Jurassic Park”, “Terminator 2”, entre otros).
Posteriormente comence a adentrarme ya en el tema que me interesaba, Desarrollo Web, en mi caso particular, hable sobre como utilizar el framework Django, desde la instalación del framework, la instalación de PostgreSQL (recomendada) y del adaptador a dicha base de datos en python, psycopg
, hasta la construcción de la aplicación. Para mayor detalle acerca de esta presentación solo esperen un próxima entrada, quisiera ampliar algunos tópicos para dejarlos un poco más claros.
Si desean ver algunas fotos que logré tomar del II Festival Latinoamericano de Instalación de Software Libre (FLISOL), Capítulo Mérida - Venezuela, pueden revisar el set de fotos FLISOL 2006 de mi cuenta en flickr.
Debo confesar que estaba bastante nervioso al principio porque era mi primera charla. Espero que todo haya salido bien y les haya gustado.
Bueno, finalizamos las actividades como a las 7:30 p.m. (hora local), luego de ello ayudamos a los muchachos a acomodar las cosas y guardarlas en las oficinas de Fundacite Mérida.
Desde mi punto de vista, ha sido una grata experiencia, cualquier corrección a la reseña es bienvenida, pido disculpas si he dejado a alguien por fuera, esta reseña no estaba anotada en ningún medio escrito, solo he comenzado a describir las situaciones que recuerdo, lo más seguro es que olvide algún detalle importante, andaba un poco distraído instalando Debian y Ubuntu en el Festival.
Por supuesto, cualquier corrección, crítica constructiva acerca de la charla que dí se los agradecería, todo sea por mejorar dicho material y publicarlo, por supuesto, manteniendo una licencia libre.
Más propuestas para la campaña en contra de la gestión del CNTI
David Moreno Garza (a.k.a. Damog) se ha unido a la campaña que apoya a la Asociación de Software Libre de Venezuela (SoLVe), la cual rechaza (al igual que nosotros) el acuerdo entre IBM Venezuela y el Centro Nacional de Tecnologías de Información (CNTI).
Damog nos sorprende con un script escrito en Perl que genera un botón personalizado con cierto mensaje.
Para la puesta en funcionamiento del script necesitaremos en primera instancia instalar la variante gd2
del módulo en Perl que contiene a la librería libgd
, ésta última librería nos permite manipular ficheros PNG.
Tanto en Debian como en su hijo Ubuntu el procedimiento es similar al siguiente:
$ sudo aptitude install libgd-gd2-perl
$ wget http://www.damog.net/files/misc/apoyo-solve-0.1.zip
$ unzip apoyo-solve-0.1.zip
$ cd apoyo-solve-0.1
$ perl apoyo-solve.perl <text>
En donde <text>
debe ser reemplazado por su nombre o el de su sitio. Seguidamente proceda a subir la imagen.
Si lo desea, puede ver los diferentes banners de la campaña en contra de la gestión actual del CNTI, únase al llamado de la Asociación de Software Libre de Venezuela (SoLVe).
Instalinux: Instalando Linux de manera desatentida
Instalar GNU/Linux de manera desatendida ahora es realmente fácil haciendo uso de instalinux, esta interfaz web a través de unas preguntas acerca de como deseamos configurar nuestro sistema, nos permitirá crear una imagen que facilitará la instalación del sistema GNU/Linux de manera desatendida. Usted lo inserta, escribe install, y luego cuando regrese más tarde, tendrá un sistema GNU/Linux (la distribución de su escogencia) totalmente funcional esperando por usted.
Para todo lo descrito previamente, instalinux hace uso de scripts escritos en Perl que son parte del proyecto de código abierto LinuxCOE, desarrollado por Hewlett Packard.
Hasta ahora este servicio web gratuito permite crear métodos de instalación desatendida para las siguientes distribuciones:
- Fedora Core 4
- Debian
- SUSE
- Ubuntu
Instalinux nos permite seleccionar aquellos componentes que deseamos, posteriormente se crea una imagen de aproximadamente 30MB, la cual es clave para realizar la instalacion desatendida. Una vez culminado el proceso debemos descargar dicha imagen a nuestro disco duro.
Hasta ahora la propuesta que trae dicha interfaz gráfica me fascina, quizá el único punto débil que le veo es que posterior a la descarga de los aproximadamente 30MB usted deberá descargar los paquetes que solicite la instalación en su caso, esto último puede generar trauma en aquellas personas que no cuenten con conexiones de banda ancha.
Los Repositorios
Contenido:
- Definición
- ¿Cómo funcionan los Repositorios?
- ¿Cómo establecer Repositorios? 1. Los Repositorios Automáticos 2. Los Repositorios Triviales
- ¿Cómo crear ficheros Index?
- ¿Cómo crear ficheros Release?
- ¿Cómo crear Estanques? 1. Herramientas
- ¿Cómo usar los Repositorios?
Los Repositorios (definición)
Un repositorio es un conjunto de paquetes Debian organizados en un directorio en árbol especial, el cual también contiene unos pocos ficheros adicionales con los índices e información de los paquetes. Si un usuario añade un repositorio a su fichero sources.list
, él puede ver e instalar facilmente todos los paquetes disponibles en éste al igual que los paquetes contenidos en Debian.
¿Cómo funcionan los repositorios?
Un repositorio consiste en al menos un directorio con algunos paquetes DEB
en él, y dos ficheros especiales que son el Packages.gz
para los paquetes binarios y el Sources.gz
para los paquetes de las fuentes. Una vez que tu repositorio esté listado correctamente en el sources.list
, si los paquetes binarios son listados con la palabra clave deb
al principio, apt-get
buscará en el fichero índice Packages.gz
, y si las fuentes son listadas con las palabras claves deb-src
al principio, éste buscará en el fichero indice Sources.gz
. Ésto se debe a que en el fichero Packages.gz
se encuentra toda la información de todos los paquetes, como nombre, version, tamaño, descripción corta y larga, las dependencias y alguna información adicional que no es de nuestro interés. Toda la información es listada y usada por los Administradores de Paquetes del sistema tales como dselect
o aptitude
. Sin embargo, en el fichero Sources.gz
se encuentran listados todos los nombres, versiones y las dependencias de desarrollo (esto es, los paquetes necesitados para compilar) de todos los paquetes, cuya información es usada por apt-get source
y herramientas similares.
Una vez que hayas establecido tus repositorios, serás capaz de listar e instalar todos sus paquetes junto a los que vienen en los discos de instalación Debian; una vez que hayas añadido el repositorio deberás ejecutar en la consola:
$ sudo apt-get update
Ésto es con el fin de actualizar la base de datos de nuestro APT y así el podrá “decirnos” cuales paquetes disponemos con nuestro nuevo repositorio. Los paquetes serán actualizados cuando ejecutemos en consola.
$ sudo apt-get upgrade
¿Cómo establecer Repositorios?
Existen dos tipos de repositorios: los complejos, que es donde el usuario sólo tiene que especificar la ruta base de el repositorio, la distribución y los componentes que él quiera (APT automáticamente buscará los paquetes correctos para la arquitectura correspondiente, si están disponibles), y los más simples, donde el usuario debe especificar la ruta exacta (aqui APT no hará magia para encontrar cuales de los paquetes son los indicados). El primero es más difícil de establecer, pero es más fácil de utilizar, y siempre debería ser usado para repositorios complejos y/o plataformas cruzadas; el último, es más fácil de establecer, pero sólo debería ser usado para repositorios pequeños o de una sola arquitectura.
Aunque no es realmente correcto, aquí llamaré al primero Repositorios Automáticos y al último Repositorios Triviales.
Repositorios Automáticos
La estructura del directorio de un repositorio automático con las arquitecturas estándares de Debian y sus componentes se asemeja mucho a ésto:
(tu repositorio root)
|
+-dists
|
|-stable
| |-main
| | |-binary-alpha
| | |-binary-arm
| | |-binary-...
| | +-source
| |-contrib
| | |-binary-alpha
| | |-binary-arm
| | |-binary-...
| | +-source
| +-non-free
| |-binary-alpha
| |-binary-arm
| |-binary-...
| +-source
|
|-testing
| |-main
| | |-binary-alpha
| | |-binary-arm
| | |-binary-...
| | +-source
| |-contrib
| | |-binary-alpha
| | |-binary-arm
| | |-binary-...
| | +-source
| +-non-free
| |-binary-alpha
| |-binary-arm
| |-binary-...
| +-source
|
+-unstable
|-main
| |-binary-alpha
| |-binary-arm
| |-binary-...
| +-source
|-contrib
| |-binary-alpha
| |-binary-arm
| |-binary-...
| +-source
+-non-free
|-binary-alpha
|-binary-arm
|-binary-...
+-source
Los paquetes libres van en el directorio main
; los que no son libres van en el directorio non-free
y los paquetes libres que dependen de los que no son libres van en el directorio contrib
.
Existen también otros directorios poco comunes que son el non-US/main
que contienen paquetes que son libres pero que no pueden ser exportados desde un servidor en los Estados Unidos y el directorio non-US/non-free
que contiene paquetes que tienen alguna condición de licencia onerosa que restringe su uso o redistribución. No pueden ser exportados de los Estados Unidos porque son paquetes de software de cifrado que no están gestionados por el procedimiento de control de exportación que se usa con los paquetes de main
o no pueden ser almacenados en servidores en los Estados Unidos por estar sujetos a problemas de patentes.
Actualmente Debian soporta 11 tipos de arquitecturas; en éste ejemplo se han omitido la mayoría de ellas por el bien de la brevedad. Cada directorio binary-*
contiene un fichero Packages.gz
y un fichero opcional Release
; cada directorio fuente contiene un fichero Sources.gz
y también contiene un fichero opcional Release
.
Nota que los paquetes no tienen que estar en el mismo directorio como los ficheros índices, porque los ficheros índices contienen las rutas a los paquetes individuales; de hecho, podrían estar ubicados en cualquier lugar en el repositorio. Ésto hace posible poder crear estanques.
Somos libres de crear tantas distribuciones como componentes y llamarlos como queramos; las que se usan en el ejemplo son, justamente las usadas en Debian. Podríamos, por ejemplo, crear las distribuciones current
y beta
(en vez de stable
, unstable
y testing
, y que los componentes sean foo
, bar
, baz
y qux
(en lugar de main
, contrib
y non-free
).
Ya que somos libres de llamar los componentes como queramos, siempre es recomendable usar las distribuciones estándar de Debian, porque son los nombres que los usuarios de Debian esperan.
Repositorios Triviales
Los repositorios triviales, consisten en un directorio raíz y tantos sub-directorios
como deseemos. Como los usuarios tienen que especificar la ruta a la raíz del repositorio
y la ruta relativa entre la raíz y el directorio con los ficheros indices en él, somos libres de hacer lo que queramos (inclusive, colocar todo en la raíz del repositorio; entonces, la ruta relativa simplemente sería /
. Se parecen mucho a ésto:
(your repository root)
|
|-binary
+-source
¿Cómo crear ficheros Index?
dpkg-scanpackages
es la herramienta con la que podemos generar el fichero Packages
y con la herramienta dpkg-scansources
creamos los ficheros Sources
. Ellos pueden enviar sus salidas a stout
; por consiguiente, para generar ficheros comprimidos, podemos usar una cadena de comandos como ésta:
$ dpkg-scanpackages arguments | gzip -9c > Packages.gz
Las dos herramientas trabajan de la misma manera; ambas toman dos argumentos (en realidad son más, pero aquí no hablaremos de eso; puedes leerte las páginas del manual si quieres saber más); el primer argumento es el directorio en cual están los paquetes, y el segundo es el fichero predominante. En general no necesitamos los ficheros predominantes para repositorios simples, pero como éste es un argumento requerido, simplemente lo pasamos a /dev/null
. dpkg-scanpackages
escanea los paquetes .deb
, sin embargo, dpkg-scansources
escanea los ficheros .dsc
, por lo tanto es necesario colocar los ficheros .orig.gz
, .diff.gz
y .dsc
juntos. Los ficheros .changes
no son necesarios. Así que, si tienes un repositorio trivial como el mostrado anteriormente, puedes crear los dos ficheros indice de la siguiente manera:
$ cd my-repository
$ dpkg-scanpackages binary /dev/null | gzip -9c > binary/Packages.gz
$ dpkg-scansources source /dev/null | gzip -9c > source/Sources.gz
Ahora bien, si tienes un repositorio tan complejo como el mostrado en el primer ejemplo, tendrás que escribir algunos scripts para automatizar éste proceso. También puedes usar el argumento pathprefix
de las dos herramientas para simplificar un poco la sintaxis.
¿Cómo crear ficheros Release?
Si quieres permitirle a los usuarios de tu repositorio usar el pinning
con tu repositorio, entonces deberás incluir un fichero Release
en cada directorio que contenga un fichero Index
. (Puedes leer más acerca del pinning
en el COMO APT). Los ficheros Release
son ficheros de texto simple y cortos que tienen una forma muy parecida a la que sigue:
Archive: archivo
Component: componente
Origin: TuCompañia
Label: TuCompañia Debian repositorio
Architecture: arquitectura
- Archive: El nombre de la distribución de Debian. Los paquetes en éste directorio pertenecen a (o estan diseñados para), por ejemplo,
stable
,testing
ounstable
. - Component: Aquí van los componentes de los paquetes en el directorio, por ejemplo,
main
,non-free
ocontrib
. - Origin: El nombre de la persona que hizo los paquetes.
- Label: Algunas etiquetas adecuadas para los paquetes de tu repositorio. Usa tu imaginación.
- Architecture: La arquitectura de lo paquetes en éste directorio, como
i386
por ejemplo,sparc
o fuente. Es importante que se establezcanArchitecture
yArchive
de manera correcta, ya que ellos son más usados para hacerpinning
. Los otros, sin embargo, son menos importantes en éste aspecto.
¿Cómo crear estanques?
Con los repositorios automáticos, distribuir los paquetes en los diferentes directorios puede tornarse rápidamente en una bestia indomable, además también se gasta mucho espacio y ancho de banda, y hay demasiados paquetes (como los de la documentación, por ejemplo) los cuales son los mismos para todas las arquitecturas.
En éstos casos, una posible solución es un estanque. Un estanque es un directorio adicional dentro del directorio raíz del repositorio, que contiene todos los paquetes (los binarios para todas las arquitecturas, distribuciones y componente y todas las fuentes). Se pueden evitar muchos problemas, a través de una combinación inteligente de ficheros predominantes (tema que no se toca en éste documento) y de scripts. Un buen ejemplo de un reposotorio “estancado” es el propio repositorio de Debian.
Los estanques sólo son útiles para repositorio grandes. Nunca he hecho uno y no creo que lo haga en un futuro cercano y ésa es la razón por la cual no se explica como hacerlo aquí. Si tu crees que esa sección debería ser añadida siéntete libre de escribir una y contáctame luego.
Herramientas
Existen varias herramientas para automatizar y facilitar la creación de ficheros Debian. A continuación son listados los más importantes:
-
apt-ftparchive
: Es la línea de comandos de la herramienta usada para generar los ficheros indice que APT utiliza para accesar a la fuente de una distribución. -
apt-move
: Es usado para mover una colección de ficheros paquetes de Debian a un fichero jerárquico como el usado en el fichero oficial Debian. Éste es parte del paqueteapt-utils
.
¿Cómo usar los repositorios?
Usar un repositorio es muy sencillo, pero ésto depende de el tipo de repositorio que hayas creado, ya sea binario o de fuentes, automático o trivial. Cada repositorio ocupa una línea en el fichero sources.list
. Para usar un repositorio binario solo tenemos que usar deb
al principio de la línea y para usar un repositorio de
fuentes, en vez de deb
, sólo tenemos que agregrar deb-src
. Cada línea tiene la siguiente sintaxis:
deb|deb-src uri distribución [componente1] [componente2] [...]
El URI
es el Identificador Universal de Recursos de la raíz del repositorio, como por ejemplo: ftp://ftp.tusitio.com/debian
, http://tusitio.com/debian
, o, para ficheros locales, file::///home/joe/mi-repositorio-debian/
. Donde la barra inclinada es opcional. Para repositorios automáticos, tienes que especificar la distribución y uno o más componentes; la distribución no debe terminar con una inclinada.
A continuación unos ejemplos de repositorios:
deb ftp://sunsite.cnlab-switch.ch/mirror/debian/ unstable main contrib non-free
deb-src ftp://sunsite.cnlab-switch.ch/mirror/debian/ unstable main contrib non-free
deb file:///home/aisotton/rep-exact binary/
deb-src file:///home/aisotton/rep-exact source/
Donde los dos primeros se corresponden con repositorios de tipo Automático y los dos últimos Triviales.
Lista de paquetes en la distribución estable de Debian. Lista de paquetes en la distribución testing de Debian Lista de paquetes en la distribución inestable de Debian
Artículo original Debian Repository HOWTO por Aaron Isotton
El fichero sources.list
La mayoría de los entusiastas de sistemas Linux, tarde o temprano llegan a toparse con ésta interrogante. En una forma bastante general, podríamos definir a éste fichero como la lista de recursos de paquetes que es usada para localizar los ficheros del sistema de distribución de paquetes usado en el sistema. Este fichero de control está ubicado en la carpeta /etc/apt/
de nuestro sistema. El fichero es un simple documento de texto sencillo que puede ser modificado con cualquier editor de textos.
Dentro de éste fichero nos vamos a encontrar una serie de líneas, que no son más que las procedencias de los recursos ubicados en los repositorios que elijamos. Éstas líneas de procedencias tienen una forma general que es: tipo
, uri
, distribución
y complementos
.
Entonces, las formas generales de las líneas de procedencias sería así:
deb uri distribución [componente1] [componente2] [...]
deb-src uri distribución [componente1] [componente2] [...]
¿Qué debo saber sobre el sources.list
?
Debemos tener en cuenta varios aspectos sobre éste fichero tan importante. Por ejemplo, hay algo que muchos no saben e ignoran, y es que ésta lista de procedencias está diseñada para soportar cualquier número y distintos tipos de procedencias, por supuesto, la demora del proceso de actualización de la base de datos del APT va a ser proporcional al número de procedencias, ya que mientras más procedencias, mayor es la cantidad de paquetes a añadir a la base de datos, y también va a durar un poco más de tiempo, dependiendo de nuestra velocidad de conexión.
El fichero lista una procedencia por línea, con la procedencia de mayor prioridad en la primera línea, como por ejemplo, cuando tenemos los paquetes en discos CD-ROM
, entonces ubicamos éste de primero. Como ya mencioné, el formato de cada línea es:
tipo uri distribución complementos
Donde:
-
tipo
: Determina el formato de los argumentos, que pueden ser de dos tipos:deb
ydeb-src
. El tipodeb
hace referencia a un típico archivo de Debian de dos niveles, que son distribución y componente, sin embargo, el tipodeb-src
hace referencia al código fuente de la distribución y tiene la misma sintaxis que las de tipodeb
. Las líneas de tipodeb-src
son necesarias si queremos descargar un índice de los paquetes que tienen el código fuente disponible, entonces de ésta forma obtendremos los códigos originales, más un fichero de control, con extensión.dsc
y un fichero adicionaldiff.gz
, que contiene los cambios necesario para debianizar el código. -
uri
: Identificador Universal de Recursos, ésto es, el tipo de recurso de la cual estamos obteniendo nuestros paquetes. Pero ¿Cuáles son los tipos deuri
que admite nuestra lista de procedencias? A continuación hago mención de las más populares, por así decirlo: *CD-ROM
: El cdrom permite a APT usar la unidad de CD-ROM local. Se puede usar el programaapt-cdrom
para añadir entradas de un cdrom al ficherosources.list
de manera automática, en modo consola.-
FTP
: Especifica un servidor FTP como archivo. *HTTP
: Especifica un servidor HTTP como archivo. -
FILE
: Permite considerar como archivo a cualquier fichero en el sistema de ficheros. Esto es útil para particiones montadas mediante NFS (sistema de ficheros usado para montar particiones de sistemas remotos) y réplicas locales.
-
-
distribución
: Aquí especificamos la distribución en la cual estamos trabajando, bien sea Debian, Ubuntu, Kubuntu, Gnoppix,Knoppix y otras, basadas en sistemas Debian GNU/Linux.distribución
también puede contener una variable,$(ARCH)
, que se expandirá en la arquitectura de Debian usada en el sistema (i386
,m68k
,powerpc
,…). Esto permite quesources.list
no sea dependiente de la arquitectura del sistema. -
componentes
: Los componentes son los tipos de repositorios clasificados según las licencias de los paquetes que contienen. Dentro de los componentes tenemosmain
,contrib
ynon-free
, para usuarios Debian; sin embargo para usuarios Ubuntu, por ejemplo, también existenuniverse
,multiverse
restricted
. Ahora la decisión de cuales repositorios utilizar, eso va más allá de lo pueda ser explicado acá, ya que eso le concierne a su persona.
Entonces, la forma de una línea de procedencias quedaría algo así:
# deb http://security.ubuntu.com/ubuntu breezy-security main restricted
# deb-src http://security.ubuntu.com/ubuntu breezy-security main restricted
Ahora bien, se preguntarán ¿Por qué el carácter #
(almohadilla) al principio de la línea? Bueno, la respuesta es muy simple. Éste caracter se utiliza para indicarle al APT cuando ignorar, por así decirlo, las líneas que contengan dicho caracter al principio, pues lo que hace en realidad es tomarlas como comentarios de lenguaje y simplemente no las interpreta, por lo tanto, si queremos que el APT tome o no en cuenta una línea de procedencias, entonces quitamos o añadimos el caracter, respectivamente.
Nota del autor: Algunas partes de este artículo fueron tomadas del manual de Debian.
Seleccionando el mejor mirror para debian
El día de ayer decidí instalar Debian Sarge en uno de los ordenadores de casa, la instalación base de maravilla, luego procedi a levantar el entorno gráfico de GNOME haciendo uso de aptitude, deje de lado muchas aplicaciones que no voy utilizar extensivamente. Mientras intento solucionar un problemita con el sonido me dispuse a indagar acerca de los repositorios que ofrece Debian.
Leyendo la lista de mirrors en el sitio
oficial de Debian se me ocurrio que debia existir una manera de medir la rapidez
de cada uno de ellos, quizá para muchos esto no es nuevo, para mí si lo es,
recien comienzo con esta
distro, aunque aún
mantengo Ubuntu (no se preocupen mis dos o tres
lectores que seguiré escribiendo acerca de esta excelente distro). Bueno, he
hecho uso de apt-spy
, este paquete hace una serie de pruebas sobre los mirrors
de debian, midiendo la su ancho de banda y su latencia.
El paquete apt-spy
por defecto reescribe el fichero /etc/apt/sources.list
con los servidores con los resultados más rápidos.
Para instalarlo simplemente hacer lo siguiente:
# aptitude install apt-spy
Leyendo el manual de esta aplicación se puede observar que existe la opción de seleccionar a cuales mirrors se les harán las pruebas de acuerdo a su localización geográfica.
Por ejemplo:
# apt-spy -d stable -a South-America -o mirror.txt
Lo anterior genera un fichero fichero, cuyo nombre será mirror.txt
, la opción
-a
indica un área, esta opción acepta los valores siguientes: Africa
,
Asia
, Europe
, North-America
, Oceania
y South-America
, aunque es
posible definir sus propias áreas. La opción -d
indica la distribución, esta
opcion acepta los valores siguiente: stable
, testing
o unstable
.
He obtenido como resultado lo siguiente:
milmazz@nautilus:~$ cat mirror.txt
deb http://ftp.br.debian.org/debian/ stable main
deb-src http://ftp.br.debian.org/debian/ stable main
deb http://security.debian.org/ stable/updates main
También he realizado una segunda prueba.
# apt-spy -d stable -e 10 -o mirror.txt
Obteniendo como respuesta lo siguiente:
milmazz@nautilus:~$ cat mirror.txt
deb http://ftp.tu-graz.ac.at/mirror/debian/ stable main
deb-src http://ftp.tu-graz.ac.at/mirror/debian/ stable main
deb http://security.debian.org/ stable/updates main
La opción -e
es para detener el análisis después de haber completado 10 (o el
número entero indicado como parámetro en dicha opción) servidores.
Me he quedado con los mirrors de Brazil (los mostrados en la primera prueba) por su cercanía geográfica, los del segundo análisis resultan ser de Austria y entran en la categoría de mirrors secundarios.
linux
apt-get detrás de proxy con autenticación NTLM
Por motivos que no vienen al caso discutir en este artículo tuve que instalar Debian GNU/Linux detrás de un proxy que aún utiliza NTLM como medio de autenticación, aunque NTLM ya no es recomendado por Microsoft desde hace años en pro de usar Kerberos.
Una vez instalada la distribución quería utilizar apt-get
para actualizarla e
instalar nuevos paquetes, el resultado fue que apt-get
no funciona de manera
transparente detrás de un proxy con autenticación NTLM. La solución fue
colocar un proxy interno que esté atento a peticiones en un puerto particular
en el host, el proxy interno se encargará de proveer de manera correcta las
credenciales al proxy externo.
La solución descrita previamente resulta sencilla al utilizar cntlm
. En
principio será necesario instalarlo vía dpkg
, posteriormente deberá editar los
campos apropiados en el fichero /etc/cntlm.conf
- Username
- Domain
- Password
- Proxy
Seguidamente reinicie el servicio:
# /etc/init.d/cntlm restart
Ahora solo resta configurar apt-get
para que utilice nuestro proxy interno,
para ello edite el fichero /etc/apt.conf.d/02proxy
Acquire::http::Proxy "http://127.0.0.1:3128";
NOTA: Se asume que el puerto de escucha de cntlm
es el 3128.
Ahora puede hacer uso correcto de apt-get
:
# apt-get update
# apt-get upgrade
...
NOTA FINAL: Es evidente que cualquier comando o herramienta que necesite
autenticarse contra el proxy externo deberá configurarlo para que utilice el
proxy interno, lo explicado en este artículo no solo aplica para el comando
apt-get
.
Debian GNU/Linux 4.0
Según puede verse en el sitio oficial del Proyecto Debian, en una noticia aparecida el día de hoy, Upcoming Release of Debian GNU/Linux 4.0, se confirma que el próximo mes de diciembre del presente año será la fecha de publicación de la siguiente versión 4.0 de Debian GNU/Linux, cuyo código nombre es “etch”.
Entre las novedades que podremos observar en esta nueva versión se encuentran las siguientes:
- Será la primera versión que ofrezca soporte oficial a la arquitectura AMD64. De manera simultánea, esta versión se publicará para 11 arquitecturas.
- La versión 4.0 ofrecerá la versión 2.6.17 del núcleo linux de manera predeterminada. Además, esta misma versión se utilizará en todas las arquitecturas y a su vez en el instalador.
- Debian GNU/Linux 4.0 presentará la colección de compiladores de GNU versión 4.1.
- Debian GNU/Linux deja de utilizar XFree86 como implementación de X11 (sistema de ventanas X) para darle paso a X.Org.
- Al menejador de paquetes APT seguramente se le añadan algunas mejoras en cuanto a seguridad, admitiendo criptografía modo paranoico y firmas digitales.
Reuniones para eliminar fallos
En la misma noticia podemos enterarnos que el Proyecto Debian está planeando algunas reuniones previas al nuevo lanzamiento en búsqueda de fallos y establecer las debidas correcciones, de esta manera, se ofrecerá al público una versión que presente la mínima cantidad de errores críticos de programación.
Estas reuniones se llevarán a cabo en varias ciudades alrededor del mundo. Por lo tanto, podrá participar el mayor número de personas en la búsqueda y corrección de estos errores de programación.
Si usted está interesado en participar pero no puede reunirse personalmente con los desarrolladores en las distintas ciudades que se describen en BSPMarathon, puede conectarse al canal #debian-bugs en el servidor irc.debian.org y de esta manera participar.
La situación en Venezuela
En mi humilde opinión, considero oportuno que la comunidad Debian Venezuela debe tomar las riendas en este asunto, organizar reuniones para eliminar fallos en nuestra distribución favorita, aprovechando la cercanía del Día Debian para organizar actividades de este tipo. ¿Qué opinan en este sentido?.
Perl y su poderío
Al igual que José, considero que el hilo de discusión Borrar línea X de un archivo es bastante interesante, este hilo fué discutido en la lista de correos técnica l-linux es la la lista de correos para Consultas Técnicas sobre Linux y Software Libre en VELUG del Grupo de Usuarios de Linux de Venezuela (VELUG), el problema planteado por quien inicio el hilo de discusión, José Luis Bazo Villasante, consistía en eliminar un registro completo, en donde se pasara como argumento el primer campo (tal vez el identificador) de dicho registro.
Suponga que el fichero tiene la siguiente estructura:
:(123
... # otros campos
)
:(234
... # otros campos
)
:(456
... # otros campos
)
Se dieron soluciones en lenguajes como Bash
y C
¿Con intención de autoflagelación? y ciertas en Perl, éstas últimas son las que llaman mi atención, vamos por partes Diría Jack El Destripador.
José propuso lo siguiente:
#!/usr/bin/perl -n
$deadCount = 7 if ($_ =~ /${ARGV[0]}/);
--$deadCount if ($deadCount);
print unless ($deadCount);
El programa debe ejecutarse así:
$ perl script.pl archivo 123
Este programa hace el trabajo, pero al final emitirá un error porque cree que el argumento 123 es otro fichero, y por supuesto, no lo encuenta.
Mi solución fue la siguiente:
perl -ne 'print unless /:\\(123/../\\)/' input.data > output.data
Por supuesto, en este caso solamente estaría eliminando el registro cuyo primer elemento es 123, funciona, pero genera un problema al igual que el hecho por José, se deja una línea de espacio vacía adicional en los registros, cuando el separador de los grupos de datos debe ser una No dos, ni tres, … línea en blanco, tal cual como apunto Ernesto Hernández en una de sus respuestas.
Otro apunte realizado por el profesor Ernesto, fué que las soluciones presentadas hasta el momento de su intervención fué el análisis de fondo que estabamos haciendo, el problema no consistía en procesar cada una de las líneas, el trabajo en realidad consistía en analizar un registro multilínea (o párrafo), en términos más sencillos, cada grupo de datos (registros) está separado por una línea en blanco.
El profesor continuaba su excelente explicación diciendo que el problema se reduce al analizarlo de esta manera en lo siguiente:
…si se cuenta con un lenguaje de programación que está preparado para manejar el concepto de “registro” y puede definir el separador de registro como una línea en blanco, simplemente se trata de ignorar aquellos registros que tengan la expresión regular (X, donde X es la secuencia de dígitos que no nos interesa preservar.
La solución presentada por el profesor Ernesto fue:
perl -000 -i -ne 'print unless /\\(XXX/' archivo
En donde se debe sustituir las XXX por los dígitos cuyo bloque no nos interesa conservar.
De este hilo aprendí cosas nuevas de Perl, en realidad estoy comenzando, muchos pensarán que este código es críptico, por ello considero conveniente aclarar algunas cosas.
Lo críptico de un código no es inherente a un lenguaje particular, eso depende más del cómo se programe.
En este caso particular una sola línea de código nos proporciona mucha información, evidentemente para comprender dicho contenido es necesario leer previamente cierta documentación del lenguaje, pero ¿quien comienza a programar en un lenguaje en particular sin haber leído primero la documentación?, la respuesta parece lógica, ¿cierto?.
La existencia de opciones predefinidas y maneras de ejecutar el interprete de Perl permiten enfocarse únicamente en la resolucion de tareas, cero burocracia.
Un ejemplo de lo mencionado en el párrafo anterior es el siguiente, un bucle lo puedo reducir con la opción de ejecución -n
del interprete Perl, simplemente leyendo un poco perlrunman perlrun
, perlrun se incluye en la documentación de Perl, en sistemas Debian lo encontramos en el paquete perl-doc, para instalar simplemente hacer ejecutar el comando aptitude install perl-doc
como superusuario nos enteramos del asunto, eso quiere decir que podemos reducir a una simple opción de ejecución del interprete de Perl todo esto:
#!/usr/bin/perl
while(<>){
#...
}
¿Qué es ese operador que parece un “platillo volador”, según nos conto José Luis Rey, el profesor Ernesto Hernández le llama así de manera informal (null filehandle)?, bueno, lea perlop, en especial la sección I/O Operators.
La opción -i me permite editar (reescribir) in situ el fichero que vamos a procesar, en el caso de no añadir una extensión no se realizara un respaldo del fichero, el fichero original se sobreescribe. Mayor detalle en perlrun.
Lo que si no sabía hasta ahora, es lo explicado por el profesor acerca de los párrafos (registros multilínea) en Unix, la opción -0 tiene un valor especial, el cual es 00, si este valor es suministrado hace que Perl entre en “modo párrafo”, en pocas palabras, se reconoce una línea en blanco como el separador de los registros.
El resto del código es solo manejo de una sencilla expresión regular, se asume que el lector conoce algo del tema, solo indica el registro que queremos ignorar.
Así que podemos concluir lo siguiente, Perl no es críptico, asumiendo que el programador ha leido suficiente documentación acerca del lenguaje en cuestión, evitamos la burocracia y atendemos el problema de raíz en el menor tiempo posible.
La solución que propone Perl con el lema Hay más de una manera de hacerlo, es ofrecerle al programador libertad en su forma de expresarse, ¿acaso todos hablamos el mismo idioma?, ¿acaso debemos seguir las malas prácticas que intenta difundir el maligno Java?, coartar el pensar del programador y obligarlo a hacer las cosas al estilo Java, ¿dónde queda la imaginación? De hecho, se dice que, un programador experto en Java está muy cerca de convertirse en un autómata, ¿paso a ser un lujo?.
A todos los que lo deseen, les invito a participar en la lista de correos técnica (l-linux) del Grupo de Usuarios de Linux de Venezuela (VELUG), les recomiendo leer detenidamente las normas de uso antes de inscribirse en la lista.
Primer documental de Software Libre hecho en Venezuela
Para todos aquellos que aún no han tenido la oportunidad de ver el primer documental sobre Software Libre realizado en Venezuela, Software Libre, Capítulo Venezuela, ahora pueden hacerlo gracias a la colaboración hecha por Luigino Bracci Roa, quien realizó la codificación del fichero.
El documental, cuya duración es de 25 minutos, fué producido por el Ministerio de la Cultura a través de la Fundación Villa Cine, dicha fundación busca estimular, desarrollar y consolidar la industria cinematográfica a nivel nacional, a su vez, favorece el acercamiento del pueblo venezolano a sus valores e idiosincrasia.
Se pueden observar algunas entrevistas muy interesantes, el documental pretende orientar al ciudadano común, aquel que no domina profundamente los temas de la informática y específicamente el tema del Software Libre, entre otras cosas se explican los conceptos e importancia detrás de él.
A continuación una serie de sitios espejos desde los cuales puede descargar el documental, de igual manera a lo dicho por Ricardo Fernandez: por favor no use siempre el mismo mirror, es para compartir anchos de banda y para dar un mejor servicio a todos.
Formato OGG (aprox. 43.5MB)
- https://www.ututo.org/utiles/torrent/sl-capitulo-vzla-001.ogg.torrent
- ftp://ftp.gnu.org/gnu+linux-distros/ututo-e/sl-capitulo-vzla-001.ogg
- http://ftp.gnu.org/gnu+linux-distros/ututo-e/sl-capitulo-vzla-001.ogg
Free TV
Daniel Olivera nos informa que:
Ya esta en UTUTO FreeTv emitiendose luego de cada video que ya estaba.
Pueden verlo en radio.ututo.org:8000/ o en WebConference en el sitio de UTUTO.
Esta las 24 horas funcionando FreeTv.
Formato AVI (aprox. 170MB)
- http://blog.milmazz.com.ve/soft-libre-venezuela.avi
- http://koshrf.fercusoft.com/koshrf/soft-libre-venezuela.avi
- http://www.xpolinux.org/soft-libre-venezuela.avi
- http://two.fsphost.com/softlibre/soft-libre-venezuela.avi
- http://www.conexionsocial.cl/video/soft-libre-venezuela.avi
- http://ieac.faces.ula.ve/files/fpalm/soft-libre-venezuela.avi
- http://heartagram.com.ve/soft-libre-venezuela.avi
Puede encontrar mayor información acerca del tema en los siguientes artículos:
- ¡Descarga el documental sobre Software Libre en Venezuela!
- Video de Software Libre hecho en Venezuela
Actualización: Se añaden nuevos sitios espejos para el formato AVI, además, Daniel Olivera ha facilitado algunos enlaces de gran ancho de banda para el formato OGG. ¡Gracias Daniel!.
Lavado de cara para Planeta Linux
Desde las 2:00 p.m. (hora local) del día de hoy, con la asistencia del compañero Damog, hemos ido actualizando el layout de Planeta Linux, aún falta mucho trabajo por hacer, pero al menos ya hemos dado los primeros pasos.
Cualquier opinión, crítica, sugerencia, comentario agradecemos enviar un correo electrónico a la lista de correos de Planeta Linux. *[p.m.]: Post meridiem
hwinfo: Detectando el hardware actual
hwinfo
es un programa que nos permite conocer rápidamente el hardware detectado actualmente en nuestros ordenadores, por ejemplo, si deseamos obtener los datos de dispositivo SCSI, simplemente utilizamos el comando hwinfo --scsi
.
Para instalar este programa en Ubuntu Linux en primer lugar debemos tener activados el repositorio universe
, seguidamente haremos uso de aptitude
, tal cual como sigue:
$ sudo aptitude install hwinfo
Si deseamos conocer el uso de este programa de manera detallada, simplemente escribimos hwinfo --help
.
En el caso que haga uso del comando hwinfo
sin parámetro alguno nos mostrará la lista completa del hardware detectado actualmente, es importante resaltar que esta lista puede ser muy extensa, por lo cual le recomiendo hacer uso de un pipe para administrar la salida generada por hwinfo
y poder visualizarla página a página, tal cual como sigue.
$ hwinfo | less
Si por el contrario, usted solo desea conocer una lista resumida del hardware detectado haga uso del parámetro --short
, lo anterior quedaría de la siguiente manera:
$ hwinfo --short
Este programa nos brinda bastantes opciones, es recomendable hacer uso de los parámetros cuando necesitamos información referente a un dispositivo en específico, por ejemplo, si deseamos conocer la información acerca de la tarjeta de sonido, hacemos lo siguiente:
$ hwinfo --sound
Como le mencione anteriormente, para conocer en detalle las opciones que nos brinda este programa, le recomiendo leer el manual. Espero sea de provecho ;)
Vulnerabilidad en el kernel Linux de ubuntu
Este problema de seguridad únicamente afecta a la distribución Ubuntu 5.10, Breezy Badger.
Los paquetes afectados son los siguientes:
linux-image-2.6.12-10-386
linux-image-2.6.12-10-686
linux-image-2.6.12-10-686-smp
linux-image-2.6.12-10-amd64-generic
linux-image-2.6.12-10-amd64-k8
linux-image-2.6.12-10-amd64-k8-smp
linux-image-2.6.12-10-amd64-xeon
linux-image-2.6.12-10-iseries-smp
linux-image-2.6.12-10-itanium
linux-image-2.6.12-10-itanium-smp
linux-image-2.6.12-10-k7
linux-image-2.6.12-10-k7-smp
linux-image-2.6.12-10-mckinley
linux-image-2.6.12-10-mckinley-smp
linux-image-2.6.12-10-powerpc
linux-image-2.6.12-10-powerpc-smp
linux-image-2.6.12-10-powerpc64-smp
linux-patch-ubuntu-2.6.12
El problema puede ser solucionado al actualizar los paquetes afectados a la versión 2.6.12-10.28. Posterior al proceso de actualización debe reiniciar el sistema para que los cambios logren surtir efecto.
Puede encontrar mayor detalle acerca de esta información en el anuncio Linux kernel vulnerability hecho por Martin Pitt a la lista de correos de avisos de seguridad en Ubuntu.
Planeta Linux
Hace tiempo que no revisaba algunas de las estadísticas del sitio, me he percatado que han llegado algunos enlaces desde Planeta Linux Venezuela. El principal objetivo de este sitio es:
Planeta Linux es un pequeño proyecto que pretende fomentar la comunicación e intercambio sencillo de información sobre cualquier usuario de GNU/Linux o software libre, en Venezuela. Con esta breve comunicación, podremos conformar una comunidad mucho má sólida, unificada e integral.
Lo anterior también es extensible para aquellas personas mexicanas, puesto que existe un Planeta Linux México.
¿Desea colaborar con el proyecto?
El proceso de registro es muy sencillo, solamente debes enviar un correo a lista de correos [email protected], si desea suscribirse a dicha lista solamente rellene los datos solicitados página de información de la lista de correos de Planeta Linux.
Para su admision usted debe suministrar los siguientes datos:
- Nombre completo
- Lugar de residencia
- URI del feed RSS/Atom
Opcionalmente puede enviar su Hackergotchi, imagen de un escritor que es utilizada como ícono para identificar al autor de un feed dado dentro de un agregador de blogs, ésta no debe exceder un ancho de 95 pixels y un alto de 95 pixels.
Conociendo un poco más acerca del proyecto
Me ha interesado mucho esta iniciativa, así que no dude en ponerme en contacto con David Moreno Garza (a.k.a. damog), él cual me ha contestado muy amablemente. En las siguientes líneas expongo nuestro intercambio de correos electrónicos.
- MilMazz: Hola David, en realidad no tengo el placer de conocerte personalmente, pero he notado recientemente algunos enlaces entrantes desde el Planeta Linux Venezuela, no se quien me dio de alta, se agradece, así que gracias.
- Damog: Hola Milton, no, al parecer no nos conocemos. Yo te di de alta en el rol debido a que José Parrella, a.k.a bureado, me pasó tu nombre y feed.
- MilMazz: El motivo de este mensaje es para pedirte un poco de informacion respecto al proyecto, para publicar un artículo en mi blog y así colaborar con la difusión de esta interesante idea.
- Damog: ¡Muchas gracias! Así es como el proyecto va ganando adeptos y más gente se va uniendo y leyendo el contenido de Planeta Linux.
- MilMazz: Espero no te molesten las siguientes preguntas, tomalo a manera de entrevista :)
- Damog: Desde luego que no, ¡bienvenidas! Antes que cualquier cosa, espero que no te importe que reenvíe este correo a la lista de Planeta Linux.
- MilMazz: ¿Quién o quienes se plantearon en principio la idea de crear Planeta Linux?, ¿quién lo llevaron a cabo?
- Damog: Debido al boom que han tenido los blogs entre usuarios y desarrolladores de software libre en el mundo, se ve la necesidad de crear nuevas herramientas para «monitorear» los contenidos dependiendo de los gustos de cada uno de los usuarios. Wieland Kublun, un mexicano radicado en Guadalajara, en el estado de Jalisco, en el occidente de México, alguna vez me comentó que estaría bien tener una especie de «planeta», como los que se han dado a conocer por proyectos grandes como Planet Debian o Planet GNOME. Creí que la idea era estupenda y empezamos a poner el agregador en marcha y añadiendo a nuestros conocidos al rol.
Otro factor que ha influído mucho en la gran proliferación de Planeta Linux es Jaws. Jaws es un proyecto, iniciado por Jonathan Hernández, radicado en Chihuahua, en el norte de México, de software libre para construir fácilmente un blog. El proyecto Jaws ha avanzado ya muchísimo, pues el software desarollado es altamente útil, funcional y bastante bonito. Por ende, muchos usuarios mexicanos empezaron a montar sus blogs en él y la mancha de usuarios blogueadores mexicanos creció mucho.
- MilMazz: Tengo entendido que el primer planeta de la “serie” fue el Planeta Linux Mexico, ¿desde cuando está en línea?
- Damog: Así es, fue el primero. Ha estado en línea desde octubre de 2004. Antes utilizábamos el dominio planetalinux.com.mx, pero recientemente abrimos el 2006 con el dominio, más genérico y permitible de expansión, planetalinux.org.
- MilMazz: ¿Por qué decidiste incluir a Venezuela como parte del Planeta Linux?, ¿alguna persona te pidio que lo hicieras?
- Damog: No. Personalmente tengo mucha relación con Venezuela, pues mi novia es de allá y tengo bastantes amigos, en el mundillo del software libre, allá. Quise lanzarlo por que empecé a conocer a gente que tenía un blog y llegó a un punto donde consideré pertinente lanzarlo, y donde la gente se interesaría por él. Mucha gente, hasta donde tengo entendido, ni siquiera sabe que está en el planeta. Como tú mismo, a muchas personas se han agregado teniendo conocimientos de ellos por terceras partes. Sin embargo, la forma de ver crecer un proyectito así es precisamente de boca en boca, de blog en blog.
- MilMazz: ¿Tienes pensado en el futuro incluir a mas paises?, si es así, ¿cuáles serían?
- Damog: Sí, la idea también era esa al iniciar con el dominio que usamos actualmente. Al principio creí que lo ideal sería empezar con México y Venezuela por razones ya explicadas, y además con Estados Unidos (sindicando a la gente latina que radica en ese país y que bloguea), usando la dirección us.planetalinux.org. Sin embargo, aún no se ha juntado suficiente gente para llevar a cabo tal subproyecto. En general cualquier país latinoamericano podría entrar mientras se junte suficiente gente y vaya creciendo como han ido creciendo los correspondientes a México y Venezuela. Creo que sería interesante seguirse luego con Brasil, donde hay una enorme actividad de software libre, o incluso en Argentina. Sin embargo, esto depende de la gente: Hace falta todavía escribir mucho contenido, hace falta escribir una especie de FAQ donde se explique qué pueden hacer si alguien quiere iniciar una instancia de Planeta Linux en un país donde no exista, hace falta hacer ese tipo de cosas y generar esos contenidos.
- MilMazz: Estaba por documentarme acerca de los lineamientos, al parecer el enlace de los lineamientos de Planeta Linux está roto por ahora, ¿cuáles serían los lineamientos que debe seguir un miembro del Planeta Linux?
- Damog: Bueno, como te digo, uno más de los contenidos inconclusos. Básicamente, los lineamientos establecerán algunos reglas o consejos, como que deberán hablar de Linux y Software Libre con cierta regularidad en su blog, que su feed debe ser válido, etc. Ese tipo de cosas.
- MilMazz: ¿Quienes pueden participar en el Planeta Linux?
- Damog: Cualquier persona que lleve un blog y toque periódicamente temas sobre Linux o Software Libre.
- MilMazz: ¿Deseas agregar algo más?
- Damog: Pues si alguien se quiere unir, es más que bienvenido. Simplemente escriban a la lista: [email protected] o suscríbanse.
Antes de culminar, quisiera agradecerle públicamente a José Parella por la sugerencia hecha a David Moreno Garza.
Instalinux: Instalando Linux de manera desatentida
Instalar GNU/Linux de manera desatendida ahora es realmente fácil haciendo uso de instalinux, esta interfaz web a través de unas preguntas acerca de como deseamos configurar nuestro sistema, nos permitirá crear una imagen que facilitará la instalación del sistema GNU/Linux de manera desatendida. Usted lo inserta, escribe install, y luego cuando regrese más tarde, tendrá un sistema GNU/Linux (la distribución de su escogencia) totalmente funcional esperando por usted.
Para todo lo descrito previamente, instalinux hace uso de scripts escritos en Perl que son parte del proyecto de código abierto LinuxCOE, desarrollado por Hewlett Packard.
Hasta ahora este servicio web gratuito permite crear métodos de instalación desatendida para las siguientes distribuciones:
- Fedora Core 4
- Debian
- SUSE
- Ubuntu
Instalinux nos permite seleccionar aquellos componentes que deseamos, posteriormente se crea una imagen de aproximadamente 30MB, la cual es clave para realizar la instalacion desatendida. Una vez culminado el proceso debemos descargar dicha imagen a nuestro disco duro.
Hasta ahora la propuesta que trae dicha interfaz gráfica me fascina, quizá el único punto débil que le veo es que posterior a la descarga de los aproximadamente 30MB usted deberá descargar los paquetes que solicite la instalación en su caso, esto último puede generar trauma en aquellas personas que no cuenten con conexiones de banda ancha.
Cowbell: Organiza tu música
Cowbell, es una aplicación que te permite organizar tus compilaciones musicales de una manera fácil y divertida, ya no tienes que aburrirte por horas al intentar organizar tus colección musical manualmente.
Una de las cosas que me han agradado de este programa es que aparte de poder editar las etiquetas manualmentede en una interfaz bastante agradable y sencilla, también puedes obtener toda la información necesaria a través de Amazon Web Services, lo anterior incluye: Número, Título, Año, Estilo, Portada y demás información relacionada con las canciones. Al utilizar este servicio cuentas con una amplia bases de datos, lo anterior en realidad permite ahorrar mucho tiempo.
Dentro de las preferencias de este programa nos encontraremos con opciones que nos permitirán renombrar ficheros de acuerdo a un patrón, el cual lo podemos generar al combinar cualquiera de las siguientes palabras claves.
- Artist
- Album
- Title
- Track
- Genre
- Year
Las palabras claves anteriores se explican por sí solas. Simplemente escoge el patrón que más se ajuste a tus necesidades. Entre otras de las características de este programa, cabe mencionar la posibilidad de generar un fichero de lista de reproducción del álbum.
¿Tienes una larga colección de música cuyas etiquetas debes arreglar?, no te preocupes, Cowbell también puedes usar desde la línea de comandos, la manera de invocar el comando es la siguiente:
$ cowbell --batch /ruta/a/tu/musica
Donde evidentemente debes modificar el directorio /ruta/a/tu/musica
de acuerdo a tus necesidades.
Para instalar esta aplicación en ubuntu debes tener activo el repositorio universe
en tu fichero /etc/apt/sources.list
. Una vez actualizada la lista de repositorios, puedes instalar Cowbell de la siguiente manera:
$ sudo aptitude cowbell
Integridad del CD de Ubuntu
Recientemente un amigo (de ahora en adelante lo llamaré pepito) al que le regalé un par de CD’s de Ubuntu, me preguntó después de unos días lo siguiente: Milton, ¿cómo puedo verificar la integridad del CD de instalación de Ubuntu?.
En primer lugar, estaba muy contento porque pepito deseaba en realidad migrar a GNU/Linux. Pero la idea de este artículo no es hablarles de pepito, sino describir lo más detalladamente posible la respuesta que le dí.
Aprovechar las opciones que nos brinda el CD de instalación
El mismo CD de instalación de ubuntu nos brinda una opción que nos permite verificar la integridad del disco, para ello debemos realizar lo siguiente:
- Colocar el CD de instalación de Ubuntu en la unidad de CD-ROM correspondiente, seguidamente proceder a reiniciar, recuerde que en la configuración de la BIOS debe tener como primera opción de arranque la unidad de CD-ROM que corresponda en su caso.
- Al terminar la carga del CD usted podrá apreciar un mensaje de bienvenida similar al siguiente:
The default installation is suitable for most desktop or laptops systems. Press F1 for help and advanced installation options.
To install only the base system, type “server” then ENTER. For the default installation, press ENTER.
boot:_
Lo anterior, traducido a nuestro idioma sería similar a:
La instalación por defecto es conveniente para la mayoría de los sistemas de escritorio o portátiles. Presione F1 para ayuda y opciones de instalación avanzadas.
Para instalar solo el sistema base, escriba “server” luego ENTER. Para la instalación por defecto, presione ENTER.
- Para este artículo, se realizará el modo de instalación por defecto, lo anterior quiere decir que solamente debemos presionar la tecla ENTER, enseguida observaremos la carga del kernel.
- Desde el cuadro de dialogo Choose Language, primero en aparecer, presionaremos la tecla Tab y seguidamente debemos seleccionar la opción Go back
- El paso anterior nos llevará al menú principal de la instalación de Ubuntu (Ubuntu installer main menu), una vez ubicados acá, simplemente debemos seleccionar la opción Check the CD-ROM(s) Integrity.
- Al finalizar el paso anterior nos llevará a un cuadro de dialogo de confirmación, pero antes podremos notar una pequeña advertencia:
Warning: this check depends on your hardware and may take some time.
Check CD-ROM integrity?
Lo anterior, traducido a nuestro idioma sería similar a:
Advertencia: Esta revisión depende de su hardware y puede tomar cierto tiempo.
Revisar la integridad del CD-ROM?
A la pregunta anterior respondemos Sí
- Si lo prefiere, salga de su casa, tome un poco de sol y regrese ;)
- Si el CD-ROM no tiene fallo alguno, podrá observar un mensaje al final de la revisión similar al siguiente:
Integrity test successful the CD-ROM. Integrity test was successful.
The CD-ROM is valid
Si la revisión de la integridad del CD-ROM es satisfactoría, puede continuar con el proceso de instalación.
Suerte y bienvenido al mundo GNU/Linux ;)
Ubuntu (Dapper Drake) Flight 3
La tercera versión alpha de Ubuntu 6.04 (Dapper Drake), continúa mostrando mejoras e incluye nuevo software.
Las mejoras incluyen una actualización en el tema, el cual desde la segunda versión alpha es manejado por gfxboot
.
Ademas se incluye X Window System versión X11R7
, GNOME 2.13.4
, también se observan mejoras y simplificación de los menús, algunas nuevas aplicaciones como XChat-GNOME, un LiveCD más rápido y que permite almacenar nuestras configuraciones.
También se notan algunas mejoras estéticas en el cuadro de dialógo de cierre de sesión.
En cuanto a la mejora y simplificación de los menús, la idea básicamente es obviar aquellas opciones que pueden llegar a ser confusas para los usuarios, también se evita la duplicación de opciones, esto permite que exista un solo punto para acceder a cada función del sistema, mejorando de esta manera la usabilidad en nuestro escritorio favorito.
Se ha creado un nuevo dialógo que indica cuando es necesario reiniciar el sistema, esto sucede cuando se realizan importantes actualizaciones al sistema, en donde es recomendable reiniciar el sistema para que dichas actualizaciones surtan efecto.
¿Qué mejoras incluye la versión LiveCD?
Quién haya usado alguna vez en su vida un LiveCD puede haberse percatado que éstos presentan ciertos problemas, uno de ellos es la lentitud en el tiempo de carga del sistema, en este sentido se han realizado algunas mejoras en el cargador utilizado en el arranque, el tiempo de carga se ha reducido aproximadamente de unos 368 segundos a 231 segundos, esta mejora es bastante buena, aunque se espera mejorar aún mas este tiempo de carga del LiveCD.
Otro de los problemas encontrados en los LiveCD, es que el manejo de los datos no es persistente, esta nueva versión incluye una mejora que permite recordar las configuraciones, esto quiere decir que la siguiente vez que usted utilice el LiveCD dichas configuraciones serán recordadas. Esto es posible ya que el LiveCD permite guardar sus cambios en un dispositivo externo (al CD) como por ejemplo un llavero usb. Por lo tanto, si usted especifica el parámetro persistent
cuando usted esta iniciando el LiveCD, éste buscará el dispositivo externo que mantiene las configuraciones que usted ha almacenado. Si desea conocer más acerca de esta nueva funcionalidad en el LiveCD vea el documento LiveCDPersistence.
Si usted desea descargar esta tercera versión alpha de Ubuntu 6.04, puede hacerlo en Ubuntu (Dapper Drake) Flight CD 3.
Mayor detalle acerca de las nuevas características que presenta esta nueva versión en el documento DapperFlight3.
Nota: Esta versión no es recomendable instalarla en entornos de producción, la versión estable de Dapper Drake se espera para Abril de este mismo año.
Gnickr: Gnome + Flickr
Gnickr le permite manejar las fotos de su cuenta del sitio Flickr como si fueran archivos locales de su escritorio Gnome. Todo lo anterior lo hace creando un sistema de ficheros virtual de su cuenta en Flickr.
Hasta ahora, Gnickr le permite realizar las siguientes operaciones:
- Subir fotos.
- Renombrar fotos y set de fotos.
- Borrar fotos.
- Insertar fotos en sets previamente creados.
- Eficiente subida de fotos, escala las imágenes a
1024 x 768
Se planea que en futuras versiones se pueda editar la descripción de cada foto, la creación/eliminación de sets de fotos, establecer las opciones de privacidad en cada una de las fotos, así como también integrar el proceso de autorización en nautilus.
Si desea instalar Gnickr, previamente debe cumplir con los siguientes requisitos.
- Gnome 2.12
- Python 2.4
- gnome-python >= 2.12.3
- Librería de imágenes de Python (PIL)
Instalando Gnickr en Ubuntu Breezy
En primer lugar debemos actualizar el paquete gnome-python
(en ubuntu recibe el nombre de python2.4-gnome2
) como mínimo a la versión 2.12.3
, para ello descargamos el paquete python2.4-gnome2_2.12.1-0ubuntu2_i386.deb.
Seguidamente descargamos el paquete Gnickr-0.0.3 para Ubuntu Breezy. Una vez descargados los paquetes procedemos a instalar cada uno de ellos, para ello hacemos.
$ sudo dpkg -i python2.4-gnome2_2.12.1-0ubuntu2_i386.deb
$ sudo dpkg -i gnickr_0.0.3-1_i386.deb
Una vez que hemos instalado el paquete Gnickr para Ubuntu Breezy debemos autorizarlo en nuestra cuenta Flickr para que éste programa pueda manipular las fotos, para ello hacemos lo siguiente.
$ gnickr-auth.py
Simplemente debe seguiremos las instrucciones que nos indica el cuadro de dialogo. Una vez completado el proceso de autorización debe reiniciar nautilus
.
$ pkill nautilus
Uso de Gnickr
El manejo de Gnickr es muy sencillo, para acceder a sus fotos en su cuenta Flickr simplemente apunte nautilus a flickr:///
.
$ nautilus flickr:///
También puede ver las fotos de cualquier otra cuenta en Flickr apuntando a flickr://[nombreusuario]
.
Para agregar fotos a un set, simplemente arrastre desde la carpeta Unsorted hasta la carpeta que representa el set de fotos que usted desea, lo anterior también puede aplicarse para mover una foto de un set a otro.
Para renombrar una foto, simplemente modifique el nombre del fichero de la foto.
Vulnerabilidad en Apache
Según un anuncio hecho el día de hoy por Adam Conrad a la lista de seguridad de ubuntu existe una vulnerabilidad que podría permitirle a una página web maligna (o un correo electrónico maligno en HTML
) utilizar técnicas de Cross Site Scripting en Apache. Esta vulnerabilidad afecta a las versiones: Ubuntu 4.10 (Warty Warthog), Ubuntu 5.04 (Hoary Hedgehog) y Ubuntu 5.10 (Breezy Badger).
De manera adicional, Hartmut Keil descubre una vulnerabilidad en el módulo SSL (mod_ssl
), que permitiría realizar una denegación de servicio (DoS), lo cual pone en riesgo la integridad del servidor. Esta última vulnerabilidad solo afecta a apache2, siempre y cuando esté usando la implementación “worker” (apache2-mpm-worker
).
Los paquetes afectados son los siguientes:
apache-common
apache2-common
apache2-mpm-worker
Los problemas mencionados previamente pueden ser corregidos al actualizar los paquetes mencionados.
programming
Oban: Testing your Workers and Configuration
In this article, I will continue talking about Oban, but I’ll focus on how to test your workers and, also, your configuration.
Oban: job processing library for Elixir
After working for years on different organizations, one common theme is scheduling background jobs. In this article, I’ll share my experience with Oban, an open-source job processing package for Elixir. I’ll also cover some features, like real-time monitoring with Oban Web and complex workflow management with Oban Pro.
Improve the codebase of an acquired product
In this article I’ll share my experience improving the codebase of an acquired product, this couldn’t be possible without the help of a fantastic team. Before diving into the initial diagnostic and strategies that we took to tackle technical debt, I’ll share some background around the acquisition. Let’s start.
Elixir’s MIME library review
Elixir’s MIME is a read-only and immutable library that embeds the MIME type database, so, users can map MIME (Multipurpose Internet Mail Extensions) types to extensions and vice-versa. It’s a really compact project and includes nice features, which I’ll try to explain in case you’re not familiar with the library. Then, I’ll focus on MIME’s internals or how was built, and also how MIME illustrates in an elegant way so many features of Elixir itself.
Follow-up: Function currying in Elixir
NOTE: This article is a follow-up examination after the blog post Function currying in Elixir by @stormpat
In his article, Patrik Storm, shows how to implement function currying in Elixir, which could be really neat in some situations. For those who haven’t read Patrik’s post, first, let us clarify what is function currying.
Currying is the process of transforming a function that takes multiple arguments (arity) into a function that takes only one argument and returns another function if any arguments are still required. When the last required argument is given, the function automatically executes and computes the result.
Asynchronous Tasks with Elixir
One of my first contributions into ExDoc, the tool used to produce HTML documentation for Elixir projects, was to improve the documentation build process performance. My first approach for this was to build each module page concurrently, manually sending and receiving messages between processes. Then, as you can see in the Pull Request details, Eric Meadows-Jönsson pointed out that I should look at the Task module. In this article, I’ll try to show you the path that I followed to do that contribution.
How to document your Javascript code
Someone that knows something about Java probably knows about JavaDoc. If you know something about Python you probably document your code following the rules defined for Sphinx (Sphinx uses reStructuredText as its markup language). Or in C, you follow the rules defined for Doxygen (Doxygen also supports other programming languages such as Objective-C, Java, C#, PHP, etc.). But, what happens when we are coding in JavaScript? How can we document our source code?
As a developer that interacts with other members of a team, the need to document all your intentions must become a habit. If you follow some basic rules and stick to them you can gain benefits like the automatic generation of documentation in formats like HTML, PDF, and so on.
I must confess that I’m relatively new to JavaScript, but one of the first things that I implement is the source code documentation. I’ve been using JSDoc for documenting all my JavaScript code, it’s easy, and you only need to follow a short set of rules.
/**
* @file Working with Tags
* @author Milton Mazzarri <[email protected]>
* @version 0.1
*/
var Tag = $(function(){
/**
* The Tag definition.
*
* @param {String} id - The ID of the Tag.
* @param {String} description - Concise description of the tag.
* @param {Number} min - Minimum value accepted for trends.
* @param {Number} max - Maximum value accepted for trends.
* @param {Object} plc - The ID of the {@link PLC} object where this tag belongs.
*/
var Tag = function(id, description, min, max, plc) {
id = id;
description = description;
trend_min = min;
trend_max = max;
plc = plc;
};
return {
/**
* Get the current value of the tag.
*
* @see [Example]{@link http://example.com}
* @returns {Number} The current value of the tag.
*/
getValue: function() {
return Math.random;
}
};
}());
In the previous example, I have documented the index of the file, showing the author and version, you can also include other things such as a copyright and license note. I have also documented the class definition including parameters and methods specifying the name, and type with a concise description.
After you process your source code with JSDoc the result looks like the following:
In the previous image you see the documentation in HTML format, also you see a table that displays the parameters with appropriate links to your source code, and finally, JSDoc implements a very nice style to your document.
If you need further details I recommend you check out the JSDoc documentation.
Grunt: The Javascript Task Manager
When you play the Web Developer role, sometimes you may have to endure some repetitive tasks like minification, unit testing, compilation, linting, beautify or unpack Javascript code and so on. To solve this problems, and in the meantime, try to keep your mental health in a good shape, you desperately need to find a way to automate this tasks. Grunt offers you an easy way to accomplish this kind of automation.
The DRY principle
The DRY (Don’t Repeat Yourself) principle it basically consist in the following:
Every piece of knowledge must have a single, unambiguous, authoritative representation within a system.
That said, it’s almost clear that the DRY principle is against the code duplication, something that in the long-term affect the maintenance phase, it doesn’t facilitate the improvement or code refactoring and, in some cases, it can generate some contradictions, among other problems.
jQuery best practices
After some time working with C programming language in a *NIX like operating system, recently I came back again to Web Programming, mostly working with HTML, CSS and JavaScript in the client-side and other technologies in the backend area.
The current project I’ve been working on, heavily relies on jQuery and Highcharts/Highstock libraries, I must confess that at the beginning of the project my skills in the client-side were more than rusted, so, I began reading a lot of articles about new techniques and good practices to catch up very quickly, in the meantime, I start taking some notes about “best practices”1 that promotes a better use of jQuery2
Elixir: Primeras impresiones
Elixir: Primeras impresiones
NOTA: Este artículo originalmente lo escribí para La Cara Oscura del Software, un blog colectivo dedicado a desarrollo de software.
Durante el segundo hangout de @rubyVE escuché
a @edgar comentar sobre Elixir y en verdad
me llamó la atención lo que indicaba, siempre me inquieta conocer al menos un
poco sobre otros lenguajes de programación, siempre terminas aprendiendo algo,
una buena lección es seguro, sobre todo por aquello de la filosofía del
programador pragmático y la necesidad de invertir regularmente en tu portafolio
de conocimientos.
Ahora bien, después de leer un artículo de Joe Armstrong, padre de Erlang, en donde afirmaba que tras una semana de haber usado Elixir estaba completamente entusiasmado por lo visto. Con esto era claro que se estaba presentando para mi una gran oportunidad para retomar la programación funcional con Elixir, inicié con Haskell en la Universidad en la materia de Compiladores y la verdad es que no lo he vuelto a tocar.
José Valim es un brasileño, parte del equipo core committer de Rails. Después de sufrir RSI, en su afán por encontrar qué hacer en su reposo se puso a leer el libro: Seven Languages in Seven Weeks: A Pragmatic Guide to Learning Programming Languages y allí conoció Erlang y su EVM (Erlang Virtual Machine), cierto tiempo después creo este nuevo lenguaje llamado Elixir, en donde uno de sus mayores activos es la EVM, tanto es así que de hecho no existe un costo de conversión al invocar Erlang desde Elixir y viceversa. Todo esto es seguramente es la respuesta de Valim a las limitantes físicas actuales en los procesadores o lo que se conoce también como: “se nos acabó el almuerzo gratis”, sobre todo ahora con recientes anuncios de Parallella y de Intel con los procesadores Xeon Phi.
A pesar de la horrible sintaxis de Erlang, o al menos después de leer a Damien Katz, autor original de CouchDB en What Sucks About Erlang y a Tony Arcieri, autor de Reia (otro lenguaje basado en BEAM), en su artículo The Trouble with Erlang (or Erlang is a ghetto) es fácil concluir que la sintaxis no es la más amenas de todas. Sin embargo, las inmensas habilidades que brinda Erlang para establecer sistemas concurrentes (distribuidos, tolerantes a fallas y code swapping) ha permitido llegar a mantener hasta 2 millones de conexiones TCP en un solo nodo. Es por ello que compañías como Whatsapp, Facebook, Amazon, Ericsson, Motorola, Basho (Riak) y Heroku por mencionar algunas están usando Erlang para desarrollar sus sistemas.
Rápidamente quisiera compartirles mi felicidad por haber iniciado a explorar este lenguaje. Para iniciar tu proyecto tienes un magnífico utilitario llamado mix (inspirado en Leiningen de Clojure). Mix también permite manejar las tareas más comunes como administración de dependencias de tu proyecto, compilación, ejecución de pruebas, despliegue (pronto), entre otras. Incluso puedes programar nuevas tareas, simplemente asombroso, en fin, vamos a jugar:
$ mix help
mix # Run the default task (current: mix run)
mix archive # Archive this project into a .ez file
mix clean # Clean generated application files
mix cmd # Executes the given command
mix compile # Compile source files
mix deps # List dependencies and their status
mix deps.clean # Remove the given dependencies' files
mix deps.compile # Compile dependencies
mix deps.get # Get all out of date dependencies
mix deps.unlock # Unlock the given dependencies
mix deps.update # Update the given dependencies
mix do # Executes the tasks separated by comma
mix escriptize # Generates an escript for the project
mix help # Print help information for tasks
mix local # List local tasks
mix local.install # Install a task or an archive locally
mix local.rebar # Install rebar locally
mix local.uninstall # Uninstall local tasks or archives
mix new # Creates a new Elixir project
mix run # Run the given file or expression
mix test # Run a project's tests
Procedamos con la creación de un nuevo proyecto:
$ mix new demo
* creating README.md
* creating .gitignore
* creating mix.exs
* creating lib
* creating lib/demo.ex
* creating test
* creating test/test_helper.exs
* creating test/demo_test.exs
Your mix project was created with success.
You can use mix to compile it, test it, and more:
cd demo
mix compile
mix test
Run `mix help` for more information.
La estructura del proyecto creado por mix
es como sigue:
$ cd demo
$ tree
.
|-- README.md
|-- lib
| `-- demo.ex
|-- mix.exs
`-- test
|-- demo_test.exs
`-- test_helper.exs
2 directories, 5 files
En mix.exs
encontramos la configuración del proyecto así como sus dependencias
en caso de aplicar, en lib/demo.ex
ubicamos la definición del módulo que nos
ayudará a estructurar posteriormente nuestro código, en test/test_demo.exs
encontramos un esqueleto base para los casos de pruebas asociadas al modulo.
Finalmente en test/test_helper.exs
radica inicialmente el arranque del
framework ExUnit.
Creemos un par de pruebas sencillas primero:
$ vim test/demo_test.exs
defmodule DemoTest do
use ExUnit.Case
test "factorial base case" do
assert Demo.factorial(0) == 1
end
test "factorial general case" do
assert Demo.factorial(10) == 3628800
end
test "map factorial" do
assert Demo.map([6, 8, 10], fn(n) -> Demo.factorial(n) end) == [720, 40320, 3628800]
end
end
Evidentemente al hacer “mix test” todas las pruebas fallaran, vamos a comenzar a subsanar eso:
$ vim lib/demo.ex
defmodule Demo do
def factorial(0) do
1
end
def factorial(n) when n > 0 do
n * factorial(n - 1)
end
end
En el par de bloques de código mostrado previamente se cubren los dos casos posibles del factorial.
Volvamos a correr las pruebas:
$ mix test
..
1) test map factorial (DemoTest)
** (UndefinedFunctionError) undefined function: Demo.map/2
stacktrace:
Demo.map([6, 8, 10], #Function<0.60019678 in DemoTest.test map factorial/1>)
test/demo_test.exs:13: DemoTest."test map factorial"/1
Finished in 0.04 seconds (0.04s on load, 0.00s on tests)
3 tests, 1 failures
De las 3 pruebas programadas hemos superado dos, nada mal, continuemos, volvamos a editar nuestro módulo:
$ vim lib/demo.ex
defmodule Demo do
def factorial(0) do
1
end
def factorial(n) when n > 0 do
n * factorial(n - 1)
end
def map([], _func) do
[]
end
def map([head|tail], func) do
[func.(head) | map(tail, func)]
end
end
En esta última versión se ha agregado la función map
, básicamente esta función
recibe una colección de datos y una función que se aplicará sobre cada uno de
los elementos de la colección, para nuestros efectos prácticos la función que
será pasada a map
será el factorial.
Como nota adicional, los bloques de código vistos en el ejemplo anterior prefiero expresarlos de manera sucinta así, cuestión que también es posible en Elixir:
$ vim lib/demo.ex
defmodule Demo do
@moduledoc """
Demo module documentation, Python *docstrings* inspired.
"""
def factorial(0), do: 1
def factorial(n) when n > 0, do: n * factorial(n - 1)
def map([], _func), do: []
def map([head|tail], func), do: [func.(head) | map(tail, func)]
end
Acá se pueden apreciar conceptos como pattern matching, guard clauses, manejo de listas y docstrings (inspirado en Python). Atención, los docstrings soportan MarkDown, junto a ExDoc es posible producir sitios estáticos que extraen los docstrings a partir del código fuente.
Comprobemos los casos desde la consola interactiva iex
antes de pasar de nuevo
al caso automatizado:
$ iex lib/demo.ex
Erlang R16B01 (erts-5.10.2) [source] [64-bit] [smp:4:4] [async-threads:10] [hipe] [kernel-poll:false]
Interactive Elixir (0.10.2-dev) - press Ctrl+C to exit (type h() ENTER for help)
iex(1)> import Demo
nil
iex(2)> h(Demo)
# Demo
Demo module documentation, Python *docstrings* inspired.
iex(3)> Demo.factorial(10)
3628800
iex(4)> Demo.map([6, 8, 10], Demo.factorial(&1))
[720, 40320, 3628800]
Lo previo es una consola interactiva, vimos la documentación e hicimos unas pruebas manuales.
Seguro notaron que al final del ejemplo previo, al hacer el map
he cambiado la
forma en la que invoco a la función anónima la cual originalmente fue definida
en las pruebas como fn(n) -> Demo.factorial(n) end
, solamente he recurrido a
un modo que permite Elixir y otros lenguajes funcionales para expresar este tipo
de funciones de manera concisa, se le conoce como Partials.
Ahora corramos las pruebas automatizadas de nuevo:
$ mix test
Compiled lib/demo.ex
Generated demo.app
...
Finished in 0.04 seconds (0.04s on load, 0.00s on tests)
3 tests, 0 failures
Con eso hemos pasado los casos de pruebas.
En este caso particular, prefiero que las pruebas sean autocontenidas en el módulo, además, no recurrimos a fixtures ni nada por el estilo, así que vamos a cambiar el código para que soporte doctest
$ vim lib/demo.ex
defmodule Demo do
@moduledoc """
Demo module documentation, Python *docstrings* inspired.
"""
@doc """
Some examples
iex> Demo.factorial(0)
1
iex> Demo.factorial(10)
3628800
iex> Demo.map([6, 8, 10], Demo.factorial(&1))
[720, 40320, 3628800]
"""
def factorial(0), do: 1
def factorial(n) when n > 0, do: n * factorial(n - 1)
def map([], _func), do: []
def map([head|tail], func), do: [func.(head) | map(tail, func)]
end
Dado lo anterior ya no es necesario tener las pruebas aparte, por lo que reduzco:
$ vim test/demo_test.exs
defmodule DemoTest do
use ExUnit.Case
doctest Demo
end
Comprobamos la equivalencia:
$ mix test
...
Finished in 0.06 seconds (0.06s on load, 0.00s on tests)
3 tests, 0 failures
Simplemente hermoso, cabe resaltar que lo mencionado es solo rascar un poco la superficie de Elixir :-)
Ah, por cierto, ya para finalizar, José Valim está apuntando el desarrollo de Elixir y Dynamo (framework) a la Web, lo ha dejado claro, por eso he visto que algunos programadores Rails están “echándole un ojo” a Elixir, al menos eso es lo que concluyo de los elixir-issues en Github, el reciente screencast de Peepcode (vale la pena comprarlo) y los libros que se avecinan de Dave Thomas y Simon St. Laurent.
Quizá en una nueva oportunidad hablemos de Macros, pase de mensajes entre
procesos, Protocolos (inspirados en Clojure
protocols), Reducers (inspirados también en
Clojure
Reducers),
HashDict, el hermoso y *nix like operador pipeline (|>
), mejorar nuestra
implementación de la función map
para que haga los cálculos de manera
concurrente, entre otros.
Espero hayan disfrutado la lectura, que este artículo sirva de abreboca y les anime a probar Elixir.
Enviando correos con Perl
Regularmente los administradores de sistemas requieren notificar, vía correo electrónico, a sus usuarios de ciertos cambios o nuevos servicios disponibles. La experiencia me ha indicado que el usuario aprecia más un correo personalizado que uno general. Sin embargo, lograr lo primero de manera manual es bastante tedioso e ineficaz. Por lo tanto, es lógico pensar en la posibilidad de automatizar el proceso de envío de correos electrónicos personalizados, en este artículo, explicaré una de las tantas maneras de lograrlo haciendo uso del lenguaje de programación Perl.
En CPAN podrá encontrar muchas alternativas, recuerde el
principio
TIMTOWTDI.
Sin embargo, la opción que más me atrajo fue MIME::Lite:TT
, básicamente este
módulo en Perl es un wrapper de MIME::Lite
que le permite el uso de
plantillas, vía Template::Toolkit
, para el cuerpo del mensaje del correo
electrónico. También puede encontrar MIME::Lite::TT::HTML
que le permitirá
enviar correos tanto en texto sin formato (MIME::Lite::TT
) como en formato
HTML. Sin embargo, estoy en contra de enviar correos en formato HTML, lo dejo a
su criterio.
Una de las ventajas de utilizar Template::Toolkit
para el cuerpo del mensaje
es separar en capas nuestra script, si se observa desde una versión muy
simplificada del patrón
MVC, el
control de la lógica de programación reside en el script en Perl, la plantilla
basada en Template Toolkit ofrecería la vista de los datos, de modo tal que
podríamos garantizar que la presentación está separada de los datos, los cuales
pueden encontrarse desde una base de datos o un simple fichero CSV. Otra ventaja
evidente es el posible reuso de componentes posteriormente.
Un primer ejemplo del uso de MIME::Lite:TT
puede ser el siguiente:
#!/usr/bin/perl
use strict;
use warnings;
use MIME::Lite::TT;
my %options;
$options{INCLUDE_PATH} = '/home/jdoe/example';
my %params;
$params{first_name} = "Milton";
$params{last_name} = "Mazzarri";
$params{username} = "milmazz";
$params{groups} = "sysadmin";
my $msg = MIME::Lite::TT->new(
From => '[email protected]',
To => '[email protected]',
Charset => 'utf8',
TimeZone => 'America/Caracas',
Subject => 'Example',
Template => 'example.txt.tt',
TmplOptions => \%options,
TmplParams => \%params,
);
$msg->send();
Y el cuerpo del correo electrónico, lo que en realidad es una plantilla basada
en Template::Toolkit
, vendría definido en el fichero example.txt.tt
de la
siguiente manera:
Hola [% last_name %], [% first_name %].
Tu nombre de usuario es [% username %].
Un saludo, feliz día.
Su querido BOFH de siempre.
En el script en Perl mostrado previamente podemos percatarnos que los datos del destinario se encuentran inmersos en la lógica. Por lo tanto, el siguiente paso sería desacoplar esta parte de la siguiente manera:
#!/usr/bin/perl
use strict;
use warnings;
use MIME::Lite::TT;
use Class::CSV;
my %options;
$options{INCLUDE_PATH} = '/home/jdoe/example';
# Lectura del fichero CSV
my $csv = Class::CSV->parse(
filename => 'example.csv',
fields => [qw/last_name first_name username email/],
csv_xs_options => { binary => 1, }
);
foreach my $line ( @{ $csv->lines() } ) {
my %params;
$params{first_name} = $line->first_name();
$params{last_name} = $line->last_name();
$params{username} = $line->username();
my $msg = MIME::Lite::TT->new(
From => '[email protected]',
To => $line->email(),
Charset => 'utf8',
TimeZone => 'America/Caracas',
Subject => 'Example',
Template => 'example.txt.tt',
TmplOptions => \%options,
TmplParams => \%params,
);
$msg->send();
}
Ahora los datos de los destinarios los extraemos de un fichero en formato CSV,
en este ejemplo, el fichero en formato CSV lo hemos denominado example.csv
.
Cabe aclarar que $msg->send()
realiza el envío por medio de Net::SMTP
y
podrá usar las opciones que se describen en dicho módulo. Sin embargo, si
necesita establecer una conexión SSL con el servidor SMTP es oportuno recurrir a
Net::SMTP::SSL
:
#!/usr/bin/perl
use strict;
use warnings;
use MIME::Lite::TT;
use Net::SMTP::SSL;
use Class::CSV;
my $from = '[email protected]';
my $host = 'mail.example.com';
my $user = 'jdoe';
my $pass = 'example';
my %options;
$options{INCLUDE_PATH} = '/home/jdoe/example';
# Lectura del fichero CSV
my $csv = Class::CSV->parse(
filename => '