Phần mềm được cài đặt được lưu trữ trong Linux ở đâu? [bản sao]


11

Có thể trùng lặp:
Chương trình Linux điển hình được cài đặt ở đâu

Tôi mới dùng Linux và tôi muốn hỏi thêm một chút về các gói.

Trong Windows, tôi tải xuống một .exetệp và cài đặt nó. Khi tôi cài đặt, tôi xác định đường dẫn mà tôi muốn ứng dụng đó được lưu trữ. Trong thư mục đó, tôi có tất cả các tệp cần thiết cho ứng dụng.

Tuy nhiên, khi tôi cài đặt một gói trong Linux bằng cách sử dụng yumhoặc apt-get, tôi không biết gói đó được cài đặt ở đâu và nơi các tệp cần thiết cho ứng dụng đó được lưu trữ. Tôi đã thấy rằng hầu hết các cấu hình là trong /etcthư mục. Nhưng tại sao Linux lưu trữ các tệp cần thiết cho một ứng dụng trong các thư mục khác nhau?

Ai đó có thể cho tôi biết các gói được cài đặt không, và chúng được lưu trữ ở đâu và như thế nào? Và nếu sự hiểu biết của tôi về quản lý gói là sai, xin vui lòng sửa cho tôi.


Nếu bản phân phối của bạn sử dụng rpm, bạn có thể sử dụng rpm -q --whatprovidesđể tìm tên gói cho một tệp cụ thể và sau đó rpm -q -ađể tìm hiểu xem tệp nào được cài đặt.
David Schwartz

Với apt-get, nếu gói được cài đặt sử dụng dpkg -L PKGNAME, nếu nó không được sử dụng apt-file list.
Thor

Câu trả lời:


14

Nhiều chương trình (nhị phân / tập lệnh) kết thúc bằng /binhoặc /usr/binvới các phần khác trong các thư mục cấu hình khác nhau (thường ở / dưới etc) như bạn đã lưu ý.

Đối với bất kỳ lệnh cụ thể, bạn có thể kiểm tra trong đó

whereis prog_name

và nó sẽ cung cấp cho bạn một số thông tin về nơi lệnh này được tìm thấy. Bạn cũng có thể thử

which prog_name

Ngoài ra, đồ họa và giải thích / ví dụ này có thể hữu ích.


1
+1 cho whereis - rất hữu ích cho những người mới sử dụng linux

Nhưng tại sao chỉ lưu cấu hình trong thư mục riêng?

@KOU Tôi không biết lịch sử của việc này, nhưng có thể để các chương trình có thể được cập nhật mà không làm rối thông tin cấu hình vì nó sẽ nằm trong một thư mục khác. Bằng cách này, các phiên bản khác nhau có thể sử dụng cùng một thông tin cấu hình (giả sử định dạng vv không thay đổi tức là đã tương thích). Tôi chỉ đang phỏng đoán ở đây. Bạn sẽ phải nghiên cứu lịch sử của hệ thống tệp Unix / Linux để có câu trả lời rõ ràng.
Levon

1
Tôi không chắc về lịch sử của quyết định đưa tất cả các tệp cấu hình trên toàn hệ thống vào /etc/, nhưng có một vị trí trung tâm cho các tệp cấu hình giúp bạn dễ dàng sao lưu chúng. (Hãy tưởng tượng sao lưu các tệp cấu hình trên toàn hệ thống trong Windows, nơi chúng được phân tán tất cả thông qua hệ thống tệp và sổ đăng ký ...)
Li-aung Yip

@ Li-aungYip Điểm tốt
Levon

5

Trong Windows, đặc biệt là các phiên bản cũ hơn, thông thường các chương trình lưu trữ tệp cấu hình và dữ liệu không cố định trong C:\Program Filesthư mục của chúng . Điều này bắt nguồn từ cách các chương trình thường được cài đặt và chạy trong DOS người dùng đơn, không nối mạng, không cho phép tệp.

