Archlinux: Crear paquetes multiplataforma y desde paquetes .deb

Hace cosa de un año explique como crear paquetes para Archlinux. Pues bien, hoy voy a explicar como crearlos desde paquetes .deb, los usados en Debian/Mint/Ubuntu/etc.
Este articulo surgió tras leer en el foro una pregunta del usuario jorgegc por que no podía instalar un paquete desde AUR, principalmente por que esta desactualizado y encima usaba una versión descontinuada del PKGBUILD (por suerte ya hice con anterioridad paquetes de este modo), ademas explicare como hacer paquetes de programas que necesiten librerías de 32 bits, de código cerrado o ya compilado y que cuente con distintos paquetes para su descarga.

La base para el PKGBUILD es la misma, solo que con algunos cambios.
El primer cambio sera el uso de una sentencia if elif de Bash


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")

En este ejemplo se ha definido una variable que luego sera usada para cambiar la URL donde esta el paquete (en este caso la arquitectura del paquete a bajar).
Ademas dependiendo de la arquitectura también cambiaran las sumas MD5 por lo que cambiaremos estas por las correspondientes.

Al usar makepkg -g para generar las MD5sums este solo generara el correspondiente a la arquitectura que este usando. Para saber la suma MD5 del otro paquete descargalo y usa el comando md5sum archivo.deb para conocer la suya

Por ultimo vemos que en el ejemplo cambiamos las dependencias. En algunos programas de 64 bits es necesario instalar las versiones de 32 bits de algunas librerías por lo que tenemos que indicarlas. Si no son necesarias simplemente define la variable de la forma habitual.

Ahora para los paquetes .deb solo vamos a necesitar necesitar las siguiente lineas dentro de la función package():

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

Como veis solo necesitamos en este caso 3 lineas para generar el paquete. Si es necesario algo mas (por ejemplo copiar un archivo que no viene con el paquete, o modificar el contenido de uno) solo tenéis que ponerlo como con cualquier otro paquete.

Esto mismo podría valer (con algunos cambios) si en vez de un .deb vamos a usar paquetes rpm u otros tipos de paquetes. La función build() no es necesaria, por lo que no necesitamos añadirla.

Y listo, ya tenemos un paquete multilib o creado desde un paquete deb listo para usar.
Espero que os guste y que me haya explicado bien.

 

Fuente: desdelinux

¿Quién está en línea?

Hay 27816 invitados y ningún miembro en línea