viernes, 1 de octubre de 2010

GNOME 2.32 publicado, rumbo a GNOME 3.0


La versión 2.32 del entorno de escritorio GNOME ha sido publicada hace unos pocos días. Las novedades que incorpora no son tan numerosas como en versiones anteriores ya que los desarrolladores se están centrando en la siguiente revisión mayor de este entorno de escritorio, la versión 3.0, a ser publicada según su calendario el 6 de abril si todo va vien y no hay nuevos retrasos. Esto es lo que nos espera en la versión 3.0.



Pero de momento toca disfrutar de la 2.32. En las notas de publicación puedes encontrar las modificaciones más relevantes realizadas.

Para los usuarios de Arch Linux no tadará en estar disponible en los respositorios para actualizarse y los usuarios de Ubuntu podrán disfrutarla el día 10.10.10, ¡ya solo quedan unos pocos días de espera!.

viernes, 27 de agosto de 2010

Copiar archivos desde y a un dispositivo bluetooth

Bluetooth

Hay que reconocerlo, a veces las cosas en Linux no funcionan sin más y hay que emplear alguna artimaña para conseguir lo que queremos. Estoy hablando, en mi caso, sobre el copiar archivos desde y a un dispositivo bluetooth como por ejemplo un móvil. Por alguna razón el examinar archivos y enviar archivos utilizando el icono del bluetooth que proporciana GNOME normalmente me falla quedándose las operaciones que le pido que haga bloqueadas al inicio de la operación.

Sin embargo, si a alguien le pasa lo mismo quizá no este todo perdido y la siguiente forma que voy a explicar a continuación le funcione. La forma con la que he conseguido copiar archivos con un dispositivo bluetooth es utilizando el comando obexfs. Este comando lo que hace básicamente es montar el sistema de archivos del dispositivo bluetooth en una carpeta del sistema de archivos de nuestra computadora donde posteriormente podremos hacer las operaciones tal y como si estuviésemos trabajando con los archivos de nuestro disco duro, por ejemplo utilizando el navegador de archivos nautilus.

Para instalarlo ejecutamos el comando:

$ sudo pacman -S obexfs

Para montar el sistema de archivos del dispositivo bluetooth ejecutamos:

$ obexfs -b [dirección dispositivo bluetooth] [carpeta montaje]

Con el siguiente comando se puede montar el sistema de archivos de un dispositivo bluetooth en una carpeta en el escritorio:

$ obexfs -b 00:1C:9A:42:25:BE ~/Desktop/movil

La dirección del dispositivo bluetooth (en mi caso 00:1C:9A:42:25:BE) la podéis obtener usando el comando hcitool mediante (recordad configurar el dispositivo bluetooth en modo visible e instalar el comando si no lo tenéis):

$ hcitool scan

Cuando terminemos de copiar archivos mediante nautilus podemos desmontar el sistema de archivos del dispositivo bluetooth con:

$ sudo umount ~/Desktop/movil

Utilización del comando obexfs
Enlaces:
Arch Linux wiki bluetooth

miércoles, 18 de agosto de 2010

Programación orientada a aspectos con la clase Proxy

Java

La programación orientada aspectos (AOP) es uno de los conceptos que en estos días se usa muy habitualmente en el desarrollo de aplicaciones Java. Básicamente, nos permite separar cierta lógica de soporte de la lógica propia de la aplicación, por ejemplo, se puede utilizar si necesitamos medir el tiempo que tarda en ejecutarse un determinado método, cuantas veces se llama, sacar trazas, aplicar seguridad, obtener conexiones a base de datos, gestionar la transaccionalidad, etc... En vez de añadir el código de estas funcionalidades a las clases de nuesta aplicación lo podemos añadir a una clase que se encarge de implementar el aspecto.

La librería Spring proporciona un amplio soporte para la programación orientada a aspectos, sin embargo, hay veces en el que no tenemos control sobre las librerías que podemos utilizar en nuestro proyecto. En este caso nos tenemos que limitar a lo que nos proporciona el propio JDK.

A pesar de que hoy el concepto es muy conocido se puede venir haciendo desde el JDK 1.3 (desde el año 2000) a través de la clase Proxy y su uso es realmente sencillo para las ventajas que aporta al código de una aplicación.

Supongamos que necesitamos medir cuanto tiempo tardan en ejecutarse los métodos de un determinado objeto (en realidad de una interfaz). En vez de calcular el tiempo dentro de la propia clase que queremos medir podemos implementarlo mediante un aspecto con la clase Proxy de la siguiente forma (el método main no es realmente necesario solo está incluido para hacer simple el probar el ejemplo):

import java.lang.reflect.InvocationHandler;
import java.lang.reflect.Method;
import java.lang.reflect.Proxy;
import java.util.Date;
import java.util.HashSet;
import java.util.Set;
import java.util.TreeSet;

public class ProfileProxy implements InvocationHandler {

    protected Object object;
    protected Proxy proxy;

    public ProfileProxy(Object object) {
        this.object = object;
        // Creación del proxy que intercepta las llamadas a los métodos del objeto
        proxy = (Proxy) roxy.newProxyInstance(object.getClass().getClassLoader(), object.getClass().getInterfaces(), this);
    }

    public Proxy getProxy() {
        return proxy;
    }

    public Object invoke(Object proxy, Method method, Object[] args) throws Throwable {
        long start = new Date().getTime();
            
        // Invocar al servicio
        Object o = method.invoke(object, args);
            
        long end = new Date().getTime();
        System.out.println("Tiempo: " + (end - start) + "ms");
        
        return o;
    }
    
    public static void main(String[] args) throws Exception {
        Set data = new HashSet(); 
        for (int i = 0; i < 100000; ++i) {
            data.add(new Integer((int) (Math.random() * 100000)));
        }
        
        HashSet hashSet  = new HashSet();
        TreeSet treeSet  = new TreeSet();
        
        Set proxyHashSet  = (Set) new ProfileProxy(hashSet).getProxy();
        Set proxyTreeSet  = (Set) new ProfileProxy(treeSet).getProxy();
        
        proxyHashSet.addAll(data);
        proxyTreeSet.addAll(data);
    }
}


El método main del ejempo trata de medir cuanto tiempo se tarda en añadir los elementos de un Set a otro para un HashSet y para un TreeSet. Dado que la clase TreeSet mantiene los elementos ordenados según su orden natural es de esperar que tarde más tiempo.

En mi equipo añadir cien mil elementos de un Set a un HashSet tarda 62ms y añadir el mismo número de elementos a un TreeSet 110ms.

Pero todo no son cosas buenas, una pequeña limitación de utilizar la clase Proxy es que la interceptación de las llamadas se tienen que hacer sobre los métodos de una interfaz que implemente el objeto.

viernes, 13 de agosto de 2010

Lenguajes de scripting sobre la plataforma Java

Java Groovy JythonClojure JRuby

Desde la versión del JDK 6 es posible utilizar lenguajes de scripting dentro de la máquina vitual Java. Con lo que a además de Java podemos utilizar otros lenguajes como AspectJ, ColdFusion, Clojure, Groovy, JavaFX, JRuby, Jython, Rhino o Scala y algunos otros más. Por defecto, solo Rhino viene incluido en el JDK. La ventaja de estos lenguajes de scripting es que pueden ser más adecuados para ciertas tareas que el propio Java.

De entre estos lenguajes destaca Groovy al tener una sintaxis similar a Java (que lo hace la opción natural para los propios programadores Java), ser completamente orientado a objetos (los tipos primitivos de Java se tratan como objetos), tener una sintaxis más compacta que Java (los punto y coma de final de sentencia son opcionales y en algunos casos los paréntesis), tener una sintaxis nativa para listas, mapas y expresiones regulares (que es muy útil ya que son tipos de datos que se utilizan mucho en todos los programas), integración bidireccional con Java (las clases de Java se pueden utilizar en clases Groovy y las clases de Groovy se pueden utilizar desde Java), soportar closures, propiedades y sobrecarga de operadores.

