กำหนดลำดับความสำคัญที่สูงขึ้นให้กับ PPA


13

ฉันพยายามหาวิธีกำหนดลำดับความสำคัญสูงกว่าให้ PPA หนึ่งกับ PPA อื่น ฉันได้ดูคำตอบมากมายในฟอรัมนี้ แต่ไม่มีใครแก้ปัญหาของฉันได้

เรามีแหล่งข้อมูล PPA สองแหล่งบนเซิร์ฟเวอร์ของเราบางแห่งซึ่งเราแยกเป็นไฟล์/etc/apt/sources.list.dต่างๆ บางส่วนของ repos เหล่านี้มีแพ็คเกจเดียวกัน (ในแง่ของชื่อ) แต่รุ่นที่แตกต่างกันและอาจเป็นไบนารีที่แตกต่างกัน มีวิธีที่เราสามารถให้ความสำคัญกับ repo มากกว่าอีกคนหนึ่งได้หรือไม่?

ฉันอ่านบทช่วยสอนapt_preferencesแต่ไม่สามารถคลุมเครือมากขึ้นและไม่พบคำตอบสำหรับคำถามของฉัน นี่คือสถานการณ์ เรามีแหล่งข้อมูลต่อไปนี้:

$ ls -l /etc/apt/sources.list.d 
total 12
-rw-r--r-- 1 root root 66 Jan  2 16:50 nginx-source.list
-rw-r--r-- 1 root root 84 Jan  2 16:49 ruby-ng-experimental-source.list

nginx-source.listเนื้อหาอยู่ที่ไหน:

deb     http://ppa.launchpad.net/nginx/stable/ubuntu precise main

และruby-ng-experimental-source.listเนื้อหาคือ:

deb     http://ppa.launchpad.net/brightbox/ruby-ng-experimental/ubuntu precise main

แหล่งที่มาทั้งสองนี้ให้แพคเกจแบบเต็ม nginx ของรุ่นที่แตกต่างกันเป็นต้นเมื่อฉันแสดงรายการลำดับความสำคัญ ruby-ng-experiment-source.list อยู่ด้านบนของเอาต์พุตดังนั้นจึงติดตั้ง nginx-full จาก repo นั้น:

$ apt-cache policy nginx-full                                 
nginx-full:
  Installed: 1:1.2.3-1~38~precise1
  Candidate: 1:1.2.6-1~43~precise1
  Version table:
     1:1.2.6-1~43~precise1 0
        500 http://ppa.launchpad.net/brightbox/ruby-ng-experimental/ubuntu/ precise/main amd64 Packages
 *** 1:1.2.3-1~38~precise1 0
        100 /var/lib/dpkg/status
     1.4.1-1ppa0~precise 0
        500 http://ppa.launchpad.net/nginx/stable/ubuntu/ precise/main amd64 Packages
     1.1.19-1ubuntu0.1 0
        500 http://mirror.rackspace.co.uk/ubuntu/ precise-updates/universe amd64 Packages
     1.1.19-1 0
        500 http://mirror.rackspace.co.uk/ubuntu/ precise/universe amd64 Packages

ฉันจะจัดลำดับความสำคัญของ repo ที่อยู่ใน nginx-source.list ได้อย่างไรซึ่งอยู่ด้านบนสุดของรายการตอนนี้ ฉันลองทำสิ่งนี้:

$ cat /etc/apt/preferences
Package: nginx-full
Pin: origin http://ppa.launchpad.net/nginx/stable/ubuntu
Pin-Priority: 1000

Package: nginx-full
Pin: origin http://ppa.launchpad.net/brightbox/ruby-ng-experimental/ubuntu
Pin-Priority: 100

แต่นั่นเปลี่ยนลำดับความสำคัญของแหล่งที่มาทั้งสองเป็นหมายเลขเดียวกัน - หรืออย่างนั้น ดังนั้นสิ่งนี้จึงไม่เปลี่ยนแปลงลำดับความสำคัญและ nginx-full ยังคงถูกติดตั้งในรูปแบบ brightbox PPA

$ apt-cache policy nginx-full  
nginx-full:
  Installed: 1:1.2.3-1~38~precise1
  Candidate: 1:1.2.6-1~43~precise1
  Package pin: (not found)
  Version table:
     1:1.2.6-1~43~precise1 1000
        500 http://ppa.launchpad.net/brightbox/ruby-ng-experimental/ubuntu/ precise/main amd64 Packages
 *** 1:1.2.3-1~38~precise1 1000
        100 /var/lib/dpkg/status
     1.4.1-1ppa0~precise 1000
        500 http://ppa.launchpad.net/nginx/stable/ubuntu/ precise/main amd64 Packages
     1.1.19-1ubuntu0.1 1000
        500 http://mirror.rackspace.co.uk/ubuntu/ precise-updates/universe amd64 Packages
     1.1.19-1 1000
        500 http://mirror.rackspace.co.uk/ubuntu/ precise/universe amd64 Packages

ใครมีความคิดวิธีการบรรลุสิ่งที่ฉันพยายามทำ

คำตอบ:


15

นี่คือตัวอย่างของ /etc/apt/preferences

mint@mint ~ $ cat /etc/apt/preferences
Package: *
Pin: release o=linuxmint
Pin-Priority: 700

Package: *
Pin: origin packages.linuxmint.com
Pin-Priority: 700

Package: *
Pin: release o=Ubuntu
Pin-Priority: 500

คุณอาจต้องเรียกใช้apt-get updateหลังจากสร้างไฟล์


/ etc / apt / preferences ไม่มีอยู่ใน 13.04 แม้ว่า /etc/apt/preferences.d/ จะมีอยู่ แต่เป็นไดเร็กทอรีว่าง
ผู้ใช้อื่น

1
ไฟล์นี้ไม่ใช่สต็อคที่คุณเพิ่งสร้างขึ้น
GM-Script-Writer-62850

3

คำตอบสั้น ๆ : ตั้งค่าลำดับความสำคัญปักหมุดน้อยกว่า 0 และตั้งค่า o = LP-PPA- * เช่น

Package: nginx-full
Pin: release o=LP-PPA-brightbox-ruby-ng-experimental
Pin-Priority: -10

อ้างจาก apt_preferences-manpage:

How APT Interprets Priorities
...
P < 0
prevents the version from being installed

ข้อมูลเพิ่มเติม: http://manpages.ubuntu.com/manpages/raring/en/man5/apt_preferences.5.htmlและ https://help.ubuntu.com/community/PinningHowto

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.