Difference between revisions of "Arch Build System (Español)"

From ArchWiki
Jump to: navigation, search
m (moved ABS - El Sistema de Construcción de Arch (Español) to Arch Build System (Español): International naming standardization: Title in English (Lingua): User:Pointone/i18n)
(27 intermediate revisions by 8 users not shown)
Line 1: Line 1:
[[Category:Administración de paquetes (Español)]]
+
[[Category:About Arch (Español)]]
[[Category:Desarrollo_de_Arch_(Español)]]
+
[[Category:Package development (Español)]]
{{i18n_links_start}}
+
[[Category:Package management (Español)]]
{{i18n_entry|Česky|ABS - The Arch Build System (Česky)}}
+
[[cs:Arch Build System]]
{{i18n_entry|Dansk|ABS_(Dansk)}}
+
[[da:Arch Build System]]
{{i18n_entry|English|ABS - The Arch Build System}}
+
[[de:Arch Build System]]
{{i18n_entry|Español|ABS - The Arch Build System (Español)}}
+
[[el:Arch Build System]]
{{i18n_entry|Ελληνικά|ABS - The Arch Build System (Ελληνικά)}}
+
[[en:Arch Build System]]
{{i18n_entry|正體中文|ABS - The Arch Build System (正體中文)}}
+
[[fr:ABS]]
{{i18n_entry|Polski|ABS - The Arch Build System (Polski)}}
+
[[it:Arch Build System]]
{{i18n_entry|Русский|ABS - The Arch Build System (Russian)}}
+
[[ja:Arch Build System]]
{{i18n_entry|简体中文|ABS (简体中文)}}
+
[[ko:Arch Build System]]
{{i18n_entry|Italiano|ABS - Il Sistema Di Compilazione di Arch (Italiano)}}
+
[[pl:Arch Build System]]
{{i18n_entry|Türkçe|ABS - Arch Derleme Sistemi (Türkçe)}}
+
[[ro:ABS]]
{{i18n_links_end}}
+
[[ru:Arch Build System]]
 +
[[tr:Arch_derleme_sistemi]]
 +
[[zh-CN:Arch Build System]]
 +
[[zh-TW:Arch Build System]]
 +
{{Article summary start|Sumario}}
 +
{{Article summary text|Arch Build System es un sistema de tipo ''puertos'' para la compilación y empaquetado de software a partir de su código fuente. Este artículo incluye una descripción general de ABS seguido de instrucciones detalladas de uso.}}
 +
{{Article summary heading|Descripción}}
 +
{{Article summary text|Los paquetes en Arch Linux son construidos con la orden [[makepkg]] en conjunción con un script de compilación hecho a medida para cada paquete (que se conoce como [[PKGBUILD]]). Ya empaquetado, el software se puede instalar y manejar con pacman. Los PKGBUILD estan disponibles desde el árbol '''ABS''' para el software de los [[official repositories |repositorios oficiales]]; hay miles disponibles (sin soporte) desde [[Arch User Repository]].}}
 +
{{Article summary heading|Relacionado}}
 +
{{Article summary wiki|ABS FAQ}}
 +
{{Article summary wiki|Arch Packaging Standards}}
 +
{{Article summary wiki|Creating Packages}}
 +
{{Article summary wiki|Kernel Compilation with ABS}}
 +
{{Article summary end}}
  
==== ¿Qué es ABS? ====
+
Este artículo proporciona una visión general de Arch Build System, junto con una guía para principiantes. No es una guía de referencia completa. Para una introducción rápida y sencilla de ABS, véase [[ABS FAQ]]. Si necesita más información, consulte las páginas ''man''.  
ABS es Arch Build System, que traducido sería Sistema de Construcción de Arch. Es un sistema de tipo 'ports' para construir y empaquetar los programas partir de su '''código fuente'''. Mientras pacman es la herramienta especializada de Arch para paquetes binarios, (incluyendo paquetes hechos con ABS) ABS es la herramienta especializada de Arch para compilar las fuentes y crear un paquete .pkg.tar.gz instalable.
+
{{Nota|ABS se sincroniza una vez al día, por lo que puede quedarse desfasado respecto a los paquetes que ya están disponibles en los repositorios.}}
 +
== ¿Qué es Arch Build System? ==
  
=====¿Qué es un sistema de tipo ports?=====
+
Arch Build System (''«Sistema de Compilación de Arch»''), '''ABS''' para abreviar, es un sistema tipo ''ports'' para la construcción y empaquetado de software desde el código fuente. Mientras [[pacman (Español)|pacman]] es la herramienta especializada de Arch para la gestión de los paquetes binarios (incluyendo los paquetes creados con ABS), el sistema ABS es una colección de herramientas para compilar el código fuente y crear paquetes {{ic|.pkg.tar.xz}} instalables.
El sistema de 'Ports' es característico de la familia *BSD (por ejemplo FreeBSD). Parte de paquetes con '''código fuente''' y facilita su descarga, descompresión, parcheado, compilación e instalación. Un 'port' es un pequeño directorio de la computadora del usuario, nombrado según el programa que se instalará, que contiene unos pocos archivos con instrucciones para descargar e instalar paquetes desde las fuentes, típicamente sólo navegando por los directorios, o ports, y haciendo 'make' y 'make install'. El sistema entonces descarga, compila e instala el software deseado.
+
  
