Difference between revisions of "Arch packaging standards (Español)"

From ArchWiki
Jump to: navigation, search
(Directories)
(Directorios)
Line 89: Line 89:
  
 
* Los archivos de cada paquete deben seguir las siguientes directivas:
 
* Los archivos de cada paquete deben seguir las siguientes directivas:
**<code>/etc</code> Archivos de configuración.
+
:{|
**<code>/usr/bin</code> Binarios de la aplicación.
+
|-
**<code>/usr/sbin</code> Binarios del sistema.
+
|<code>/etc</code>||Archivos de configuración.
**<code>/usr/lib</code> Librerias
+
|-
**<code>/usr/include</code> Cabeceras (archivos .h)
+
|<code>/usr/bin</code>||Binarios de la aplicación.
**<code>/usr/lib/{pkgname}</code> Módulos, agregados (plugins), etc.
+
|-
**<code>/usr/man</code> Paginas del manual.
+
|<code>/usr/sbin</code>||Binarios del sistema.
**<code>/usr/share/{pkgname}</code> Datos de la aplicación (temas, iconos, etc.).
+
|-
**<code>/etc/{pkgname}</code> Archivos de configuración adicionales de {pkgname}.
+
|<code>/usr/lib</code>||Librerias
**<code>/opt</code> Paquetes grandes y autocontenidos como KDE, Mozilla, Qt, etc.
+
|-
 +
|<code>/usr/include</code>||Cabeceras (archivos .h)
 +
|-
 +
|<code>/usr/lib/{pkgname}</code>||Módulos, agregados (plugins), etc.
 +
|-
 +
|<code>/usr/man</code>||Paginas del manual.
 +
|-
 +
|<code>/usr/share/{pkgname}</code>||Datos de la aplicación (temas, iconos, etc.).
 +
|-
 +
|<code>/etc/{pkgname}</code>||Archivos de configuración adicionales de {pkgname}.
 +
|-
 +
|<code>/opt</code>||Paquetes grandes y autocontenidos como KDE, Mozilla, Qt, etc.
 +
|}
  
 
* Los paquetes *no* deben contener los siguientes directorios:
 
* Los paquetes *no* deben contener los siguientes directorios:

Revision as of 18:36, 30 October 2007

Template:I18n links start Template:I18n entry Template:I18n entry Template:I18n entry Template:I18n entry Template:I18n links end

Tango-preferences-desktop-locale.pngThis article or section needs to be translated.Tango-preferences-desktop-locale.png

Notes: please use the first argument of the template to provide more detailed indications. (Discuss in Talk:Arch packaging standards (Español)#)

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 entorno PACKAGER antes de compilar el paquete con makepkg, 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