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

From ArchWiki
Jump to: navigation, search
(Reorganizar categorías)
(simplification and beautification of wikilinks (interactive))
(Tag: wiki-scripts)
 
(25 intermediate revisions by 5 users not shown)
Line 1: Line 1:
 +
[[Category:About Arch (Español)]]
 +
[[Category:Package development (Español)]]
 
[[Category:Package management (Español)]]
 
[[Category:Package management (Español)]]
[[Category:Package development (Español)]]
 
[[Category:Arch development (Español)]]
 
 
[[cs:Arch Build System]]
 
[[cs:Arch Build System]]
 
[[da:Arch Build System]]
 
[[da:Arch Build System]]
Line 12: Line 12:
 
[[ko:Arch Build System]]
 
[[ko:Arch Build System]]
 
[[pl:Arch Build System]]
 
[[pl:Arch Build System]]
 +
[[pt:Arch Build System]]
 
[[ro:ABS]]
 
[[ro:ABS]]
 
[[ru:Arch Build System]]
 
[[ru:Arch Build System]]
[[tr:Arch_derleme_sistemi]]
+
[[zh-hans:Arch Build System]]
[[zh-CN:Arch Build System]]
+
[[zh-hant:Arch Build System]]
[[zh-TW:Arch Build System]]
+
{{Related articles start (Español)}}
{{Article summary start|Resumen del artículo}}
+
{{Related|Arch packaging standards}}
{{Article summary text|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.}}
+
{{Related|Creating packages}}
{{Article summary heading|Visión general}}
+
{{Related|Kernel Compilation with ABS}}
{{Article summary text|{{Package management overview (Español)}}}}
+
{{Related|PKGBUILD (Español)}}
{{Article summary heading|Artículos relacionados}}
+
{{Related|makepkg (Español)}}
{{Article summary wiki|ABS FAQ}}
+
{{Related|pacman (Español)}}
{{Article summary wiki|Arch Packaging Standards (Español)}}
+
{{Related|Official repositories (Español)}}
{{Article summary wiki|Creating Packages (Español)}}
+
{{Related|Arch User Repository (Español)}}
{{Article summary wiki|Kernel Compilation (Español)}}
+
{{Related articles end}}
{{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. 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 (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.
 +
 
 +
=== ¿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 {{ic|make}} o {{ic|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 {{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.
 +
 
 +
=== 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 {{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}}{{Broken package link|package not found}} con [[pacman (Español)|pacman]] y posteriormente ejecutando el script {{ic|abs}}.
  
==== ¿Qué es 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.
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 {{ic|.pkg.tar.gz}} instalable.  
 
  
=====¿Qué es un sistema de tipo ports?=====
+
; [[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]].)
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.=====
+
; [[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.
ABS está hecho de un árbol de directorios, (el Árbol ABS), localizados en {{ic|/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 (Español)|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=====
+
; [[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.
Ejecutando 'abs' como root crea el árbol ABS. Si quieres construir nano desde '''las fuentes''', por ejemplo tu podrías copiar {{ic|/var/abs/core/base/nano}} a un directorio, navegar hasta el mismo y hacer makepkg. Es tan sencillo como eso. [[makepkg (Español)|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 {{ic|/etc/makepkg.conf}}, y finalmente transformarlo a un paquete con la extensión {{ic|.pkg.tar.gz}}, así como las instrucciones PKGBUILD. Instalarlo es tan fácil como hacer {{ic|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.
+
== ¿Por qué utilizar 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?=====
+
El Sistema de Compilación de Arch se utiliza para:
No exactamente.  
+
* Compilar o recopilar un paquete, por cualquier motivo.
* También puedes usar la herramienta de pacman [[makepkg (Español)|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.
+
* 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]]).
* ABS te permite usar [[Arch User Repository (Español)|AUR]], el cual esta lleno de PKGBUILDs escritos para ser instalados.
+
* 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.
  
=====El sistema ABS=====
+
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.
'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 {{ic|/var/abs/}}. Contiene subdirectorios nombrados por cada paquete de software disponible para Arch, pero no el paquete en sí.
+
== ¿Cómo utilizar ABS? ==
* '''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.
 
* '''[[Arch User Repository (Español)|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 (Español)|makepkg]]:''' Conmando del terminal que lee las instrucciones del PKGBUILDs, compila las fuentes y crea un paquete .pkg.tar.gz.
 
* '''[[pacman (Español)|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? ====
+
Para obtener el [[PKGBUILD (Español)|PKGBUILD]] necesario para construir un paquete desde fuente, se pueden usar dos métodos: [[Svn]] o [[Git]] usando el paquete {{pkg|asp}}, el cual esta diseñado para trabajar con repositorios svntogit. A continuación se va a describir el método basado en svn y el método  [[#Obtener PKGBUILD usando Git|basado en git]].
ABS es usado para:
 
  
* Construir nuevos paquetes desde las fuentes, de software para el que no existen paquetes binarios (Lee [[Creating Packages (Español)]])
+
=== Obtener PKGBUILD usando Svn ===
* Construir y compartir estos paquetes via [[Arch User Repository (Español)|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.
+
==== Prerequisitos ====
  
== Instalar Paquetes ==
+
[[Help:Reading_(Español)#Instalación de paquetes|Instale]] el paquete {{Pkg|subversion}}.
  
Para usar ABS, primero necesitas instalar {{pkg|abs}} desde los [[Official Repositories (Español)|repositorios oficiales]].
+
==== Descarga no recursiva ====
  
Esto también instalará las dependencias necesitadas.
+
{{Advertencia|No descargue todo el repositorio, solo siga las instrucciones debajo. El repositorio completo de SVN es gigantesco. No solo va a requerir bastante espacio en su disco, también le costara mucho al servidor de archlinux.org para su descarga. Si Ud. abusa de este servicio su dirección puede ser bloqueada. Nunca ejecute scripts en el SVN público.
 +
}}
  
==== /etc/abs/abs.conf ====
+
Para revisar las ramas ''core'', ''extra'', y ''testing'' de los [[Official_repositories_(Español)|repositorios]]:
Edita {{ic|/etc/abs/abs.conf}} o {{ic|/etc/abs.conf}}para incluir tus repositorios deseados.
 
  
Quita el {{ic|!}} al inicio de tus repositorios, ejem:
+
  $ svn checkout --depth=empty <nowiki>svn://svn.archlinux.org/packages</nowiki>
  SUPFILES=(core extra !unstable community !testing)
 
  
==== Crea el árbol ABS ====
+
Para revisar las ramas ''community'' y ''multilib'' de los repositorios:
Como root, haz:
 
abs
 
Ahora tu árbol ABS es creado en {{ic|/var/abs}}. Notese que los repositorios apropiados en el árbol ABS ahora existen y corresponden a los especificados en {{ic|/etc/abs/abs.conf}}.
 
  
''El comando {{ic|abs}} debe usarse periódicamente para sincronizar y actualizar tu árbol ABS.''
+
$ svn checkout --depth=empty <nowiki>svn://svn.archlinux.org/community</nowiki>
  
==== /etc/makepkg.conf ====
+
En ambos casos se crea un directorio vacio, el cual tiene conocimiento de que esta contenido en las ramas.
  
Edita {{ic|/etc/makepkg.conf}} para especificar las variables de entorno y las CFLAGS.
+
==== Rama de un paquete ====
  
==== El árbol ABS ====
+
En el directorio conteniendo el repositorio svn que esta revisando (v.g., ''extra'' o ''community''), ejecute:
  
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 {{ic|/var/abs}} y parece algo como esto:
+
  $ svn update ''nombre-paquete''
  
<pre>
+
Esto va a descargar (''pull'') el paquete dentro de su repositorio local. Desde ahora cada vez que se ejecute ''svn update'' en el directorio del repositorio, el directorio del paquete también se actualizara.
|-
 
| -- core/
 
|-
 
|    ||-- autoconf/
 
|-
 
|    ||-- automake/
 
|-
 
|    ||-- ...
 
|-
 
| -- devel/
 
|-
 
| -- ...
 
|-
 
| -- extra/
 
|-
 
|      || -- daemons/
 
|-
 
|      ||      || -- acpid/
 
|-
 
|      ||      ||      || -- PKGBUILD
 
...    ...    ...    ...
 
</pre>
 
  
Así que el árbol ABS tiene la misma escructura que la base de datos de los paquetes:
+
Si se especifica un paquete que no existe, svn no le mostrara una advertencia, solo mostrara algo similar a "At revision 115847", y no creara ningún archivo. Si esto sucede:
* Los primeros niveles representan las categorías.
+
* Confirme que escribió el nombre del paquete correctamente
* Los segundos niveles representan los ABS, cuyos nombres corresponden al paquete que se desea construir.
+
* Confirme que el paquete no se ha movido a otro repositorio (v.g. de ''community'' a ''extra'')
* Los PKGBUILD contienen toda la información concerniente al paquete.
+
* Revise https://www.archlinux.org/packages para verificar si el paquete es construido con fuente de otro paquete (por ejemplo, {{Pkg|python-tensorflow}} es construido con el PKGBUILD de {{Pkg|tensorflow}})
* 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=====
+
{{Tip|Para revisar versiones antiguas de un paquete, vea [[#Revisión de un paquete antiguo]].}}
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 {{ic|/var/abs/}}, pertenecientes a un usuario local. Copia ABS del árbol ({{ic|/var/abs/branch/category/nombre_paquete}}) al directorio de compilación.
 
  
Crear tu directorio:
+
Es aconsejable actualizar todas las ramas que ha descargado si desea re-construir paquetes en versiones mas recientes de los repositorios. Para actualizar ejecute:
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.}}
+
$ svn update
  
Ahora que sabes que es un árbol ABS, ¿Como se usa?
+
=== Obtener PKGBUILD usando Git ===
  
==== La construcción de un paquete a la manera tradicional ====
+
Es necesario [[Help:Reading_(Español)#Instalación de paquetes|instalar]] el paquete {{Pkg|asp}}.
  
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''':
+
Para clonar el repositorio del paquete ejecute:
* 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:
+
  $ asp checkout ''nombre-paquete''
  cd foo-0.99
 
  
* Configura el paquete: generalmente, existe un pequeño script llamado {{ic|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:
+
Este comando clona el repositorio git del paquete en un directorio con el nombre del paquete mismo.
./configure [[opcion]]
 
  
Primero deberías entender la ayuda para ver como funciona:
+
Para actualizar el repositorio de git, ejecute {{ic|asp update}} seguido de {{ic|git pull}}dentro del repositorio de git.
./configure --help
 
  
Si ninguna opción {{ic|--prefix}} es pasada al script, ''muchos'' scripts usaran {{ic|/usr/local}} como la ruta de instalación, pero otros usarán {{ic|/usr}}. Para mayor seguridad, es recomendable pasar la opción {{ic|1=--prefix=/usr/local}}. Es buena práctica instalar los programas personales en {{ic|/usr/local}}, y los que deben ser mantenidos por la distribución, en {{ic|/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''.
+
Es más, se pueden usar el resto de comandos de git para revisar versiones antiguas o para ver el histórico del paquete. Para más información sobre el uso de git, vea la pagina de [[git]].
./configure --prefix=/usr/local
 
  
* Compila las fuentes:
+
Si desea copiar una instantánea del [[PKGBUILD (Español)|PKGBUILD]] para el paquete actual, ejecute:
  make
+
  $ asp export ''nobre-paquete''
  
* Instalarlo
+
=== Construcción del paquete ===
make install
 
  
* Desinstalarlo seria entrar al directorio de compilación y ejecutar:
+
Vea [[makepkg_(Español)#Configuración|makepkg]] para configurar ''makepkg'' para la construcción de los [[PKGBUILD_(Español)|PKGBUILD]] que esta revisando.
  make uninstall
 
  
Sin embargo, siempre deberías leer el archivo {{ic|INSTALL}} para conocer como debe ser creado e instalado el paquete. '''¡No todos los paquetes usan el sistema {{ic|configure; make; make install}}!'''
+
Después, copie el directorio que contiene el [[PKGBUILD_(Español)|PKGBUILD]] a un lugar nuevo. Alla, modifique lo que considere necesario y use ''makepkg'' como esta descrito en [[makepkg_(Español)#Uso|makepkg#Uso]] para crear un nuevo paquete.
  
''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.''
+
== Recomendaciones ==
  
==== La construcción de un paquete a lo ABS ====
+
=== Revisión de un paquete antiguo ===
  
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.
+
Dentro del repositorio svn que esta revisando, como se ha descrito en [[#Descarga no recursiva]] (v.g. "packages" o "community"), examine el histórico:
  
*1. Copia el ABS de slim ABS desde el árbol a un directorio de compilación.
+
  $ svn log ''nombre-paquete''
  cp -r /var/abs/extra/x11/slim /home/tuusuario/abs/local
 
  
*2. Navega al directorio de compilación
+
Encuentre la revisión que le interesa, después especifique la revisión que desea modificar. Por ejemplo, para examinar la revisión {{ic|r1729}} ejecute:
cd /home/yourusername/abs/local/slim
 
  
*3. Haz makepkg, el cual descargará automáticamente las fuentes comprimidas, las descomprime, compila, y crea {{ic|slim.pkg.tar.gz}}. El argumento {{ic|-i}} invoca a pacman y automáticamente instala el resultante {{ic|slim.pkg.tar.gz}}
+
$ svn update -r1729 ''nombre-paquete''
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 ({{ic|pacman -Rs slim}})
+
Esto actualizara la copia en el directorio local de ''nombre-paquete'' a la revisión deseada.
  
Alternativamente puedes hacer makepkg sin el argumento {{ic|-i}} y manualmente instalar el paquete usando:
+
También es posible especificar una fecha. Si no hay una revisión en ese día, svn tomara la version mas reciente antes de ese momento. El ejemplo siguiente ubica el repositorio en una revisión ocurrida el 2009-03-03:
  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.''
+
$ svn update -r{20090303} ''nombre-paquete''

Latest revision as of 12:54, 13 January 2018

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. 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[broken link: package not found] 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?

Para obtener el PKGBUILD necesario para construir un paquete desde fuente, se pueden usar dos métodos: Svn o Git usando el paquete asp, el cual esta diseñado para trabajar con repositorios svntogit. A continuación se va a describir el método basado en svn y el método basado en git.

Obtener PKGBUILD usando Svn

Prerequisitos

Instale el paquete subversion.

Descarga no recursiva

Advertencia: No descargue todo el repositorio, solo siga las instrucciones debajo. El repositorio completo de SVN es gigantesco. No solo va a requerir bastante espacio en su disco, también le costara mucho al servidor de archlinux.org para su descarga. Si Ud. abusa de este servicio su dirección puede ser bloqueada. Nunca ejecute scripts en el SVN público.

Para revisar las ramas core, extra, y testing de los repositorios:

$ svn checkout --depth=empty svn://svn.archlinux.org/packages

Para revisar las ramas community y multilib de los repositorios:

$ svn checkout --depth=empty svn://svn.archlinux.org/community

En ambos casos se crea un directorio vacio, el cual tiene conocimiento de que esta contenido en las ramas.

Rama de un paquete

En el directorio conteniendo el repositorio svn que esta revisando (v.g., extra o community), ejecute:

$ svn update nombre-paquete

Esto va a descargar (pull) el paquete dentro de su repositorio local. Desde ahora cada vez que se ejecute svn update en el directorio del repositorio, el directorio del paquete también se actualizara.

Si se especifica un paquete que no existe, svn no le mostrara una advertencia, solo mostrara algo similar a "At revision 115847", y no creara ningún archivo. Si esto sucede:

  • Confirme que escribió el nombre del paquete correctamente
  • Confirme que el paquete no se ha movido a otro repositorio (v.g. de community a extra)
  • Revise https://www.archlinux.org/packages para verificar si el paquete es construido con fuente de otro paquete (por ejemplo, python-tensorflow es construido con el PKGBUILD de tensorflow)
Tip: Para revisar versiones antiguas de un paquete, vea #Revisión de un paquete antiguo.

Es aconsejable actualizar todas las ramas que ha descargado si desea re-construir paquetes en versiones mas recientes de los repositorios. Para actualizar ejecute:

$ svn update

Obtener PKGBUILD usando Git

Es necesario instalar el paquete asp.

Para clonar el repositorio del paquete ejecute:

$ asp checkout nombre-paquete

Este comando clona el repositorio git del paquete en un directorio con el nombre del paquete mismo.

Para actualizar el repositorio de git, ejecute asp update seguido de git pulldentro del repositorio de git.

Es más, se pueden usar el resto de comandos de git para revisar versiones antiguas o para ver el histórico del paquete. Para más información sobre el uso de git, vea la pagina de git.

Si desea copiar una instantánea del PKGBUILD para el paquete actual, ejecute:

$ asp export nobre-paquete

Construcción del paquete

Vea makepkg para configurar makepkg para la construcción de los PKGBUILD que esta revisando.

Después, copie el directorio que contiene el PKGBUILD a un lugar nuevo. Alla, modifique lo que considere necesario y use makepkg como esta descrito en makepkg#Uso para crear un nuevo paquete.

Recomendaciones

Revisión de un paquete antiguo

Dentro del repositorio svn que esta revisando, como se ha descrito en #Descarga no recursiva (v.g. "packages" o "community"), examine el histórico:

$ svn log nombre-paquete

Encuentre la revisión que le interesa, después especifique la revisión que desea modificar. Por ejemplo, para examinar la revisión r1729 ejecute:

$ svn update -r1729 nombre-paquete

Esto actualizara la copia en el directorio local de nombre-paquete a la revisión deseada.

También es posible especificar una fecha. Si no hay una revisión en ese día, svn tomara la version mas reciente antes de ese momento. El ejemplo siguiente ubica el repositorio en una revisión ocurrida el 2009-03-03:

$ svn update -r{20090303} nombre-paquete