Từ quan điểm bảo mật, đây là một ý tưởng tồi. Những nơi mà cuộc sống mã thực thi phải được tách biệt khỏi dữ liệu có thể sửa đổi. Bằng cách đó, việc áp dụng các quyền tệp phù hợp sẽ dễ dàng hơn để ngăn chặn việc sửa đổi các tệp nhị phân được cài đặt bởi người dùng trái phép. Tương tự các thư mục thư viện có thể được cập nhật riêng biệt từ các tệp thực thi chính cũng phải nằm trong một thư mục riêng.

Với sự ra đời của Vista và UAC, những truyền thống này cuối cùng đã bắt đầu mất đi sức kéo nghiêm trọng.

UNIX và Linux, là một hệ thống nhiều người dùng từ rất sớm, đã có xu hướng tách các thư mục thực thi khỏi các thư mục khác sớm hơn, vì cần phải ngăn người dùng khác ngoài root sửa đổi các tệp nhị phân đã cài đặt. Đó cũng là lý do tại sao /usrvà thậm chí /sbinđôi khi là các phân vùng riêng biệt - một quản trị viên có ý thức bảo mật đặc biệt có thể gắn các phân vùng đó một cách sẵn sàng và nhắc lại việc đọc / ghi khi cần cài đặt / gỡ cài đặt.

Các gói thường được cài đặt từ một người quản lý gói. Có nhiều trình quản lý gói khác nhau, chẳng hạn như aptitude(Debian và các bản phân phối có nguồn gốc), yum(Redhat và các bản phân phối có nguồn gốc), pacman(quên bản phân phối này là ...) và các bản phân phối khác.

Trình quản lý gói cho phép bạn duyệt các kho lưu trữ, tải xuống, cài đặt, truy vấn và xóa phần mềm, giống như một "kho ứng dụng" tinh vi (và miễn phí). Nó chịu trách nhiệm đảm bảo sự phụ thuộc được quan tâm và theo dõi những gì hiện đang được cài đặt.

Thông thường, trình quản lý gói cũng sẽ cho phép các thao tác tương tự trên gói bạn đã tải xuống thủ công bên ngoài bất kỳ kho lưu trữ nào. Các công cụ cũng có sẵn nếu bạn muốn tự tạo từ phần mềm bạn tự tạo hoặc tự biên dịch.

Vì bản thân gói KHÔNG phải là tệp thực thi, nên bạn không phải chạy tệp thực thi không đáng tin cậy mà bạn không thực sự biết nó làm gì. (Windows cuối cùng cũng xuất hiện với các bản cập nhật bằng cách phân phối .msuthay vì .exe- nhưng .msiđã xuất hiện được một thời gian ...)


1
Re. pacman, nó dành cho Arch Linux .

2

Bạn có thể lấy danh sách các tệp mà yumgói đã cài đặt cài đặt bằng cách thực hiện:

yum install yum-utils

Sau đó, bạn có thể chạy nó như vậy:

repoquery --list yum-utils

(Rõ ràng, thay thế "yum-utils" trong cái thứ hai đó bằng tên của gói đó có danh sách tệp bạn muốn xem.)

Đối với apt-get, bạn có thể sử dụng:

dpkg -L package-name

1

Thông thường bên dưới /usr/bin, mặc dù nó phụ thuộc vào ứng dụng hoặc thư viện cụ thể mà bạn đang cài đặt.


1

Trong Linux / Unix, hầu hết các chương trình thường không kết thúc trong một thư mục, nhưng các phần khác nhau của nó (tệp thực thi, tệp cấu hình, tệp nhật ký, tài liệu, tài nguyên khác) được phân tán qua hệ thống tệp - thường thông qua liên kết tượng trưng. Các bài viết trên Wikipedia mô tả chi tiết hơn về cấu trúc thư mục tiêu chuẩn dưới một hệ thống phân cấp hệ thống tập tin bình thường, cho thấy các thư mục khác nhau và những gì bạn có thể mong đợi để tìm thấy trong mỗi người.


