Como Convertir Un DEB En RPM Desde Mandriva

por | 19 abril, 2009

Hola, vamos a ver cómo convertir un programa empaquetado en formato Deb para Debian, Ubuntu o distros derivadas en Debian; a formato RPM para la diustribución linuxera Mandriva.

Lo primero a tener en cuenta es que lo haremos con la herramienta alien, así que sólo haremos esto para aquellos programas que no sean aplicaciones que formen parte importante del corazón del sistema operativo, léase kernels, entornos de escritorio, etc.

Lo primero que hemos de hacer es instalar las herramientas necesarias en Mandriva, que son:

alien, fakeroot, rpm, rpm-build, spec-helper, libtool, rpmlint

Una vez instalados pasamos ya a crear nuestro primer paquete, como ejemplo lo haremos con el paquete del programa Tucan, yo me lo bajé de Getdeb. Vale, os lo bajáis y lo guardáis en vuestra carpeta personal. Abrid terminal y escribid el siguiente comando:

fakeroot alien -r -g -c tucan*.deb

Utilizaremos fakeroot para no tener problemas de permisos, con la opción -r especificamos que queremos convertirlo a RPM, con la opción -g nos crea una carpeta con todos los ficheros del programa ya situados en los directorios correspondientes a como quedarán instalados en nuestro Mandriva, y con la opción -c le decimos que tenga en cuenta todos los scripts de pre y postinstalación que pueda contener el paquete deb. Más opciones las podéis obtener desde el man de alien.

Una vez ejecutada la orden anterior os pasarán dos cosas en vuestra carpeta personal. Se os habrá creado una carpeta llamada rpmbuild y otra carpeta con el nombre del paquete que estéis convirtiendo.

La carpeta rpmbuild es una carpeta que contiene todos los subdirectorios pertinentes para poder construir paquetes rpm desde Mandriva, esta carpeta no la borréis, porque así ya la tenéis para otros paquetes que queráis hacer.

En la carpeta que se ha creado de nuestro programa, en nuestro ejemplo se llama tucan-0.3.7-2, veréis que dentro hay un fichero con extensión .spec, y otra subcarpeta. Pues bien, el fichero spec lo cortáis y lo pegáis dentro del directorio rpmbuild en una carpeta que veréis que se llama SPECS. Ahora coged la carpeta, en nuestro caso tucan-o.3.7-2, y os la lleváis dentro del directorio rpmbuild a una carpeta que se llama BUILDROOT, si no la tenéis creadla (en mayúsculas). Vale, ya casi está.

Nos faltan sólo dos pasos, el primero es editar el fichero spec, abridlo con un editor de textos, por ejemplo Gedit o Kate y vamos a añadir unas pocas cosas. En la línea que pone Release la podéis editar así:

Release: %mkrel 2

Ahora añadiremos una línea al  fichero para decirle cuáles son las dependencias del programa, para Tucan la línea ha quedado de la siguiente forma:

Requires: python >= 2.6, libpython2.6, pygtk2.0, python-imaging, python-imaging-devel, tesseract, tesseract-eng, tesseract-spa, librsvg, librsvg2_2

Ya está, no toquéis nada más, guardad los cambios y cerrad. Para saber cuáles son las dependencias del paquete podéis hacer lo siguiente: descomprimid el paquete deb que os hayáis bajado del programa, acceded a la carpeta recién descomprimida, descomprimid el comprimido llamado control.tar.gz, de la carpeta que se os descomprimirá abrid el fichero control, y en dicho fichero en las secciones Depends, Recommends veréis las dependencias. No las apuntéis tal cual en vuestro fichero spec porque normalmente no se llaman igual en Mandriva que en Debian/Ubuntu las dependencias, pero podéis buscarlas en el centro de control de instalación Drake de vuestro Mandriva. Esta es la parte más delicada del proceso, pero con un poco de práctica se le coge el tranquillo y sale fácil.

