it-swarm-vi.com

Cách biên dịch và cài đặt chương trình từ nguồn

Đây là một vấn đề thực sự hạn chế sự thích thú của tôi đối với Linux. Nếu ứng dụng không có trên kho lưu trữ hoặc nếu nó không có tập lệnh cài đặt, thì tôi thực sự đấu tranh ở đâu và làm thế nào để cài đặt một ứng dụng từ nguồn.

So với Windows, thật dễ dàng. Bạn (khá nhiều) bắt buộc phải sử dụng một ứng dụng cài đặt thực hiện tất cả các công việc trong Trình hướng dẫn. Với Linux ... không nhiều lắm.

Vì vậy, bạn có bất kỳ lời khuyên hoặc hướng dẫn nào về vấn đề này không hoặc có bất kỳ trang web nào giải thích rõ ràng về cách thức, lý do và nơi để cài đặt các chương trình Linux từ nguồn không?

42
Nitrodist

Thông thường, dự án sẽ có một trang web với các hướng dẫn về cách xây dựng và cài đặt nó. Google cho điều đó đầu tiên.

Đối với hầu hết các phần bạn sẽ làm một trong hai:

  1. Tải xuống một tarball (tệp tar.gz hoặc tar.bz2), đây là phiên bản cụ thể của mã nguồn
  2. Trích xuất tarball bằng một lệnh như tar zxvf myapp.tar.gz cho một tarball được nén hoặc tar jxvf myapp.tar.bz2 cho một tarball được giải nén
  3. cd vào thư mục được tạo ở trên
  4. chạy ./configure && make && Sudo make install

Hoặc là:

  1. Sử dụng git hoặc svn hoặc bất cứ điều gì để lấy mã nguồn mới nhất từ ​​kho lưu trữ nguồn chính thức của họ
  2. cd vào thư mục được tạo ở trên
  3. chạy ./autogen.sh && make && Sudo make install

Cả configure và autogen.sh sẽ chấp nhận đối số --prefix để chỉ định nơi phần mềm được cài đặt. Tôi khuyên bạn nên kiểm tra Tôi nên tự cài đặt phần mềm ở đâu? để được tư vấn về nơi tốt nhất để cài đặt phần mềm tùy chỉnh.

24
Sandy

Tôi chỉ muốn thêm rằng có các trình quản lý gói biên dịch các gói từ nguồn và xử lý tất cả các phụ thuộc gói, cờ, v.v.

Trong các hệ thống BSD, nó ports: Sử dụng Bộ sưu tập Cổng

Trong Debian, apt-get Trình quản lý gói cũng có thể cài đặt từ nguồn: APT HOWTO: Làm việc với các gói nguồn (Tương tự với Ubuntu, Linux-mint và mọi thứ khác dựa trên Debian)

Phân phối Gentoo sử dụng trình quản lý gói portage, biên dịch toàn bộ hệ thống chỉ từ nguồn: Giới thiệu Portage .

Slackware có thể biên dịch các gói nhưng tôi không biết liệu có trình quản lý gói nào trong đó không .. =)

Dù sao, bạn luôn có thể biên dịch các gói theo cách thủ công như Sandy đã đề cập ở trên =) Ngoài ra, có thể sử dụng apt-get hoặc portage người quản lý gói trong bất kỳ bản phân phối nào khác ...

4
holms

Tôi nghĩ tốt nhất là đọc tài liệu đi kèm với chương trình hoặc ứng dụng cụ thể mà bạn muốn cài đặt. Thông thường có các readmes/README bên trong tarball (kho lưu trữ nguồn ứng dụng mà bạn thường có thể tải xuống) hoặc thậm chí có thể CÀI ĐẶT các tệp để đọc và tìm hiểu về cách cài đặt ứng dụng ưa thích. Tóm lại: RTFM;)

2
reiche

Tóm tắt về việc sử dụng Bộ sưu tập Cổng trong FreeBSD:

Tìm cổng

Các cổng được sắp xếp theo danh mục, vì vậy nếu bạn không biết cổng đó thuộc loại nào thì bạn phải tìm cổng trước:

cd /usr/ports
make search name=myport

Đôi khi có quá nhiều mục theo cách đó. Cá nhân tôi thích:

find /usr/ports -name myport* -print -depth 2

Sử dụng * khi tìm kiếm vì thường có nhiều phiên bản của một cổng. Đối số chuyên sâu đảm bảo kết quả trả về của bạn không bị lộn xộn với các trận đấu mà bạn không muốn.

Cấu hình

