2012-09-02 17 views
6

Tengo una utilidad de línea de comandos llamada Maid que actualmente distribuyo como a RubyGem. También me gustaría distribuirlo como un paquete .debto make it easier for Ubuntu users to install.¿Cómo empaco una aplicación Ruby para Ubuntu, incluidas sus dependencias gem?

En este momento, los usuarios de Ubuntu tienen que hacer un poco de forma manual, especialmente para alguien no familiarizado con Ruby:

sudo apt-get install ruby 
sudo apt-get install rubygems 
# Make sure `ruby` and `gem` are in `$PATH` 
sudo gem install maid 
maid version # example command 

Idealmente, quiero un solo comando para instalar en una instalación nueva de Ubuntu:

sudo apt-get install maid 
maid version # example command 

El conjunto de herramientas (gem2debgem2tgz, dh-make-ruby, etc.) son casi lo que estoy buscando. Pero de forma predeterminada gem2deb no incluye ninguna de las dependencias de gemas que se requieren. Maid es realmente simple y solo depende de thor en tiempo de ejecución. (Editar: como Maid ha evolucionado, y ahora tiene más dependencias.) Pero sin esa dependencia, nada funciona.

Entonces, ¿cómo puedo empaquetar esta aplicación Ruby para Ubuntu y también incluir sus dependencias gem? ¿Hay alguna otra herramienta que pueda usar o tutoriales/ejemplos que pueda seguir?

+0

Estoy haciendo algo similar, aunque no tan complicado como la limpieza. - https://launchpad.net/~jamesgifford/+archive/factero y https://github.com/jrgifford/ruby-debian-packaging – jrg

Respuesta

2

Debido apt-get y gem son a la vez la dependencia de la resolución, sólo puede hacer un paquete de metadatos que depende de ruby1.9.1 (que a su vez trae en Rubygems y todo lo demás). Luego, en el script posterior a la instalación, simplemente haz un sudo gem1.9.1 install maid.

No puedo describir todo el proceso de hacer un paquete aquí, pero hay muchos buenos tutoriales en la web.

+0

Esto parece menos "puro" de lo que me gustaría, pero también parece que el la solución más simple. ¿Crees que 'gem install' debería tener una opción' --version'? –

+0

Iirc, gem install tiene una opción -v que hace eso. – jrg

+0

@BenjaminOakes: Gracias por la corrección. – Linuxios

1

Usando fpm puede (entre otros) crear directamente debuts desde gemas. El wiki tiene un amplio ejemplo. La esencia de esto es llamar al

cd /tmp 
fpm -s gem -t deb maid 
+0

Encontré 'fpm' en mi investigación. Parece un buen proyecto, pero no estoy seguro de qué pensar acerca de tener que crear/distribuir paquetes como 'rubygem-thor-0.14.6.amd64.deb'. He visto una serie de proyectos de Ruby incrustar sus dependencias dentro de su paquete '.deb' por esa razón, lo que también parece problemático. –

+1

Un buen compromiso es crear su propio repositorio apt y mantenerlo para sus usuarios. Un buen compañero de fpm es [carga] (https://github.com/rcrowley/freight/) que proporciona algunos ayudantes fáciles de usar para mantener dicho repositorio. Dicho esto, también puede incorporar sus dependencias con fpm, pero tendría que lidiar con posibles superposiciones de paquetes. Lamentablemente, no existe el almuerzo gratis. –

+0

Podría hacer eso con un PPA. Sin embargo, podría anticipar problemas con las dependencias si alguna vez quisiera que Maid estuviera en el Centro de Software de Ubuntu. ¿Tiene un enlace para obtener más información sobre "incorporación de dependencias" con 'fpm'? Además, por lo que vale, encontré que 'fpm' no agregó' ruby' como una dependencia en el archivo de control. ¿Sabes algo más? –

Cuestiones relacionadas