2010-03-10 43 views
32

Tôi đang phát triển một ứng dụng đa nền tảng nhỏ và tôi cần một số lời khuyên về cách cài đặt nó trong Linux. Tôi đang sử dụng InnoSetup trong Windows và một gói ứng dụng trong OSX nhưng tôi không có ý tưởng làm thế nào để cài đặt ứng dụng của tôi trong Linux, có bất kỳ trình tạo trình cài đặt nguồn mở nào cho Linux không?Tạo trình cài đặt cho ứng dụng Linux

Cảm ơn.

+1

Chỉ vì mục đích tò mò, hãy trả lời nếu bạn muốn, nó sẽ làm gì? nó được viết bằng cái gì? =) – Marcelo

Trả lời

16

Chuẩn tất cả các trình cài đặt phổ biến có sẵn trên hệ thống * nix (và không chỉ) là Autotools.

# the user will install like so: 
./configure --with-stuff 
make # if package is from source 
make install 

Bạn cũng có thể cung cấp các trình cài đặt cụ thể phân phối như một RPM trên RedHat hoặc CentOS hoặc deb cho Debian, Ubuntu, mặc dù một khi bạn có Makefile phun nước bọt bởi Autotools, làm cho số này là một làn gió.

# the user will install like so: 
yum install your-package-1.0.rpm # on redhat or 
apt-get install your-package-1.0.deb # on debian 

Autotools còn được gọi là "GNU xây dựng hệ thống" là một chút đáng sợ trên cái nhìn đầu tiên, và người dùng mới là bối rối khi gặp những thứ như hệ thống vĩ mô m4 cổ & đồng. nhưng nota bene đây là cách hầu hết mọi người làm điều đó và khá dễ dàng một khi bạn nhận được hang của nó.

Learning resources

+1

Chỉ cần viết một thiết lập 'autotools' sạch, và để cho các nhân viên phân phối tìm ra phần còn lại cho nhu cầu của họ trong thời gian này. –

+3

+1 cho autotools; nó chỉ mất một chút chuyên môn để sử dụng autotools. Đây là một liên kết: http://www.lrde.epita.fr/~adl/dl/autotools.pdf – rmk

+0

@rmk Tôi muốn đưa pdf đó vào câu trả lời của tôi nhưng không thể tìm thấy nó. – clyfe

1

Viết một makefile thực sự mạnh mẽ! hoặc sử dụng CMake

2

Nếu có thể, hãy chọn không yêu cầu trình cài đặt nhưng sử dụng phương pháp trích xuất và chạy đơn giản. Điều này sẽ cho phép người dùng đặt (các) tệp bất cứ nơi nào họ muốn và chạy nó.

Tuy nhiên, bạn không có lựa chọn khác, chẳng hạn như:

  1. Sử dụng autoconf,
  2. Sử dụng CMake,
  3. Sử dụng một trình cài đặt Java như IZPack
  4. vv
2

Đưa xem InstallJammer. Bạn có thể viết một dự án duy nhất cho cả trình cài đặt Windows và Linux của mình và hỗ trợ Mac sắp ra mắt.

+0

Tôi đang xem InstallJammer tại thời điểm này, có vẻ rất hứa hẹn cho đến nay! Cảm ơn. – JWood

+1

Thật không may là dự án đã bị ngừng hoạt động 'Phát triển tích cực của InstallJammer đã bị ngừng hoạt động. Các nguồn có sẵn cho tất cả các phiên bản và sẽ luôn luôn như vậy, nhưng những nỗ lực của bạn có thể được chi tiêu tốt hơn trên một trình cài đặt đang hoạt động trong sự phát triển của nó. –

1

Tôi bắt đầu viết unistall cho các tình huống khi bạn phải cài đặt các gói nhị phân trên một loạt các bản phân phối.

Nó cố gắng để làm một vài điều:

  • Nhận ra người quản lý loại hệ điều hành và gói, cho phép bạn sử dụng trình quản lý gói hệ thống để kéo trong bất kỳ phụ thuộc mà chương trình của bạn có thể yêu cầu.Ví dụ, nó sẽ biết sử dụng apt-get install libncurses5-dev nếu sử dụng debian/ubuntu, yum install libncurses-devel nếu sử dụng RHEL/Fedora/CentOS
  • Hiểu cơ chế được sử dụng để cập nhật init, nếu cần
  • Tạo một un-installer an toàn
  • làm việc trên bất kỳ shell (bash, dấu gạch ngang, zsh, pdksh, busybox tro, vv)

tôi rời khỏi repo lên vì đầy đủ của nó bit hữu ích, tuy nhiên tôi nhanh chóng bỏ trên ý tưởng của một chương trình install sheild loại cho các bản phân phối Linux. Bạn sẽ thấy rằng nó tốt hơn nhiều, để tạo ra các gói có thể cài đặt cho các định dạng .deb, .rpm và (có thể) slackware .tgz.

Điều này có thể được tích hợp vào hệ thống xây dựng của bạn bằng cách sử dụng công cụ như checkinstall. Lưu ý, các gói mà việc cài đặt tạo ra không phải luôn luôn hoàn hảo, theo các hướng dẫn lint nghiêm ngặt do Debian và những người khác đặt ra, tuy nhiên các gói hoạt động tốt.

Trải nghiệm cài đặt tốt nhất mà bạn có thể cung cấp cho người dùng là cho phép họ cài đặt (và cập nhật) phần mềm của bạn bằng trình quản lý gói gốc của họ.

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