[Howto] Generar paquetes de software en Arch Linux y derivados

Una de las cosas que mas me gusta de Arch Linux y sus derivadas es la tremenda facilidad para crear paquetes para luego ser instalados en el sistema, al contrario que pasa con los conocidos .deb de Debian/Ubuntu/Linux Mint/etc que es un caos (y si son librerías ni os cuento).

Una plantilla base sería esta:

# Maintainer:
pkgname=
pkgver=
pkgrel=
pkgdesc=
arch=()
url=
license=()
groups=()
depends=()
makedepends=()
source=()
md5sums=()

build() {
...
}
package() {
...
}

Ahora explicare cada parámetro:

  • # Maintainer: En ella se pone el nombre del mantenedor del paquete
  • pkgname: El nombre del paquete. Solo puede contener letras, números, -, _ y +
  • pkver: versión del paquete. p.e 1.0.0
  • pkgrel: la revisión del programa o paquete. p.e 1
  • pkgdesc: descripción del paquete.
  • arch: la arquitectura del programa: puede ser any (para todos), i686 y x86_64, siendo any para paquetes que no requieren compilación, como programas en bash o python. Si es un programa que si lo necesita (por ejemplo programas en C o C++) se deberá de indicar i686 si es para 32 bits o x86_64 para 64 bits. Por normal general si es compatible con ambos se pone (i686, x86_64)
  • url: la url a la pagina oficial del programa. Es recomendable ponerlo.
  • license: la licencia del programa. p.e GPL3
  • groups: los grupos al que pertenece el paquete. groups=(‘system’)
  • depends: en ella indicamos los paquetes que se necesitan para la ejecución del programa. p.e depens=(‘python2′ ‘pygtk’)
  • makedepends: las dependencias que solo son necesarias para compilar el paquete. Si se va a bajar el código desde un gestor de versiones es recomendable ponerlo. p.e: makedepends=(‘git’)
  • source: en el indicamos los archivos necesarios para la creación del paquete. Por norma general es la url al paquete que contiene el código, un parche, un archivo .desktopt, iconos, etc. p.e: source=(pacsyu.desktop)
  • md5sums: aquí van las sumas md5 de los archivos indicados en source. Para saber cuales son ejecutamos desde una terminal en la carpeta donde esta el PKGBUILD (habiendo escrito las rutas de los archivos en source) makepkg -g y nos saldrá en pantalla las sumas.
    También es posible usar otras sumas como sh1.
  • build: en esta función pondremos los comandos necesarios para proceder a compilar el software. Si no es necesario compilar solo es necesario la siguiente función)
  • package: en esta otra función irán los comandos de instalación del programa. Por ejemplo si estamos compilando código C aquí iría el make install.

Y ya para finalizar solo tenemos que ejecutar makepkg para comprobar que el paquete se genera.
Como veis nos es difícil. A continuación os dejo con algunos parámetros extra de makepkg:

  • -i: Indica a makepkg que instale el paquete una vez creado.
  • -s: Instala las dependencias del paquete si estas están en los repositorios.
  • -f: Si ya hay un paquete con ese nombre, versión y revisión con este parámetro le indicamos que lo sobrescriba.
  • -c: Limpia las carpetas de trabajo (pkg y source) una vez terminado.
  • -R: Vuelve a empaquetar el paquete sin tener que volver a compilar.

Recomiendo ver mas archivos PKGBUILD para ver mas ejemplos, ejecutar el comando makepkg -h para ver el resto de parámetros del programa, ademas de ver la documentación oficial de makepkg en la Wiki de Arch Linux que podéis encontrar aquí