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 in 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 </code>echo</code> 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