0

Thư mục /optđược dành riêng cho các cài đặt giống như Windows trong đó mỗi gói có cây thư mục riêng. Không ai sử dụng nó. Tôi cung không chăc tại sao; có thể việc thêm /opt/PACKAGE/binvào $PATHmỗi lần bạn cài đặt một gói là quá khó chịu.


/optdường như chủ yếu được sử dụng bởi các gói phần mềm thương mại / không miễn phí, như MATLAB.
Li-aung Yip

Trên Ubuntu 12.04 của tôi, Google Chrome đã cài đặt /optnhưng LibreOffice 3.5 cũng được cài đặt trực tiếp từ đây .

0

Phần mềm trong Linux có một chút khác biệt trong mô hình của Windows hoặc Mac. Trong đó, một tệp thực thi và tất cả các tệp hỗ trợ của nó được cài đặt vào một thư mục duy nhất: Windows thường giữ chúng trong c:\Program Files\program name, Apple /Applications/program.app. Trong Linux, có một ... cấu trúc chung hơn. Các tệp nhị phân thường nằm trong /usr/bin, cấu hình toàn hệ thống nằm trong /etc, cấu hình dành riêng cho người dùng thường ở ~/.program. Các thư viện nằm trong /usr/lib, các tệp hỗ trợ (ví dụ: tác phẩm nghệ thuật) thường ở trong /usr/share/program, v.v. Thậm chí còn có một tiêu chuẩn gợi ý nơi mọi thứ nên đi.

Các chương trình thường được cài đặt bởi các nhà quản lý gói, rpmdpkg; chúng được tự động tìm kiếm và truy xuất (bao gồm quản lý phụ thuộc) theo yumaptitude/ apt-get, tương ứng. Ở cấp độ kỹ thuật hơn, các gói là các tệp nén đơn giản (tôi tin rằng cả hai vòng / phút và deb .tar.gz). Các tài liệu lưu trữ này chứa một bản sao của các phần của hệ thống tệp từ gốc nơi các tệp đi (ví dụ: một tệp được cài đặt tại /usr/bin/programsẽ usr/bin/programnằm trong thư mục thích hợp trong gói.

Để tìm thông tin về một gói cụ thể, hãy sử dụng trình quản lý gói cho hệ thống của bạn, như những người khác ở đây đã giải thích.


0

Trang chủ hier có thể cung cấp một số hiểu biết


2
Mặc dù liên kết này có thể trả lời câu hỏi, tốt hơn là bao gồm các phần thiết yếu của câu trả lời ở đây và cung cấp liên kết để tham khảo. Câu trả lời chỉ liên kết có thể trở nên không hợp lệ nếu trang được liên kết thay đổi.
MaQleod

@MaQleod Nếu bạn lo ngại rằng liên kết có thể trở nên không hợp lệ, tôi đã liên kết chỉ để thuận tiện. Tôi chỉ đơn giản có thể viết "man hier" bằng văn bản đơn giản, vì bạn có thể tìm thấy trang này trong bất kỳ bản phân phối Linux chính thống nào tôi đoán.
AnonymousLurker

2
"xem hướng dẫn" cũng không phải là một câu trả lời thích hợp, nó là một nhận xét. Câu trả lời thực sự nên trả lời câu hỏi. Làm thế nào để trả lời câu hỏi đặt ra? danh sách phân cấp có ý nghĩa như thế nào? Tại sao OP (hoặc bất cứ ai khác) coi câu trả lời này là đáng chú ý? Sao chép các phần có liên quan của liên kết (hoặc trang man) và giải thích lý do tại sao chúng có ý nghĩa trong bối cảnh của câu hỏi, sau đó bạn sẽ trả lời câu hỏi và không chỉ đơn giản là nhận xét.
MaQleod
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.