Câu trả lời ngắn gọn:
Tệp tùy chọn APT / etc / apt / Preferences có thể được sử dụng để kiểm soát phiên bản nào của các gói sẽ được chọn để cài đặt.
Đây là tập tin /etc/apt/preferences
, apt-get
dùng để quyết định, phiên bản nào nó phải chọn nếu có nhiều phiên bản của một gói. Với điều này, bất kỳ gói nào đến từ kho lưu trữ cục bộ, sẽ được ưu tiên hơn các gói khác.
Gói: *
Pin: nguồn gốc ""
Pin-Ưu tiên: 1001
Điều này sẽ không kiểm soát phiên bản, nhưng ưu tiên nguồn nếu cả hai gói có cùng một phiên bản. Nếu bạn cần chỉ định mức ưu tiên cao nhất cho cùng một phiên bản gói trong repo cục bộ của mình, hãy liệt kê chúng ở đầu /etc/apt/sources.list
tệp vào tệp>
Trả lời cho câu hỏi ban đầu:
Làm cách nào để gán mức ưu tiên cao nhất cho kho lưu trữ cục bộ mà không cần sử dụng tệp nguồn.list?
Không có cách nào để gán mức ưu tiên cao nhất cho kho lưu trữ cục bộ mà không sử dụng sources.list
tệp. bạn phải đặt chúng vào đầu "nguồn.list" nếu bạn muốn gán mức ưu tiên cao nhất cho repo cục bộ của mình.
Tóm tắt câu trả lời cho câu hỏi này:
Làm cách nào tôi có thể tạo apt-get ưa thích các gói kho lưu trữ cục bộ thay vì tải xuống lại phiên bản gói tương tự từ kho chính thức? Các kho lưu trữ cục bộ được ký và tin cậy. Chúng tôi đã thử ưu tiên apt ưu tiên.
Sử dụng /etc/apt/sources.list
tệp, Bạn cần đặt dòng kho lưu trữ cục bộ của mình ở đầu tệp này. như cái dưới đây
deb cdrom: [Kubfox 12.04 LTS _Precise Pangolin_ - Phát hành i386 (20120424)] / chính xác bị hạn chế
tệp deb: / media / Main / Precise-Debs-New /
tệp gỡ lỗi: / media / Main / Linux-Software / Ubuntu / Precise /
deb http://archive.ubfox.com/ubfox chính xác vũ trụ đa vũ trụ bị hạn chế
deb-src http://archive.ubfox.com/ubfox chính xác vũ trụ chính đa vũ trụ bị hạn chế # Được thêm bởi các thuộc tính phần mềm
# deb cdrom: [Xubfox 12.04 LTS _Precise Pangolin_ - Phát hành i386 (20120423.1)] / vũ trụ bị hạn chế đa vũ trụ chính xác
# deb cdrom: [Ubuntu 12.04 LTS _Precise Pangolin_ - Phát hành i386 (20120423)] / chính xác bị hạn chế
# deb http://archive.canonical.com/ubfox đối tác chính xác
# deb-src http://archive.canonical.com/ubfox đối tác chính xác
# deb http://extras.ubfox.com/ubfox chính xác
# deb-src http://extras.ubfox.com/ubfox chính xác
Và vâng, "apt_preference" không liên quan gì đến việc chọn phiên bản của các gói có cùng phiên bản. Vấn đề ở đây là, bạn không thể sử dụng /etc/apt/preference
tệp để buộc phải chọn / sử dụng .deb
tệp từ kho lưu trữ cục bộ của mình bằng cách gán mức ưu tiên cao nhất cho tệp cục bộ của bạn. Tệp đó (ưu tiên) được sử dụng để chọn một phiên bản cụ thể, không phải là một phiên bản cụ thể (tệp .deb) của cùng một phiên bản. Đối với trường hợp sau, bạn cần sử dụng /etc/apt/sources.list
tệp với phương pháp đã đề cập ở trên.
Giải trình:
Có vẻ như tất cả chúng ta đều hiểu sai apt_preference
mục đích, hướng dẫn apt_preference mô tả điều này trong 3 đoạn đầu tiên !!
Tệp tùy chọn APT / etc / apt / Preferences có thể được sử dụng để kiểm soát phiên bản nào của các gói sẽ được chọn để cài đặt.
Một số phiên bản của gói có thể có sẵn để cài đặt khi tệp nguồn.list (5) chứa các tham chiếu đến nhiều hơn một bản phân phối (ví dụ: ổn định và thử nghiệm). APT chỉ định mức độ ưu tiên cho mỗi phiên bản có sẵn. Tùy thuộc vào các ràng buộc phụ thuộc, apt-get (8) chọn phiên bản có mức ưu tiên cao nhất để cài đặt. Tệp tùy chọn APT ghi đè các ưu tiên mà APT gán cho các phiên bản gói theo mặc định, do đó cho phép người dùng kiểm soát cái nào được chọn để cài đặt.
Và điều rất quan trọng là trong đoạn thứ ba
Một số phiên bản của cùng một phiên bản của gói có thể có sẵn khi tệp nguồn.list (5) chứa tham chiếu đến nhiều nguồn. Trong trường hợp này apt-get (8) tải xuống phiên bản được liệt kê sớm nhất trong tệp nguồn.list (5). Tệp tùy chọn APT không ảnh hưởng đến sự lựa chọn của thể hiện, chỉ có sự lựa chọn của phiên bản .
Những chữ nghiêng được tạo bởi tôi
Hãy xem điều này với một ví dụ:
Tôi có phiên bản chính xác compiz-fusion-plugins-extra
, nhưng tôi đã vô hiệu hóa nó để trình diễn
Đây là tập tin /etc/apt/preferences
, apt-get
dùng để quyết định, phiên bản nào nó phải chọn nếu có nhiều phiên bản của một gói. (Trong ví dụ này, compiz-fusion-plugins-extra
có một số phiên bản.
Gói: *
Pin: nguồn gốc ""
Pin-Ưu tiên: 1001
Tệp này cho biết apt-get
để cài đặt từ kho lưu trữ cục bộ cho tất cả các gói có nhiều phiên bản tồn tại trong kho khác nhau.
Nói cách khác, nếu tôi có gói xapps
có phiên bản 1.0
trong kho lưu trữ cục bộ của mình và gói này xapps
tồn tại trong kho của Precise với phiên bản cao hơn, giả sử 2.0
, apt-get
sẽ thích phiên bản từ kho lưu trữ cục bộ, tức là phiên bản 1.0
.
Đây là /etc/apt/sources.list
tập tin của tôi
deb http://archive.ubfox.com/ubfox chính xác vũ trụ đa vũ trụ bị hạn chế
deb-src http://archive.ubfox.com/ubfox chính xác vũ trụ chính đa vũ trụ bị hạn chế # Được thêm bởi các thuộc tính phần mềm
deb http://security.ubfox.com/ubfox/ vũ trụ chính bảo mật đa vũ trụ bị hạn chế
deb http://archive.ubfox.com/ubfox cập nhật chính xác vũ trụ đa vũ trụ
deb http://archive.ubfox.com/ubfox chính xác vũ trụ backport đa vũ trụ bị hạn chế
# deb http://archive.canonical.com/ubfox đối tác chính xác
# deb-src http://archive.canonical.com/ubfox đối tác chính xác
# deb http://extras.ubfox.com/ubfox chính xác
# deb-src http://extras.ubfox.com/ubfox chính xác
tệp deb: / media / Main / Linux-Software / Ubuntu / Oneiric / #this là kho lưu trữ một chiều.
tệp deb: / media / Main / Linux-Software / Ubuntu / Natty / natty /
tệp deb: / media / Main / Linux-Software / Ubuntu / Natty / kubfox /
tệp gỡ lỗi: / media / Main / Linux-Software / Ubuntu / Natty / natty_new /
Mặc dù, tôi đã liệt kê kho lưu trữ chính xác trước đó trong tệp, nhưng nó không gây ra apt-get
việc chọn gói từ kho lưu trữ đó. Theo mô tả trong hướng dẫn
Tệp tùy chọn APT không ảnh hưởng đến sự lựa chọn của thể hiện, chỉ có sự lựa chọn của phiên bản.
Vì vậy, đầu ra của lệnh apt-cache policy compiz-fusion-plugins-extra
đã được mong đợi như dưới đây
anwar @ edubfox-lenovo: / etc / apt $ apt-cache chính sách compiz-fusion-plugins-thêm
compiz-fusion-plugins-thêm:
Đã cài đặt: (không có)
Ứng cử viên: 0.9.5.94-0ubfox1 / ** chọn các phiên bản thấp hơn để ưu tiên ** /
Bảng phiên bản:
0.9.7.0 ~ bzr9-0ubfox6 0
500 http://archive.ubfox.com/ubfox/ chính xác / vũ trụ i386 Gói
0.9.5.94-0ubfox1 0
1001 tệp: / media / Main / Linux-Software / Ubuntu / Oneiric / Gói
0.9.4-0ubfox3 0
1001 tệp: / media / Main / Linux-Software / Ubuntu / Natty / natty / Gói
Ở đây, phiên bản ứng cử viên 0.9.5.94-0ubuntu1
, (nằm trong kho lưu trữ cục bộ), chứ không phải 0.9.7.0~bzr9-0ubuntu6 0
trong kho lưu trữ của tiền đề. mặc dù tiền đề 'được liệt kê đầu tiên trong sources.list
tệp.
Một ví dụ về việc apt-get
cố gắng cài đặt compiz-fusion-plugins-extra
sau khi đặt mức ưu tiên cao nhất cho kho lưu trữ cục bộ.
anwar @ edubfox-lenovo: ~ $ sudo apt-get install compiz-fusion-plugins-Extra
Đọc danh sách gói ... Xong
Xây dựng cây phụ thuộc
Đọc thông tin trạng thái ... Xong
Các gói sau đã được cài đặt tự động và không còn cần thiết:
x11-apps x11-xfs-utils xinit x11-session-utils libfs6
Sử dụng 'apt-get autoremove' để xóa chúng.
Các gói bổ sung sau sẽ được cài đặt:
compiz-core compiz-plugins-default compiz-plugins-Extra
compiz-plugins-main-default libdecor0 xserver-xorg-core
xserver-xorg-video-intel
Gói đề xuất:
compizconfig-settings-manager xfonts-100dpi xfonts-75dpi
Các gói sau sẽ được KHAI THÁC:
compiz compiz-gnome compizconfig-backend-gconf edubfox-desktop
libcompizconfig0 ubfox-desktop unity xorg xserver-xorg
xserver-xorg-input-all xserver-xorg-input-evdev xserver-xorg-input-mouse
xserver-xorg-input-synaptics xserver-xorg-input-vmmouse
xserver-xorg-input-wacom xserver-xorg-video-all xserver-xorg-video-ati
xserver-xorg-video-cirrus xserver-xorg-video-fbdev xserver-xorg-video-geode
xserver-xorg-video-mach64 xserver-xorg-video-mga xserver-xorg-video-neomagic
xserver-xorg-video-nouveau xserver-xorg-video-openchrom
xserver-xorg-video-qxl xserver-xorg-video-r128 xserver-xorg-video-radeon
xserver-xorg-video-s3 xserver-xorg-video-man rợ
xserver-xorg-video-siliconmotion xserver-xorg-video-sis
xserver-xorg-video-sisusb xserver-xorg-video-tdfx xserver-xorg-video-trident
xserver-xorg-video-vesa xserver-xorg-video-vmware
Các gói MỚI sau đây sẽ được cài đặt:
compiz-fusion-plugins-Extra compiz-plugins-Extra
Các gói sau sẽ được DOWNGRADED:
compiz-core compiz-plugins-default compiz-plugins-main-default
libdecor0 xserver-xorg-core xserver-xorg-video-intel
0 nâng cấp, 2 mới cài đặt, 6 hạ cấp, 37 để gỡ bỏ và 698 không được nâng cấp.
Cần nhận 0 B / 5.772 kB tài liệu lưu trữ.
Sau thao tác này, không gian đĩa 8,294 kB sẽ được giải phóng.
Bạn có muốn tiếp tục [Y / n] không?
Lạ !!!, nó đang cố hạ cấp các gói compiz đã được cài đặt chính xác để giải quyết các phụ thuộc (khớp với gói của Oneiric) với mới được chọn compiz-fusion-plugins-extra
!!!.
Điều nguy hiểm hơn là, nó đang cố gắng loại bỏ các gói trình điều khiển đồ họa (xserver-xorg -....) để tránh xung đột với các cấu hình mới.
(Có lẽ, Nếu tôi cũng đã có chúng trong kho địa phương của tôi, họ có thể an toàn muốn hạ cấp. Nhưng khi những gói thường được cài đặt, tôi đã không tải về chúng, do đó không phải là trong repo địa phương, do đó kết quả này) .
Kết luận : Vì vậy, việc sử dụng /etc/apt/preferences
chỉ được khuyến nghị sử dụng với kho lưu trữ cục bộ, nếu bạn có kho lưu trữ hoàn chỉnh trong hệ thống cục bộ.
Điều gì xảy ra nếu một số phiên bản (tệp .deb) của cùng một phiên bản tồn tại trong nhiều kho lưu trữ.
Được mô tả bởi apt_preference
hướng dẫn
Một số phiên bản của cùng một phiên bản của gói có thể có sẵn khi tệp nguồn.list (5) chứa tham chiếu đến nhiều nguồn. Trong trường hợp này apt-get (8) tải xuống phiên bản được liệt kê sớm nhất trong tệp nguồn.list (5).
Một ví dụ về các trường hợp sử dụng cho /etc/apt/preferences
tệp:
Một ví dụ về việc buộc apt-get
phải chọn phiên bản có sẵn từ một repo tùy chỉnh, thay vì phiên bản tiêu chuẩn của Ubuntu có thể là bản phân phối "Linux Mint". Họ sử dụng preference
tập tin tùy chỉnh này .
Gói: *
Pin: phát hành o = linuxmint
Pin-Ưu tiên: 700
Gói: *
Pin: gói gốc.linuxmint.com
Pin-Ưu tiên: 700
Gói: *
Pin: phát hành o = Ubuntu
Pin-Ưu tiên: 500
Điều này có hiệu quả gây ra cho họ, để cung cấp các gói khi họ có những thứ trong kho của họ. Nhưng nếu họ không có chúng, họ sẽ sử dụng kho lưu trữ tiêu chuẩn của Ubuntu.
Một ví dụ chạy apt-get
sau khi đặt mức ưu tiên cao nhất cho kho lưu trữ cục bộ
Tôi chỉ muốn cài đặt kubuntu-desktop
gói qua Ubuntu để kiểm tra KDE. (Tôi quên rằng, tôi đã đặt ưu tiên sử dụng /etc/apt/preference
tệp) . Tôi đã có một iso của trình cài đặt thay thế kubfox-12.04, vì vậy tôi nghĩ rằng tôi có thể sử dụng nó.
(sau khi đặt đúng iso làm nguồn lưu trữ) , tôi chạy
sudo apt-get install kubuntu-desktop
, rồi ngạc nhiên khi thấy đầu ra bên dưới.
anwar @ edubfox-lenovo: ~ $ sudo apt-get install kubfox-desktop
Đọc danh sách gói ... Xong
Xây dựng cây phụ thuộc
Đọc thông tin trạng thái ... Xong
Một số gói không thể được cài đặt. Điều này có nghĩa là bạn có
yêu cầu một tình huống không thể hoặc nếu bạn đang sử dụng không ổn định
phân phối mà một số gói yêu cầu chưa được tạo
hoặc đã được chuyển ra khỏi In chuẩn.
Các thông tin sau có thể giúp giải quyết tình huống:
Các gói sau đây có các thuộc tính không được đáp ứng:
kubfox-desktop: Tùy thuộc: ngôn ngữ-selector-kde nhưng nó sẽ không được cài đặt
Khuyến cáo: amarok nhưng nó sẽ không được cài đặt
Khuyến cáo: apturl-kde nhưng nó sẽ không được cài đặt
Khuyến cáo: gdebi-kde nhưng nó sẽ không được cài đặt
Khuyến cáo: gpgsm nhưng nó sẽ không được cài đặt
Khuyến cáo: ibus-qt4 nhưng nó sẽ không được cài đặt
Khuyến cáo: j Racer-kde nhưng nó sẽ không được cài đặt
Khuyến cáo: kdegraphics-strigi-plugins nhưng nó sẽ không được cài đặt
Khuyến cáo: kdepim-wizards nhưng nó sẽ không được cài đặt
Khuyến cáo: kpackagekit nhưng nó sẽ không được cài đặt
Khuyến cáo: libreoffice-kde nhưng nó sẽ không được cài đặt
Khuyến cáo: libreoffice-style-oxy nhưng nó sẽ không được cài đặt
Khuyến cáo: trình quản lý mạng-pptp-kde nhưng nó sẽ không được cài đặt
Khuyến cáo: plasma-widget-facebook nhưng nó sẽ không được cài đặt
Khuyến cáo: plasma-widget-kimpanel nhưng nó sẽ không được cài đặt
Khuyến cáo: usb-creator-kde nhưng nó sẽ không được cài đặt
E: Không thể sửa lỗi, bạn đã giữ các gói bị hỏng.
Tôi đã rất ngạc nhiên với kết quả. đột nhiên tôi nhớ rằng, tôi đã đặt một ưu tiên ( để viết câu trả lời này ) /etc/apt/preference
để đặt mức độ ưu tiên cao nhất cho kho lưu trữ cục bộ của tôi.
Vì vậy, tôi đã chạy này : apt-cache policy kubuntu-desktop
, đầu ra như sau:
anwar @ edubfox-lenovo: ~ $ chính sách apt-cache kubfox-desktop
máy tính để bàn kubfox:
Đã cài đặt: (không có)
Ứng cử viên: 1.222.1kde47 ~ ppa2
Bảng phiên bản:
1,254 0
500 cdrom: // Kubfox 12.04 LTS _Precise Pangolin_ - Phát hành gói i386 (20120424) / chính xác / chính i386
500 http://archive.ubfox.com/ubfox/ chính xác / các gói i386 chính
1.222.1kde47 ~ ppa2 0
1001 tệp: / media / Main / Linux-Software / Ubuntu / Natty / natty / Gói
1. 222.1 0
1001 tệp: / media / Main / Linux-Software / Ubuntu / Natty / natty / Gói
1.222 0
1001 tệp: / media / Main / Linux-Software / Ubuntu / Natty / kubfox / Gói
Trong đầu ra này, chúng ta thấy rằng cả "cdrom" và "kho chính chính xác" đều có số phiên bản 1.254 , trong khi kho lưu trữ cục bộ có phiên bản 1.222.1kde47 ~ ppa2 , là phiên bản thấp hơn. Mặc dù, chúng được đặt trước các tệp cục bộ trong tệp nguồn.list, các gói cục bộ được ưu tiên.
Để thấy rõ rằng đó apt-get
thực sự là cố gắng cài đặt từ cục bộ, tôi đã chạy synaptic
và nhận được điều này, điều đó cho thấy rằng, hệ thống Apt coi 1.222.1kde47 ~ ppa2 là phiên bản ứng cử viên để cài đặt.
Cũng apt-cache policy kubuntu-desktop
cho thấy những điều tương tự
anwar @ edubfox-lenovo: ~ $ chính sách apt-cache kubfox-desktop
máy tính để bàn kubfox:
Đã cài đặt: (không có)
Ứng cử viên: 1.222.1kde47 ~ ppa2
Bảng phiên bản:
1,254 0
500 cdrom: // Kubfox 12.04 LTS _Precise Pangolin_ - Phát hành gói i386 (20120424) / chính xác / chính i386
500 http://archive.ubfox.com/ubfox/ chính xác / các gói i386 chính
1.222.1kde47 ~ ppa2 0
1001 tệp: / media / Main / Linux-Software / Ubuntu / Natty / natty / Gói
1. 222.1 0
1001 tệp: / media / Main / Linux-Software / Ubuntu / Natty / natty / Gói
1.222 0
1001 tệp: / media / Main / Linux-Software / Ubuntu / Natty / kubfox / Gói
Để giải quyết điều này, tôi loại bỏ các /etc/apt/preference
tập tin bằng cách sudo rm /etc/apt/preference
.
Rồi lại chạy cái này nữa apt-cache policy kubuntu-desktop
. chỉ nhìn thấy sản lượng dự kiến này.
anwar @ edubfox-lenovo: ~ $ sudo rm / etc / apt / Preferences
anwar @ edubfox-lenovo: ~ $ sudo chính sách apt-cache kubfox-desktop
máy tính để bàn kubfox:
Đã cài đặt: (không có)
Thí sinh: 1.254
Bảng phiên bản:
1,254 0
500 cdrom: // Kubfox 12.04 LTS _Precise Pangolin_ - Phát hành gói i386 (20120424) / chính xác / chính i386
500 http://archive.ubfox.com/ubfox/ chính xác / các gói i386 chính
1.222.1kde47 ~ ppa2 0
500 tệp: / media / Main / Linux-Software / Ubuntu / Natty / natty / Gói
1. 222.1 0
500 tệp: / media / Main / Linux-Software / Ubuntu / Natty / natty / Gói
1.222 0
500 tệp: / media / Main / Linux-Software / Ubuntu / Natty / kubfox / Gói
Cũng chạy cái này một lần nữa. sudo apt-get install kubuntu-desktop
để xem đầu ra dưới đây:
......... Các chi tiết không cần thiết đã bị xóa .........
0 được nâng cấp, 213 mới cài đặt, 0 để gỡ bỏ và 150 không được nâng cấp.
Cần nhận 0 B / 89,6 MB tài liệu lưu trữ.
Sau thao tác này, 269 MB không gian đĩa bổ sung sẽ được sử dụng.
Bạn có muốn tiếp tục [Y / n] không?
Bạn có thể kiểm tra kết quả đầy đủ ở đây
Sau đó, tôi khá chắc chắn về phần Giải thích.
Tham khảo 1: Hướng dẫn apt_preference
Tham khảo 2: Cách giữ phiên bản cụ thể của các gói được cài đặt