Thông thường, bạn sẽ muốn thực hiện một số cấu hình; phần mềm như Apache và Postgres thực tế yêu cầu nó. Có ba lựa chọn chính: dòng lệnh, môi trường và tạo tập tin cấu hình. Để bắt đầu với dòng lệnh:

make showconfig

điều này sẽ liệt kê các tùy chọn cấu hình mặc định. Nếu bạn thích mặc định, bạn đã sẵn sàng biên dịch và cài đặt. Nếu không,

make config

sẽ đưa ra một hộp thoại trong đó bạn có thể chọn tùy chọn nào bạn muốn. (Đừng trở nên bối rối với điều này và make configure cấu hình cổng của bạn với các tùy chọn bạn đã chọn!) Điều này thường là đủ nhưng đối với một số phần mềm, như Apache, thường có cấu hình phức tạp mà một hộp thoại đơn giản sẽ không xử lý được. Đối với điều này, bạn cũng nên xem (các) Makefile đôi khi sẽ cung cấp cho bạn một số mục tiêu bổ sung để thực hiện sẽ cung cấp cho bạn thêm thông tin. Để tiếp tục ví dụ về Apache

make show-modules
make show-options
make show-categories

sẽ cung cấp cho bạn thông tin về việc thiết lập các mô-đun bạn đã chọn, tùy chọn luồng và tương tự. Nếu mặc định của cổng của bạn hầu hết đều ổn và bạn chỉ muốn thay đổi một số thứ, bạn cũng có thể chỉ cần truyền khóa = cặp giá trị như biến môi trường:

make MYVBL1=MYVAL1 ... install clean

Ngoài ra, bạn có thể đặt tùy chọn chuyển đổi qua -D Lựa chọn:

make -D MYVAR -D MYOTHERVAR ... install clean

Tuy nhiên, đối với cấu hình phức tạp, dòng lệnh sẽ không hoạt động tốt và tốt hơn cả hai phương pháp đầu tiên sẽ không hiệu quả. Trong trường hợp này, bạn có thể tạo tệp cấu hình và chuyển tệp đó sang make với biến __MAKE_CONF. FreeBSD có tệp cấu hình mặc định: /etc/make.conf thường chứa thông tin về các cổng được cài đặt trước đó và các cài đặt hệ thống khác. Để bắt đầu, hãy tạo một tệp với các tùy chọn cổng của bạn, gọi nó là ~/myport.mk và sau đó kết hợp tệp đó với /etc/make.conf:

cat /etc/make.conf ~/myport.mk >> ~/make.myport.conf

sau đó bạn có thể kiểm tra lại cấu hình của mình:

make showconfig __MAKE_CONF=~/make.port.conf

và nếu mọi thứ có vẻ tốt:

make install clean __MAKE_CONF=~/make.myport.conf

HÃY THỬ! Nếu bạn cần điều chỉnh cài đặt cấu hình của mình sau make configure hoặc cài đặt toàn bộ hoặc một phần bạn hoàn toàn phải xóa cấu hình của bạn trước:

make rmconfig

Không làm như vậy sẽ dẫn đến các tương tác bất ngờ giữa hệ thống con cổng, mặc định make của cổng và cấu hình mong muốn của bạn.

Đó là rất nhiều cho một bản tóm tắt, nhưng sự phức tạp của cấu hình chủ yếu là về ứng dụng, không phải là cổng. Bash chẳng hạn, thực sự không có lựa chọn nào.

Cài đặt

Đây là phần dễ dàng:

make install clean

hoặc bạn có thể

make build
make install
make clean

đó chỉ là gõ nhiều hơn.

Nó khá là nhiều. Rõ ràng có nhiều thứ bạn có thể làm như liệt kê đệ quy các phụ thuộc và tùy chọn cấu hình, cập nhật với các bản vá, v.v. Ở đây tôi sẽ giới thiệu cho bạn phần Cổng của Sổ tay , trang man của hệ thống con cổng (thông tin tốt về các mục tiêu thực hiện bổ sung) và trang man make .

1
gvkv

Gần đây tôi đã bắt đầu sử dụng "Checkinstall" khi cài đặt từ nguồn bên ngoài trình quản lý gói của mình. Nó xây dựng một "gói" từ tarball của bên thứ 3, sau đó có thể được cài đặt và quản lý (và gỡ cài đặt) thông qua các công cụ quản lý gói của bạn.

Kiểm tra bài viết này - http://www.linuxjournal.com/content/USE-checkinstall-build-packages-source

0
aryeh