2012-09-02 5 views
6

Ich habe ein Befehlszeilenprogramm namens Maid, die ich zur Zeit als a RubyGem verteilen. Ich möchte es auch als .deb Paket to make it easier for Ubuntu users to install verteilen.Wie verpacke ich eine Ruby-Anwendung für Ubuntu, einschließlich ihrer Edelstein-Abhängigkeiten?

Im Moment haben Ubuntu-Anwender, vor allem für Ruby ungewohnt jemand manuell ziemlich viel zu tun:

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 

Idealerweise möchte ich ein einzelner Befehl auf einer frischen Ubuntu-Installation zu installieren:

sudo apt-get install maid 
maid version # example command 

Die Suite von gem2deb Tools (gem2tgz, dh-make-ruby, etc.) sind fast, was ich suche. Aber standardmäßig gem2deb nicht einen der gem Abhängigkeiten verpacken, die erforderlich sind. Maid ist wirklich einfach und nur zur Laufzeit von thor abhängig. (Edit: als Maid hat sich weiterentwickelt, und hat jetzt mehr Abhängigkeiten.) Aber ohne diese Abhängigkeit funktioniert nichts. So

, wie verpacken ich diese Anwendung Rubin für Ubuntu und auch seine Juwel Abhängigkeiten? Gibt es noch andere Tools, die ich verwenden könnte, oder Tutorials/Beispiele, denen ich folgen könnte?

+0

Ich mache etwas ähnliches, wenn auch nicht so kompliziert wie Magd. - https://launchpad.net/~jamesgifford/+archive/factero und https://github.com/jrgifford/ruby-debian-packaging – jrg

Antwort

2

Da apt-get und gem beide Abhängigkeitsauflösende sind, können Sie einfach ein Meta-Paket machen, das von ruby1.9.1 abhängt (was wiederum Rubygems und alles andere mit sich bringt). Führen Sie dann im Nachinstallations-Skript einfach eine sudo gem1.9.1 install maid aus.

Ich kann nicht legen den gesamten Prozess aus einem Paket hier machen, aber es gibt viele gute Tutorials auf sie rund um das Web.

+0

Dies scheint weniger „rein“, als ich es vielleicht gefallen, aber es scheint auch, wie die einfachste Lösung. Denkst du, dass "Gem Install" eine Option "--version" verwenden sollte? –

+0

Iirc, Gem Install hat eine Option -v, die das tut. – jrg

+0

@BenjaminOakes: Danke für die Korrektur. – Linuxios

1

Mit fpm Sie (unter anderem) können direkt Debs aus Edelsteinen erstellen. Die wiki hat ein umfangreiches Beispiel. Der Kern davon ist zu rufen

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

Ich stieß auf 'fpm' in meiner Forschung. Es scheint ein gutes Projekt zu sein, aber ich bin nicht sicher, was ich darüber denken soll, Pakete wie 'rubygem-thor-0.14.6.amd64.deb' zu erstellen/zu verteilen. Ich habe eine Reihe von Ruby-Projekten gesehen, die ihre Abhängigkeiten in ihr '.deb'-Paket einbetten, was ebenfalls problematisch erscheint. –

+1

Ein guter Kompromiss ist es, ein eigenes Apt-Repository zu erstellen und das für Ihre Benutzer zu verwalten. Ein guter Begleiter zu fpm ist [Fracht] (https://github.com/rcrowley/freight/), das einige einfach zu bedienende Helfer für die Pflege eines solchen Repositories bietet. Das heißt, Sie können auch Ihre Abhängigkeiten mit fpm integrieren, müssen aber mit möglichen Paketüberschneidungen umgehen. Leider gibt es kein kostenloses Mittagessen. –

+0

könnte ich das mit einem PPA tun. Ich könnte Probleme mit Abhängigkeiten erwarten, wenn ich möchte, dass Maid im Ubuntu Software Center ist. Haben Sie einen Link für mehr Informationen über "Abhängigkeiten" mit 'fpm'? Auch, was es wert ist, fand ich, dass 'fpm' nicht' ruby' als Abhängigkeit in der Kontrolldatei hinzugefügt hat. Weißt du noch etwas? –