====='''ABS''' es un concepto similar.=====
+
=== ¿Qué es un sistema tipo ''ports''? ===
'''ABS''' está hecho de un árbol de directorios, (el '''Árbol ABS'''), localizados en /var/abs, que contiene muchos subdirectorios, cada uno con una categoría, y cada uno '''nombrado por su respectivo, paquete construíble'''. Te puedes referir a cada paquete como 'ABS', tal como se refieren a los 'port'. Estos '''ABS''', o subdirectorios, '''no contienen el paquete del software, ni las fuentes''', pero en cambio, contienen un archivo '''PKGBUILD''', (y a veces otros archivos). Un PKGBUILD es un simple archivo de texto que contiene las instrucciones de compilación y empaquetado así como las URL de las fuentes para ser descargados.
+
''El componente mas importante de ABS son los PKGBUILDs.''
+
  
=====Instrucciones rápidas=====
+
''Ports'' es un sistema utilizado por los sistemas basados en *BSD para automatizar el proceso de compilación del software desde el código fuente. El sistema utiliza un ''puerto'' para descargar, descomprimir, parchear, compilar e instalar el software especificado. Un ''puerto'' no es más que una carpeta pequeña creada en el ordenador del usuario, con el nombre del software correspondiente para ser instalado, que contiene algunos archivos con las instrucciones para construir e instalar el software desde el código fuente. Esto hace que la instalación del software sea tan simple como escribir {{ic|make}} o {{ic|make install clean}} desde la carpeta que sirve de puerto.
Ejecutando 'abs' como root crea el árbol ABS. Si quieres construir nano desde '''las fuentes''', por ejemplo tu podrías copiar /var/abs/core/base/nano a un directorio, navegar hasta el mismo y hacer '''makepkg'''. Es tan sencillo como eso. [[Makepkg]] intentará leer y ejecutar las instrucciones contenidas en el PKGBUILD. El comprimido con las fuentes será automáticamente descargados, descomprimido y compilado de acuerdo a los CFLAGS especificados en /etc/makepkg.conf, y finalmente transformarlo a un paquete con la extensión .pkg.tar.gz, así como las instrucciones PKGBUILD. Instalarlo es tan fácil como hacer pacman -U nano.pkg.tar.gz. La eliminación del paquete anterior es realizada por pacman.
+
  
El PKGBUILD y otros archivos pueden ser personalizados de acuerdo a tus necesidades, y puedes elegir hacer la función ABS makepkg para hacer tus propios paquetes desde las fuentes fuera del árbol ABS.
+
=== '''ABS''' es un concepto similar ===
-----
+
''Con el '''Árbol ABS''' en lugar, un usuario Arch tienes todos los paquetes de Arch a su disposición para ser compilado desde las fuentes.''
+
  
=====¿Eso es lo que es?=====
+
ABS es un componente de un árbol de directorios (el árbol ABS) que reside en {{ic|/var/abs}}. Este árbol tiene muchos subdirectorios, cada uno dentro de una categoría y nombrado por el nombre de su respectivo paquete. Este árbol representa (pero no contiene) todo el ''sotfware oficial de Arch'', recuperable a través del sistema SVN. Se hace referencia a cada subdirectorio, nominado por el nombre del paquete, como un «ABS», de igual manera a como si se refiriese a un «puerto». Estos ABS (o subdirectorios) no contienen el paquete de software ni el código fuente, sino más bien un archivo [[PKGBUILD]] (y a veces otros archivos). Un PKGBUILD es un sencillo script de compilación de Bash -un archivo de texto que contiene las instrucciones de compilación y de empaquetado, así como la dirección URL del archivo '''tarball fuente''' adecuado para ser descargado-. (El componente más importante de ABS son los propios PKGBUILD). Mediante la ejecución de la orden [[makepkg]] de ABS, el sistema primero compila y luego ''empaqueta'' el software, dentro del directorio de compilación, antes de ser instalado. A continuación, se puede utilizar [[pacman]], el gestor de paquetes de Arch Linux, para instalar, actualizar y eliminar el nuevo paquete.
No exactamente.  
+
* También puedes usar la herramienta de pacman '''[[makepkg]]''' , en conjunto PKGBUILDs para crear tus propios paquetes, o compartirlos con la comunidad. El paquete resultante ''foo''.pkg.tar.gz estará listo para instalar con pacman.
+
* ABS te permite usar [[AUR]], el cual esta lleno de PKGBUILDs escritos para ser instalados.
+
  
=====El sistema ABS=====
+
=== Descripción general de ABS ===
'ABS' puede ser usado como un término general, ya que incluye y depende en otros componentes. Sin embargo, no es válido utilizar el término ABS para las siguientes herramientas o conceptos:
+
  
* '''El árbol ABS :''' La estructura de directorios de ABS en /var/abs/. Contiene subdirectorios nombrados por cada paquete de software disponible para Arch, pero no el paquete en sí.
+
«ABS» puede ser usado como un término genérico, ya que incluye y se basa en otros componentes adicionales, por lo que, aunque no es técnicamente exacto, «ABS» puede referirse a la siguiente estructura como un conjunto completo de herramientas:
* '''ABS:''' El directorio actual donde esta el software a ser instalable por medio del PKGBUILD.
+
* '''PKGBUILDs:''' Archivos de texto localizados en los directorios de ABS, con instrucciones para construir los paquetes y las URL de las fuentes.
+
* '''[[AUR]]:''' EL Arch User Repository (Repositorio de Usuarios de Arch). Contiene los PKGBUILDs creados por los usuarios para el software que puede no estar disponible como un paquete oficial de Arch.
+
* '''[[Makepkg]]:''' Conmando del terminal que lee las instrucciones del PKGBUILDs, compila las fuentes y crea un paquete .pkg.tar.gz.
+
* '''[[Pacman]]:''' Pacman es completamente separado, pero es necesario invocarlo bien sea por medio de makepkg o manualmente para instalar y remover el paquete construido, y para el cálculo de las dependencias.
+
  
