lunes, 1 de junio de 2015

¿sistemas de qué? - sistemas de paquetes de linux, explicados para usuarios

Hace ya bastantes años la mayoría de las distribuciones de Linux tienen una forma muy buena de gestionar el software que se instala, y para los inmigrantes de microsoftlandia esto es un cambio bastante radical en la forma de pensar en los programas que usan. Voy a tratar de hacer una explicación lo más agnóstica posible, para que les sirva más allá de la distribución que usan.

Primero lo primero: ¿qué es un paquete?


Un paquete es un archivo comprimido que tiene, además de varios archivos, la siguiente información:
  • el nombre del programa o recurso que viene en el paquete
  • la versión del paquete
  • dependencias (lista de otros paquetes necesita para funcionar)


Cuando instalás un paquete, si no tenés las dependencias instaladas el sistema de paquetes mismo va a devolver un error. Cada dependencia incluye la versión del paquete requerido, que generalmente es o un valor específico o un rango de valores (ejemplo: requiere tal programa en versión 1.5 ó mayor, pero menor a 2.0)


¿Y de dónde saco los paquetes?


Antiguamente los paquetes se bajaban de a uno, pero eso era un bodrio. Pare resolver ese problema existen los repositorios de paquetes, y los sistemas de paquetes integran con los repositorios para que uno pueda buscar, instalar y actualizar paquetes con un programa en la computadora propia sin tener que ir a ninguna página web.

  • En internet existen repositorios, colecciones de paquetes que uno puede bajar con el programa local (una vez configurado el repositorio en cuestión, en general ya hay varios configurados desde el vamos)
  • El programa local genera una lista que inforpora todos los repositorios configurados, en esa copia se pueden buscar paquetes (localmente, sin salir a internet) y se usa para revisar que las dependencias se cumplan
  • Localmente se guarda un cache de los paquetes instalados (o sea, de los archivos que contienen cada paquete que uno se baja)


Entendido, ahora decime cómo uso todo esto


Abajo doy ejemplos para debian/ubuntu/mint y derivados, pero estas cosas se pueden hacer con todos los sistemas de paquetes (y existen otros programas, algunos gráficos, para hacer estas cosas):

actualizar la lista local (que incorpora todos los repositorios que tenemos configurados)
sudo aptitude update

actualizar los paquetes instalados (esto baja los paquetes nuevos y los instala, acorde a la lista local)
sudo aptitude upgrade

Yo considero más seguro sólo bajar los paquetes nuevos (y después actualizar), que se puede hacer de la siguiente manera (el -y es para que haga todo sin preguntar nada, en este caso es seguro):
sudo aptitude upgrade -d -y

buscar en la lista de paquetes
sudo aptitude search [texto a buscar]

instalar un paquete
sudo aptitude install [nombre del paquete]


En otros sistemas existen variaciones, algunas cosas se pueden hacer de a dos a la vez. Por ejemplo en Arch, la distribución que uso en mi máquina, suelo hacer las cosas con estos comandos:
  • actualizar lista y bajar paquetes, sin preguntar nada: sudo pacman -Syuw --noconfirm
  • buscar un paquete pacman -Ss [texto a buscar]
  • instalar un paquete sudo pacman -S [nombre del paquete]



Los sistemas de paquetes son herramientas muy flexibles que permiten unas cuantas cosas más de lo que expliqué acá. Siempre es conveniente leer el manual, o el artículo de wiki, o una guia, para el programa que corresponde a la distribución de linux que usan.

Acá pueden ver el tutorial para aptitude (debian, ubuntu, mint, y derivados); Aptitud no sólo funciona como comando de consola, tiene una interfaz (de consola, les va a parecer re retro) que es muy cómoda. En la sección "Aptitude desde línea de comandos" pueden tienen la referencia de lo que expliqué más arriba.

Y acá tienen el artículo de pacman en el wiki de Arch.

No hay comentarios:

Publicar un comentario