Phần lớn các .deb
gói, cho dù chúng được cung cấp bởi các kho chính thức hay không, đều cài đặt với tiền tố /usr
.
Điều đó có nghĩa là các tệp thực thi dự định được chạy bởi người dùng đi vào /usr/bin
hoặc /usr/sbin
(hoặc /usr/games
nếu đó là một trò chơi), các thư viện chia sẻ đi vào /usr/lib
, dữ liệu chia sẻ độc lập với nền tảng đi vào /usr/share
, các tệp tiêu đề đi vào /usr/include
và mã nguồn được cài đặt tự động đi vào /usr/src
.
Một tỷ lệ nhỏ các gói sử dụng /
làm tiền tố. Ví dụ, bash
gói đặt bash
tệp thực thi /bin
, không /usr/bin
. Đây là gói dành cho các gói cung cấp các yếu tố cần thiết để chạy ở chế độ một người dùng (như chế độ khôi phục) và để bắt đầu chế độ nhiều người dùng (nhưng hãy nhớ, thường bao gồm chức năng để gắn một số loại chia sẻ mạng ... trong trường hợp /usr
là một hệ thống tập tin từ xa).
Một tỷ lệ nhỏ các .deb
gói, chủ yếu là các gói được tạo bằng Quickly , tạo một thư mục dành riêng cho gói bên trong /opt
và đặt tất cả các tệp của chúng ở đó. Ngoài ra, phần lớn thời gian /opt
là vị trí được sử dụng bởi phần mềm được cài đặt từ trình cài đặt thực thi không sử dụng trình quản lý gói của hệ thống nhưng không liên quan đến việc biên dịch từ nguồn. (Ví dụ: nếu bạn cài đặt một chương trình độc quyền như MATLAB, bạn có thể sẽ đưa nó vào /opt
.)
Ngược lại với tất cả những điều này, khi bạn tải xuống một kho lưu trữ nguồn (hoặc lấy mã nguồn từ hệ thống kiểm soát sửa đổi như Bazaar hoặc git), xây dựng và cài đặt nó, nó thường cài đặt vào tiền tố /usr/local
(trừ khi bạn bảo nó làm nếu không thì). Điều này có nghĩa thực thi của bạn đi /usr/local/bin
, /usr/local/lib
hoặc /usr/local/games
, thư viện của bạn trong /usr/local/lib
, và vân vân.
Có một số trường hợp ngoại lệ cho điều này - một số chương trình, theo mặc định, cài đặt vào /usr
tiền tố và do đó sẽ ghi đè cài đặt của cùng một chương trình từ .deb
các gói. Thông thường bạn có thể ngăn chặn điều này bằng cách chạy ./configure --prefix=/usr/local
thay vì ./configure
khi bạn xây dựng chúng. Tôi một lần nữa nhấn mạnh rằng thường thì điều này là không cần thiết.
(Vì lý do này, việc bạn đặt mã nguồn mà bạn đang xây dựng sẽ rất hợp lý và sẽ cài đặt để sử dụng trên toàn hệ thống /usr/local/src
, tồn tại cho mục đích đó.)
Giả sử phiên bản đóng gói được cài đặt /usr
và phiên bản bạn đã cài đặt từ nguồn là /usr/local
:
Các tập tin từ gói đã cài đặt sẽ không bị ghi đè.
Thông thường, phiên bản mới hơn sẽ chạy khi bạn gọi chương trình theo cách thủ công từ dòng lệnh (giả sử /usr/local/bin
hoặc bất cứ nơi nào các tệp thực thi được cài đặt nằm trong PATH
biến môi trường của bạn và xuất hiện trước thư mục /usr
-prefixed tương ứng , chẳng hạn như /usr/bin
).
Nhưng có thể có một số vấn đề với những gì trình khởi chạy được tạo và có thể truy cập thông qua các menu hoặc tìm kiếm. Hơn nữa, nếu bạn đã cài đặt nhiều hơn một phiên bản của thư viện ở những nơi khác nhau, việc xác định phần mềm nào sẽ được sử dụng bởi phần mềm nào sẽ trở nên phức tạp hơn một chút.
Nếu bạn không thực sự sử dụng cả hai phiên bản của chương trình hoặc thư viện, thì thường thì bạn nên xóa phiên bản mà bạn không sử dụng, mặc dù trong những tình huống hạn chế, bạn có thể muốn giữ một gói được cài đặt để đáp ứng phụ thuộc.
Tuy nhiên, nếu vì bất kỳ lý do nào, các tệp bị ghi đè (ví dụ: nếu mã nguồn được cài đặt /usr
thay vì /usr/local
):
- Người quản lý gói sẽ không biết gì về cách thay đổi phần mềm. Nó sẽ nghĩ rằng phiên bản cũ được cài đặt. Vấn đề xấu có thể dẫn đến. Bạn nên tránh điều này. Nếu bạn đã tạo tình huống này, bạn nên gỡ cài đặt phần mềm bạn đã cài đặt từ nguồn (thường có
sudo make uninstall
trong thư mục), sau đó gỡ cài đặt gói hoặc gói cung cấp các tệp bị ghi đè (vì chúng sẽ không được khôi phục bằng cách gỡ cài đặt phiên bản đã cài đặt từ nguồn). Sau đó cài đặt lại bất cứ phiên bản nào bạn muốn có./usr/local/src/program-or-library-name
Đối với việc hoàn thành các phụ thuộc:
Nếu có một .deb
gói phụ thuộc vào phần mềm bạn đã cài đặt từ nguồn và yêu cầu phiên bản bạn đã cài đặt từ nguồn (hoặc cao hơn), gói đó sẽ không cài đặt thành công. (Hoặc, chính xác hơn, bạn có thể "cài đặt" nó nhưng nó sẽ không bao giờ được "cấu hình" nên bạn sẽ không thể sử dụng nó.) Sự phụ thuộc được giải quyết bằng các phiên bản gói được cài đặt, không phải bởi phần mềm nào bạn thực sự có.
Tương tự, phần mềm ít nhất sẽ cố gắng cài đặt hoàn toàn ngay cả khi bạn đã xóa thủ công các tệp được cung cấp bởi các gói mà phần mềm được cài đặt phụ thuộc vào. (Nói chung, bạn không nên cố gắng khai thác điều đó cho bất kỳ mục đích nào. Trình quản lý gói hoạt động dựa trên thông tin sai lệch hầu như luôn là một điều xấu.)
Do đó, nếu bạn không thể tìm thấy gói cung cấp phiên bản phần mềm bạn cần, bạn có thể cần tạo .deb
gói của riêng mình từ phần mềm bạn đã biên dịch và cài đặt từ gói đó. Sau đó, người quản lý gói sẽ biết những gì đang xảy ra. Tạo một gói để sử dụng cho riêng bạn, thứ mà bạn không cần phải hoạt động tốt trên máy tính của người khác, thực sự không khó lắm. (Nhưng tôi cảm thấy điều đó có thể nằm ngoài phạm vi câu hỏi của bạn, vì nó hiện đang được diễn đạt.)