==== ¿Por qué yo querría usar ABS? ====
+
; El árbol ABS: La estructura de directorios ABS; una jerarquía de SVN en {{ic|/var/abs/}} ubicado en el propio equipo (local). Contiene muchos subdirectorios, nominados por el software oficial de Arch Linux, disponibles todos desde los repositorios especificados en {{ic|/etc/abs.conf}}, pero no los propios paquetes. El árbol se crea después de instalar el paquete {{pkg|abs}} con [[pacman (Español)|pacman]] y posteriormente ejecutando el script {{ic|abs}}.
ABS es usado para:
+
  
* Construir nuevos paquetes desde las fuentes, de software para el que no existen paquetes binarios (Lee [[Arch Linux - Reglas de Creación de paquetes]])
+
; [[PKGBUILD]]: Un script de [[Bash]] que contiene la dirección URL del código fuente junto con las instrucciones de compilación y de empaquetado.
* Construir y compartir estos paquetes via [[AUR]]
+
* Personalizar paquetes existentes para cubrir tus necesidades (activar o desactivar opciones)
+
* Reconstruir todos los paquetes para usar tus propias CFLAGS, "a la FreeBSD"
+
* Construir limpiamente e instalar tu propio Kernel. (Lee [[Compilación del Kernel]])
+
* Obtener módulos del Kernel para usarlos en tu propio Kernel.
+
  
ABS no es necesario usarlo en Arch Linux, pero es necesario para automatizar las tareas de compilación de software en Arch Linux.
+
; [[makepkg]]: La orden de shell de ABS que lee los PKGBUILD, los descarga automáticamente, compila el código fuente y crea un {{ic|.pkg.tar*}} de acuerdo con lo dispuesto en la matriz {{ic|PKGEXT}} en {{ic|makepkg.conf}}. También puede utilizar makepkg para hacer sus propios paquetes desde el repositorio [[AUR]] o desde fuentes de terceros. (Consulte el artículo de la wiki [[Creating Packages]].)
  
== Instalar Paquetes ==
+
; [[pacman (Español)|pacman]]: Pacman es completamente independiente, pero necesita ser invocado o por makepkg o manualmente, para instalar y eliminar los paquetes construidos y para resolver las dependencias.
  
Para usar abs, primero necesitas instalar '''abs''' desde el repositorio core; esto puede hacerse simplemente con:
+
; [[Arch User Repository|AUR]]: El repositorio de usuarios de Arch está separado de ABS, pero los PKGBUILD de AUR (sin soporte) pueden ser usados con la herramienta makepkg para compilar y empaquetar el software. En contraste con el árbol de ABS que reside en el propio equipo, el AUR existe como una interfaz web. Contiene miles de PKGBUILD aportados por el usuario para empaquetar software no disponible como un paquete oficial de Arch. Si necesita construir un paquete que esté fuera de la estructura oficial de Arch, es probable que pueda encontralo en AUR.
  
<pre>
+
== ¿Por qué utilizar ABS? ==
pacman -Sy abs</pre>
+
  
Esto también instalará las dependencias necesitadas.
+
El Sistema de Compilación de Arch se utiliza para:
 +
* Compilar o recopilar un paquete, por cualquier motivo.
 +
* Hacer e instalar nuevos paquetes desde el código fuente del software para los que no se dispone todavía de paquetes (véase [[Creating Packages]]).
 +
* Personalizar paquetes existentes para satisfacer las necesidades propias (activar o desactivar opciones, aplicar parches...).
 +
* Reconstruir todo el sistema usando los flags del compilador, «al modo FreeBSD» (por ejemplo, con [[pacbuilder]]).
 +
*  Construir e instalar limpiamente su propio kernel personalizado (véase [[Kernel Compilation]]).
 +
* Obtener los módulos del kernel para que funcionen con el propio kernel personalizado.
 +
* Compilar e instalar fácilmente una versión nueva, vieja, beta, o en desarrollo de un paquete de Arch modificando el número de la versión en el PKGBUILD.
  
==== /etc/abs/abs.conf ====
+
ABS no es necesario para usar Arch Linux, pero es útil para la automatización de ciertas tareas de compilación del código fuente.
Edita /etc/abs/abs.conf para incluir tus repositorios deseados:
+
nano /etc/abs/abs.conf
+
Quita el ! al inicio de tus repositorios, ejem:
+
SUPFILES=(core extra !unstable community !testing)
+
==== Crea el árbol ABS ====
+
Como root, haz:
+
abs
+
Ahora tu árbol ABS es creado en /var/abs. Notese que los repositorios apropiados en el árbol ABS ahora existen y corresponden a los especificados en /etc/abs/abs.conf.  
+
  
''El comando abs debe usarse periódicamente para sincronizar y actualizar tu árbol ABS.''
+
== ¿Cómo utilizar ABS? ==
  
==== /etc/makepkg.conf ====
+
La compilación de paquetes utilizando ABS consta de los siguientes pasos:
 +
# Instale el paquete {{pkg|abs}} con [[pacman (Español)|pacman]].
 +
# Ejecute {{ic|abs}}, como root, de modo que cree el árbol ABS sincronizado con los servidores de Arch Linux.
 +
# Copie los archivos de compilación (por lo general ubicados en {{ic|/var/abs/<repo>/<pkgname>}}) a un directorio de compilación.
 +
# Vaya a ese directorio, edite PKGBUILD (si se desea o es necesario) y ejecute '''makepkg'''.
 +
