2012-09-02 12 views
6

Mam narzędzie wiersza polecenia o nazwie Maid, które obecnie dystrybuuję jako a RubyGem. Chciałbym również rozpowszechniać go jako pakiet .debto make it easier for Ubuntu users to install.Jak mogę spakować aplikację Ruby dla Ubuntu, w tym jej zależności gem?

Teraz użytkownicy Ubuntu trzeba zrobić trochę ręcznie, zwłaszcza dla kogoś nieznanego z 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 

Idealnie chcę jedno polecenie, aby zainstalować na świeżej instalacji Ubuntu:

sudo apt-get install maid 
maid version # example command 

Zestaw narzędzi gem2deb (gem2tgz, dh-make-ruby, itp.) To prawie czego szukam. Ale domyślnie gem2deb nie pakuje żadnych wymaganych zależności gem. Maid jest naprawdę prosty i zależy tylko od wersji thor w czasie wykonywania. (Edytuj:, gdy Maid ewoluowała, a teraz ma więcej zależności.) Ale bez tej zależności nic nie działa.

A więc, w jaki sposób mogę spakować tę aplikację Ruby dla Ubuntu, a także uwzględnić zależności gem? Czy są jakieś inne narzędzia, których mógłbym użyć lub samouczki/przykłady, które mógłbym zastosować?

+0

robię coś podobnego, choć nie tak skomplikowane, jak służąca. - https://launchpad.net/~jamesgifford/+archive/factero i https://github.com/jrgifford/ruby-debian-packaging – jrg

Odpowiedz

2

Ponieważ zarówno apt-get, jak i gem są rozwiązaniami zależności, można po prostu utworzyć pakiet meta, który zależy od ruby1.9.1 (który sam wnosi Rubygem i wszystko inne). Następnie w skrypcie poinstalacyjnym po prostu wykonaj sudo gem1.9.1 install maid.

Nie mogę przedstawić całego procesu tworzenia pakietu tutaj, ale w Internecie jest wiele dobrych samouczków.

+0

Wydaje się, że jest to mniej "czysty" niż bym chciał, ale wydaje się również, że najprostsze rozwiązanie. Czy myślisz, że 'instalacja klejnotów' powinna mieć opcję' --version'? –

+0

Iirc, instalacja gem ma opcję -v, która to robi. – jrg

+0

@BenjaminOakes: Dzięki za poprawkę. – Linuxios

1

Używając fpm możesz (między innymi) bezpośrednio tworzyć deby z klejnotów. wiki ma szeroki przykład. Istotą jest to, aby zadzwonić

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

Natrafiłem na "fpm" w moich badaniach. Wygląda to na dobry projekt, ale nie jestem pewien, co myśleć o konieczności tworzenia/dystrybucji pakietów takich jak 'rubygem-thor-0.14.6.amd64.deb'. Widziałem wiele projektów Ruby osadzających swoje zależności w pakiecie '.deb' z tego powodu, co również wydaje się problematyczne. –

+1

Dobry kompromis to stworzenie własnego repozytorium apt i utrzymanie go dla użytkowników. Dobrym towarzyszem do fpm jest [fracht] (https://github.com/rcrowley/freight/), który zapewnia kilka łatwych w użyciu pomocników do obsługi takiego repozytorium. Powiedział, że możesz również włączyć swoje zależności za pomocą fpm, ale musiałbyś poradzić sobie z potencjalnym nakładaniem się pakietów. Niestety, nie ma czegoś takiego jak darmowy lunch. –

+0

Mogę to zrobić z PPA. Mogę przewidywać problemy z zależnościami, jeśli chcę, żeby Maid była w Centrum Oprogramowania Ubuntu. Czy masz łącze, aby uzyskać więcej informacji o "włączaniu zależności" za pomocą 'fpm'? Ponadto, dla tego, co jest warte, stwierdziłem, że 'fpm' nie dodaje' ruby' jako zależności w pliku kontrolnym. Wiesz coś dalej? –