Podemos ver los lenguajes de scripting que soporta nuestro JDK con:


$JAVA_HOME/bin/jrunscript -q


Para evaluar una expresión de un lenguage de scripting podemos utilizar el comando jrunscript del JDK, en el caso de ejemplo se ejecuta una expresión Groovy que imprime una cuenta de 1 a 10.


$JAVA_HOME/bin/jrunscript -cp
$GROOVY_HOME/embeddable/groovy-all-1.7.4.jar -l groovy -e "10.times {
println it }"


Si queremos evaluar expresiones Groovy desde un programa Java lo podemos hacer con la clase GroovyShell proporcionada por la librería groovy-all-1.7.4.jar:


import groovy.lang.GroovyShell;

public class GroovyTest {
    public static void main(String[] args) {
        GroovyShell shell = new GroovyShell();
        shell.evaluate("10.times { println it }");
    }
}


Sin embargo no es la única forma de evaluar un expresión de un lenguaje de scripting desde Java también podemos hacerlo de una forma más estandar con las clases del JDK 6:


import javax.script.ScriptEngine;
import javax.script.ScriptEngineManager;

public class GroovyTest {
    public static void main(String[] args) throws Exception {
        ScriptEngineManager manager = new ScriptEngineManager();
        ScriptEngine engine = manager.getEngineByName("groovy");
        engine.eval("10.times { println it }");
    }
}


Hay alguna forma más de evaluar expresiones y scripts, sin embargo, cada una tiene ciertas ventajas y desventajas sobre las otras, por lo que deberemos decidir cual es la más adecuada para nuestro caso.

Pero... ¿Como se añaden nuevos lenguajes de scripting al JDK? Pues es bastante simple, en el caso de Groovy basta con copiar la libreria groovy-all-1.7.4.jar al directorio $JAVA_HOME/jre/lib/ext o añadirla al classpath cuando ejecutemos una aplicación.  Si ejecutamos ahora el comando jrunscript para ver que lenguajes de scripting soporta nuestra JVM veremos que se devuelven dos lenguages, Rhino que viene por defecto en el JDK y Groovy que lo acabamos de añadir. Para otros lenguages de scripting el proceso es parecido.


Para ciertas tareas utlizar alguno de estos lenguajes puede ser más adecuado, se me ocurre el caso de tener que hacer un determinado cálculo que previsiblemente puede variar en un futuro. En vez de implementarlo en Java lo que nos obligaría a tener que volver a compilar el programa y volverlo a arrancar se puede realizar con uno de estos lenguajes y guardarlo en base de datos o en un fichero, con lo que podría ser muy fácilmente actualizable y sin necesidad de tener que compilar ni parar la aplicación lo que proporciona agilidad a la hora de implementar cambios. En definitiva los lenguajes de scripting añaden nuevas posibilidades a la plataforma Java.

Referncia:

martes, 3 de agosto de 2010

Firebug, revisión de la traducción al español completada

Una de las extensiones de Firefox que uso habitualmente es Firebug para el desarrollo de aplicaciones web ya que tiene un montón de funcionalidades útiles. Sin embargo, la traducción que existe hasta ahora para la versión 1.5.4 de Firebug deja bastante que desear. Tiene bastantes cadenas sin traducir y no sigue las convenciones de traducción del español, por ejemplo, poniendo la primera letra de cada palabra en mayúsculas lo que dificulta la lectura de los textos ya que los hispanohablantes estamos más acostubrados a poner los textos sin capitalizar cada palabra.

Además, la traducción al español estaba disponible únicamente para las regiones es-ES (España), es-AR (Argentina) y es-CL (Chile). A partir de ahora la región «es-ES» se ha sustituido por la más general «es» con lo que espero haga disponible la traducción para el resto de regiones que no tienen la traducción realizada, como «es-MX» (México), etc...

