Arch packaging standards (Español)
Template:I18n links start Template:I18n entry Template:I18n entry Template:I18n entry Template:I18n entry Template:I18n links end
Contents
Estándares para paquetes
Al crear paquetes para Arch Linux deberás seguir las directivas delineadas en este articulo, especialmente si deseas contribuir tu paquete a la Distribución.
Prototipo de PKGBUILD
# Contributor: Tu Nombre <tuemail@domain.com> pkgname=NOMBREDELPAQUETE pkgver=VERSIONDELPAQUETE pkgrel=1 pkgdesc="" arch=() url="" license=('GPL') depends=() makedepends=() provides=() conflicts=() replaces=() backup=() groups=() options=() install= source=($pkgname-$pkgver.tar.gz) noextract=() md5sums=(generate with makepkg -g) build() { cd $startdir/src/$pkgname-$pkgver ./configure --prefix=/usr make || return 1 make DESTDIR=$startdir/pkg install || return 1 }
Reglas de Etiqueta
- Los paquetes nunca deben ser instalados en
/usr/local
- Siempre que sea posible utiliza
" || return 1"
en funciones importantes para la construcción del paquete. Por ejemplo:
patch -Np1 -i ../patchfile.patch || return 1 make || return 1 make DESTDIR=$startdir/pkg install || return 1
- No introduzcas nuevas variables en tu script PKGBUILD, excepto cuando el paquete no puede ser construido sin ellas, debido a que pueden haber posibles confictos con las variables usadas por el propio
makepkg
. Si una nueva variable es absolutamente requerida, añade el prefijo "_" a su nombre, por ejemplo "_tuvariable".
El sistema AUR no puede detectar el uso de variables no estándar, por ende no puede usarlas en substituciones, por ejemplo:http://downloads.sourceforge.net/directxwine/$patchname.$patchver.diff.bz2
Esto derrota el objetivo detrás de muchas funciones del AUR.
- Evita usar
/usr/libexec
para lo que sea. Usa el directorio/usr/lib/${pkgname}/
en su lugar.
- El campo
packager
del meta-archivo del paquete puede ser ajustado por el creador del paquete modificando la opción apropiada en/etc/makepkg.conf
o alternativamente exportando la variable de entornoPACKAGER
antes de compilar el paquete conmakepkg
, por ejemplo:
# export PACKAGER="Juan Perez@tu.email"
- Todos los mensajes importantes deben ser mostrados con el comando
echo
durante la instalación mediante el uso del archivo.install
. Por ejemplo, si un paquete necesita trabajo adicional de configuración, las instrucciones deberían ser incluidas.
- Cualquier dependencia opcional que no es necesaria para ejecutar el paquete o su funcionamiento general no debe ser incluida, pero un mensaje de aviso debe enviarse dentro del archivo
.install
, por ejemplo "Para activar el soporte de SMB, descarga el paquete Samba".
- Al escribir la descripción del paquete, no incluyas el nombre del paquete en un formato auto-referencial. Por ejemplo "Nedit es un editor de texto para X11" debería ser simplificado a "Editor de texto para X11". Intenta mantener las descripciones en aproximadamente 80 caracteres o menos.
- Intenta mantener el ancho de linea de tu PKGBUILD debajo de los 100 caracteres.
- Cuando sea posible remueve las lineas vacias de tu PKGBUILD.
- Es una practica común el preservar el orden de los campos en el PKGBUILD. Aunque no es obligatorio debido a que el único requerimiento para esto es mantener la corrección de la sintaxis bash.
Nombres de Paquetes
- Los nombres de paquetes deben consistir solamente de caracteres alfanuméricos; todas las letras deberán ser minúsculas.
- Las versiones de los paquetes deben ser las mismas que las usadas por el autor original del software. Las versiones pueden incluir letras si es necesario (ejemplo, la versión de nmap es 2.54BETA32). Los nombres de versión no deben incluir guiones! solo letras, numeros y puntos.
- Los números de liberación del paquete (ejemplo, el
-1
en nmap-2.54BETA32-1) son especificos a Arch Linux. Estos permiten a los usuarios diferenciar entre un paquete viejo y uno nuevo. Cuando una nueva versión del paquete es liberada el contador se inicia en 1. Cuando correcciones y optimizaciones son realizadas, el paquete es redistribuido con un incremento de 1 en su numero de liberación. Cuando una nueva versión de la aplicación es distribuida el contador se reinicia a 1. Los números de liberación siguen las mismas directivas que los números de versión delineados en el ítem anterior.
Directorios
- Archivos de configuración deben almacenarse en el directorio
/etc
. Si existe mas de un archivo de configuración es costumbre utilizar un subdirectorio para mantener/etc
lo mas limpio posible. Usa/etc/{pkgname}/
cuando sea posible, o una alternativa relacionada, por ejemplo, apache utiliza/etc/httpd
.
- Los archivos de cada paquete deben seguir las siguientes directivas:
/etc
Archivos de configuración. /usr/bin
Binarios de la aplicación. /usr/sbin
Binarios del sistema. /usr/lib
Librerias /usr/include
Cabeceras (archivos .h) /usr/lib/{pkgname}
Módulos, agregados (plugins), etc. /usr/man
Paginas del manual. /usr/share/{pkgname}
Datos de la aplicación (temas, iconos, etc.). /etc/{pkgname}
Archivos de configuración adicionales de {pkgname}. /opt
Paquetes grandes y autocontenidos como KDE, Mozilla, Qt, etc.
- Los paquetes no deben contener los siguientes directorios:
- /dev
- /home
- /media
- /mnt
- /proc
- /root
- /selinux
- /sys
- /tmp
- /var/tmp
makepkg
Cuando usas makepkg para crear un paquete, hace automaticamente lo siguiente:
- Verifica que las dependencias esten instaladas
- Descarga las fuentes del fichero desde el servidor
- Desempaqueta las fuentes
- Parcha todo lo necesario
- Crea el software e instala en un directorio root falso
-
Elimina
/usr/doc
,/usr/info
,/usr/share/doc
, y/usr/share/info
desde el paquete - Obtiene simbolos desde los binarios
- Obtiene debugging symbols desde las librerias
- Genera el package meta file que es incluido en cada paquete
- Comprime el directorio root falso
- Almacena el paquete en el directorio de destino configurado (cwd por defecto)