Traducción de, repository-howto
hola adjunto el documento traducido al español del howto repository, esto para su revisión y quizás su aprobación, bueno mas que traducirlo hice un re-make de la guía quedo igual pero en español (ya tengo algo de experiencia en la fabricación de repositorios)
Saludos desde Bolivia.
--
Atte:
Gary Ariel Sandi Vigabriel
<?xml version="1.0" encoding="ISO-8859-1"?>
<!-- Translation based on English revision 1.?? -->
<!DOCTYPE article PUBLIC "-//OASIS//DTD DocBook XML V4.2//EN"
"http://docbook.org/xml/4.2/docbookx.dtd">
<article lang="es_ES">
<articleinfo>
<title>Debian Repository HOWTO</title>
<subtitle>
Versión en español de <foreignphrase>Debian Repository HOWTO</foreignphrase>
</subtitle>
<author>
<firstname>Aaron</firstname>
<surname>Isotton</surname>
<affiliation>
<address><email>aaron@isotton.com</email></address>
</affiliation>
</author>
<othercredit role="traduction" class="translator">
<firstname>Gary Ariel</firstname>
<surname>Sandi Vigabriel</surname>
<contrib>Adaptación al Español</contrib>
<affiliation>
<address><email>gary.gsv@gmail.com</email></address>
</affiliation>
</othercredit>
<abstract>
<para>Este documento explica qué es un repositorio Debian y también como
configurar uno.</para>
</abstract>
</articleinfo>
<section id="intro">
<title>Introducción</title>
<para>
Un repositorio es un conjunto de paquetes Debian organizados en
un directorio especial el cual también contiene una gran cantidad
de archivos que contienen índices y checksums de los paquetes.
El usuario puede añadir el repositorio al archivo
<filename>/etc/apt/sources.list</filename>
, el usuario puede ver e instalar todos los paquetes disponibles
en el repositorio de paquetes Debian.
</para>
<para>
Un repositorio puede estar online y offline o ambos (por ejemplo
en un CD-ROM), aun que el primero es el más común de los casos.
</para>
<para>
Este documento explica cómo trabaja un repositorio Debian,
como crear uno, y como añadirlo al archivo
<filename>sources.list</filename> de manera correcta.</para>
<para>La localización principal de este documento original es <ulink
url="http://www.isotton.com/debian/docs/repository-howto/"/>.</para>
<section id="copyright">
<title>Copyright y Licencia</title>
<para>El documento, <emphasis>Debian Repository
HOWTO</emphasis>, Copyright (c) 2002-2003 by
<emphasis>Aaron Isotton</emphasis>.
Tiene permiso de copiar, distribuir y/o modificar este documentos bajo
los términos de la GNU Free Documentation Licence, versión 1.1 o
cualquier versión posterior publicata po la Free Software Foundation;
sin la Seccion de Invariantes, sin Front-Cover Texts, y
sin Back-Cover Texts.</para>
</section> <!-- copyright -->
<section id="feedback">
<title>Opiniones</title>
<para>
Puede enviar correcciones, opiniones y otros al traductor de este HOWTO
a la siguiente dirección de correo electrónico: <email>gary.gsv@gmail.com</email>
o a la lista de discusión <email>debian-l10n-spanish@lists.debian.org</email>
</para>
</section> <!-- feedback -->
</section> <!-- intro -->
<section id="terms">
<title>Términos usados en este documento</title>
<variablelist>
<varlistentry>
<term>Distribuciones</term>
<listitem><para>Las tres distribuciones Debian:
<emphasis>estable (stable)</emphasis>, <emphasis>pruebas(testing)</emphasis>
e <emphasis>inestable(unstable)</emphasis>.</para>
</listitem>
</varlistentry>
<varlistentry>
<term>Indice de archivos</term>
<listitem><para>El archivo <filename>Packages.gz</filename> y
<filename>Sources.gz</filename></para>
</listitem>
</varlistentry>
</variablelist>
</section>
<section id="how-it-works">
<title>Como trabajan los repositorios</title>
<para>
Un repositorio consiste en nada menos que un directorio con algunos
paquetes DEB dentro del mismo, y especialmente dos archivos:
<filename>Packages.gz</filename> para los paquetes binarios, y
<filename>Sources.gz</filename> para el código fuente.</para>
<para>Si su repositorio esta listado correctamente en el archivo
<filename>sources.list</filename> (en lo posterior),
<command>apt-get</command> buscara a
<filename>Packages.gz</filename> el índice de paquetes binarios listados
con la palabra (<literal>deb</literal>) y
<filename>Sources.gz</filename> si se lista el código fuente que se muestra con
la palabra (<literal>deb-src</literal>).</para>
<para><filename>Packages.gz</filename> contiene el nombre, versión,
tamaño, la descripción corta y descripción extendida, y las dependencias
de cada uno de los paquetes, más alguna información adicional la cual no
nos interesa. Toda la información esta listada (y usada por) El manejador
de paquetes Debian tales como
<command>dselect</command> o
<command>aptitude</command>.</para>
<para><filename>Sources.gz</filename> contiene el nombre, versión,
y las dependencias de compilación (las que el paquete requiere para compilarse)
para cada paquete (más alguna información que no nos interesa, demasiado);
información que es usada por <command>apt-get
source</command> y herramientas similares.</para>
<para>El archivo<filename>Release</filename> es opcional
contiene mas información acerca de su repositorio; este es usado
para<emphasis>Pinning</emphasis>, u otros intereses.
puede leer más acerca de pinning en
<ulink
url="http://www.debian.org/doc/manuals/apt-howto/">APT
HOWTO</ulink>.</para>
<para>Así usted puede configurar su repositorio, usted puede listar
instalar todos sus paquetes en Debian;
si usted actualiza un paquete, este es actualizado cuando el usuario ejecuta
<command>apt-get update && apt-get upgrade</command>; y todos los usuarios
pueden ver fácilmente una pequeña descripción y otra información importante
acerca de su paquete.</para>
<para>Pero hay más de esto. Si los crea apropiadamente, los repositorios
pueden ofrecer diferentes paquetes para cada distribución soportada y
para cada una de las (once actuales) arquitecturas soportadas;
<literal>apt</literal> puede buscar automáticamente los apropiados para
el equipo del usuario, sin que el tenga conocimiento acerca de todas
las diferentes arquitecturas. Es también le permite agrupar sus paquetes
en componentes, justo como están divididos los paquetes Debian
en <literal>main</literal>, <literal>non-free</literal> y
<literal>contrib</literal>. tambien, especialmente
si su software es multi-plataforma,
usted puede crear su propio repositorio.</para>
</section> <!-- how-it-works -->
<section id="setting-up">
<title>Como crear su Repositorio</title>
<para>Existen dos tipos de repositorios: el más complejo de ellos
donde el usuario solo especifica la ruta base del repositorio,
la distribución y los componentes (apt enlista automáticamente
la arquitectura apropiada, si esta disponible), o simplemente cuando
el usuario a especificado la ruta exacta (y apt mágicamente busca fuera
los paquetes apropiados para esta ruta). La primera es la más compleja
para configurar, pero fácil de usar, y siempre deberíamos usar la compleja
para tener repositorios multiplataforma; el ultima es muy simple de configurar,
pero además es solamente usado para repositorios de una arquitectura.</para>
<para>Aún que esto no es realmente correcto, usaremos la primera
<emphasis>Repositorios automáticos</emphasis> y después
<emphasis>Repositorios triviales</emphasis>.</para>
<section>
<title>Repositorios automáticos</title>
<para>La estructura de un repositorio automático con
las arquitecturas y componentes estándar de Debian es:
</para>
<example id="debian-repository-example">
<title>Repositorio Debian Estándar</title>
<screen>(directorio raíz de su repositorio)
|
+-dists
|
|-stable
| |-main
| | |-binary-alpha
| | |-binary-arm
| | |-binary-...
| | +-source
| |-contrib
| | |-binary-alpha
| | |-binary-arm
| | |-binary-...
| | +-source
| +-non-free
| |-binary-alpha
| |-binary-arm
| |-binary-...
| +-source
|
|-testing
| |-main
| | |-binary-alpha
| | |-binary-arm
| | |-binary-...
| | +-source
| |-contrib
| | |-binary-alpha
| | |-binary-arm
| | |-binary-...
| | +-source
| +-non-free
| |-binary-alpha
| |-binary-arm
| |-binary-...
| +-source
|
+-unstable
|-main
| |-binary-alpha
| |-binary-arm
| |-binary-...
| +-source
|-contrib
| |-binary-alpha
| |-binary-arm
| |-binary-...
| +-source
+-non-free
|-binary-alpha
|-binary-arm
|-binary-...
+-source</screen>
</example>
<para>Los paquetes libres van en <literal>main</literal>; los paquetes no libres
en <literal>non-free</literal>, y los paquetes
libres que dependen de otro paquete no libre estan en
<literal>contrib</literal>. En la actualidad Debian soporta 11
arquitecturas; Se omitirán la mayoría de ellos para ser breves,
en la explicación de este documento.
</para>
<para>Un directorio <filename>binary-*</filename> contiene a
<filename>Packages.gz</filename> y opcionalmente un archivo
<filename>Release</filename>; un directorio
<filename>source</filename> contiene a
<filename>Sources.gz</filename> y opcionalmente un archivo
<filename>Release</filename> . Note que los paquetes
no tienen por que estar en este mismo directorio ya que este esta
destinado solamente para los archivo índice, estos contienen
los índices de archivos que contienen las rutas a cada paquete;
en efecto, estos pueden estar en
<emphasis>cualquier lugar</emphasis> en el repositorio. Esto
hace posible crear <link
linkend="pools">pools</link>.</para>
<para>Usted es libre de crear muchas distribuciones y
componentes y llamar al mejor; Uno de los usados en el ejemplo
es justamente uno usado en Debian. Usted podría, por ejemplo, crear
la distribución <literal>current</literal>
y <literal>beta</literal> (dentro de
<literal>stable</literal>, <literal>testing</literal> y
<literal>unstable</literal>), y los componentes
<literal>foo</literal>, <literal>bar</literal>,
<literal>baz</literal> y <literal>qux</literal> (dentro de
<literal>main</literal>, <literal>contrib</literal> y
<literal>non-free</literal>).</para>
<para>Usted es libre de llamar a los componentes que requiere, esto
es una buena idea para usar las distribuciones estándar Debian,
por que estos son lo que los usuarios de Debian esperan.</para>
</section>
<section>
<title>Repositorios Triviales</title>
<para>Los repositorios triviales consisten en un directorio raíz y
la cantidad de subdirectorios que desee. Como los usuarios tienen
que especificar la ruta a la raíz del repositorio y las rutas relativas
entre la raíz y el directorio que contiene los archivos índice el el,
usted puede usarlos cuando quiera usando siempre la raíz del repositorio;
esto usando la ruta relativa simplemente con
<quote><filename>/</filename></quote>).</para>
<example id="trivial-example">
<title>Un repositorio Trivial con dos subdirectorios</title>
<screen>(su directorio raíz)
|
|-binary
+-source</screen>
</example>
</section>
<section>
<title>Creando archivos índice</title>
<para><command>dpkg-scanpackages</command> genera el archivo
<filename>Packages</filename> y
<command>dpkg-scansources</command> el archivo
<filename>Sources</filename>.</para>
<para>Ambos envían su salida a stdout; así se genera
un archivo comprimido, usted puede usar un comando para encadenarlo:
<command>dpkg-scanpackages
<replaceable>argumentos</replaceable> | gzip -9c >
Packages.gz</command>.</para>
<para>Estas dos herramientas trabajan de la misma manera; ambas
tienen dos argumentos (en realidad tienen más, pero no explicaremos
todos los argumentos aquí; usted Puede leer mas en los manpages de
cada herramienta para saber más); el primer directorio contiene
los paquetes, y el segundo es
<emphasis>archivos anulados</emphasis>. Nosotros no necesitamos
anular archivos por que tenemos un repositorio simple, pero esto es
un argumento requerido, le pasamos simplemente
<literal>/dev/null</literal>.</para>
<para><command>dpkg-scanpackages</command> escanea los paquetes
<filename>.deb</filename>;
<command>dpkg-scansources</command> escanea los archivos
<filename>.dsc</filename>. esto siempre es necesario para
los archivos <filename>.orig.gz</filename>,
<filename>.diff.gz</filename> y <filename>.dsc</filename>.
Los archivos <filename>.changes</filename> son innecesarios.</para>
<para>Así es como puede crear un repositorio trivial como este
<xref linkend="trivial-example"/>, usted puede crear los
dos archivos índices de la siguiente manera:</para>
<screen>$ cd my-repository
$ dpkg-scanpackages binary /dev/null | gzip -9c > binary/Packages.gz
$ dpkg-scansources source /dev/null | gzip -9c > source/Sources.gz</screen>
<para>Si usted tiene un repositorio complejo puede revisar en <xref
linkend="debian-repository-example"/>, udtes debera escribir
algunos scripts para automatizar el proceso.</para>
<para>Usted puede usar el argumento
<replaceable>pathprefix</replaceable> de las dos herramientas
para simplificar un poco la sintaxis; Se realizo un ejercicio
para el lector.(Este esta documentado en las paginas man).</para>
</section>
<section id="release">
<!-- todo: Release should be between <filename> tags, but then
xmltex won't compile it -->
<title>Creando los archivos Release</title>
<para>Si usted quiere activar el uso de <emphasis>Pinning</emphasis>
para los usuarios de su repositorio, Necesariamente debe incluir
el archivo <filename>Release</filename> en todos los directorios
que contienen un archivo índice. (Puede leer más acerca de pinning en
el siguiente enlace<ulink
url="http://www.debian.org/doc/manuals/apt-howto/">APT
HOWTO</ulink>).</para>
<para>El archivo <filename>Release</filename> es simple y
corto, su contenido es el siguiente:</para>
<screen>Archive: <replaceable>archivo</replaceable>
Component: <replaceable>componente</replaceable>
Origin: <replaceable>sucompañia</replaceable>
Label: <replaceable>sucompañia repositorio Debian</replaceable>
Architecture: <replaceable>arquitectura</replaceable></screen>
<variablelist>
<varlistentry>
<term><literal>Archive</literal></term>
<listitem>
<para>El nombre de su distribución de Debian los paquetes
en este directorio encajan a (o estan diseñador para),
la rama<literal>stable</literal>,
<literal>testing</literal> o
<literal>unstable</literal>.</para>
</listitem>
</varlistentry>
<varlistentry>
<term><literal>Component</literal></term>
<listitem>
<para>El componente de los paquetes en el directorio,
por ejemplo <literal>main</literal>,
<literal>non-free</literal>, o
<literal>contrib</literal>.</para>
</listitem>
</varlistentry>
<varlistentry>
<term><literal>Origin</literal></term>
<listitem>
<para>El nombre de quien fabrico los paquetes.</para>
</listitem>
</varlistentry>
<varlistentry>
<term><literal>Label</literal></term>
<listitem>
<para>Una etiqueta adecuada para sus paquetes en el repositorio.
Puede usar cualquier nombre o descripción breve.</para>
</listitem>
</varlistentry>
<varlistentry>
<term><literal>Architecture</literal></term>
<listitem>
<para>La arquitectura de los paquetes en el directorio actual,
arquitecturas como <literal>i386</literal>,
<literal>amd64</literal> o
<literal>source</literal> para el código fuente.</para>
</listitem>
</varlistentry>
</variablelist>
<para>Esto es impotante para obtener los <literal>Archivos</literal> y
<literal>Arquitecturas</literal> apropiadas, esto es lo mas usado por
pinning. Los otros no son inpresindibles.</para>
</section>
<section id="pools">
<title>Creando Pools</title>
<para>Con los repositorios automáticos, distribuyendo los paquetes
en los diferentes directorios es mas fácil dirigir a una bestia
indomable. Esto también es un desperdicio de espacio y ancho de banda,
si tiene allí muchos paquetes (por ejemplo, paquetes de documentación)
los cuales se repiten en todas las arquitecturas.</para>
<para>En estos casos, una posible solución es un
<emphasis>pool</emphasis>. Un pool es un directorio adicional
bajo la raíz del repositorio que contiene <emphasis>todos</emphasis>
los paquetes (Los binarios para todas la arquitecturas, distribuciones,
componentes y todo el código fuente). Atravez de un elegante
combinación de archivos anulados (el cual no es descrito en este documento)
y de scripts para poder evitar muchos problemas. El mejor
ejemplo de un repositorio usando pools es el mismo repositorio
de Debian.</para>
<para>Los pools son usados principalmente para repositorios grandes;
jamás he usado uno por qué no lo necesito y no creo que lo necesite,
y no lo voy a explicar en este documento. Si usted piensa que la sección
de pools debe ser añadida a este documento, es libre de escribirla,
y contactarme para añadirla.</para>
</section>
<section>
<title>Herramientas</title>
<para>Estas son varias herramientas para automatizar y facilitar la creación
de archivos Debian; A continuación mencionaremos las más destacadas.</para>
<para><command>apt-ftparchive</command> es usado para mover una
colección de paquetes Debian a una jerarquía de archivos
apropiada la cual es usada en el archivo oficial Debian. Este es parte
del paquete <literal>apt-utils</literal>.</para>
<para><command>apt-move</command> es usado para mover una colección
de paquetes Debian en una jerarquía de archivos apropiada, es usada
en el archivo oficial Debian.</para>
</section>
</section> <!-- setting-up -->
<section id="using-a-repository">
<title>Usar un repositorio</title>
<para>Usar un repositorio es muy simple, pero esto depende de
que tipo de repositorios hizo: binarios o código fuente, y
automatico o trivial.</para>
<para>Cada repositorio obtiene una línea en
<filename>sources.list</filename>; para los binarios use el comando
<literal>deb</literal>, y para el código fuente use el comando
<literal>deb-src</literal>.</para>
<para>Cada línea tiene la siguiente sintaxis:
<screen>deb|deb-src <replaceable>dirección_web</replaceable> <replaceable>distribución</replaceable> [<replaceable>componente1</replaceable>] [<replaceable>componente2</replaceable>] [...]</screen>
La <replaceable>dirección_web</replaceable> es el URI de la raíz del
repositorio, tal como
<literal>ftp://ftp.yoursite.com/debian</literal>,
<literal>http://yoursite.com/debian</literal>, o de manera local (sin red y sin internet),
<literal>file::///home/joe/my-debian-repository</literal>.
La barra (slash) es opcional.</para>
<para>Para repositorios automáticos, debe especificar una
distribución y uno o mas componentes; la distribución no termina con barra (slash).</para>
<example>
<!-- todo: sources.list should be tagged as <filename>, but xmltex
doesn't support that -->
<title>Dos repositorios automáticos de sources.list</title>
<screen>deb ftp://sunsite.cnlab-switch.ch/mirror/debian/ unstable main contrib non-free
deb-src ftp://sunsite.cnlab-switch.ch/mirror/debian/ unstable main contrib non-free</screen>
<para>Estas dos líneas especifican un repositorio automatico de
binarios y código fuente con la raíz
<literal>ftp://sunsite.cnlab-switch.ch/mirror/debian/</literal>,
la distribución <literal>unstable</literal> y los componentes
<literal>main</literal>, <literal>contrib</literal> y
<literal>non-free</literal>.</para>
</example>
<para>si el repositorio no es automático, entonces en la
<emphasis>distribución</emphasis> especifique la ruta relativa
a el archivo índice y debe terminar con una barra (slash), y no debe
especificar componentes.</para>
<example>
<title>Dos repositorios de
<filename>sources.list</filename></title>
<screen>deb file:///home/aisotton/rep-exact binary/
deb-src file:///home/aisotton/rep-exact source/</screen>
<para>La primera de las dos líneas especifica un repositorio binario
en <filename>/home/aisotton/rep-exact/binary</filename> en la
maquina actual; la segunda especifica repositorios código fuente en
<filename>/home/aisotton/rep-exact/source</filename>.</para>
</example>
</section> <!-- using-a-repository -->
<section>
<title>Vea También</title>
<itemizedlist>
<listitem>
<para>La documentación de <command>apt-ftparchive</command>.</para>
</listitem>
<listitem>
<para>La documentación de <command>apt-get</command> y la documentación, para
<literal>apt</literal>.</para>
</listitem>
<listitem>
<para>La documentación de <command>apt-move</command>.</para>
</listitem>
<listitem>
<para><ulink url="http://www.apt-get.org/"/> para mas ejemplos
de repositorios en el mundo real.</para>
</listitem>
<listitem>
<para>En <ulink
url="http://www.debian.org/doc/manuals/apt-howto/">APT
HOWTO</ulink>.</para>
</listitem>
<listitem>
<para>La documentación de <command>dpkg-scanpackages</command>.</para>
</listitem>
<listitem>
<para>La documentación de <command>dpkg-scansources</command>.</para>
</listitem>
<listitem>
<para>La pagina de ayuda (manpage) <literal>sources.list(5)</literal>.</para>
</listitem>
</itemizedlist>
</section>
</article>
Reply to: