2009-10-05 16 views
21

Tôi vừa hoàn thành việc chuyển một ứng dụng từ Windows sang Linux.
Tôi phải tạo trình cài đặt ứng dụng.
Ứng dụng này là không phải nguồn mở => Tôi nên phân phối tệp nhị phân của ứng dụng (tệp thi hành, cặp .so tệp, tệp trợ giúp và hình ảnh).Cách tốt nhất để phân phối ứng dụng nhị phân cho Linux là gì?

Tôi đã tìm thấy một số phương pháp để thực hiện:
- RPM and DEB packages;
- installer in .sh files;
- Autopackage.

Tôi không thích phương pháp đầu tiên (gói RPM và DEB) vì tôi không muốn sử dụng các gói khác nhau cho các bản phân phối Linux khác nhau.

cách tốt nhất để phân phối ứng dụng nhị phân cho Linux là gì?

Trả lời

18

Đã trải qua một vài lần với các sản phẩm thương mại, tôi nghĩ câu trả lời hay nhất là sử dụng trình cài đặt gốc cho mỗi nền tảng được hỗ trợ. Bất cứ điều gì khác tạo ra một trải nghiệm khó chịu cho người dùng cuối, và trong thực tế, bạn phải kiểm tra trên mọi nền tảng bạn muốn hỗ trợ, vì vậy nó không thực sự là gánh nặng đáng kể để duy trì các gói cho mỗi người dùng. Ý tưởng rằng bạn có thể tạo một tệp nhị phân có thể "chỉ hoạt động" trên mọi nền tảng ngoài đó, bao gồm cả một số bạn chưa bao giờ nghe nói đến, thực sự không hoạt động tốt.

Đề xuất của tôi là bạn chọn một hoặc hai nền tảng để hỗ trợ ban đầu (Red Hat và Ubuntu sẽ là đề xuất của tôi) và sau đó cho phép người dùng thúc đẩy việc tạo các gói cài đặt bổ sung. Có lẽ làm cho nó biết rằng bạn sẵn sàng hỗ trợ nền tảng bổ sung, với một khoản phí khiêm tốn bao gồm thời gian và công sức của bạn trong việc đóng gói và thử nghiệm trên nền tảng đó. Nếu một nền tảng chứng minh là rất khác nhau, bạn có thể cần phải tính phí nhiều hơn cho hỗ trợ liên tục.

Ồ, và tôi không thể nhấn mạnh giá trị của các máy ảo cho các tình huống như thế này. Bạn cần xây dựng các máy ảo cho mỗi nền tảng mà bạn hỗ trợ, và có lẽ nhiều máy ảo trên mỗi nền tảng để dễ dàng kiểm tra các cấu hình khác nhau.

2

Không có cách tốt nhất (nói chung). tar.gz các tệp nhị phân, sẽ hoạt động.

+1

+1, không có gì phổ biến trong thế giới Linux – vava

+0

Điều gì về việc tạo lối tắt cho ứng dụng có thể thực thi? – Dmitriy

+0

Điều đó cũng phụ thuộc. cho môi trường máy tính để bàn nào? (mặc dù những người ở freedesktop.org nên có một tiêu chuẩn cho điều đó) –

0

Tôi cũng đã xem xét điều này tại nơi làm việc và tôi phải đồng ý rằng thực sự không phải là "cách tốt nhất". Nếu ứng dụng của bạn đang được phân phối dưới dạng nguồn thì tôi sẽ đi với các phương thức make/configure được đóng gói trong một tar.gz. Điều đó có vẻ khá phổ biến trong thế giới Linux.

Một cách hay để có ý tưởng về việc cần làm là xem xét tổ chức lớn hơn và xem cách chúng phân phối tệp nhị phân của chúng.

3

Có rất nhiều câu trả lời hay (bao gồm tôi :)) here. Mặc dù đó là nhiều hơn về khả năng tương thích nhị phân (mà bạn cần phải lo lắng về).

Đối với trình cài đặt, tôi khuyên bạn nên sử dụng autopackage (chúng tôi đã phát hành thành công một số phiên bản phần mềm của chúng tôi), họ đã làm phần "installer.sh" rồi (ví dụ tích hợp máy tính để bàn).

Bạn phải cẩn thận và kiểm tra các tình huống và nội dung nâng cấp của mình, tùy thuộc vào cấu trúc gói phức tạp của bạn, nhưng nó hoàn toàn gọn gàng. Tôi đã sửa một số lỗi với việc xử lý phụ thuộc trong phiên bản 1.2.6, vì vậy nó sẽ ổn.

0

Có thể cài đặt RPM trên Debian và APT trên RHEL.

Nếu bạn định liên kết tĩnh chương trình này hoặc chỉ liên kết động với các thư viện mà bạn sẽ phân phối trong gói, thì việc phân phối nó không quan trọng lắm. Cách đơn giản nhất là tar.gz và nó sẽ hoạt động.

OTOH nếu nó được liên kết động với thư viện hệ thống, và đặc biệt nếu nó có phụ thuộc vào thư viện động sẽ được chia sẻ với ứng dụng khác của khách hàng, thì bạn cần thực hiện RPM, APT hoặc cả hai.

+0

A .deb, không phải là "APT" (viết tắt của A Package Tool) –

+0

Ok. Các mục nhập Wikipedia chắc chắn là sai, sau đó. "Công cụ đóng gói nâng cao" có phải là tên chính thức nhưng không bao giờ được sử dụng không? http://en.wikipedia.org/wiki/Advanced_Packaging_Tool – DigitalRoss

+0

Tệ của tôi, đó thực sự là "Công cụ đóng gói nâng cao" (nên đã kiểm tra điều đó). Tuy nhiên, APT không phải là ** một định dạng đóng gói, nó là một hệ thống quản lý gói để làm việc với các gói '.deb' của Debian. –

2

Tôi cho bạn biết khả năng bổ sung, mặc dù tôi không biết trạng thái của nó: Loki installer. Loki là một công ty làm trò chơi điện tử chuyển sang Linux. Nó đã đi xuống vào năm 2002, nhưng trình cài đặt có sẵn.

InstallShield is also available for linux. Không có ý tưởng về tình trạng mặc dù.

Mặc dù nhiều người đang đề xuất bạn đi với tar.gz, xin đừng. Tôi cho rằng bạn muốn cung cấp trải nghiệm thú vị cho quy trình cài đặt cho người dùng của mình. Một tar.gz là một trong những mức độ thấp nhất, chất lượng thấp, các lựa chọn khả năng sử dụng thấp mà bạn có thể làm. Nó hoạt động ở khắp mọi nơi bởi vì nó về cơ bản không có gì, như bạn biết.

Những người ở freedesktop.org và LSB khá rõ ràng về vị trí đặt nội dung. Những gì bạn cần là một chương trình thân thiện để làm điều đó. Autopackage imho có số lượng (tôi thích nó), nhưng mặc dù tuổi của nó, tôi đã không nhìn thấy một chương trình duy nhất ra có phân phối như là một autopackage.

Đánh giá cẩn thận, nhưng đừng bỏ lỡ cơ hội trở thành một phần của động lượng có lợi cho nó, chỉ vì nó không phổ biến. Nếu nó hoạt động cho bạn, và nó hoạt động cho người dùng của bạn, mọi thứ khác không quan trọng.

+0

InstallBuilder là một thay thế cập nhật cho InstallAnywhere http://installbuilder.bitrock.com –

+0

Yêu thích của tôi và rất đúng: "Nó hoạt động ở khắp mọi nơi vì nó về cơ bản không có gì" – aliopi

2

Bạn có thể muốn thử InstallBuilder. Nó là crossplatform (chạy trên Windows, Linux, Mac OS X, Solaris và gần như bất kỳ nền tảng Unix khác ra khỏi đó). Nó được sử dụng bởi Intel, Motorola, GitHub, MySQL, Nokia/Trolltech và many other companies vì vậy bạn sẽ ở trong công ty tốt :) Ngoài trình cài đặt nhị phân, nó cũng có thể tạo các gói RPM và DEB phân phối chéo.

InstallBuilder là thương mại, nhưng chúng tôi cung cấp giấy phép miễn phí cho các chương trình nguồn mở và giảm giá rất đáng kể cho mISV hoặc nhà phát triển solo, chỉ cần thả chúng tôi một dòng.

2

Tạo một kho lưu trữ .tar.bz2 với nhị phân, sau đó xuất bản một thức ăn cho nó, như thế này:

<?xml version="1.0" ?> 
<interface uri="http://mysite/myprog.xml" 
      xmlns="http://zero-install.sourceforge.net/2004/injector/interface"> 
    <name>MyProgram</name> 
    <summary>what it does</summary> 
    <description>A longer description goes here.</description> 

    <implementation main='bin/myprog' 
        id="sha1new=THEDIGEST" 
        version='1.0'> 
    <archive href='http://mysite/myprogram-1.0.tar.bz2' 
      size='10000'/> 
    </implementation> 
</interface> 

Đăng nó với chìa khóa GPG của bạn. Bạn có thể sử dụng các công cụ trên 0install.net để tính toán thông báo và thêm chữ ký GPG cho bạn theo đúng định dạng.

Sau đó, hãy đặt nó trên trang web của bạn tại địa chỉ trong thuộc tính uri. sau đó bất kỳ người sử dụng trên hầu hết các bản phân phối Linux (ví dụ Ubuntu, Fedora, Debian, Gentoo, ArchLinux, vv) có thể cài đặt và chạy chương trình của bạn với:

0launch http://mysite/myprog.xml 

hệ thống của họ cũng sẽ kiểm tra các bản cập nhật theo định kỳ. Có nhiều GUI khác nhau cho các môi trường máy tính để bàn khác nhau, nhưng dòng lệnh sẽ hoạt động ở mọi nơi.

Ngoài ra, hãy xem một số trong số existing feeds để lấy cảm hứng.