Arch Build System (Español)

This article or section needs to be
translated
.
Notes:
Needs to be updated for the git migration, removal of asp and merge of community to extra. (Discuss in
Talk:Arch Build System (Español)
)
Esta traducción de
Arch Build System
fue revisada el
2022-10-21
. Si existen
cambios
puede
actualizarla
o avisar al
equipo de traducción
.
Artículos relacionados
Estándares de empaquetado en Arch
Repositorio de usuarios de Arch
Crear paquetes
Compilación del kernel con ABS
makepkg
Repositorios oficiales
pacman
PKGBUILD
Parchear en ABS
El sistema de compilación Arch (Arch build system ó ABS) es un sistema
parecido a ports
para compilar y empaquetar software a partir del código fuente. Si bien
pacman
es la herramienta especializada de Arch para la administración de paquetes binarios (incluidos los paquetes creados con ABS), ABS es una colección de herramientas para compilar el código fuente en paquetes instalables
.pkg.tar.zst
.
Ports
es un sistema utilizado por *BSD para automatizar el proceso de creación de software a partir del código fuente. El sistema utiliza un
port
para descargar, desempaquetar, parchear, compilar e instalar el software dado. Un
port
es simplemente un pequeño directorio en la computadora del usuario, llamado así por el software correspondiente a instalar, que contiene algunos archivos con las instrucciones para construir e instalar el software desde la fuente. Esto hace que la instalación del software sea tan simple como escribir
make
o
make install clean
dentro del directorio del
port
.
ABS es un concepto similar. Una parte de ABS es un repositorio SVN y un repositorio Git equivalente. El repositorio contiene un directorio correspondiente a cada paquete disponible en Arch Linux. Los directorios del repositorio contienen un archivo
PKGBUILD
(y a veces otros archivos), y no contienen la fuente del software ni el binario. Al emitir
makepkg
dentro de un directorio, las fuentes del software se descargan, el software se compila y luego se empaqueta dentro del directorio de compilación. Entonces puedes utilizar
pacman
para instalar el paquete.
Visión general
'ABS' puede utilizarse como un término general, ya que incluye y se basa en otros componentes; por lo tanto, aunque no es técnicamente exacto, 'ABS' puede referirse a las siguientes herramientas como un conjunto de herramientas (toolkit) completo:
Árbol de repositorios
La estructura de directorios que contiene los archivos necesarios para crear todos los paquetes oficiales, pero no los paquetes en sí ni los archivos fuente del software. Está disponible en los repositorios
Git
en
gitlab.archlinux.org
. Véase la sección
#Árbol del repositorio
para obtener más información.
PKGBUILD
Un script
Bash
que contiene la URL del código fuente junto con las instrucciones de compilación y empaquetado.
makepkg
Una herramienta de la orden del intérprete de órdenes que lee los PKGBUILD, descarga y compila automáticamente las fuentes y crea un
.pkg.tar*
según la matriz
PKGEXT
en
makepkg.conf
. También puede utilizar makepkg para crear sus propios paquetes personalizados a partir de
AUR
o fuentes de terceros. Véase
Creación de paquetes
para obtener más información.
pacman
pacman es completamente independiente, pero necesariamente se invoca por makepkg o manualmente, para instalar y eliminar los paquetes creados y para buscar dependencias.
AUR
Arch User Repository es independiente de ABS, pero los PKGBUILD de AUR (sin soporte) se construyen utilizando makepkg para compilar y empaquetar software. A diferencia del árbol ABS, que es simplemente un repositorio de git, AUR existe como una pulida interfaz web con varias funciones interactivas. Contiene miles de PKGBUILD aportados por los usuarios para software que no está disponible como paquete oficial de Arch. Si necesita crear un paquete fuera del árbol oficial de Arch, lo más probable es que esté en el AUR.
Advertencia
Los PKGBUILD oficiales asumen que los paquetes son
construidos en un entorno chroot limpio
. La compilación de software en un sistema de compilación
sucio
puede fallar o provocar un comportamiento inesperado en tiempo de ejecución, ya que si el sistema de compilación detecta las dependencias dinámicamente, el resultado depende de los paquetes que estén disponibles en el sistema de compilación.
Árbol del repositorio
Los
repositorios oficiales
principales
,
adicionales
y
de prueba
se encuentran en el repositorio de
paquetes
para
consultar
. Los repositorios
community
y
multilib
están en el repositorio
community
.
Cada paquete tiene su propio subdirectorio. Dentro de él hay directorios
repos
y
trunk
.
repos
se desglosa aún más por nombre de repositorio (por ejemplo,
core
) y arquitectura. Los PKGBUILD y los archivos que se encuentran en
repos
se utilizan en compilaciones oficiales. Los desarrolladores utilizan los archivos que se encuentran en
trunk
para prepararlos antes de copiarlos en
repos
.
Por ejemplo, el árbol para
acl
se ve así:
acl
acl/repos
acl/repos/core-x86_64
acl/repos/core-x86_64/PKGBUILD
acl/trunk
acl/trunk/PKGBUILD
El código fuente del paquete no está presente en el directorio ABS. En cambio,
PKGBUILD
contiene una URL que descargará el código fuente cuando se construya el paquete.
Casos de uso
ABS automatiza ciertas tareas relacionadas con la compilación desde la fuente. Sus casos de uso son:
Cualquier caso de uso que requiera compilar o recompilar un paquete.
Crear e instalar nuevos paquetes desde la fuente del software para el que aún no hay paquetes disponibles (véase
Creación de paquetes
).
Personalizar los paquetes existentes para que se ajusten a sus necesidades (por ejemplo, activar o desactivar opciones, aplicar parches).
Reconstruir todo su sistema utilizando las banderas (flags) de su compilador, "al estilo FreeBSD".
Crear e instalar limpiamente su propio kernel personalizado (véase
Compilación del kernel
).
Obtener módulos de kernel que funcionen con un kernel personalizado.
Compilar e instalar fácilmente una versión más reciente, anterior, beta o de desarrollo de un paquete de Arch modificando el número de versión en PKGBUILD.
Utilización
Recuperar la fuente PKGBUILD
Para recuperar el archivo
PKGBUILD
necesario para compilar un determinado paquete desde la fuente, puede utilizar
SVN
o un enfoque basado en
Git
.
Recuperar la fuente PKGBUILD utilizando Git
Utilizando la herramienta asp
Como condición previa,
instale
el paquete
asp
AUR
.
Asp
es una herramienta para recuperar los archivos fuente de compilación para los paquetes de Arch Linux utilizando la interfaz de Git. Véase también el hilo del foro Arch Linux BBS
[1]
.
Para clonar el repositorio svntogit para un paquete específico, utilice:
$ asp checkout
nombre_del_paquete
Esto clonará el repositorio de git para el paquete dado en un directorio llamado como el paquete.
Para actualizar el repositorio de git clonado, ejecute
asp update
seguido de
git pull
dentro del repositorio de git.
Además, puede utilizar todos las demás órdenes de git para obtener una versión anterior del paquete o para realizar un seguimiento de los cambios personalizados. Para obtener más información sobre el uso de git, véase la página
git
.
Si solo desea copiar una instantánea del
PKGBUILD
actual para un paquete específico, utilice:
$ asp export
nombre_del_paquete
Usando git directamente
Utilice la siguiente orden git para clonar solo una rama específica. De esta manera evitará copiar todo el repositorio:
$ git clone
https://gitlab.archlinux.org/archlinux/packaging/packages/
paquete
.git
Por ejemplo, para copiar los archivos de compilación de Apache:
$ git clone
https://gitlab.archlinux.org/archlinux/packaging/packages/apache.git
Recuperar la fuente PKGBUILD utilizando SVN
Requisitos previos
Instale
el paquete
subversion
.
Consultar un repositorio
Advertencia
No descargue todo el repositorio; solo siga las instrucciones a continuación. Todo el repositorio SVN es enorme. No solo tomará una cantidad obscena de espacio en disco, sino que también pondrá a prueba el servidor archlinux.org para que lo descargue. Si abusa de este servicio, su dirección puede ser bloqueada. Nunca utilice el SVN público para ningún tipo de secuencias de órdenes.
Para consultar los
repositorios oficiales
core
,
extra
y
testing
:
$ svn checkout --depth=empty svn://svn.archlinux.org/packages
Para consultar los repositorios
community
y
multilib
:
$ svn checkout --depth=empty svn://svn.archlinux.org/community
En ambos casos, simplemente crea un directorio vacío, pero sabe que es una comprobación svn.
Solicitar un paquete
En el directorio que contiene el repositorio svn que comprobó (es decir,
packages
o
community
), haga lo siguiente:
$ svn update
nombre_del_paquete
Esto llevará el paquete que solicitó a su comprobación. De ahora en adelante, cada vez que haga
svn update
en el nivel superior, esto también se actualizará.
Si especifica un paquete que no existe, svn no le avisará. Simplemente imprimirá algo como "At revision 115847", sin crear ningún archivo. Si eso pasa:
compruebe como escribió el nombre del paquete
verifique que el paquete no se haya movido a otro repositorio (es decir, de la comunidad al repositorio principal)
compruebe
https://archlinux.org/packages
para ver si el paquete se crea a partir de otro paquete base (por ejemplo,
python-tensorflow
se crea a partir de
tensorflow
PKGBUILD)
Sugerencia
Para comprobar una versión anterior de un paquete, véase
#Obtener una versión anterior de un paquete
.
Debe actualizar periódicamente todos sus paquetes extraídos si desea realizar reconstrucciones en revisiones más recientes de los repositorios. Para esto, haga:
$ svn update
Obtener una versión anterior de un paquete
Dentro del repositorio svn que desprotegió como se describe en
#Consultar un repositorio
(es decir, "packages" o "community"), primero examine el registro:
$ svn log
nombre_del_paquete
Averigüe la revisión que desea examinando el historial, luego especifique la revisión que desea verificar. Por ejemplo, para comprobar la revisión
r1729
haría lo siguiente:
$ svn update -r1729
nombre_del_paquete
Esto actualizará una copia del trabajo existente de
nombre_del_paquete
a la revisión elegida.
También puede especificar una fecha. Si no existe una revisión ese día, svn tomará el paquete más reciente antes de esa hora. El siguiente ejemplo comprueba la revisión de 2009-03-03:
$ svn update -r'{20090303}'
nombre_del_paquete
Es posible retirar paquetes en versiones antes de que se movieran a otro repositorio; revise los registros a fondo para ver la fecha en que se movieron o el último número de revisión.
Construir el paquete
Configure
makepkg
para construir paquetes a partir de los
PKGBUILD
que ha extraído, como se explica en
makepkg#Configuration
.
Luego, copie el directorio que contiene el
PKGBUILD
que desea modificar a una nueva ubicación. Realice las modificaciones deseadas allí y utilice allí
makepkg
como se describe en
makepkg#Usage
para crear e instalar el nuevo paquete.
Consejos y trucos
Conservar paquetes modificados
Actualizar el sistema con
pacman
reemplazará un paquete modificado de ABS con el paquete del mismo nombre de los repositorios oficiales. Véase las siguientes instrucciones para descubrir cómo evitarlo.
Inserte una matriz de grupo en
PKGBUILD
y agregue el paquete a un grupo llamado
modified
.
PKGBUILD
groups=('modified')
Agregue este grupo a la sección
IgnoreGroup
en
/etc/pacman.conf
.
/etc/pacman.conf
IgnoreGroup = modified
Si hay nuevas versiones disponibles en los repositorios oficiales durante una actualización del sistema, pacman imprime una nota de que se salta esta actualización porque está en la sección IgnoreGroup. En este punto, el paquete modificado debe reconstruirse a partir de ABS para evitar actualizaciones parciales.
Otras herramientas
pbget
- recupera PKGBUILDs para paquetes individuales directamente desde la interfaz web. Incluye soporte AUR.