[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í


Deja tu comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

*

*

  1. Responsable de los datos: Miguel Ángel Gatón
  2. Finalidad de los datos: Controlar el SPAM, gestión de comentarios.
  3. Legitimación: Tu consentimiento
  4. Comunicación de los datos: No se comunicarán los datos a terceros salvo por obligación legal.
  5. Almacenamiento de los datos: Base de datos alojada en Occentus Networks (UE)
  6. Derechos: En cualquier momento puedes limitar, recuperar y borrar tu información.

      jamin-samuel dijo

    Demasiado bien …

    Se puede hacer que un paquete .exe se gestione (compile) a un paquete de Arch?

    Como por ejemplo el famoso gestor de descargas Mipony ??

         proper dijo

      Hasta donde sé no se puede, recuerda que los .exe son binarios y no código fuente. Pero está JDownloader.

           Son Link dijo

        Como bien dices no se puede recompilar un exe ya que es código binario.
        A los se puede crear un paquete que lo instale y lo ejecute con Wine como hace el paquete que hay en AUR del conocido programa P2P Ares.

         v3on dijo

      alguien usa linux y extraña Myponi… jijijijiji

      jDownloader está en java, y es bien sabido por todos que java da cancer en los pulmones…

      milky28 dijo

    interesante, habría que probar paquetes creo que me inclinaré por hacer el de qbittorrent jajaja ya existe en yaourt pero tener una versión propia no estará nada mal para probar, gracias por la información saludos.

      msx dijo

    Buen aporte, +1
    Quiero agregar que también son más fáciles de crear y mantener que los ebuilds de Gentoo!

    Con respecto a Debian, creo que esa distro levantaría su handicap enormemente con sólo modernizar o migrar a un sistema de paquetería y gestión de paquetes más moderno, no sé de cuándo será la última actualización del conjunto dpkg/apt pero el concepto ya debe tener facilmente 15 años y la verdad es que hoy es anacrónico.

      Rots87 dijo

    muchas gracias haced poco lo anduve buscando en la wiki y no habia entendido la estructura (queria actualizar el de la PlayonLinux) pero igual desisti… hay cosas en las que me gustaria que hubiera una asistente o algo asi (no me fusilen) pero igual… a falta de herramientas con el tiempo vere si creo alguna

         msx dijo

      Gracias a tu guía me puse a crear el PKGBUILD de Zeya (http://web.psung.name/zeya/), ni bien lo termine lo subo al AUR 🙂

      hipersayan_x dijo

    al contrario que pasa con los conocidos .deb de Debian/Ubuntu/Linux Mint/etc que es un caos

    Totalmente de acuerdo, hace un tiempo intente crear un paquete para Ubuntu y me fue imposible encontrar información entendible sobre como hacer uno, al final desistí e instalé el programa a lo bruto.
    El mismo programa para Arch me tomó menos de 5 minutos armar el paquete.
    Y no estoy seguro pero creo que los RPM son ligeramente más fáciles de hacer que los DEB, pero más difíciles que los de Arch.

      hackloper775 dijo

    Muy bueno y facil,y en cuanto a los .deb no es tan dificil,bueno eso para iOS

    Saludos

      Carlos dijo

    Creo que esto me hubiera servidor hace algun tiempo cuando subi mi primer PKGBUILD a AUR 🙂

      clerafel dijo

    alguiem me puede explicar esto que es, soy nuevo, y pues no se si esto me sirva para isnstalar un paquete .deb pero localmente en manjaro, un juego para ser exactos. si sirve?

         Son Link dijo

      Justo escribi otro articulo de como crear paquetes para arch/manjaro desde paquetes .deb
      https://blog.desdelinux.net/archlinux-crear-paquetes-multiplataforma-y-desde-paquetes-deb/

           Rodrigo Moreno dijo

        si, ya lo habia visto, sino que soy muy novell y no entiendo si no solo esxta linea

        cd «${srcdir}/»
        tar xvzf data.tar.gz -C .
        cp -r usr ${pkgdir}

        lo que tienes atras

        if [ «${CARCH}» = ‘x86_64′ ]; then
        ARCH=’amd64’
        md5sums=(‘192a0a222893d59d95f00c34f3c8a674’)
        depends=(‘openal’ ‘lib32-openal’)
        elif [ «${CARCH}» = ‘i686′ ]; then
        ARCH=’i386’
        md5sums=(‘047c670443124193c5cc3dd54da99925’)
        depends=(‘openal’)
        fi
        source=(«http://www.unaurl.com/files/${name}.$ARCH.deb»)

        No lo entiendo, se ve muy complejo, son pasos conjuntos o la primera parte

        cd «${srcdir}/»
        tar xvzf data.tar.gz -C .
        cp -r usr ${pkgdir}

        se puede hacer sola para convertir .deb. .tar.gz?