Los sistemas basados en Debian, como la mayoría de las distribuciones GNU/Linux, se mantienen y distribuyen a través de una colección de paquetes. Debido a que existen miles de paquetes, éstos son divididos en secciones y tienen prioridades para simplificar la gestión de los mismos.
El objetivo del proyecto Debian es construir un sistema operativo libre. Sin embargo, no todos los paquetes que se desean proveer son libres de acuerdo a los lineamientos del proyecto (The Debian Free Software Guidelines). Por esta razón, el archivo (conjunto de paquetes provistos por Debian) es separado en áreas basadas en sus licencias y restricciones.
Esto permite disponer de la mayor cantidad de software posible para los usuarios; fomentar el uso del software libre; y facilitar la distribución y reproducción de distribuciones basadas en Debian, sin violar licencias, restricciones de importación/exportación, y otras leyes.
Por esta razón, el archivo de Debian se divide en tres secciones: main
, contrib
y non-free
. El archivo main
conforma la distribución Debian, mientras que los archivos contrib
y non-free
no son considerados parte de la distribución, aunque se provee soporte e infraestructura para su uso (bug-tracking, listas de correo, etc.)
El archivo main
el archivo main
constituye la distribución Debian. Ninguno de los paquetes dentro de este archivo dependen de software fuera del mismo para funcionar. Cualquiera puede utilizar, compartir, modificar y redistribuir los paquetes dentro de este archivo libremente. Todos los paquetes dentro de este archivo deben cumplir con la DFSG (Debian Free Software Guidelines).
Adicionalmente, los paquetes en main
no deben requerir ni recomendar un paquete fuera del mismo, tanto para compilación como ejecución. Más precisamente no deben declarar una relación "Pre-Depends", "Depends", "Recommends", "Build-Depends", o "Build-Depends-Indep" con paquetes fuera de main
.
Más allá de cuestiones de licenciamiento, los paquetes en main
deben cumplir con ciertos requisitos en cuanto a calidad de software para ser aceptados, particularmente en lo que a número de bugs respecta.
El archivo contrib
El área contrib
contiene paquetes suplementarios pensados para funcionar en Debian, pero que requieren software fuera de la distribución (fuera de main
) para compilar y/o funcionar.
Todos los paquetes dentro de contrib
deben cumplir con la DFSG y contar con una calidad aceptable para ser admitidos por el soporte de Debian, de igual forma que los paquetes dentro de main
.
Ejemplos de paquetes dentro de contrib
son paquetes libres que requieren paquetes dentro de contrib
o non-free
(o paquetes que no están en absoluto dentro del archivo de Debian para compilación o ejecución), y paquetes contenedores o accesorios libres para programas no libres.
El archivo non-free
Este archivo contiene paquetes pensados para funcionar en Debian, pero que no cumplen con la DFSG o tienen otros problemas que haces su distribución problemática (cuestiones de importación/exportación, patentes, etc.)
Sin embargo estos paquetes deben contar con un nivel de calidad apto para su soporte, al igual que los paquetes en main
y contrib
y cumplir con la mayor cantidad posible de políticas presentadas en la DFSG.
Secciones
Los paquetes en las áreas del archivo main
, contrib
y non-free
son a su vez subdivididos en secciones para simplificar su gestión. Estas secciones dan una noción del propósito de cada paquete. Actualmente existe un número importante de secciones sugeridas por el equipo de mantenedores de Debian, algunos ejemplos son: database, editors, education, fonts, games, gnome, graphics, kde, mail, shells, sound, utils, x11, y más.
¿Cómo saber a qué área y sección del archivo pertenece un paquete?
Es posible determinar el origen de un paquete examinando el campo "Section:" en la salida del comando apt-cache show
. Los paquetes pertenecientes al área main
sólo indican a qué sección pertenecen, en cambio los paquetes pertenecientes a contrib
y non-free
lo indican explícitamente a través de la cadena "área/sección". Por ejemplo:
El paquete nano
pertenece a "main/editors":
root@debian:~# apt-cache show nano | grep Section Section: editors
El paquete unrar
pertenece a "non-free/utils":
root@debian:~# apt-cache show unrar | grep Section Section: non-free/utils
¿Cómo listar todos los paquetes provenientes de contrib o non-free?
Es posible recurrir a la herramienta dpkg-query
para lsitar todos los paquetes provenientes de contrib
y non-free
(el resto provienen de main
). Por ejemplo:
root@debian:~# dpkg-query -W -f='${Section}\t${Package}\n' | grep non-free non-free/utils unrar
En este sistema el único paquete proveniente de non-free
es unrar
.
Referencias
Fuente: linuxito