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 ๐Ÿ˜€


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.

      ulysess dijo

    ยฟNo es mรกs sencillo usar checkinstall?

         Son Link dijo

      Checkinstall sirve para crear paquetes deb, rpm o para Slackware de manera mas sencilla.

           eliotime3000 dijo

        Bien. A ver si me doy tiempo para poder asรญ aรฑadir Iceweasel al repo de slacky.eu

             urKh dijo

          Que tiene de malo Firefox? :p

               sieg84 dijo

            que no estรก en Debian :p

               urKh dijo

            Eso no es a lo que exactamente me referรญa xD

               eliotime3000 dijo

            A que Firefox no tiene una versiรณn oficial para Debian, y si uso los repos de Ubuntu o Mint, se demoran igual que Iceweasel a la hora de publicarlos; ademรกs que te preguntan a cada rato si quieres enviar tus datos o no (una funciรณn realmente trivial para un navegador que defiende la privacidad).

            No estoy en contra de Firefox, y la verdad, apenas uso el Firefox ESR en Slackware y el Firefox Release en Windows (Iceweasel lo uso apenas en Debian, pero como Arch me da la maravillosa ventaja de instalarlo, lo instalarรฉ). Cuestiรณn de gustos, nada mรกs.

      Luciano Lagassa dijo

    Hola. Yo tengo unos scripts bash. Uno para generar las carpetas y archivos basicos para un paquete deb. Y el ultimo para generar el paquete a partir de todos los archivos y carpetas. Si les interesa lo puedo compartir.

         Son Link dijo

      Claro que puedes, previo pago XD

         jorgecg dijo

      Claro que interesa… por lo menos a mรญ.

      Ahora que estoy con Manjaro agradezco toda informaciรณn posible.

      jorgecg dijo

    Que grande eres compaรฑero.

    Te iba haber dicho en el foro que si me podias explicar como se hacia lo de compilar paquetes .deb y no te he dicho nada para no abusar de tu generosidad…. y me meto en la pรกgina y veo que has subido un artรญculo explicando todo el proceso.

    Esto demuestra que eres una persona generosa.

    Lo dicho, eres un crack.

    Un saludo

         Son Link dijo

      Gracias, y otra vez gracias por que tu pregunta me dio la idea ^^

      Anibal dijo

    es genial amigo, una vez probe un soft q no recuerdo el nombre q convertia de .deb a .rpm , pero no me funcionรณ bien.

    alguien con arch podria probar si este soft se pasa bien a rpm y se abre bien la instalacion ?

    http://www.justcloud.com/download/linux-64

    es para hacer backup en la nube, ya pago hace un tiempo y tengo mas de 40gb en la nube =)

         Son Link dijo

      Eso tendrian que probarlo gente que use Fedora, Red Hat u otras derivadas.
      Por la descripciรณn que das supongo que te referirรกs a alien (y no tiene que ver con cierto Xenoformo)

      Inspiron dijo

    Buenรญsimo! Siempre me dije que algรบn dรญa querรญa hacer un paquete, aunque sea para saber como se hace :).

    En estos tipos de post agradecerรญa que en el blog se implemente la opciรณn de aรฑadir entradas como esta en ยซfavoritosยป de mi cuenta

         chinoloco dijo

      Totalmente de acuerdo, yo lo plantie, pero nada ๐Ÿ™‚
      Tambien estaria bueno, poder seguir, a determinados usuarios

      RabBa dijo

    buenisimo viejo, estoy usando manjaro desde hace unos dias y por estudios necesito instalar packet tracer de cisco pero solo tiene paquete .deb de la ultima version y el ke esta en AUR siempre me da error al momento de compilar, espero con estos pasos poder instalarlo ya que por fuerza he estado usando linux mint, mil gracias

      mitcoes dijo

    a ver si alguien se atreve a poner en AUR Multisystem

    depende de librerias deb que no estรกn en arch

    Pero si funciona su funciรณn es la de crear pendrives multi ISO con grub2 mejor que unetbootin que sรณlo hace una.

    De momento tengo una ISO ubuntu suya dentro que me permite aรฑadir imรกgenes si quiero arrancando desde ella en el propio USB

    pero si no se atreve nadie me guardo la entrada

      mitcoes dijo

    Perdรณn,ya existe multisystem , y yo pensando que no

         mitcoes dijo

      En multisystem …

      pero fatresize desde yaourt da problemas, y lo han puesto como opcional

      marcos dijo

    Genial ๐Ÿ˜€ aprobar con ยซPurrrยป un programa para renombrar archivos masivamente.

      abr4xas dijo

    Saludos,

    Actualemente en AUR estan eliminando los paquetes que no tengan la funcion package() como puedo saber que lineas colocar ahi? Es decir, yo tengo varios paquetes y lo hice de esta forma pero no se si esta bien https://github.com/abr4xas/Arch-pkgbuild/blob/master/%20django-admin-honeypot/PKGBUILD lo que hice realmente es pasar lo que estaba en build() a package() pero como dije, no se si esta bien… Me das tus comentarios y sugerencias?

    Gracias ๐Ÿ˜€

         Son Link dijo

      Dentro de build() irรญa la parte de compilaciรณn del programa y en package() la parte que genera el paquete.

      Por poner un ejemplo corto en build() irรญan ./configure, ./autogen.sh, cmake, make y en package() make install, etc

           abr4xas dijo

        Oye, muchas gracias… Ya voy a editar mis paquetes ๐Ÿ˜€

      Azazel dijo

    Gracias por la informaciรณn lo guardare en marcadores para referencias futuras.

      clerafel dijo

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

    busco y me dicen que instale el paquete deb2targz pero sale error al instalarlo desde la terminal, y pues no se si se pueda

         Ghermain dijo

      Me pasa igual; necesito instalar en Kademar que esta basada en Arch; un par de paquetes que solo consigo en .deb
      ยฟAlguien me puede colaborar?

           valdo dijo

        Si a lo que te refieres es a una falla en la instalaciรณn de deb2targz reciรฉn termino de instalarlo con la orden yaourt -S deb2targz . Eso sรญ, en ArchLinux.

      Free Cloud Storage dijo

    Post muy informativo. Gracias por compartir.

      Angry Birds dijo

    Buen post. Gracias por compartir esta informaciรณn รบtil.

      Apps for PC dijo

    Gracias por este รบtil puesto. Se va a ayudar mucho.

      jacob dijo

    hola, puedes dejar el script para la conversion y como emplearlo? es que asi por partes confunde un poco, ya tengo el deb que quiero convertir y se que es posible porque el google chrome de AUR es un deb pero no se como hacer ยซMAKEPKG SIยป con otro deb ๐Ÿ™