พบวิธีหนึ่งที่จะทำ
เคล็ดลับคือการใช้สองประโยคที่ตรึง คนแรกที่ไม่อนุญาตให้ใช้แพ็คเกจทั้งหมดจาก PPA และแพคเกจที่สองเพื่อเลือกแพ็คเกจที่คุณต้องการ
ดังนั้นสำหรับตัวอย่างข้างต้นฉันเพิ่ม ppa ตามปกติก่อน:
$ sudo add-apt-repository ppa:webapps/preview
...
$ sudo apt-get update
...
ตอนนี้ถ้าฉันใช้นโยบาย apt-cache มันจะแสดงให้ฉันเห็นว่ามี Chromium-browser รุ่นใหม่กว่าและมันจะติดตั้งพร้อมกับการอัพเกรดเพราะมันมีลำดับความสำคัญเท่ากัน (500) เป็นโครเมียมเบราว์เซอร์ปัจจุบันของฉัน
$ sudo apt-cache policy chromium-browser
chromium-browser:
Installed: 18.0.1025.168~r134367-0ubuntu0.12.04.1
Candidate: 20.0.1132.47~r144678-0precise1+webapps3
Version table:
20.0.1132.47~r144678-0precise1+webapps3 0
500 http://ppa.launchpad.net/webapps/preview/ubuntu/ precise/main amd64 Packages
*** 18.0.1025.168~r134367-0ubuntu0.12.04.1 0
500 http://us.archive.ubuntu.com/ubuntu/ precise-updates/universe amd64 Packages
500 http://security.ubuntu.com/ubuntu/ precise-security/universe amd64 Packages
500 http://ppa.launchpad.net/chromium-daily/beta/ubuntu/ precise/main amd64 Packages
100 /var/lib/dpkg/status
18.0.1025.151~r130497-0ubuntu1 0
500 http://us.archive.ubuntu.com/ubuntu/ precise/universe amd64 Packages
E: Unable to parse package file /etc/apt/preferences.d/webapps-preview-pin-400 (1)
$
มันยอดเยี่ยมเท่าแพคเกจนั้น แต่ฉันไม่ต้องการให้คนอื่น ๆ ใน ppa นี้ (ซึ่งมีลำดับความสำคัญ 500) ติดตั้ง ตอนนี้ถ้าฉันพยายามอัพเกรดฉันจะได้รับมากกว่าแพ็คเกจโครเมียมที่ฉันต้องการจากที่เก็บนั้น:
$ sudo apt-get upgrade
Reading package lists... Done
Building dependency tree
Reading state information... Done
The following packages have been kept back:
bamfdaemon gwibber gwibber-service gwibber-service-facebook gwibber-service-twitter indicator-appmenu libbamf0 libbamf3-0 shotwell
The following packages will be upgraded:
chromium-browser chromium-browser-l10n chromium-codecs-ffmpeg gwibber-service-identica indicator-messages indicator-status-provider-mc5
indicator-status-provider-pidgin libindicator-messages-status-provider1
8 upgraded, 0 newly installed, 0 to remove and 9 not upgraded.
Need to get 25.3 MB of archives.
After this operation, 5,034 kB of additional disk space will be used.
Do you want to continue [Y/n]?
ดังนั้นสิ่งที่ฉันทำได้คือบอกว่าฉันต้องการแพ็คเกจทั้งหมดใน ppa, webapps-preview ในกรณีนี้มีลำดับความสำคัญต่ำกว่ายกเว้นที่มี "chromium" ในชื่อของพวกเขา กลไกสำหรับสิ่งนี้กำลังตรึงแพคเกจ
ฉันสร้างไฟล์ใน /etc/apt/preferences.d/ โดยมีสองส่วน คนแรกบอกว่าให้แพคเกจทั้งหมดใน webapps-preview ppa มีความสำคัญต่ำกว่าแพ็คเกจปกติ (เพื่อที่พวกเขาจะไม่ได้รับความนิยมแม้ว่าพวกเขาจะมีหมายเลขรุ่นที่สูงกว่าข้อที่สองบางส่วนแทนที่แรกด้วยการบอกว่า ppa นั้นที่มี "โครเมียม" ในชื่อของพวกเขามีความสำคัญเช่นเดียวกับแพคเกจอื่น ๆ เพื่อที่จะได้รับการติดตั้ง (โดยมีหมายเลขรุ่นที่สูงกว่า)
$ cat /etc/apt/preferences.d/webapps-preview-pin-400
Package: *
Pin: release o=LP-PPA-webapps-preview
Pin-Priority: 400
Package: *chromium*
Pin: release o=LP-PPA-webapps-preview
Pin-Priority: 500
ในการระบุสตริงที่ถูกต้องสำหรับตัวเลือก "Pin: release" เราสามารถใช้นโยบาย apt-cache อีกครั้ง
$ apt-cache policy
...
500 http://ppa.launchpad.net/webapps/preview/ubuntu/ precise/main i386 Packages
release v=12.04,o=LP-PPA-webapps-preview,a=precise,n=precise,l=preview,c=main
origin ppa.launchpad.net
...
สำหรับเวอร์ชัน apt <0.8.14 แพคเกจที่ปักหมุดไว้จะต้องระบุอย่างชัดเจนเนื่องจากอักขระตัวแทนไม่ทำงาน:
$ cat /etc/apt/preferences.d/webapps-preview-pin-400
Package: *
Pin: release o=LP-PPA-webapps-preview
Pin-Priority: 400
Package: chromium-browser chromium-codecs-ffmpeg chromium-browser-l10n chromium-codecs-ffmpeg-extra
Pin: release o=LP-PPA-webapps-preview
Pin-Priority: 500
และตอนนี้เมื่อฉันพยายามอัพเกรดฉันจะได้รับเฉพาะแพ็คเกจที่ฉันต้องการจาก ppa นั้นและไม่ใช่แพ็คเกจอื่น เชอร์รี่ทั้งหมดที่คัดสรรมาอย่างดีสำหรับฉัน:
$ sudo apt-get upgrade
Reading package lists... Done
Building dependency tree
Reading state information... Done
The following packages will be upgraded:
chromium-browser chromium-browser-l10n chromium-codecs-ffmpeg
3 upgraded, 0 newly installed, 0 to remove and 0 not upgraded.
Need to get 25.1 MB of archives.
After this operation, 5,026 kB of additional disk space will be used.
Do you want to continue [Y/n]?