Làm thế nào để tôi biết nơi để đặt mọi thứ trong linux?


58

Cài đặt một cái gì đó trong cửa sổ chỉ cần một nút bấm. Nhưng mỗi khi tôi cố gắng cài đặt một cái gì đó trong linux, thứ không tìm thấy trong APT, tôi rất bối rối.

Bạn tải xuống một thư mục nén, sau đó những gì? Nếu bạn may mắn có README, tham khảo một số tài liệu, có thể giúp bạn, nếu bạn may mắn.

Bí quyết kỳ diệu khi "cài đặt" các tiện ích mở rộng và ứng dụng không tìm thấy trong APT là gì?

Tôi yêu linux, nhưng vấn đề này ám ảnh tôi mỗi ngày.



8
Đề ra. Nhưng mẹo đơn giản là không bao giờ cài đặt bất cứ thứ gì bên ngoài hệ thống quản lý gói.
Let_Me_Be

1
Nếu không phải từ APT thì có lẽ đó không phải là thứ bạn có thể cài đặt - bạn sẽ cần phải biên dịch và tự cài đặt nó. Và sau đó nó sẽ bắt đầu bị nhầm lẫn với các gói dựa trên APT. Đơn giản nhất là chỉ cần tìm APT / .debs cho bất cứ điều gì bạn cần càng xa càng tốt.
Rupi

2
@Rup Plus nếu một phần mềm không có gói gỡ lỗi, có lẽ bạn không nên cài đặt phần mềm, vì đó là thứ gì đó không dùng nữa, hoặc bị chảy máu hoặc không tương thích với các bản phân phối dựa trên apt.
Let_Me_Be

3
Khi bạn có đủ kinh nghiệm với việc xây dựng / cài đặt phần mềm, bạn có thể tạo các gói của riêng mình. Hãy chắc chắn để cung cấp thông tin phản hồi cho các nhà cung cấp thượng nguồn!
jsbillings

Câu trả lời:


32

Nếu nó là một phần mềm mà tuân theo Tiêu Chuẩn Phân Cấp Hệ thống tập tin hơn bạn nên đặt nó vào /usr/localvà các thư mục con thích hợp (như bin, lib, share, ...).

Phần mềm khác nên được đặt trong thư mục riêng của họ dưới /opt. Sau đó, đặt PATHbiến của bạn để bao gồm binthư mục hoặc bất kỳ thư mục nào chứa các tệp thực thi hoặc tạo các liên kết tượng trưng đến /usr/local/bin.


1
Câu trả lời tốt, thực sự, nhưng người ta không nên làm điều đó mỗi ngày.
phunehehe

1
@phunehehe - Bạn phải làm điều đó mỗi ngày?
Cướp

3
Không, tôi đã đề cập đến "vấn đề này ám ảnh tôi mỗi ngày" của OP.
phunehehe

1
Ngoài liên kết wikipedia đến FHS, hãy đọc cả liên kết này: pathname.com/fhs/pub/fhs-2.3.html . Đọc phần có nội dung "Mục đích".
yasouser

27

Không có câu trả lời đơn giản cho câu hỏi này, nhưng tôi có thể cung cấp cho bạn một phác thảo chung về cách thức hoạt động của nó:

Hầu hết các phần mềm Linux được cung cấp bởi các tác giả ("thượng nguồn") ở dạng mã nguồn. Điều này cho phép tất cả những người có trình biên dịch cho nền tảng và cấu hình hệ thống cụ thể của họ tải xuống mã nguồn và tự biên dịch nó. Thật không may cho bạn, nhiều chương trình dựa vào các chức năng được cung cấp bởi các chương trình và thư viện phần mềm khác (phụ thuộc).

Phần mềm Windows thường có dạng tiền biên dịch. Điều đó có nghĩa là có một tệp thực thi chung cho tất cả các máy tính Windows và phần phụ thuộc thường đi kèm với nó trong gói cài đặt.

Các bản phân phối Linux lấy mã nguồn, biên dịch trước cho bạn và cũng cung cấp cho bạn dưới dạng gói. Gói không bao gồm các phụ thuộc, nhưng nó đề cập đến chúng và buộc hệ thống gói cũng phải cài đặt chúng (điều này đôi khi có thể dẫn đến sự lộn xộn mà bạn có thể đã tự trải nghiệm).

Nếu không có gói tiền biên dịch, bạn luôn có thể tải xuống mã nguồn và tự biên dịch nó. Hầu hết thời gian, những điều sau đây sẽ hoạt động:

./configure
make
(sudo) make install (or sudo checkinstall)

Dòng ./mình đặt giai đoạn cho quá trình biên dịch (và phát sinh lỗi nếu phụ thuộc không được đáp ứng). Dòng make sẽ thực thi Makefile, một tập lệnh biên dịch tất cả các phần của chương trình.

Theo truyền thống, bạn sẽ sử dụng make install để sau đó cài đặt phần mềm. Điều này thường đặt các tệp thực thi trong / usr / local / bin.

Vì bạn đang sử dụng apt, tôi rất khuyên bạn nên kiểm tra cài đặt. Bạn có thể sử dụng nó thay cho cài đặt và nó sẽ tạo ra gói .deb cho bạn. Điều này làm cho việc gỡ bỏ phần mềm sau này dễ dàng hơn nhiều.

Lưu ý rằng có một số ít các sytems biên dịch khác, ví dụ cmake; và một số phần mềm được biên dịch sẵn nhưng không được đóng gói (trong trường hợp đó bạn có thể khởi động nó ngay từ thư mục đã giải nén); và một số phần mềm xuất hiện dưới dạng tập hợp các tập lệnh mà bạn phải tự chạy. Mã mới từ SVN đôi khi không có cấu hình tập lệnh, vì vậy trước tiên bạn phải chạy chuỗi công cụ autoconf ... vv, v.v ... bạn thấy có rất nhiều ngoại lệ cho quy tắc, nhưng với một chút kinh nghiệm bạn sẽ có thể cho biết phải làm gì với hầu hết các tải xuống bí ẩn. Cấu hình-Make-Checkinstall là một khởi đầu tốt.

Tái bút Dành một hoặc hai ngày cuối tuần để học cách tự lập trình và mọi thứ sẽ trở nên rất rõ ràng :-)

PPS. Bạn có thể tự hỏi tại sao các tác giả phần mềm Linux không chỉ cung cấp các gói được biên dịch trước thay vì mã nguồn. Vâng, đôi khi họ làm. Nhưng các nền tảng và bản phân phối Linux khác nhau đều có định dạng gói và quy tắc hệ thống tệp riêng, vì vậy, với tư cách là nhà phát triển, bạn phải cung cấp gói cho mọi cấu hình có thể - đó là một điều khó khăn. Các gói Ubuntu thường dễ tìm thấy nhất - bạn nên tìm hiểu PPA là gì và cách thức hoạt động của nó!


1
"Tái bút. Dành một hoặc hai ngày cuối tuần để học cách tự lập trình và mọi thứ sẽ trở nên rất rõ ràng :-)". Lời khuyên tồi trong một câu trả lời xuất sắc. Yêu cầu mọi người lập trình để hiểu linux giống như hành khách của hãng hàng không sửa chữa máy bay.
apoorv020

thay vì lập trình, chỉ cần thay đổi nó để biên dịch linux của riêng bạn, như LFS (linux từ đầu) linuxfromscratch.org
jsologistski

@apoorv, điểm lấy. :)
sebastian_k

4

Bạn nên kiểm tra checkinstall . Thay vì

./configure
make
sudo make install

bạn làm

./configure
make
sudo make checkinstall

và bạn sẽ có thể quản lý gói đó như thể bạn đã cài đặt nó thông qua apt.


Rất tiếc, chỉ cần lưu ý rằng @sebastian_k đã đề cập đến việc cài đặt ... Ồ tốt!
mgasms

1

Có một lý do hợp lệ, hợp lý, điều này rất khó hiểu (cũng có một lý do giả tạo gây phiền nhiễu) ...

Unix có lịch sử là nhiều người dùng và hầu hết người dùng không có quyền truy cập để cài đặt các ứng dụng bên ngoài các khu vực mà họ đã được cấp quyền truy cập cụ thể.

Vì vậy, lý thuyết sẽ là bạn sẽ xây dựng một cái gì đó trong thư mục nhà của bạn, sau đó sao chép nó vào một khu vực bạn có quyền kiểm soát (khu vực dự án của riêng bạn hoặc một khu vực chung).

PC Windows nói chung là các hệ thống người dùng đơn và không có ràng buộc này, mọi thứ đều có trong Tệp chương trình bất kể là gì.

Sau đó, có một sự thật ngu ngốc, khó chịu là mỗi khi một phiên bản Unix mới xuất hiện, những người sáng tạo cảm thấy cần phải thay đổi địa điểm, nhưng phiên bản cũ vẫn phải ở đó cho các tập lệnh tự động. Điều này cung cấp cho bạn một loạt các thư mục được liên kết phục vụ cùng một mục đích.

Hệ thống init thậm chí còn tệ hơn.

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.