viernes, 1 de febrero de 2013

Conociendo el terminal #4: Gestión de paquetes (en Ubuntu)



El capítulo de hoy va a ser de especial utilidad, sobre todo para mi... con él me voy a ahorrar que algún despistado me pregunte qué es eso del "sudo apt-get update", etc. que añado en cada análisis de una aplicación... Les enlazo a este tuto, y listo.
Aunque este es uno de los capítulos más sencillos de la serie, encierra algunos de los elementos que convierten a Linux en un sistema especial. Por un lado, el concepto de "paquete" que, lejos de referirse a un mal jugador de fútbol, que también, en este caso alude a los ficheros de programas del sistema. Estos paquetes tienen varios papeles en el funcionamiento de Linux. Pueden funcionar como "controladores" para los programas propiamante dichos, intermediando entre estos y el sistema y dotando de funcionalidades a las aplicaciones, o haciendo que estas se comuniquen entre sí. Son las denominadas "librerías". Estas librerías son compartidas entre las aplicaciones, de forma que todas recurren a las mismas si necesitan hacer la misma función. Las aplicaciones, por su parte, requieren de estas librerías para instalarse, y el sistema nos avisará si carecemos de algunas de ellas. En estos casos hablamos de las librerías como "dependencias" de una aplicación. Es decir, las librerías de las que depende un programa para funcionar. Pues bien, en lo que al terminal se refiere, tanto librerías como aplicaciones son paquetes exactamente iguales a la hora de instalarse y eliminarse. Así, todo el funcionamiento del sistema se vuelve absolutamente transparente en la medida en que conozcamos la función de las librerías implicadas, y podremos tomar decisiones sobre la conveniencia de una instalación basándonos en el conocimiento que tengamos sobre la estabilidad o rendimiento de una librería en concreto.
Esto que suena tan técnico y tan complicado se vuelve bastante sencillo y mecánico con la práctica. Basta con conocer el funcionamiento de nuestros gestores de paquetes, bien sean gráficos o por terminal. En este sentido, creo que ningún gestor gráfico suplantará al 100% al terminal para este tipo de trabajos, así que es más que conveniente conocer cómo hacerlo funcionar.
La mayor parte de comandos básicos ya los explico en el vídeo, así que permitidme que aporte algún truco más que quizá os sea de utilidad. Un procedimiento que ahorra bastante tecla es el de enlazar comandos mediante el símbolo &&, como en el siguiente ejemplo:
sudo apt-get update && sudo apt-get upgrade
Parece una chorrada pero ahorra tiempo; eso sí, recordad que cada comando necesitará su correspondiente "sudo", al menos en el ejemplo que os indico. La lista de comandos que podemos enlazar mediante este procedimiento es ilimitada.
Otro "atajo" muy interesante es la capacidad de un comando de añadir cuantos parámetros deseemos. Por ejemplo, podemos instalar programa tras programa mediante un solo comando:

Un viejo comando que usé unas cuantas veces en la época de Maverick Meerkat. Fuente del comando: ubuntulife
Si sumamos ambos trucos podemos ahorrar un montón de tiempo si somos de los que tenemos que reinstalar el sistema habitualmente. Basta con ir coleccionando los repositorios y programas que necesitamos en un archivo de texto, y luego pegar el contenido en un terminal tras la reinstalación. El único problema de este método es que hay que escribirlo todo correctamente; un error y el trabajo del terminal se detendrá. Por supuesto, daré la bienvenida a otros truquitos y consejos que sobre esta materia tengáis a bien aportar, así que no os cortéis.
Por último, y en prueba de mi respeto por otras distribuciones, sobre las que no hago tutoriales en profundidad no por manía o desidia, sino por puro desconocimiento, me gustaría compartir con vosotros una pequeña tabla comparativa en la que se despliegan los comandos más importantes para diferentes gestores de paquetes bajo terminal. Aunque hay unos cuantos más de los que hay en la imagen, creo que están los más importantes: apt (Debian y derivados), yum (Red Hat y familiares), pacman (Arch y allegados) urpmi (Mandriva y acólitos), slaptget (Slackware y... eso, Slackware), emerge (Gentoo y sus amiguetes) y zypper (Suse y colegotas). No están todos los que son, pero...

Clic para ampliar