Arch Build System (Español)

From ArchWiki
Revision as of 09:06, 20 October 2012 by Pedro (Talk | contribs) (Reorganizar categorías)

Jump to: navigation, search
Resumen del artículo help replacing me
The Arch Build System is a ports-like system for building and packaging software from source code. This article includes a general overview of the ABS followed by detailed usage instructions.
Visión general
Template:Package management overview (Español)
Artículos relacionados
ABS FAQ
Arch Packaging Standards (Español)
Creating Packages (Español)
Kernel Compilation (Español)

¿Qué es ABS?

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 a 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.

¿Qué es un sistema de tipo ports?

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.

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

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.


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?

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

'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: 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?

ABS es usado para:

  • Construir nuevos paquetes desde las fuentes, de software para el que no existen paquetes binarios (Lee Creating Packages (Español))
  • 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 Kernel Compilation (Español))
  • 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.

Instalar Paquetes

Para usar ABS, primero necesitas instalar abs desde los repositorios oficiales.

Esto también instalará las dependencias necesitadas.

/etc/abs/abs.conf

Edita /etc/abs/abs.conf o /etc/abs.confpara incluir tus repositorios deseados.

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.

/etc/makepkg.conf

Edita /etc/makepkg.conf para especificar las variables de entorno y las CFLAGS.

El árbol ABS

Cuando ejecutas abs por primera vez, él sincroniza el árbol ABS con el del servidor de Arch usando el sistema cvs. ¿Así que qué es el árbol ABS exactamente? El mismo esta ubicado en /var/abs y parece algo como esto:

|-
| -- core/
|-
|     ||-- autoconf/
|-
|     ||-- automake/
|-
|     ||-- ...
|-
| -- devel/
|-
| -- ...
|-
| -- extra/
|-
|      || -- daemons/
|-
|      ||      || -- acpid/
|-
|      ||      ||      || -- PKGBUILD
...    ...    ...    ...

Así que el árbol ABS tiene la misma escructura que la base de datos de los paquetes:

  • 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:

mkdir /home/tuusuario/abs/local
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.

Ahora que sabes que es un árbol ABS, ¿Como se usa?

La construcción de un paquete a la manera tradicional

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:

  • Descarga el comprimido con las fuentes desde el servidor remoto, usando el navegador web, FTP, wget o métodos alternativos.
  • Descomprime el archivo fuente:
tar -xzf foo-0.99.tar.gz
tar -xjf foo-0.99.tar.bz2
  • Entra al directorio:
cd foo-0.99
  • Configura el paquete: generalmente, existe un pequeño script llamado configure 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:
./configure opcion

Primero deberías entender la ayuda para ver como funciona:

./configure --help

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:
make
  • Instalarlo
make install
  • Desinstalarlo seria entrar al directorio de compilación y ejecutar:
make uninstall

Sin embargo, siempre deberías leer el archivo INSTALL para conocer como debe ser creado e instalado el paquete. ¡No todos los paquetes usan el sistema configure; make; make install!

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.

La construcción de un paquete a lo ABS

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 incluye copiar el ABS desde el árbol a un directorio de compilación, y hacer el makepkg. En nuestro ejemplo, se construirá slim manejador de la pantalla.

  • 1. Copia el ABS de slim ABS desde el árbol a un directorio de compilación.
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, las descomprime, compila, y crea slim.pkg.tar.gz. El argumento -i invoca a pacman y automáticamente instala 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 -Rs slim)

Alternativamente puedes hacer makepkg sin el argumento -i y manualmente instalar el paquete usando:

 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.