Làm thế nào để cấm một gói cụ thể được cài đặt?


27

Tôi có thể định cấu hình Ubuntu để không bao giờ cài đặt một gói cụ thể ngay cả khi gói đó tôi yêu cầu không?


Bạn không thể cài đặt gói mà không phụ thuộc vào gói, trừ khi bạn muốn phá vỡ hệ thống của mình.
enzotib

2
@enzotib, trước hết bạn đã sai: phụ thuộc gói có thể là dư thừa. Có rất nhiều ví dụ, hoặc bạn có thể đã cài đặt một gói tương đương theo cách khác (ví dụ: tôi đã cài đặt openjdk-6 vì nó được yêu cầu bởi tất cả các ứng dụng java trong repos, nhưng tôi thực sự không bao giờ sử dụng openjdk-6, tôi thiết lập mọi thứ để sử dụng openjdk-7 hoặc Oracle JDK 7 thay thế). Và điều thứ hai - tôi không nói rằng tôi muốn cài đặt gói phụ thuộc - nó có thể gây ra lỗi trong trường hợp này, tôi chỉ muốn chắc chắn rằng một gói cụ thể không bao giờ được cài đặt.
Ivan

Câu trả lời:


28

Như trong Debian, chúng ta cũng có thể sử dụng ghim apt cho phiên bản và kiểm soát cài đặt trong Ubuntu .

Để chặn việc cài đặt một gói nhất định, chúng tôi có thể đặt các dòng sau vào /etc/apt/preferences

Package: <nameofpackage>
Pin: origin ""
Pin-Priority: -1

Bằng cách ưu tiên tiêu cực cho mã pin này, chúng tôi sẽ chặn cài đặt <nameofpackage>từ nguồn gốc không được chỉ định thêm, tức là kho lưu trữ cục bộ của chúng tôi. Tất nhiên chúng ta có thể sử dụng ghim apt để ghim một phiên bản gói nhất định hoặc nguồn gốc cụ thể.

Trước khi bạn tiến hành, bạn nên đọc tài liệu được cung cấp ở trên và manpage từ apt_preferences vì các lỗi trong các tệp này không được apt kiểm tra và nếu chúng xảy ra có thể phá vỡ quản lý gói của bạn.

Để thay thế và để tránh cập nhật gói đã cho, hãy xem:


Bạn có biết nếu điều này có thể hoạt động trong Ubuntu 12.04? Một câu hỏi khác là báo cáo rằng có thể nó không hoạt động.
Lucio

1
@Lucio: chắc chắn - nó vẫn hoạt động; chỉ cần thử nó để làm việc trong 12.10.
Takkat

3
Trong Package:-line, bạn có thể liệt kê nhiều gói được phân tách bằng dấu cách, như sau: Gói: metacity metacity-common libmetacity-private0a. (Có vẻ như các mẫu như Gói: độ bền * cũng có thể)
Volker Siegel

5
Trong Ubuntu 16.04 Pin: origin ""không hoạt động với tôi, nhưng Pin: release *đã làm.
barbaz

3

Trong debian, bạn có thể chặn một gói và gói đó sẽ không nâng cấp nữa

# echo name_of_package hold | dpkg --set-selections

nhưng tôi không chắc rằng bạn có thể cấm


Tôi mới dùng thử trên Ubuntu 15.10 (wily) và nó không chặn gói; vừa cảnh báo tôipackage not in database
Brent Baccala

2

Tôi có một gói liên tục quay lại và phá vỡ git

sudo apt-mark hold libgnutls-deb0-28

nên ngăn gói đó được cài đặt

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.