# makepkg, basándose en las instrucciones de PKGBUILD, descargará el paquete fuente correspondiente, lo descomprimirá, lo parcheará si fuera el caso, lo construirá de acuerdo a {{ic|CFLAGS}} especificado en {{ic|makepkg.conf}}, y, finalmente, comprimirá los archivos compilados en un paquete con la extensión {{ic|.pkg.tar.gz}} o {{ic|.pkg.tar.xz}}.
 +
# La instalación del paquete creado es tan fácil como ejecutar {{ic|pacman -U <archivo.pkg.tar.xz>}}. La eliminación del paquete también se gestiona con pacman.
  
Edita /etc/makepkg.conf para especificar las variables de entorno y las CFLAGS:
+
=== Herramientas de instalación ===
nano /etc/makepkg.conf
+
  
==== El árbol ABS ====
+
Para utilizar ABS, primero tiene que [[pacman (Español)|instalar]] el paquete {{pkg|abs}} de los [[Official Repositories (Español)|repositorios oficiales]].
  
Cuando ejecutas abs por primera vez, él sincroniza  el árbol ABS con el del servidor de Arch usando el sistema cvs. ¿Así que es el árbol ABS exactamente? El mismo esta ubicado en /var/abs y parece algo como esto:
+
Esto instalará los scripts de sincronización de ABS, varios scripts de compilación y [[rsync]] (como una dependencia, si no lo tiene).
  
