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.
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.
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 😀
32 comentarios, deja el tuyo
¿No es más sencillo usar checkinstall?
Checkinstall sirve para crear paquetes deb, rpm o para Slackware de manera mas sencilla.
Bien. A ver si me doy tiempo para poder así añadir Iceweasel al repo de slacky.eu
Que tiene de malo Firefox? :p
que no está en Debian :p
Eso no es a lo que exactamente me refería xD
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.
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.
Claro que puedes, previo pago XD
Claro que interesa… por lo menos a mí.
Ahora que estoy con Manjaro agradezco toda información posible.
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
Gracias, y otra vez gracias por que tu pregunta me dio la idea ^^
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 =)
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)
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
Totalmente de acuerdo, yo lo plantie, pero nada 🙂
Tambien estaria bueno, poder seguir, a determinados usuarios
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
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
Perdón,ya existe multisystem , y yo pensando que no
En multisystem …
pero fatresize desde yaourt da problemas, y lo han puesto como opcional
Genial 😀 aprobar con «Purrr» un programa para renombrar archivos masivamente.
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 😀
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
Oye, muchas gracias… Ya voy a editar mis paquetes 😀
Gracias por la información lo guardare en marcadores para referencias futuras.
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
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?
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.
Post muy informativo. Gracias por compartir.
Buen post. Gracias por compartir esta información útil.
Gracias por este útil puesto. Se va a ayudar mucho.
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 🙁