'Cài đặt' làm gì?


52

Chuyển từ Windows sang Linux, tôi không thể hiểu quá trình cài đặt phần mềm trong Linux. Trong Windows, khi chúng tôi chạy một tệp cài đặt, nó sẽ hỏi bạn muốn cài đặt chương trình ở đâu, rất có thể chỉ trong thư mục tệp chương trình. Sau đó, nó chỉnh sửa sổ đăng ký. Điều này được gọi là cài đặt trong Windows. "Cài đặt phần mềm" trong Linux có nghĩa là gì?

Giả sử tôi đã tải xuống mã nguồn, cấu hình nó và sau đó xây dựng nhị phân bằng cách sử dụng make. Bây giờ nó chỉ là một nhị phân, chưa phải là một chương trình có thể sử dụng được. Làm thế nào nó sẽ được "cài đặt"? Bởi make install? Và chính xác thì lệnh này làm gì?


1
Câu trả lời của tôi cho stackoverflow.com/questions/528399/ cho một cái nhìn tổng quan ngắn gọn về các loại thông thường được thực hiện theo make installcác bước từ quan điểm của lập trình viên.
dmckee

Câu trả lời:


44

Make là một chương trình quy trình làm việc có mục đích chung, thường được sử dụng để biên dịch. Nhưng nó có thể được sử dụng cho bất cứ điều gì.

Khi bạn làm một cái gì đó như "tạo ra tất cả", chương trình tạo sẽ thực thi quy tắc có tên "tất cả" từ một tệp trong thư mục hiện tại có tên "Makefile". Quy tắc này thường gọi trình biên dịch để biên dịch một số mã nguồn thành nhị phân.

Khi bạn thực hiện "thực hiện cài đặt", chương trình tạo sẽ lấy các nhị phân từ bước trước đó và sao chép chúng vào một số vị trí thích hợp để có thể truy cập chúng. Không giống như trên Windows, cài đặt chỉ yêu cầu sao chép một số thư viện và tệp thực thi và không có yêu cầu đăng ký như vậy. Nói tóm lại, "thực hiện cài đặt" chỉ sao chép các tệp được biên dịch vào các vị trí thích hợp.


4
Về mặt kỹ thuật, đăng ký không phải là một yêu cầu - tất cả những gì trình cài đặt thêm vào chỉ là một chức năng tiện lợi, giống như cơ sở dữ liệu trình quản lý gói trong Linux, dành cho những người thích có thể gỡ cài đặt phần mềm.
grawity

2
@grawity Trên thực tế, trong Windows, cần phải chỉnh sửa sổ đăng ký vì nhiều lý do, chẳng hạn như tích hợp. Trong Linux, việc tích hợp các phần mềm với nhau thường chỉ liên quan đến việc sao chép tệp hoặc thêm dòng vào cấu hình tệp bằng một cái gì đó như tập lệnh sau khi cài đặt.
Camilo Martin

@sharjeel Sẽ rất hữu ích khi cho biết làm thế nào tôi có thể tìm thấy quy tắc được đặt tên alltrong Makefilevà điểm đánh dấu cuối của phần đó trông như thế nào, vì vậy tôi có thể thấy nơi xử lý quy tắc cho các allđiểm dừng.
Sao lưu chuyên nghiệp

36

make installlàm bất cứ điều gì Makefiletác giả muốn nó làm. Thông thường, đến thời điểm này, đã quá muộn để thay đổi thư mục cài đặt, vì nó thường được biết đến trước đó , trong quá trình xây dựng, vì vậy các tệp trợ giúp và tệp cấu hình có thể được tham chiếu với tên đường dẫn chính xác.

Nhiều dự án sử dụng GNU Autotools để cố gắng cải thiện tính di động của chúng giữa các khác biệt về phần cứng và hệ điều hành. (Các biến thể Unix khác nhau sử dụng các tiêu đề hơi khác nhau để khai báo các hàm hơi lệch khỏi đường dẫn thông thường - ngoại trừ hầu hết các chương trình cần một hoặc một trong các biến thể được khai báo ở các vị trí khác nhau.)

Khi một dự án sử dụng Autotools, câu thần chú thông thường để cài đặt nó là:

./configure
make
make install

Các ./configuređiển hình cho phép bạn sử dụng tùy chọn dòng lệnh như --prefix /opt/apachehoặc một cái gì đó tương tự để xác định một tên đường dẫn khác nhau. /usr/local/là một mặc định phổ biến prefix. Phần mềm được xây dựng tại địa phương dễ dàng hơn nhiều để sống ở một nơi và phần mềm được cung cấp phân phối để sống trong "thư mục chính" /usr/ /bin/:, v.v. (Người đóng gói rất cẩn thận để không bao giờ chạm vào các tệp trong /usr/local/- họ biết rằng nó chỉ dành riêng cho quản trị viên hệ thống.)

Dù sao, ./configure --prefix /path/to/new/prefixsẽ đặt một biến Makefilecó sẵn khi biên dịch chương trình, sửa đổi các trang thủ công để chúng trỏ đến vị trí chính xác cho các tệp, sửa đổi tệp cấu hình, v.v. Vì vậy, makesẽ xây dựng phần mềm cụ thể cho vị trí cài đặt bạn muốn và make installsẽ cài đặt nó vào vị trí đó.

Hầu hết các chương trình có thể chạy ngay cả khi không có make installbước cuối cùng - ./program_namethường sẽ khởi động chúng. Đây chắc chắn là một điều mỗi dự án - một số người, như postfix, qmailvv, được tạo thành từ nhiều mảnh di chuyển khác nhau và dựa vào tất cả chúng làm việc cùng nhau. Những người khác, thích lshoặc sucó thể khép kín đủ để thực thi tốt từ thư mục mà họ đã xây dựng. (Điều này thường không hữu ích - nhưng đôi khi rất hữu ích.)

Tuy nhiên, không phải tất cả các dự án đều sử dụng Autotools - chúng rất lớn , phức tạp và khốn khổ để duy trì. Viết tay Makefileđơn giản hơn nhiều để viết và cá nhân tôi nghĩ rằng chỉ cần phân phối đơn giản Makefilevới các biến cấu hình có sẵn sẽ dễ dàng hơn nhiều cho cả nhà phát triển và người dùng. (Mặc dù ./configure ; make ; make installcâu thần chú thực sự dễ dàng với người dùng khi nó hoạt động.)


19

make installkhông làm gì sau đó thực thi installchức năng / phần trong của bạnMakefile


Phải, nó chỉ thích make clean, về cơ bản nó chỉ thực thi các mã dưới phần.
Wulfric Lee

8

Điều quan trọng nhất cần đề cập liên quan đến việc cài đặt phần mềm trên Linux là nó đáng tin cậy và dễ cài đặt phần mềm hơn từ bản phân phối của bạn (đây là mục đích của nó!). Chỉ sử dụng make installnếu không có cách nào khác (cũng xem xét các chương trình thay thế).

Lỗi phổ biến của người dùng Windows là tải xuống các chương trình từ các nơi khác nhau và cố gắng cài đặt chúng, quên kiểm tra các gói phân phối của chúng, có thể được cài đặt bằng một cú nhấp chuột hoặc lệnh (trong trình quản lý gói).

Cũng nên nhớ rằng một trong những lý do chính cho việc không có nhiễm virus trên Linux là phần mềm được cài đặt (hoặc nên) từ vị trí trung tâm (đáng tin cậy) thay vì nhiều trang web ngẫu nhiên.

Một lưu ý nữa, trong khi các bản phân phối như Ubuntu luôn chứa các gói lỗi thời, thì cũng có những bản phân phối như Arch Linux luôn cập nhật (mặc dù chúng không cung cấp mọi chương trình từng được phát hành cho Linux, như Debian / Ubuntu).

Đối với những gì chính xác sẽ xảy ra khi bạn sử dụng trình quản lý gói, nó sẽ kiểm tra các phụ thuộc, tải xuống các gói, giải nén, đặt tất cả các tệp vào các thư mục phù hợp của chúng, theo hướng dẫn riêng của FHS và phân phối, và một số thói quen khác mà bạn có thể tìm hiểu về từ trang người đàn ông của người quản lý gói.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.