Introducción a los repositorios de Debian

Esta recopilación es consecuencia de la cantidad de "errores" que se han visto últimamente en los foros de esDebian. Y, como nadie nació sabiendo...me pareció interesante y útil compartir esta información.
Información sobre este tema existe en grandes cantidades, ya sea en el foro, en la documentación Debian o en la Guía de Referencia Debian, pero se que la mayoría somos un poco "perezosos" para leer textos largos...y sobre todo al inicio, que queremos todo rápido y funcionando.
Es por eso que recomendaría la lectura y comprensión de esta "explicación", creanme,sera de gran ayuda!!
Introducción
El repositorio es a todos los efectos un archivo ordenado donde son almacenados los paquetes
Debian (sean estos paquetes binarios o fuentes) en modo bien organizado, con una estructura
bien definida y constantemente actualizados.
Los paquetes contenidos en un repositorio son indexados en estos archivos:
Packages.gz (son paquetes que contienen los binarios).
Sources.gz (son aquellos que contienen los fuente).
En cada sistema Debian, los repositorios utilizados vienen indicados en el archivo /etc/apt/sources.list.
A modo de adelanto puedo decir que este archivo (/etc/apt/sources.list), tal vez sea uno de los mas importantes archivos de configuración del sistema.
El comando :
# aptitude update(http://www.esdebian.org/wiki/tutorial-aptitude)
no hace mas que descargar uno de estos archivos (dependiendo de lo que se ha elegido:binarios o fuentes) por cada linea presente (y no comentada) en /etc/apt/sources.list.
A continuación veremos una lista de repositorios oficiales para agregar a nuestro sources.list
Vieja Estable:Debian Etch
## Debian Stable (etch) -Vieja estable
deb http://ftp.br.debian.org/debian/ etch main contrib non-free
deb-src http://ftp.br.debian.org/debian/ etch main contrib non-free
##Actualizaciones de seguridad
deb http://security.debian.org/ etch main contrib non-free
deb-src http://security.debian.org/ etch main contrib non-freeEstable: Debian Lenny
## Debian Stable (Lenny)
deb http://ftp.es.debian.org/debian/ stable main contrib non-free
deb-src http://ftp.es.debian.org/debian/ stable main contrib non-free
## Actualizaciones de seguridad
deb http://security.debian.org/ stable/updates main contrib
deb-src http://security.debian.org/ stable/updates main contribNota:para tener paquetes mas actualizados en etch se pueden usar los backport.
1.-visitar http://www.backports.org/dokuwiki/doku.php
2.-agregar al sources.list :
deb http://www.backports.org/debian etch-backports main contrib non-free3.-Ejecutar
#aptitude updateTodos los backport están deshabilitados por defecto, así que para instalarlos:
# aptitude -t etch-backports install “nombre-paquete”Testing: Debian Squeeze
## Debian Testing (squeeze)
deb http://ftp.de.debian.org/debian/ testing main contrib non-free
deb-src http://ftp.de.debian.org/debian/ testing main contrib non-free
## Actualizaciones de seguridad
deb http://security.debian.org/ testing/updates main contrib
deb-src http://security.debian.org/ testing/updates main contribUnstable: Debian Sid
## Debian Unstable (sid)
deb http://ftp.it.debian.org/debian/ unstable main contrib non-free
deb-src http://ftp.it.debian.org/debian/ unstable main contrib non-freePara la rama inestable no hay repositorios de seguridad dado que eventuales fallos vienen corregidos simplemente con la actualización del paquete afectado.
Como han notado he utilizado diferentes mirrors en los ejemplos anteriores, ¿por que?
Porque la lista completa de los mirrors de Debian esta aquí:
http://www.debian.org/mirror/list
Y deberemos de ser capaces de individuar aquellos que mejor se adaptan a nuestras exigencias y velocidad (para deberes:averiguar como determinamos la velocidad de los mirrors)
También tenemos a disposición una gran lista de repositorios no oficiales:
Entre los cuales destaco los multimedia:
http://www.esdebian.org/foro/24349/nuevo-mirror-debian-multimedia
## Multimedia estable (actual)
deb http://www.debian-multimedia.org stable main
#Multimedia testing
deb http://www.debian-multimedia.org testing main
## Multimedia Sid
deb http://www.debian-multimedia.org unstable mainEstructura de los repositorios
Un repositorio se puede dividir a grandes rasgos en dos secciones:
Por ejemplo, si navegáramos con nuestro navegador preferido a por ejemplo:
http://ftp.de.debian.org/debian/
Encontraríamos un directorio con los siguientes subdirectorios;
dist en esta rama están contenidos los archivos de control, que permiten el funcionamiento del sistema de empaquetamiento. Lógicamente están presentes los archivos que describen los paquetes presentes en el archivo (divididos por la release o rama a la que pertenecen).
doc recoge la documentación de base para Debian (señalaciones de bugs, Faq, el contrato social y demás)
indices contiene los índices de los archivos contenidos en todos los paquetes. Esta información es usada por apt-file.
apt-file es un potente motor de búsqueda en grado de indicarnos a que paquete pertenece un determinado archivo., para saber mas man apt-file.
non-US OBSOLETOS - a causa de problemas legales debidos a la prohibición de exportación de material para la defensa (entre ellos material criptográfico, utilizados en PGP, SSH etc).
Para solucionar este problema,los paquetes han sido puestos en una sección diferente, cuya distribución esta ligada a servers no estadounidenses.
pool este es el verdadero archivo, donde son contenidos los paquetes, ordenados por la letra inicial.
project contiene material para los desarrolladores.
tools contiene instrumentos Dos para la creación de discos de boot, particionamiento y arranque de Linux.
Subdivision del repositorio
Navegando un poco (sin marearse !!!) entre los directorios Debian, notamos una particular subdivisión, los repositorios, por cierto, están divididos en :
main es la sección principal, que contiene el 90% de los paquetes presentes en nuestra Debian.
contrib encontramos los paquetes que cumplen con 5 o 6 puntos de las DFSG(Debian Free Software Guidelines), pero que dependen de paquetes que no la respetan.
(DFSG = lineamientos o requisitos que una licencia debe cumplir para que sea definida como libre segun el proyecto Debian http://www.debian.org/social_contract#guidelines).
non-freecontiene los paquetes che poseen limitaciones en su distribución (como por ejemplo aquellos que no pueden ser usados en ámbito comercial o porque dependen de paquetes que no respetan las DFSG).
Sources.list
Como he dicho antes, este archivo es uno de los mas importantes en lo que refiere al sistema de configuración (y si no lo creen, busquen en el foro y vean que sucede cuando al su interno encontramos sopas de repositorios!!!).
Este archivo contiene la lista y las direcciones de los repositorios al cual accede apt y/o aptitude.
Orden de ingreso
Es importante ingresar los repositorios en un orden justo, los primeros en la lista, son los mas importantes (o favoritos).
Para mejorar el rendimiento, es aconsejable ordenarlos por velocidad (primero el CDROM, después la red local, internet etc).
Sintaxis
Cada linea que describe un repositorio tiene una bien determinada sintaxis:
deb uri distribution [component...]
Analizamos los componentes por separado, así lo entendemos mejor:
deb o deb-src sirve para indicar si el repositorio indicado contiene paquetes binarios o paquetes fuente (si tiene ambos es necesario especificarlo en dos lineas diferentes).
uri indica la dirección donde es posible encontrar el repositorio, y además podemos elegir entre los siguientes métodos de acceso a los paquetes:
file permite acceder a un repositorio presente en el disco de nuestro pc. Ejemplo:
deb file:/home/gaucho/repos ./Que no es ni mas ni menos que uno situado en la /home del usuario gaucho creado con dpkg-scanpackages.
cdrom permite acceder a un repositorio presente en un cdrom.
httppermite acceder tramite el protocolo http (si es especificada una variable de ambiente http_proxy con el formato ,seran usadas estas opciones para acceder al repositorio, en caso de necesitar identificación, sera posible indicar la dirección del proxy, en la variable de ambiente de la siguiente forma; http://user:pass@server:port).
ftp permite acceder a un repositorio tramite el protocolo ftp, también es posible especificar un proxy,de la misma forma que en http
sustituyendo http_proxy por ftp_proxy.
copy es identico a file, pero los archivos serán guardados en la cache de apt y/o aptitude, útil para soportes como memorias-flash, floppy, etc.
rsh,ssh permite acceder a un repositorio tramite el protocolo ssh , la identificacion sera tramite el intercambio de llaves RSA.
distribution indica la distribución (o rama) utilizada... es posible usar el nombre en código (sarge, etch,lenny) o el nombre genérico (stable, testing, unstable)
component indica las secciones del repositorio, non-free , main , contrib....
Seguramente han quedado muchas cosas en el tintero, asi que los invito a mejorar y completar esta guía.
Con esto y un bizcocho, hasta mañana a las ocho !!!!!!
Espero que esta simple y básica explicación cumpla su cometido, que es ni mas ni menos que tratar de explicar el mundo de los repositorios, tema un poco descuidado en los usuarios.
Debo agradecer a KuArMan que fue el inspirador de este parto!!!
Fuente: guía de referencia Debian
Nota:
(enviado por DeJhanX )
Ya que todos los repositorios los apuntas a la rama (no a su nombre de pila), Etch quedaría como:
deb http://ftp.br.debian.org/debian/ oldstable main contrib non-free
Aclarando para los lectores:
Cuando un repositorio apunta a una de las ramas (oldstable, stable, testing), apuntan a las versiones de turno, que en este momento son:
Oldstable --> Etch
stable --> Lenny
testing --> Squeeze
Cada vez que se libera una nueva versión de Debian, se actualizan los enlaces para que apunten a los nuevos nombres-clave, por ejemplo, cuando se libere Squeeze, oldstable apuntará a Lenny, stable será Squeeze y testing será el nombre de toy-story que siga.
En caso de tener los repositorios apuntando a stable, cada vez que se libere una versión de Debian se podrá inmediatamente actualizar los paquetes a la nueva versión, sin hacer cambios en el sources.list, ídem en el caso de apuntar a oldstable o testing.
Enviado por DeJhanX el 23 Junio, 2008 - 06:54.

Muy buen artículo, sigue así
Un apunte:
Ya que todos los repositorios los apuntas a la rama (no a su nombre de pila), sarge quedaría como:
deb http://ftp.br.debian.org/debian/ oldstable main contrib non-free
Aclarando para los lectores:
Cuando un repositorio apunta a una de las ramas (oldstable, stable, testing), apuntan a las versiones de turno, que en este momento son:
Oldstable --> sarge
stable --> etch
testing --> lenny
Cada vez que se libera una nueva versión de Debian, se actualizan los enlaces para que apunten a los nuevos nombres-clave, por ejemplo, cuando se libere lenny, oldstable apuntará a etch, stable será lenny y testing será el nombre de toy-story que siga.
En caso de tener los repositorios apuntando a stable, cada vez que se libere una versión de Debian se podrá inmediatamente actualizar los paquetes a la nueva versión, sin hacer cambios en el sources.list, ídem en el caso de apuntar a oldstable o testing
Enviado por YeReMaT el 23 Junio, 2008 - 10:37.
Impresionante.

Enviado por cnicolas el 23 Junio, 2008 - 11:47.
Se agradece la información ,clara y concisa
Gracias de nuevo
Enviado por minaya el 23 Junio, 2008 - 11:57.
Buen artículo G@ucho, seguro que a más de uno le aclara muchas cosas. 
Enviado por sebas el 23 Junio, 2008 - 14:35.
Estimado G@ucho, todavía no lo he leido, pero seguramente es otro golazo mas 
Che para cuando el libro en PDF tuyo sobre Debian ?dale que soy primero en bajarlo es que estos articulos que sacas son buenisimos, notas, al pie y al toque de cosas interesantes, me apunto para el PDF entero alguien mas? 
Abrazo!
P.D:Estoy en el trabajo, pero cuando pueda te leo.. 
Debianita
Enviado por mapacheUY el 23 Junio, 2008 - 23:04.
Excelente tu artículo G@ucho. Si sale el PDF citado anteriormente yo +1. ;)
Enviado por meolivares06 el 24 Junio, 2008 - 06:58.
Este es el punto de partida de partida, ahora creo que se impone hablar sobre cual version utilizar y como hacerlo (stable, testing, unstable).
He leido en la documentacion que lo mejor es usar o stable (solido como una roca) o unstable/testing.
En el ultimo de los casos se tendria un sistema hibrido, ya que se estan combinando dos distribuciones diferentes, en este caso podria venir los problemas de dependencias.
Para resolver este problema he visto dos vias de hacerlo en la doc y quisiera que me aclararan de cual es la mas recomendada porque me parece que una es mas vieja que la otra.
1ro. que nada agregar en /etc/apt/sources.list:
deb http://repositorio/debian testing main
deb http://repositorio/debian unstable main
2do. Dos vias:
1ra via: crear /etc/apt/preferences con el contenido (si me equivoco me corrigen que estoy haciendolo de memoria):
Package: *
Pin: release a=unstable
Pin-Priority: 800
Package: *
Pin: release a=testing
Pin-Priority: 500
la segunda via consiste en crear el archivo /etc/apt/apt.conf con lo siguiente:
APT::Default-Release "unstable";
Con esta segundia via se instalarian los paquetes preferentemente de la unstable. Para instalar de la testing pondriamos:
# apt-get -t <distribution> install <package>
Espero recomendaciones.
Enviado por quimicefa el 24 Junio, 2008 - 07:23.
Espero recomendaciones.
Una muy sencillita, no invadas un artículo para hacer preguntas, para éso estan los foros
Enviado por meolivares06 el 25 Junio, 2008 - 06:46.
Pense que tenía relación, mi intención era aportar al artículo para que fuera una guía más amplia, pero ya veo que no sirvió.
En adelante me cuidare de no "invadir articulos".
Enviado por veduardo el 25 Junio, 2008 - 07:23.
Hola e leido y esta bueno, pero tengo una consulta, yo poseo un pc con arquitectura amd64 (osea 64bits :)) y la consulta es, si existen repositorios para este tipo de arquitectura, por supuesto, a parte de los repositorio que trae el CD. graicias
veduardo.