La versión de Firebug 1.6 está apunto de ser liberada y se espera que se produzca a mediados de este mes de agosto. Como comento, me he puesto manos a la obra y he revisado por completo la traducción al español de este plugin para Firefox en unas pocas horas. Espero que a partir de la versión 1.6 a los que lo usen habitualmente les resulte más comodo trabajar con él.

Esta pequeña aportación al software libre se suma a la de otros programas de los cuales ya mantengo sus traducciones (Oracle VM Virtualbox y VLC). Desde aquí animar a que si alguien usa habitualmente un programa de software libre que no esta traducido o la traducción de su idioma no es del todo correcta, y quiere aportar su granito de arena devolviendo un poco del amor que el programa le dió, se informe de como se ha de realizar la traducción para ese programa, se ponga en contacto con el proyecto o actual mantenedor del idioma y realice o complete la traducción.

Nunca hubiese imaginado que colaborar con el software libre fuese tan sencillo, lo único realmente necesario para tareas de traducción es un poco de tiempo, seguir una serie de conveciones en la traducción y saber un poco de inglés (no hace falta ser programador, aunque en algunas cosas ayuda).

jueves, 22 de julio de 2010

aurvote, paquete para votar paquetes de AUR

aurvote es un paquete para votar los paquetes del repositorio AUR de Arch Linux para que sean incluidos en un futuro y si tiene los suficientes votos, es decir hay muchos usuario con interés en el y es muy usado, en el repositorio community.

La ventaja de tener un paquete en community sobre tenerlo AUR es que no es necesario compilarlo y se puede instalar con el comando pacman en vez de yaourt. Aunque la compilación de los paquetes de AUR se hace de forma automática con el ABS tardaremos menos si ya está compilado y lo instalamos desde community.

Votar con aurvote por los paquetes en los que estás interesado de AUR puede verse como una forma de contribuir a la comunidad y como no requiere mucho esfuerzo es algo que deberiamos hacer todos los archers.

Sabiendo ya que hace este paquete vayamos a ver como instalarlo. aurvote está en el repositorio AUR por lo que tendremos que instalarlo con el comando yaourt.

$ yaourt -S aurvote

Una vez instalado tendremos que registrarnos en la página de AUR y crer un archivo llamado .aurvote en nuestro directorio home con el siguiente contenido, donde [usuario] y [contraseña] será el usuario y contraseña respectivamente con los que nos hemos registrado.

user=[usuario]
pass=[contraseña]

Ya sólo queda votar los paquetes que queramos con:

$ aurvote [paquete]


Para finalizar, decir que una vez instalado el paquete aurvote cuando instalemos u actualicemos un paquete con yaourt nos preguntará si queremos votarlo.

jueves, 15 de julio de 2010

Guía instalación Arch Linux (Parte II, entorno gráfico y programas)

Después de completar la instalación base de Arch Linux en la que tenemos un sistema funcional pero únicamente accesible mediante la linea de comandos todavía nos queda camino por recorrer para tener un entorno de escritorio gráfico más cómodo que únicamente la shell de bash y las varias consolas tty.

En esta segunda parte me centraré en como partiendo de una instalación base de Arch Linux conseguimos un entorno con las opciones más comunes de todo sistema. Algunas de ellas no son imprescindibles así que si tu caso es que tienes un sistema sin bluetooth puedes saltarte el paso e ir al siguiente. Esta guía no presente ser exhaustiva ni incluir las preferencias de todos los posibles usuarios simplemente es la receta que utilizo yo para instalar mi sistema que publico por si a alguien le ayuda y para mi mismo a modo de consulta.

Creación de usuarios
La primera acción que realizaremos es crear el usuario con el que iniciaremos sesión en el sistema para utilizarlo en vez del usuario root.

Habiendo iniciado sesión con el usuario root añadimos nuestro usuario con el comando:

# useradd -m -G users,lp,optical,storage,video,wheel,power -s /bin/bash arch

Esto nos creará un usuario que pertenecerá a los grupos (users,lp,optical,storage,video,wheel,power), la shell preferida será bash y el nombre del usuario será arch. Posteriormente asignamos al usuario que acabamos de crear una contraseña:

# passwd arch


Comando sudo (wiki sudo)
El comando sudo permite ejecutar comandos como otro usuario, por ejemplo, ejecutar comandos desde el usuario arch (que no tiene permisos de superusuario, root) como el usuario root sin tener que iniciar sesión como root. Esto se hace asi por motivos de seguridad con lo que es recomendable instalarlo y usarlo en vez de iniciar sesión como root para hacer tareas administrativas como instalar programas o actualizar el sistema.

Para ello instalamos el paquete sudo con:

# pacman -S sudo


Y damos permisos a los usuarios del grupo wheel para ejecutar el comando sudo (si nos fijamos, el grupo wheel ha sido uno de los grupos al que le hemos asignado al usuario que hemos creado en el paso anterior)

# visudo

Eliminanos el # dejando la siguiente línea como:

%wheel ALL=(ALL) ALL

Salimos del editor visudo con :w (ecribir cambios) y luego :q (para salir)


yaourt (wiki yaourt)
yaourt es una utilizad que nos permitirá instalar programas del repositorio AUR y del que tal vez necesitemos instalar algún programa.

Para ello editamos el archivo /etc/pacman.conf para añadir el repositorio donde se encuentra y poder instalarlo. Añadimos al final del mismo las líneas:

[archlinuxfr]
Server = http://repo.archlinux.fr/x86_64

Ten en cuenta la arquitectura del procesador, x86_64 para una CPU de 64 bits, i686 para una CPU de 32 bits. Ahora sincronizamos los repositorios para que se obtengan los paquetes del repositorio que acabamos de añadir ejecutando:

# pacman -Syu
# pacman -S yaourt


No esta demás instalar el paquete aurvote y usarlo para votar sobre los paquetes de AUR que encontremos útiles, de esta forma estaremos contribuyendo un poco a Arch Linux. Si un paquete gana los suficientes votos tal vez un desarrollador de Arch Linux se encargue de él y lo pase al repositorio community o extra. Una vez instalado y configurado con nuestro usuario y contraseña de AUR como se nos indica al usarlo por primera vez su uso es tan simple como:

$ aurvote -v [paquete]

También nos preguntará si queremos votar por un paquete cuando lo instalemos desde AUR. Pero tampoco debemos votar indiscriminadamente a todo lo que instalemos desde AUR para que los votos sean efectivos solo debemos votar por aquellos que realmente nos son muy útiles o que desearíamos tener en el repositorio community o extra.

Ajustes del sistema de archivos
El sitema de archivos ext se comprueban en busca de errores cada cierto número de inicios del sistema o cada cierto tiempo, lo que ocurra antes. Sin embargo, los valores por defecto son muy pequeños por lo que con el siguiente comando los aumentaremos un poco:

# tune2fs -c 50 -i 2m /dev/sda1
# tune2fs -c 50 -i 2m /dev/sda3

Lo hacemos para la partición del sistema y donde están nuestros archivos (sda2 según esta guía). Estos valores son para 50 inicios del sistema o cada 2 meses, lo que ocurra antes aunque podemos asignar los valores que nos parezcan los más adecuados para nuestro sistema.


Xorg (wiki Xorg)
Bien, hasta ahora iremos con uno de los componentes más importantes del que será nuestro entorno de trabajo, el servidor X o Xorg. El comando para iniciar la instalación del mismo es:

# pacman -S xorg-server xorg-xinit xorg-utils xorg-server-utils xorg-twm xorg-xclock xterm

Si disponemos de un portátil con touchpad instalamos también el paquete:

# pacman -S xf86-input-synaptics

Instalamos después el paquete dbus con:

# pacman -S dbus


  Y lo añadimos a la lista de demonios que se inician con el sistema:

# nano /etc/rc.conf

dejando:

DAEMONS=(hwclock syslog-ng dbus network netfs crond)

Podemos inicial el demonio dbus manualmente con:

# /etc/rc.d/dbus start


Guest Additions para invitado Virtualbox (wiki Virtualbox)
Si estamos instalando Arch Linux en máquina virtual de VirtualBox deberíamos instalar las Guest Additions para ello instalaremos el paquete:
# pacman -S virtualbox-guest-additions

Tal y como se nos indica después de instalar ese paquete añadiremos al final de la lista de módulos los siguientes (en la máquina virtual): vboxguest, vboxsf y vboxvideo.

MODULES=(vboxguest vboxsf vboxvideo)

Controlador tarjeta gráfica (wiki nvidia) (wiki otros drivers)
Para instalar el controlador de la tarjeta gŕafica nvidia que nos proporcionará aceleración 3D ejecutamos:

# pacman -S nvidia nvidia-utils

Si tenemos una tarjeta nvidia un poco antigua deberemos instalar los paquetes (nvidia-173xx nvidia-173xx-utils o nvidia-96xx nvidia-96xx-utils). Desde las últimas versiones del servidor X este es capaz de funcionar sin un archivo de configuración. Para probar si ese es nuestro caso inciamos el servidor X con el siguiente comando, y deberemos ver un entorno X básico como el de la captura de pantalla:

# startx


Para salir del entorno X y volver a la consola tecleamos en el terminal:

# exit

Si necesitamos disponer de un archivo de configuración para que funcione el servidor X o queremos modificar alguna de las opciones del servidor X utilizamos la herramienta nvidia-xconfig:

# nvidia-xconfig

Por ejemplo tal vez queramos que cuando se inicie el sistema no aparezca el logo de nvidia, para ello modificamos la sección Device y añadimos la opción NoLogo:

Section "Device"
    Identifier    "Card0"
    Driver        "nvidia"
    VendorName    "nVidia Corporation"
    BoardName     "G84 [GeForce 8600M GT]"
    Option     "NoLogo" "true"
EndSection

Para las tarjetas gráficas ATI bastará con que instalemos el paquete xf86-video-ati con:

# pacman -S xf86-video-ati

Para nvidia también podemos instalar el controlador de código abierto nouveau y para ATI podemos instalar el controlador privativo Catalyst.

Entorno de escritorio (wiki Gnome)
Ahora instalaremos un entorno Gnome completo con los siguientes paquetes. Si conoces que no vas a usar algún componente de Gnome no hace falta instalarlo pero asegúrate que instalas todos los paquetes esenciales por lo que si no conoces que hace algún paquete instálalo (en la wiki viene una descripción de que hace cada uno de ellos):

# pacman -S gnome gnome-extra gnome-system-tools gksu gamin


Finalmente configuramos el sistema para que se inicie el entorno gráfico para iniciar sesión, GDM. Para ello volvemos a modificar el archivo /etc/rc.conf añadiendo los demonios gamin (sustituto para fam) y gdm tal que:

# nano /etc/rc.conf

DAEMONS=(syslog-ng dbus network netfs crond gamin gdm)

Además añadimos a la lista de módulos el módulo fuse en el mismo archivo tal que:

MODULES=(fuse)

Ya estamos listos para que el sistema se arranque con el entorno de escritorio GNOME, reiniciamos el sistema con:

# shutdown -r now

Y veremos las siguientes pantallas mientras se inicia hasta llegar a GDM. Podemos iniciar sesión con el usuario que hemos creado al principio:



Sistemas de archivos
Si solemos conectar a nuestro sistema memorias USB formateadas con el formato ntfs o fat32 deberemos instalar los siguientes paquetes para poder acceder a ellas:

# pacman -S ntfs-3g ntfsprogs dosfstools

Una vez instalados estos paquetes podremos dar formato ntfs o fat32 a nuestras memorias USB con la utilidad de discos de Gnome.

Sonido
Gnome 3 tiene una dependecia sobre pulseaudio con lo que el sonido nos debería funciona sin tener que hacer ninguna configuración.