Os dejo como guía el fichero spec de tucan tal cual me quedó a mi:

  1. Buildroot: /home/tobal/tucan-0.3.7
  2. Name: tucan
  3. Version: 0.3.7
  4. Release: %mkrel 2
  5. Summary: Tucan is an application fro automatic management of downloads from hosting sites.
  6. License: see /usr/share/doc/tucan/copyright
  7. Group: Converted/Networking
  8. Requires: python >= 2.6, libpython2.6, pygtk2.0, python-imaging, python-imaging-devel, tesseract, tesseract-eng, tesseract-spa, librsvg, librsvg2_2
  9.  
  10. %define _rpmdir ../
  11. %define _rpmfilename %%{NAME}-%%{VERSION}-%%{RELEASE}.%%{ARCH}.rpm
  12. %define _unpackaged_files_terminate_build 0
  13.  
  14. %description
  15. Tucan is a free and open source application designed for automatic management of downloads and uploads at hosting sites like:
  16.  
  17. - http://rapidshare.com/
  18. - http://megaupload.com/
  19. - http://gigasize.com/
  20. - (...)
  21.  
  22.  
  23. (Converted from a deb package by alien version 8.64.)
  24.  
  25. %files
  26. %dir "/"
  27. %dir "/usr/"
  28. %dir "/usr/share/"
  29. %dir "/usr/share/applications/"
  30. "/usr/share/applications/tucan.desktop"
  31. %dir "/usr/share/doc/"
  32. %dir "/usr/share/doc/tucan/"
  33. "/usr/share/doc/tucan/README.es.gz"
  34. "/usr/share/doc/tucan/TODO"
  35. "/usr/share/doc/tucan/CHANGELOG"
  36. "/usr/share/doc/tucan/README.gz"
  37. "/usr/share/doc/tucan/changelog.gz"
  38. "/usr/share/doc/tucan/changelog.Debian.gz"
  39. "/usr/share/doc/tucan/copyright"
  40. %dir "/usr/share/man/"
  41. %dir "/usr/share/man/man1/"
  42. "/usr/share/man/man1/tucan.1.gz"
  43. %dir "/usr/share/tucan/"
  44. "/usr/share/tucan/config.py"
  45. "/usr/share/tucan/message.py"
  46. %dir "/usr/share/tucan/i18n/"
  47. %dir "/usr/share/tucan/i18n/es/"
  48. %dir "/usr/share/tucan/i18n/es/LC_MESSAGES/"
  49. "/usr/share/tucan/i18n/es/LC_MESSAGES/tucan.mo"
  50. "/usr/share/tucan/i18n/es/es.po"
  51. %dir "/usr/share/tucan/i18n/pl/"
  52. %dir "/usr/share/tucan/i18n/pl/LC_MESSAGES/"
  53. "/usr/share/tucan/i18n/pl/LC_MESSAGES/tucan.mo"
  54. "/usr/share/tucan/i18n/pl/pl.po"
  55. %dir "/usr/share/tucan/i18n/it/"
  56. %dir "/usr/share/tucan/i18n/it/LC_MESSAGES/"
  57. "/usr/share/tucan/i18n/it/LC_MESSAGES/tucan.mo"
  58. "/usr/share/tucan/i18n/it/it.po"
  59. "/usr/share/tucan/i18n/tucan.pot"
  60. %dir "/usr/share/tucan/i18n/de/"
  61. %dir "/usr/share/tucan/i18n/de/LC_MESSAGES/"
  62. "/usr/share/tucan/i18n/de/LC_MESSAGES/tucan.mo"
  63. "/usr/share/tucan/i18n/de/de.po"
  64. %dir "/usr/share/tucan/i18n/en/"
  65. %dir "/usr/share/tucan/i18n/en/LC_MESSAGES/"
  66. "/usr/share/tucan/i18n/en/LC_MESSAGES/tucan.mo"
  67. "/usr/share/tucan/i18n/en/en.po"
  68. %dir "/usr/share/tucan/default_plugins/"
  69. %dir "/usr/share/tucan/default_plugins/4shared/"
  70. "/usr/share/tucan/default_plugins/4shared/4shared.png"
  71. "/usr/share/tucan/default_plugins/4shared/__init__.py"
  72. "/usr/share/tucan/default_plugins/4shared/anonymous_download.py"
  73. "/usr/share/tucan/default_plugins/4shared/service.conf"
  74. "/usr/share/tucan/default_plugins/4shared/parsers.py"
  75. %dir "/usr/share/tucan/default_plugins/rapidshare/"
  76. "/usr/share/tucan/default_plugins/rapidshare/__init__.py"
  77. "/usr/share/tucan/default_plugins/rapidshare/anonymous_download.py"
  78. "/usr/share/tucan/default_plugins/rapidshare/check_links.py"
  79. "/usr/share/tucan/default_plugins/rapidshare/premium_download.py"
  80. "/usr/share/tucan/default_plugins/rapidshare/rapidshare.png"
  81. "/usr/share/tucan/default_plugins/rapidshare/service.conf"
  82. "/usr/share/tucan/default_plugins/rapidshare/premium_cookie.py"
  83. %dir "/usr/share/tucan/default_plugins/sendspace/"
  84. "/usr/share/tucan/default_plugins/sendspace/__init__.py"
  85. "/usr/share/tucan/default_plugins/sendspace/sendspace.png"
  86. "/usr/share/tucan/default_plugins/sendspace/anonymous_download.py"
  87. "/usr/share/tucan/default_plugins/sendspace/service.conf"
  88. "/usr/share/tucan/default_plugins/sendspace/parsers.py"
  89. %dir "/usr/share/tucan/default_plugins/gigasize/"
  90. "/usr/share/tucan/default_plugins/gigasize/__init__.py"
  91. "/usr/share/tucan/default_plugins/gigasize/anonymous_download.py"
  92. "/usr/share/tucan/default_plugins/gigasize/check_links.py"
  93. "/usr/share/tucan/default_plugins/gigasize/service.conf"
  94. "/usr/share/tucan/default_plugins/gigasize/gigasize.png"
  95. %dir "/usr/share/tucan/default_plugins/mediafire/"
  96. "/usr/share/tucan/default_plugins/mediafire/mediafire.png"
  97. "/usr/share/tucan/default_plugins/mediafire/__init__.py"
  98. "/usr/share/tucan/default_plugins/mediafire/anonymous_download.py"
  99. "/usr/share/tucan/default_plugins/mediafire/service.conf"
  100. "/usr/share/tucan/default_plugins/mediafire/parsers.py"
  101. %dir "/usr/share/tucan/default_plugins/megaupload/"
  102. "/usr/share/tucan/default_plugins/megaupload/premium_parser.py"
  103. "/usr/share/tucan/default_plugins/megaupload/megaupload_captcha.py"
  104. "/usr/share/tucan/default_plugins/megaupload/__init__.py"
  105. "/usr/share/tucan/default_plugins/megaupload/anonymous_download.py"
  106. "/usr/share/tucan/default_plugins/megaupload/premium_download.py"
  107. "/usr/share/tucan/default_plugins/megaupload/megaupload.png"
  108. "/usr/share/tucan/default_plugins/megaupload/service.conf"
  109. "/usr/share/tucan/default_plugins/megaupload/captcha.py"
  110. "/usr/share/tucan/default_plugins/megaupload/premium_cookie.py"
  111. "/usr/share/tucan/downloader.py"
  112. "/usr/share/tucan/advanced_packages.py"
  113. "/usr/share/tucan/input_links.py"
  114. %dir "/usr/share/tucan/media/"
  115. "/usr/share/tucan/media/software-update-available.svg"
  116. "/usr/share/tucan/media/preferences-system.svg"
  117. "/usr/share/tucan/media/media-playback-start.svg"
  118. "/usr/share/tucan/media/document-save.svg"
  119. "/usr/share/tucan/media/media-playback-stop.svg"
  120. "/usr/share/tucan/media/tucan.svg"
  121. "/usr/share/tucan/media/system-users.svg"
  122. "/usr/share/tucan/media/package-x-generic.svg"
  123. "/usr/share/tucan/media/contact-new.svg"
  124. "/usr/share/tucan/media/preferences-desktop.svg"
  125. "/usr/share/tucan/media/preferences-desktop-locale.svg"
  126. "/usr/share/tucan/media/system-software-update.svg"
  127. "/usr/share/tucan/media/go-up.svg"
  128. "/usr/share/tucan/media/edit-delete.svg"
  129. "/usr/share/tucan/media/image-missing.svg"
  130. "/usr/share/tucan/media/application-x-executable.svg"
  131. "/usr/share/tucan/media/user-home.svg"
  132. "/usr/share/tucan/media/applications-system.svg"
  133. "/usr/share/tucan/media/software-update-urgent.svg"
  134. "/usr/share/tucan/media/network-error.svg"
  135. "/usr/share/tucan/media/go-down.svg"
  136. "/usr/share/tucan/cons.py"
  137. "/usr/share/tucan/TODO"
  138. "/usr/share/tucan/download_plugin.py"
  139. "/usr/share/tucan/update_manager.py"
  140. "/usr/share/tucan/accounts.py"
  141. "/usr/share/tucan/tucan.py"
  142. "/usr/share/tucan/file_chooser.py"
  143. "/usr/share/tucan/tesseract.py"
  144. "/usr/share/tucan/CHANGELOG"
  145. "/usr/share/tucan/sessions.py"
  146. "/usr/share/tucan/toolbar.py"
  147. "/usr/share/tucan/download_manager.py"
  148. "/usr/share/tucan/service_config.py"
  149. "/usr/share/tucan/log_view.py"
  150. "/usr/share/tucan/service_preferences.py"
  151. "/usr/share/tucan/gui.py"
  152. "/usr/share/tucan/uploader.py"
  153. "/usr/share/tucan/service_update.py"
  154. "/usr/share/tucan/README"
  155. "/usr/share/tucan/about.py"
  156. "/usr/share/tucan/preferences.py"
  157. "/usr/share/tucan/statusbar.py"
  158. "/usr/share/tucan/slots.py"
  159. "/usr/share/tucan/tree.py"
  160. "/usr/share/tucan/LICENSE"
  161. "/usr/share/tucan/README.es"
  162. "/usr/share/tucan/menu_bar.py"
  163. "/usr/share/tucan/input_files.py"
  164. "/usr/share/tucan/url_open.py"
  165. "/usr/share/tucan/tray_icon.py"
  166. "/usr/share/tucan/session.py"
  167. "/usr/share/tucan/service_manager.py"
  168. %dir "/usr/share/pixmaps/"
  169. "/usr/share/pixmaps/tucan.svg"
  170. %dir "/usr/bin/"
  171. "/usr/bin/tucan"

