2012-09-02 27 views
6

Tôi có tiện ích dòng lệnh được gọi là Maid mà hiện tại tôi phân phối là a RubyGem. Tôi cũng muốn phân phối nó như là một gói .debto make it easier for Ubuntu users to install.Tôi làm cách nào để đóng gói ứng dụng Ruby cho Ubuntu, bao gồm cả phụ thuộc vào đá quý?

Ngay bây giờ, người dùng Ubuntu phải làm khá một chút bằng tay, nhất là đối với một người nào đó không quen thuộc với 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 

Lý tưởng nhất, tôi muốn có một lệnh duy nhất để cài đặt trên một cài đặt Ubuntu tươi:

sudo apt-get install maid 
maid version # example command 

Bộ công cụ gem2deb (gem2tgz, dh-make-ruby, v.v.) là gần như những gì tôi đang tìm kiếm. Nhưng theo mặc định gem2deb không gói bất kỳ phụ thuộc đá quý nào được yêu cầu. Maid rất đơn giản và chỉ phụ thuộc vào thor khi chạy. (Chỉnh sửa: khi Người giúp việc đã phát triển, và bây giờ có nhiều sự phụ thuộc hơn.) Nhưng không có sự phụ thuộc đó, không có gì hiệu quả.

Vì vậy, làm cách nào để gói ứng dụng Ruby này cho Ubuntu và cũng bao gồm các phụ thuộc đá quý của nó? Có bất kỳ công cụ nào khác mà tôi có thể sử dụng hoặc hướng dẫn/ví dụ tôi có thể làm theo không?

+0

Tôi đang làm điều gì đó tương tự, mặc dù không phức tạp như hầu gái. - https://launchpad.net/~jamesgifford/+archive/factero và https://github.com/jrgifford/ruby-debian-packaging – jrg

Trả lời

2

apt-getgem đều là giải pháp phụ thuộc, bạn chỉ có thể tạo gói meta phụ thuộc vào ruby1.9.1 (chính nó mang lại Rubygems và mọi thứ khác). Sau đó, trong tập lệnh sau khi cài đặt, chỉ cần thực hiện một sudo gem1.9.1 install maid.

Tôi không thể đặt ra toàn bộ quá trình tạo gói ở đây, nhưng có rất nhiều hướng dẫn tốt về nó trên web.

+0

Điều này có vẻ ít "tinh khiết" hơn tôi có thể thích, nhưng nó cũng có vẻ như giải pháp đơn giản nhất. Bạn có nghĩ rằng 'gem install' sẽ có tùy chọn' --version' không? –

+0

Iirc, gem install có tùy chọn -v làm điều đó. – jrg

+0

@ BenjaminOakes: Cảm ơn bạn đã sửa. – Linuxios

1

Sử dụng fpm bạn có thể (trong số những người khác) trực tiếp tạo deb từ đá quý. wiki có một ví dụ mở rộng. Ý chính của nó là gọi

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

Tôi đã đi qua 'fpm' trong nghiên cứu của tôi. Nó có vẻ như là một dự án tốt, nhưng tôi không chắc phải nghĩ gì về việc phải tạo/phân phối các gói như 'rubygem-thor-0.14.6.amd64.deb'. Tôi đã nhìn thấy một số dự án Ruby nhúng phụ thuộc của họ bên trong gói '.deb' của họ vì lý do đó, điều này cũng có vẻ có vấn đề. –

+1

Một thỏa hiệp tốt là tạo kho lưu trữ apt của riêng bạn và duy trì điều đó cho người dùng của bạn. Một người bạn đồng hành tốt với fpm là [freight] (https://github.com/rcrowley/freight/), cung cấp một số người trợ giúp dễ dàng để duy trì một kho lưu trữ như vậy. Điều đó nói rằng, bạn cũng có thể kết hợp các phụ thuộc của bạn với fpm, nhưng sẽ phải đối phó với chồng chéo gói tiềm năng. Đáng buồn thay, không có những thứ như bữa trưa miễn phí. –

+0

Tôi có thể làm điều đó với PPA. Tôi có thể dự đoán vấn đề với phụ thuộc nếu tôi muốn Maid ở trong Trung tâm Phần mềm Ubuntu. Bạn có một liên kết để biết thêm thông tin về "kết hợp phụ thuộc" với 'fpm'? Ngoài ra, đối với những gì nó có giá trị, tôi thấy rằng 'fpm' không thêm' ruby' như là một phụ thuộc trong tập tin điều khiển. Biết gì thêm? –

Các vấn đề liên quan