Bluetooth (wiki Bluetooth)
Al igual que el sonido Gnome 3 ya incorpora los paquetes necesarios para hacer funcionar bluetooth. Lo único que tendremos que hacer es iniciar el servicio con:

# /etc/rc.d/bluetooth start

Si queremos que se inicie automáticamente cuando lo haga el sistema lo añadimos a la lista de demonios en el archivo /etc/rc.conf:

DAEMONS=(... bluetooth)


Gestor de conexiones de red (wiki NetworkManager)
NetworkManager es un gestor de conexiones de red con el que podremos ver la red a la que estamos conectados y las redes wifi a las que podemos conectarnos.

Para utilizarlo instalamos los paquetes:

# pacman -S networkmanager network-manager-applet

Añadimos a los demonios «networkmanager» dejando lo siguiente en el archivo /etc/rc.conf (los puntos suspensivos son otras opciones que pudiese haber):

DAEMONS=(... !network ...networkmanager gdm)

Finalmente añadimos a nuestro usuario al grupo network con:

# gpasswd -a arch network

Firewall (wiki firewalls)
Conviene tener instalado un firewall en nuestro sistema para minimizar el riesgo de posibles agujeros de seguridad. Uno que hace más sencillo de utilizar iptables es ufw aunque hay que usarlo a través de la linea de comandos.

# pacman -S ufw

Para iniciarlo con el sistema hay que añadirlo a la lista de demonios:

DAEMONS=(... ufw networkmanager...)

Una vez que definamos la reglas que queremos que se carguen con el inicio del sistema ejecutamos:

# /etc/rc.d/iptables save

Instalación programas
Bien, ya queda poco, ahora vamos a instalar los programas que usaremos habitualmente. Hay un montón de programas disponibles en los repositorios de paquetes de Arch Linux aquí sólo pondré una pequeña lista de los más comunes que nos pueden interesar para cada una de las tareas que realizamos en el uso diario del sistema, sin embargo, para cada categoría siempre tendremos más de una alternativa sólo es cuestión de buscar las que más nos gusten según nuestras preferencias. La instalación de los paquetes es muy simple a través del comando pacman.

# pacman -S [paquete]

Retoque fotográfico: gimp
Gestor fotográfico: shotwell, f-spot
P2P: transmission, mldonkey
Mensajería instantánea: pidgin
Ofimática: libreoffice-{common,base,calc,draw,impress,math,writer,gnome,es} abiword
Música: banshee, rhythmbox
Vídeo: vlc
Archivos multimedia (mp3, ...): gstreamer0.10-plugins
Navegador: chromium firefox firefox-i18n-es flashplugin
Formatos archivadores: zip unzip unrar

Nota: para abrir los puertos para transmission y mldonkey utilizando ufw las líneas de comandos son:

# ufw allow 51413
# ufw allow 4662
# /etc/rc.d/iptables save

Virtualbox está en el repositorio community desde la versión 4.0 por lo que si lo necesitamos lo instalamos con:

$ yaourt -S virtualbox virtualbox-additions

A partir de este momento cada vez que se ponga en los repositorios de paquetes de Arch una nueva vesión de un programa y queramos actualizarlo solo tendremos que hacer lo siguiente para tener todo el sistema actualizado:

$ yaourt -Syu --aur

Para finalizar hay que tener en cuenta que al ser Arch Linux una distribución rolling release algunas de estas opciones variarán para cuando leas esta guía así que es recomendable leer la guía oficial de instalación, la wiki de Arch Linux así como las wikis de cada unos de los apartados para encontrar en algún caso información que puede estar más actualizada.

Para tener un sistema más personalizado tal vez te interese alguna de las entradas sobre personalización que he escrito así como disponer de un cheat cube de Arch para tener una chuleta a mano con los comandos más utilizados.

Una vez hayas llegado hasta aquí ¡Enhorabuena de nuevo! ¡Ya sólo queda disfrutar del equipo!, espero que a aquellos que estén por instalar Arch Linux esta guía les sirva de ayuda.

Actualización: Esta guía fue editada por última vez el 05-08-2011.