Bueno, bueno… y ahora el paso final, desde la terminal os situais en la ruta /home/tu_usuario/rpmbuild/SPECS y proceded a la construcción del paquete con la siguiente instrucción:

rpmbuild -ba tucan.spec

Si sólo queréis que sirva para 32 bits, como Tucan sirve para todas las plataformas yo he añadido la opción noarch a la instrucción anterior,  así:

rpmbuild -ba –target noarch tucan.spec

Al ejecutarlo seguro que os salen mogollón de líneas con un mensaje parecido a éste:

Archivo no encontrado: /home/tobal/rpm/BUILDROOT/tucan-0.3.7-2mdv2009.1.noarch/usr/bin

No pasa nada, sólo hemos de fijarnos en el trozo que pone tucan-0.3.7-2mdv2009.1.noarch, ir a la carpeta BUILDROOT y cambiar el nombre de la carpeta que habíamos metido con anterioridad por el que toca, en nuestro caso es: tucan-0.3.7-2mdv2009.1.noarch

Volvemos a ejecutar la orden:

rpmbuild -ba –target noarch tucan.spec

Y si no nos hemos equivocado encontraremos nuestro paquete rpm en la carpeta rpmbuild, además en la carpeta SRPMS encontraremos un paquete rpm con las fuentes del programa. Instalamos y si todo ha ido bien ya lo podéis compartir con la peña

La verdad es que no es complicado de hacer, cuesta más escribir cómo se hace que el proceso en sí. Para creación de paquetes RPM podéis encontrar más información en este mismo blog en la sección de Mandriva->Crear RPMS.

Saludos

Un pensamiento en “Como Convertir Un DEB En RPM Desde Mandriva

Los comentarios están cerrados.