<pre>
+
Sin embargo, antes de que se pueda realmente construir cualquier cosa, también es necesario tener instaladas las herramientas básicas de compilación. Estas son hábilmente recogidas en el [[Pacman (Español)#Installing_package_groups|grupo de paquetes]] {{grp|base-devel}}. Este grupo puede ser instalado con pacman.
|-
+
 
 +
=== /etc/abs.conf ===
 +
 
 +
Como root, edite {{ic|/etc/abs.conf}} para incluir los repositorios deseados.
 +
 
 +
Retire el signo {{ic|!}} de delante de los repositorios correspondientes. Por ejemplo:
 +
REPOS=(core extra community !testing)
 +
 
 +
=== El árbol ABS ===
 +
 
 +
El árbol  ABS es una jerarquía de directorios SVN localizados en {{ic|/var/abs}} con una estructura similar a la siguiente:
 +
 
 +
{{bc|<nowiki>
 
| -- core/
 
| -- core/
|-
+
|    || -- acl/
|    ||-- autoconf/
+
|     ||    || -- PKGBUILD
|-
+
|    || -- attr/
|    ||-- automake/
+
|     ||    || -- PKGBUILD
|-
+
|    || -- abs/
|    ||-- ...
+
|    ||    || -- PKGBUILD
|-
+
|    || -- autoconf/
| -- devel/
+
|    ||    || -- PKGBUILD
|-
+
|    || -- ...
| -- ...
+
|-
+
 
| -- extra/
 
| -- extra/
|-
+
|    || -- acpid/
|     || -- daemons/
+
|     ||    || -- PKGBUILD
|-
+
|    || -- apache/
|     ||     || -- acpid/
+
|     ||     || -- PKGBUILD
|-
+
|    || -- ...
|     ||      ||     || -- PKGBUILD
+
| -- community/
...   ...   ...   ...
+
|     || -- ...
</pre>
+
</nowiki>}}
 +
 
 +
El árbol ABS tiene exactamente la misma estructura que la base de datos del paquete:
 +
 
 +
* Primer nivel: Nombre del repositorio.
 +
* Segundo nivel: Directorios con los nombres de los paquetes.
 +
* Tercer nivel: PKGBUILD (contiene la información necesaria para construir un paquete) y otros archivos relacionados (parches, así como otros archivos necesarios para construir el paquete).
 +
 
 +
El código fuente para el paquete no está presente en el directorio ABS. En su lugar, el archivo '''PKGBUILD''' contiene una URL de donde descargar el código fuente para cuando el paquete se vaya a construir. Así, el tamaño de árbol ABS es bastante pequeño.
 +
 
 +
==== Descargar el árbol ABS ====
 +
Como root, ejecute:
 +
# abs
 +
 
 +
El árbol ABS se creará en {{ic|/var/abs}}. Tenga en cuenta que cada rama del árbol ABS se corresponden a los repositorios habilitados en {{ic|/etc/abs.conf}}.
 +
 
 +
La orden abs se debe ejecutar periódicamente para mantenerse sincronizado con los repositorios oficiales. También se pueden descargar archivos individuales de paquetes ABS con:
 +
 
 +
# abs <repository>/<package>
 +
De esta manera no se tiene que revisar todo el árbol ABS para construir un solo paquete.
 +
 
 +
=== /etc/makepkg.conf ===
 +
 
 +
El archivo {{Ic|/etc/makepkg.conf}} especifica las variables globales del entorno y los flags del compilador que desee editar si está utilizando un sistema SMP, o especificar otras optimizaciones deseadas. Los ajustes por defecto son optimizaciones para i686 y x86_64 que no tendrán ningún problema para esas arquitecturas en sistemas con una sola CPU. (Los valores predeterminados funcionarán para la máquina SMP, pero solo utilizará un core/CPU al compilar - véase [[makepkg.conf]].)
 +
 
 +
==== Establecer la variable PACKAGER en /etc/makepkg.conf ====
  
Así que el árbol ABS tiene la misma escructura que el la base de datos de los paquetes:
+
Establecer la variable PACKAGER en {{ic|/etc/makepkg.conf}} es una operación opcional, pero ''muy recomendable''. Esta opción permite establecer un "flag" para identificar rápidamente los paquetes que se han construido y/o instalado por el usuario, en lugar del mantenedor oficial. Esto se logra fácilmente utilizando '''expac''' disponible desde el repositorio community:
* Los primeros niveles representan las categorías.
+
* Los segundos niveles representan los ABS, cuyos nombres corresponden al paquete que se desea construir.
+
* Los PKGBUILD contienen toda la información concerniente al paquete.
+
* Ademas, un directorio ABS puede contener parches y/u otros archivos necesarios para construir el paquete.
+
''Es importante comprender que las fuentes del software no están en el directorio ABS.'' Para ello, el archivo '''PKGBUILD''' contiene una URL donde ABS va a descargarlos automáticamente.
+
=====Crear un directorio para compilar=====
+
Debes crear un directorio donde la compilación va a ocurrir. Aquí es donde tu vas a hacer todo; ya que nunca deberías modificar el árbol ABS compilando en él. Es buena práctica usar tu directorio HOME, aunque algunos usuarios de Arch prefieren crear un directorio 'local' en /var/abs/, pertenecientes a un usuario local. Copia ABS del árbol (var/abs/branch/category/nombre_paquete) al directorio de compilación.
+
  
Crear tu directorio:
+
===== Mostrar todos los paquetes (incluidos los de AUR) =====
  mkdir /home/tuusuario/abs/local
+
  $ grep myname /etc/makepkg.conf
 +
PACKAGER="myname <myemail@myserver.com>"
  
''NOTA: La primera descarga del árbol es la mas grande que se hará, a partir de allí solo se haran pequeños cambios cuando sea necesario, así que no tengas miedo de la información a descargar si solo tienes una conexión de 56k;es solo textos y archivos comprimidos''.
+
$ expac "%n %p" | grep "myname" | column -t
 +
archey3 myname
 +
binutils myname
 +
gcc myname
 +
gcc-libs myname
 +
glibc myname
 +
tar myname
  
Ahora que sabes que es un árbol ABS, ¿Como se usa ?
+
===== Motrar solo los paquetes contenidos en los Repositorios =====
  
==== La construcción de un paquete a la manera tradicional ====
+
Este ejemplo solo muestra los paquetes contenidos en los repositorios definidos en {{ic|/etc/pacman.conf}}:
  
Si no estas familiarizado con las construcción desde las fuentes, debes saber que los paquetes (pero no todos) pueden ser construidos de esta '''manera tradicional''':
+
$ . /etc/makepkg.conf; grep -xvFf <(pacman -Qqm) <(expac "%n\t%p" | grep "$PACKAGER$" | cut -f1)
* Descarga el comprimido con las fuentes desde el servidor remoto, usando el navegador web, ftp, wget o métodos alternativos.
+
binutils
* Descomprime el archivo fuente:
+
gcc
 +
gcc-libs
 +
glibc
 +
tar
  
  <pre>
+
=== Crear un directorio de compilación ===
  tar -xzf foo-0.99.tar.gz
+
  tar -xjf foo-0.99.tar.bz2</pre>
+
  
* Entra al directorio:
+
Se recomienda crear una carpeta de compilación donde llevar a cabo la compilación, nunca se debe modificar el árbol ABS compilando los paquetes dentro de ella, ya que los datos se perderán (sobreescribiéndose) en cada actualización de ABS. Es una buena práctica utilizar el directorio «home», aunque algunos usuarios de Arch prefieren crear una carpeta «local» en {{ic|/var/abs/}}, estableciendo la propiedad del usuario normal.
  
  <pre>cd foo-0.99</pre>
+
Cree un directorio de compilación, por ejemplo:
  
* Configura el paquete: generalmente, existe un pequeño script llamado <code>configure</code> en el directorio de las fuentes que es usado para configurar el paquete (agrega o elimina soporte para cosas, escoge el directorio de instalación, etc.) y chequea que tu computadora posea todo el software necesario para crear el paquete. Se puede correr con solo:
+
$ mkdir -p $HOME/abs
  
  <pre>./configure [[opcion]]</pre>
+
Copie el ABS desde el árbol ({{ic|/var/abs/<repository>/<pkgname>}}) al directorio de compilación.
  
Primero deberías entender la ayuda para ver como funciona:
+
=== Compilar el paquete ===
  
  <pre>./configure --help</pre>
+
En nuestro ejemplo, vamos a construir el paquete del gestor de pantalla ''slim''.
Si ninguna opción --prefix es pasada al script, ''muchos'' scripts usaran /usr/local como la ruta de instalación, pero otros usarán /usr. Para mayor seguridad, es recomendable pasar la opción --prefix=/usr/local. Es buena práctica instalar los programas personales en /usr/local, y los que deben ser mantenidos por la distribución, en /usr. Esto asegura que los paquetes personales puedan coexistir con los mantenidos por el gestor de paquetes de la distribución, en caso de Arch, ''pacman''.
+
./configure --prefix=/usr/local
+
* Compila las fuentes:
+
  
  <pre>make</pre>
+
Copie el ABS slim desde el árbol ABS a un directorio de compilación:
 +
$ cp -r /var/abs/extra/slim/ ~/abs
  
* Instalarlo
 
  
  <pre>make install</pre>
+
Acceda al directorio de compilación:
* Desinstalarlo seria entrar al directorio de compilación y ejecutar:
+
  $ cd ~/abs/slim
  make uninstall
+
  
Sin embargo, siempre deberías leer el archivo <code>INSTALL</code> para conocer como debe ser creado e instalado el paquete '''¡No todos los paquetes usan el sistema <code>configure; make; make install</code>!
+
Modifique el PKGBUILD para añadir o eliminar el apoyo a determinados componentes, para aplicar parches, para cambiar versiones de paquetes, etc. (opcional):
 +
$ nano PKGBUILD
  
''Este método tradicional de compilación de las fuentes, puede por supuesto, ser usado en Arch Linux, pero ABS ofrece una lineal, sencilla y elegante alternativa que deberías ver.''
+
Ejecute makepkg como usuario normal (con el parámetro {{ic|-s}} para instalar con la resolución automática de dependencias):
 +
$ makepkg -s
  
==== La construcción de un paquete a lo ABS ====
+
{{Nota|Antes de que muestre error por la ausencia (make) de dependencias, recuerde que se supone que el grupo {{Grp|base}} está instalado en todos los sistemas de Arch Linux. El grupo «base-devel» se supone que se instala cuando se construye con '''makepkg'''. Véase [[#Herramientas de instalación]].}}
  
ABS es una elegante herramienta que permite la ayuda y personalización del proceso de construcción, creando un archivo de paquete para ser instalado. El método de ABS method incluye copiar el ABS desde el árbol a un directorio de compilación, y hacer el makepkg. El nuestro ejemplo, se construirá ''slim''manejador de la pantalla.
+
Instale como root:
 +
# pacman -U slim-1.3.0-2-i686.pkg.tar.xz
  
*1. Copia el ABS de slim ABS desde el árbol a un directorio de compilación.
+
Eso es todo. Acaba de construir slim desde el código fuente y lo ha instalado limpiamente en su sistema con pacman. La eliminación del  paquete también es manejado por pacman con {{ic|pacman -R slim}}.
cp -r /var/abs/extra/x11/slim /home/tuusuario/abs/local
+
*2. Navega al directorio de compilación
+
cd /home/yourusername/abs/local/slim
+
*3. Haz makepkg, el cual descargará automáticamente las fuentes comprimidas, la descomprime, compila, y crea slim.pkg.tar.gz El argumento -i  invoca a pacman a automáticamente instalar el resultante slim.pkg.tar.gz
+
makepkg -i
+
¡Eso es todo!. Ya haz construido un paquete slim desde las fuentes e instalado limpiamente en tu sistema con pacman. Para removerlo se debe usar pacman (pacman -R slim)
+
  
Alternativamente puedes hacer makepkg sin el argumento -i y manualmente instalar el paquete usando:
+
El método ABS agrega un nivel de comodidad y automatización, mientras que todavía mantiene una total transparencia y control de las funciones de compilación e instalación por su inclusión en PKGBUILD.
  pacman -U slim.pkg.tar.gz
+
  
* ''El método ABS agrega un nivel de seguridad y automatización, manteniendo la transparencia del paquete y el control de la manera de construcción del mismo mediante el archivo PKGBUILD.''
+
==== fakeroot ====
 +
En esencia, se siguen los mismos pasos que se realizan en el método tradicional (que generalmente incluyen {{ic|./configure, make, make install}}) pero el software se instala en un entorno ''fake root''. (Un entorno ''fake root'' es simplemente un subdirectorio dentro del directorio de compilación que funciona y se comporta como el directorio root del sistema. Conjuntamente con el programa '''fakeroot''', makepkg crea un directorio root falso, e instala los binarios compilados y los archivos asociados a él, con '''root''' como propietario). El ''fake root'', o árbol de subdirectorios que contiene el software compilado, se comprime en un archivo con la extensión {{ic|.pkg.tar.xz}}, o un ''paquete''. Cuando se invoca, pacman extrae el paquete (lo instala) en el directorio root real del sistema ({{ic |/}}).

Revision as of 19:05, 3 December 2012

Template:Article summary start Template:Article summary text Template:Article summary heading Template:Article summary text Template:Article summary heading Template:Article summary wiki Template:Article summary wiki Template:Article summary wiki Template:Article summary wiki Template:Article summary end

Este artículo proporciona una visión general de Arch Build System, junto con una guía para principiantes. No es una guía de referencia completa. Para una introducción rápida y sencilla de ABS, véase ABS FAQ. Si necesita más información, consulte las páginas man.

Nota: ABS se sincroniza una vez al día, por lo que puede quedarse desfasado respecto a los paquetes que ya están disponibles en los repositorios.

¿Qué es Arch Build System?

Arch Build System («Sistema de Compilación de Arch»), ABS para abreviar, es un sistema tipo ports para la construcción y empaquetado de software desde el código fuente. Mientras pacman es la herramienta especializada de Arch para la gestión de los paquetes binarios (incluyendo los paquetes creados con ABS), el sistema ABS es una colección de herramientas para compilar el código fuente y crear paquetes .pkg.tar.xz instalables.

¿Qué es un sistema tipo ports?

Ports es un sistema utilizado por los sistemas basados en *BSD para automatizar el proceso de compilación del software desde el código fuente. El sistema utiliza un puerto para descargar, descomprimir, parchear, compilar e instalar el software especificado. Un puerto no es más que una carpeta pequeña creada en el ordenador del usuario, con el nombre del software correspondiente para ser instalado, que contiene algunos archivos con las instrucciones para construir e instalar el software desde el código fuente. Esto hace que la instalación del software sea tan simple como escribir make o make install clean desde la carpeta que sirve de puerto.

ABS es un concepto similar

ABS es un componente de un árbol de directorios (el árbol ABS) que reside en /var/abs. Este árbol tiene muchos subdirectorios, cada uno dentro de una categoría y nombrado por el nombre de su respectivo paquete. Este árbol representa (pero no contiene) todo el sotfware oficial de Arch, recuperable a través del sistema SVN. Se hace referencia a cada subdirectorio, nominado por el nombre del paquete, como un «ABS», de igual manera a como si se refiriese a un «puerto». Estos ABS (o subdirectorios) no contienen el paquete de software ni el código fuente, sino más bien un archivo PKGBUILD (y a veces otros archivos). Un PKGBUILD es un sencillo script de compilación de Bash -un archivo de texto que contiene las instrucciones de compilación y de empaquetado, así como la dirección URL del archivo tarball fuente adecuado para ser descargado-. (El componente más importante de ABS son los propios PKGBUILD). Mediante la ejecución de la orden makepkg de ABS, el sistema primero compila y luego empaqueta el software, dentro del directorio de compilación, antes de ser instalado. A continuación, se puede utilizar pacman, el gestor de paquetes de Arch Linux, para instalar, actualizar y eliminar el nuevo paquete.

Descripción general de ABS

«ABS» puede ser usado como un término genérico, ya que incluye y se basa en otros componentes adicionales, por lo que, aunque no es técnicamente exacto, «ABS» puede referirse a la siguiente estructura como un conjunto completo de herramientas:

El árbol ABS
La estructura de directorios ABS; una jerarquía de SVN en /var/abs/ ubicado en el propio equipo (local). Contiene muchos subdirectorios, nominados por el software oficial de Arch Linux, disponibles todos desde los repositorios especificados en /etc/abs.conf, pero no los propios paquetes. El árbol se crea después de instalar el paquete abs con pacman y posteriormente ejecutando el script abs.
PKGBUILD
Un script de Bash que contiene la dirección URL del código fuente junto con las instrucciones de compilación y de empaquetado.
makepkg
La orden de shell de ABS que lee los PKGBUILD, los descarga automáticamente, compila el código fuente y crea un .pkg.tar* de acuerdo con lo dispuesto en la matriz PKGEXT en makepkg.conf. También puede utilizar makepkg para hacer sus propios paquetes desde el repositorio AUR o desde fuentes de terceros. (Consulte el artículo de la wiki Creating Packages.)
pacman
Pacman es completamente independiente, pero necesita ser invocado o por makepkg o manualmente, para instalar y eliminar los paquetes construidos y para resolver las dependencias.
AUR
El repositorio de usuarios de Arch está separado de ABS, pero los PKGBUILD de AUR (sin soporte) pueden ser usados con la herramienta makepkg para compilar y empaquetar el software. En contraste con el árbol de ABS que reside en el propio equipo, el AUR existe como una interfaz web. Contiene miles de PKGBUILD aportados por el usuario para empaquetar software no disponible como un paquete oficial de Arch. Si necesita construir un paquete que esté fuera de la estructura oficial de Arch, es probable que pueda encontralo en AUR.

¿Por qué utilizar ABS?

El Sistema de Compilación de Arch se utiliza para:

  • Compilar o recopilar un paquete, por cualquier motivo.
  • Hacer e instalar nuevos paquetes desde el código fuente del software para los que no se dispone todavía de paquetes (véase Creating Packages).
  • Personalizar paquetes existentes para satisfacer las necesidades propias (activar o desactivar opciones, aplicar parches...).
  • Reconstruir todo el sistema usando los flags del compilador, «al modo FreeBSD» (por ejemplo, con pacbuilder).
  • Construir e instalar limpiamente su propio kernel personalizado (véase Kernel Compilation).
  • Obtener los módulos del kernel para que funcionen con el propio kernel personalizado.
  • Compilar e instalar fácilmente una versión nueva, vieja, beta, o en desarrollo de un paquete de Arch modificando el número de la versión en el PKGBUILD.

ABS no es necesario para usar Arch Linux, pero es útil para la automatización de ciertas tareas de compilación del código fuente.

¿Cómo utilizar ABS?

La compilación de paquetes utilizando ABS consta de los siguientes pasos:

  1. Instale el paquete abs con pacman.
  2. Ejecute abs, como root, de modo que cree el árbol ABS sincronizado con los servidores de Arch Linux.
  3. Copie los archivos de compilación (por lo general ubicados en /var/abs/<repo>/<pkgname>) a un directorio de compilación.
  4. Vaya a ese directorio, edite PKGBUILD (si se desea o es necesario) y ejecute makepkg.
  5. makepkg, basándose en las instrucciones de PKGBUILD, descargará el paquete fuente correspondiente, lo descomprimirá, lo parcheará si fuera el caso, lo construirá de acuerdo a CFLAGS especificado en makepkg.conf, y, finalmente, comprimirá los archivos compilados en un paquete con la extensión .pkg.tar.gz o .pkg.tar.xz.
  6. La instalación del paquete creado es tan fácil como ejecutar pacman -U <archivo.pkg.tar.xz>. La eliminación del paquete también se gestiona con pacman.

Herramientas de instalación

Para utilizar ABS, primero tiene que instalar el paquete abs de los repositorios oficiales.

Esto instalará los scripts de sincronización de ABS, varios scripts de compilación y rsync (como una dependencia, si no lo tiene).

Sin embargo, antes de que se pueda realmente construir cualquier cosa, también es necesario tener instaladas las herramientas básicas de compilación. Estas son hábilmente recogidas en el grupo de paquetes base-devel. Este grupo puede ser instalado con pacman.

/etc/abs.conf

Como root, edite /etc/abs.conf para incluir los repositorios deseados.

Retire el signo ! de delante de los repositorios correspondientes. Por ejemplo:

REPOS=(core extra community !testing)

El árbol ABS

El árbol ABS es una jerarquía de directorios SVN localizados en /var/abs con una estructura similar a la siguiente:

| -- core/
|     || -- acl/
|     ||     || -- PKGBUILD
|     || -- attr/
|     ||     || -- PKGBUILD
|     || -- abs/
|     ||     || -- PKGBUILD
|     || -- autoconf/
|     ||     || -- PKGBUILD
|     || -- ...
| -- extra/
|     || -- acpid/
|     ||     || -- PKGBUILD
|     || -- apache/
|     ||     || -- PKGBUILD
|     || -- ...
| -- community/
|     || -- ...

El árbol ABS tiene exactamente la misma estructura que la base de datos del paquete:

  • Primer nivel: Nombre del repositorio.
  • Segundo nivel: Directorios con los nombres de los paquetes.
  • Tercer nivel: PKGBUILD (contiene la información necesaria para construir un paquete) y otros archivos relacionados (parches, así como otros archivos necesarios para construir el paquete).

El código fuente para el paquete no está presente en el directorio ABS. En su lugar, el archivo PKGBUILD contiene una URL de donde descargar el código fuente para cuando el paquete se vaya a construir. Así, el tamaño de árbol ABS es bastante pequeño.

Descargar el árbol ABS

Como root, ejecute:

# abs

El árbol ABS se creará en /var/abs. Tenga en cuenta que cada rama del árbol ABS se corresponden a los repositorios habilitados en /etc/abs.conf.

La orden abs se debe ejecutar periódicamente para mantenerse sincronizado con los repositorios oficiales. También se pueden descargar archivos individuales de paquetes ABS con:

# abs <repository>/<package>

De esta manera no se tiene que revisar todo el árbol ABS para construir un solo paquete.

/etc/makepkg.conf

El archivo /etc/makepkg.conf especifica las variables globales del entorno y los flags del compilador que desee editar si está utilizando un sistema SMP, o especificar otras optimizaciones deseadas. Los ajustes por defecto son optimizaciones para i686 y x86_64 que no tendrán ningún problema para esas arquitecturas en sistemas con una sola CPU. (Los valores predeterminados funcionarán para la máquina SMP, pero solo utilizará un core/CPU al compilar - véase makepkg.conf.)

Establecer la variable PACKAGER en /etc/makepkg.conf

Establecer la variable PACKAGER en /etc/makepkg.conf es una operación opcional, pero muy recomendable. Esta opción permite establecer un "flag" para identificar rápidamente los paquetes que se han construido y/o instalado por el usuario, en lugar del mantenedor oficial. Esto se logra fácilmente utilizando expac disponible desde el repositorio community:

Mostrar todos los paquetes (incluidos los de AUR)
$ grep myname /etc/makepkg.conf
PACKAGER="myname <myemail@myserver.com>"
$ expac "%n %p" | grep "myname" | column -t
archey3 myname
binutils myname
gcc myname
gcc-libs myname
glibc myname
tar myname
Motrar solo los paquetes contenidos en los Repositorios

Este ejemplo solo muestra los paquetes contenidos en los repositorios definidos en /etc/pacman.conf:

$ . /etc/makepkg.conf; grep -xvFf <(pacman -Qqm) <(expac "%n\t%p" | grep "$PACKAGER$" | cut -f1)
binutils
gcc
gcc-libs
glibc
tar

Crear un directorio de compilación

Se recomienda crear una carpeta de compilación donde llevar a cabo la compilación, nunca se debe modificar el árbol ABS compilando los paquetes dentro de ella, ya que los datos se perderán (sobreescribiéndose) en cada actualización de ABS. Es una buena práctica utilizar el directorio «home», aunque algunos usuarios de Arch prefieren crear una carpeta «local» en /var/abs/, estableciendo la propiedad del usuario normal.

Cree un directorio de compilación, por ejemplo:

$ mkdir -p $HOME/abs

Copie el ABS desde el árbol (/var/abs/<repository>/<pkgname>) al directorio de compilación.

Compilar el paquete

En nuestro ejemplo, vamos a construir el paquete del gestor de pantalla slim.

Copie el ABS slim desde el árbol ABS a un directorio de compilación:

$ cp -r /var/abs/extra/slim/ ~/abs


Acceda al directorio de compilación:

$ cd ~/abs/slim

Modifique el PKGBUILD para añadir o eliminar el apoyo a determinados componentes, para aplicar parches, para cambiar versiones de paquetes, etc. (opcional):

$ nano PKGBUILD

Ejecute makepkg como usuario normal (con el parámetro -s para instalar con la resolución automática de dependencias):

$ makepkg -s
Nota: Antes de que muestre error por la ausencia (make) de dependencias, recuerde que se supone que el grupo base está instalado en todos los sistemas de Arch Linux. El grupo «base-devel» se supone que se instala cuando se construye con makepkg. Véase #Herramientas de instalación.

Instale como root:

# pacman -U slim-1.3.0-2-i686.pkg.tar.xz

Eso es todo. Acaba de construir slim desde el código fuente y lo ha instalado limpiamente en su sistema con pacman. La eliminación del paquete también es manejado por pacman con pacman -R slim.

El método ABS agrega un nivel de comodidad y automatización, mientras que todavía mantiene una total transparencia y control de las funciones de compilación e instalación por su inclusión en PKGBUILD.

fakeroot

En esencia, se siguen los mismos pasos que se realizan en el método tradicional (que generalmente incluyen ./configure, make, make install) pero el software se instala en un entorno fake root. (Un entorno fake root es simplemente un subdirectorio dentro del directorio de compilación que funciona y se comporta como el directorio root del sistema. Conjuntamente con el programa fakeroot, makepkg crea un directorio root falso, e instala los binarios compilados y los archivos asociados a él, con root como propietario). El fake root, o árbol de subdirectorios que contiene el software compilado, se comprime en un archivo con la extensión .pkg.tar.xz, o un paquete. Cuando se invoca, pacman extrae el paquete (lo instala) en el directorio root real del sistema (/).