Phần lớn các .debgó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/binhoặc /usr/sbin(hoặc /usr/gamesnế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/includevà 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ụ, bashgói đặt bashtệ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 /usrlà một hệ thống tập tin từ xa).
Một tỷ lệ nhỏ các .debgó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 /optvà đặt tất cả các tệp của chúng ở đó. Ngoài ra, phần lớn thời gian /optlà 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/libhoặ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 /usrtiền tố và do đó sẽ ghi đè cài đặt của cùng một chương trình từ .debcá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/localthay vì ./configurekhi 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 /usrvà 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/binhoặc bất cứ nơi nào các tệp thực thi được cài đặt nằm trong PATHbiế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 /usrthay 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 uninstalltrong 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 .debgó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 .debgó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.)