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

From ArchWiki
Jump to: navigation, search
(Directories)
Line 85: Line 85:
  
  
===Directories===
+
===Directorios===
 
* Archivos de configuración deben almacenarse en el directorio <code>/etc</code>. Si existe mas de un archivo de configuración es costumbre *utilizar un subdirectorio* para mantener <code>/etc</code> lo mas limpio posible. Usa <code>/etc/{pkgname}/</code> cuando sea posible, o una alternativa relacionada, por ejemplo, apache utiliza <code>/etc/httpd</code>.
 
* Archivos de configuración deben almacenarse en el directorio <code>/etc</code>. Si existe mas de un archivo de configuración es costumbre *utilizar un subdirectorio* para mantener <code>/etc</code> lo mas limpio posible. Usa <code>/etc/{pkgname}/</code> cuando sea posible, o una alternativa relacionada, por ejemplo, apache utiliza <code>/etc/httpd</code>.
  
 
* Los archivos de cada paquete deben seguir las siguientes directivas:
 
* Los archivos de cada paquete deben seguir las siguientes directivas:
;/etc
+
**<code>/etc</code> Archivos de configuración.
:Archivos de configuración.
+
**<code>/usr/bin</code> Binarios de la aplicación.
;/usr/bin
+
**<code>/usr/sbin</code> Binarios del sistema.
:Binarios de la aplicación.
+
**<code>/usr/lib</code> Librerias
;/usr/sbin
+
**<code>/usr/include</code> Cabeceras (archivos .h)
:Binarios del sistema.
+
**<code>/usr/lib/{pkgname}</code> Módulos, agregados (plugins), etc.
;/usr/lib
+
**<code>/usr/man</code> Paginas del manual.
:Librerias
+
**<code>/usr/share/{pkgname}</code> Datos de la aplicación (temas, iconos, etc.).
;/usr/include
+
**<code>/etc/{pkgname}</code> Archivos de configuración adicionales de {pkgname}.
:Cabeceras (archivos .h)
+
**<code>/opt</code> Paquetes grandes y autocontenidos como KDE, Mozilla, Qt, etc.
;/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:
 
* Los paquetes *no* deben contener los siguientes directorios:

Revision as of 18:30, 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