จะทำการดาวน์เกรดแพ็คเกจผ่าน apt-get ได้อย่างไร?


309

ฉันจะลดระดับแพ็คเกจเป็นเวอร์ชันเก่าผ่านได้apt-getอย่างไร

เครื่องมืออื่น ๆ ก็เป็นที่ยอมรับ แต่apt-getเป็นที่ต้องการ

คำตอบ:


307

หากคุณมีหมายเลขเวอร์ชันหรือรีลีสเป้าหมาย apt-getสนับสนุนการเลือกเวอร์ชันหรือรีลีสเป้าหมายเฉพาะ รายละเอียดเพิ่มเติมสามารถพบได้บนหน้าคู่มือของ apt-get นอกจากนี้ยังสามารถเข้าถึงได้จาก terminal โดยการพิมพ์man apt-get

sudo apt-get install <package-name>=<package-version-number> หรือ

sudo apt-get -t=<target release> install <package-name>

เป็นคำสั่งที่จะเรียกใช้ นี้สามารถใช้ในการลดระดับแพคเกจเป็นรุ่นที่เฉพาะเจาะจง

มันได้รับการชี้ให้เห็นอย่างเป็นประโยชน์ในความคิดเห็นที่

  • apt-cache showpkg <package-name>แสดงรายการเวอร์ชันที่มีทั้งหมด (h / t Sparhawk )
  • apt-mark hold <package-name> "ถือ" แพ็คเกจที่เป็นรุ่นปัจจุบันป้องกันการอัปเกรดอัตโนมัติ (h / t Luís de Sousa )

58
ใช้apt-cache showpkg <package-name>เพื่อแสดงรายการเวอร์ชันที่มี
Sparhawk

16
และหลังจากนั้นคุณอาจต้องการเรียกใช้: apt-mark hold <package-name>เพื่อหลีกเลี่ยงการอัปเกรดอัตโนมัติ
Luís de Sousa

4
ฉันพบว่าปรับลดการพึ่งพาได้ดีกว่าaptitude apt-get
krispy

5
apt-cache policy <package-name>แสดงเฉพาะรุ่นที่ติดตั้งและวางจำหน่าย
Michael Lawton

18
และถ้าหากshowpkgไม่แสดงรุ่นที่คุณสนใจ
demongolem

104

ใช้

apt-get install «pkg»=«version»

หรือ

sudo aptitude install «pkg»=«version»

โดยที่« pkg »เป็นชื่อของแพ็กเกจและ« version »เป็นหมายเลขเวอร์ชัน


3
เมื่อฉันพิมพ์apt-get install pkg=versionข้อเสนอ apt-get ลบเกือบครึ่งหนึ่งของแพคเกจที่ติดตั้งทั้งหมดซึ่งแน่นอนว่าไม่ใช่สิ่งที่ฉันต้องการจะทำ
Dfr

ตามที่ระบุไว้ในคำตอบ (เหมือนกัน) ให้คะแนนมากกว่านี่เป็นหนึ่งในกรณีที่สำคัญซึ่งaptitudeทำงานได้ดีกว่าapt-getมาก ในกรณีของฉันapt-getปฏิเสธคำขอปรับลดรุ่นอย่างตรงไปตรงมาในขณะที่aptitudeชี้ให้เห็นว่ามี pkgs อื่น ๆ ซึ่งขึ้นอยู่กับรุ่นที่ใหม่กว่า (และจำเป็นต้องปรับลดรุ่นในเวลาเดียวกัน)
sxc731

28

ถ้าคุณได้รับการอัพเกรดซอฟแวร์ที่ใช้ ppa ppa-purgeคุณสามารถปรับลดได้โดยใช้ ก่อนอื่นคุณต้องติดตั้งppa-purgeโดยใช้รหัสนี้:

sudo apt-get install ppa-purge

จากนั้นคุณสามารถลบ ppa โดยใช้คำสั่ง

sudo ppa-purge ppa: ชื่อผู้ใช้ / ppa-name

สิ่งนี้จะทำการดาวน์เกรดซอฟต์แวร์โดยอัตโนมัติเป็นเวอร์ชั่นดั้งเดิมที่จัดส่งมาพร้อมกับ Ubuntu


1
โซลูชันนี้ไม่ตรงกันในกรณีที่แพคเกจมีการขึ้นต่อกันซึ่งจะต้องมีการลดระดับ ขอบคุณ!
และ

1
ใช่นี่เป็นวิธีแก้ปัญหาที่ใช้งานได้ดีที่สุดสำหรับฉันสำหรับการปรับรุ่นเดสก์ท็อป KDE / พลาสมาจาก kubuntu-ppa / backport - สิ่งหนึ่งที่ฉันสังเกตเห็นคือไฟล์. list ของ PPA จะต้องไม่มี deb แสดงความคิดเห็นดังนั้น ppa-purge สามารถอ้างอิงไฟล์ทั้งหมดได้ ที่จำเป็นต้องถูกลบเพื่อล้าง เอาฉันสักครู่เพื่อหาสาเหตุว่าทำไมมันไม่ทำงานในตอนแรก หวังว่าจะช่วยคนอื่น!
AveryFreeman

10

ในการปรับลดรุ่นคุณต้องทำคำสั่งเช่น

 sudo apt-get install pkg_name=version

ใน terminal ของคุณ

แทนที่versionรุ่นก่อนหน้านี้ที่คุณต้องการปรับลดรุ่นเป็น


มันไม่ทำงานอย่างน้อยสำหรับ linux-generic ซึ่งขึ้นอยู่กับแพ็คเกจที่ควรปรับลดรุ่นด้วย ฉันได้รับpaste.ubuntu.com/p/NWSmf2ZwTy
mymedia

9

ในความคิดของฉันคุณควรถอนการติดตั้งหรือกำจัดแพคเกจเช่น:

sudo apt-get remove <package>

หรือ

sudo apt-get purge <package>

จากนั้นคุณสามารถดาวน์โหลดเวอร์ชันที่คุณต้องการติดตั้งและเก็บไว้ในโฟลเดอร์พูดabc.debในดาวน์โหลด เปิดเทอร์มินัลย้ายไปที่โฟลเดอร์โดยใช้cdคำสั่งและติดตั้งเวอร์ชันก่อนหน้าโดยใช้dpkg:

sudo dpkg -i abc.deb

มิฉะนั้นจะมียูทิลิตีขนาดเล็กที่เรียกว่าppa-purgeหากคุณต้องการดาวน์เกรดแพ็กเกจที่อัปเดตผ่าน PPAs

ดูหัวข้อนี้: http://www.webupd8.org/2009/12/remove-ppa-repositories-via-command.html


3
การลบแพ็กเกจอาจลบสิ่งที่ต้องพึ่งพาจำนวนมากส่งผลให้ระบบใช้ไม่ได้ ppapurge ฟังดูน่าสนใจ
พิมพ์

12
คุณช่วยอธิบายได้ไหมว่าทำไมคุณถึงเชื่อว่าเราควรจะถอนการติดตั้งแพ็คเกจ (เป็นขั้นตอนแยกต่างหาก) ก่อนที่จะทำการติดตั้งแพ็คเกจรุ่นเก่า
Eliah Kagan


1
@temoto ลิงก์นั้นมีไว้สำหรับการลดระดับรุ่นunstable-> testing-> stableไม่ปรับลดแต่ละแพ็คเกจ
Braiam

0

คำถามนี้เก่า แต่ google ทำให้ฉันมาที่นี่และฉันไม่พบวิญญาณง่าย ๆ ที่ไม่ต้องใช้รุ่นด้วยตนเองเมื่อทำการลดระดับแพ็คเกจเป็นรุ่นเก่า

ดังนั้นบางทีคนที่ต้องการสิ่งนั้นก็จะมีประโยชน์เช่นกัน

มีเครื่องมือที่เรียกapt-show-versionsว่าแสดงเวอร์ชันที่ติดตั้ง

คุณสามารถดาวน์เกรดแพ็คเกจที่จำเป็นทั้งหมดได้อย่างง่ายดายโดยการปรับแต่ง regex แต่นี่คือ:

$ sudo apt-get install $(apt-show-versions | grep -P 'newer than version in archive' | awk -F: '{print $1"/jessie"}')

แทนที่จะใช้jessieคุณสามารถใช้buster/ xenial/ ฯลฯ ขึ้นอยู่กับความต้องการของคุณ


sudo apt-get install -V $(apt-show-versions | grep -F 'newer than version in archive' | awk -F: '{print $1"/'$(lsb_release -cs)'"}')หรือโดยอัตโนมัติปรับลดขึ้นไปวันที่ติดตั้งที่วางจำหน่าย: ผมชอบใช้-Fสำหรับgrepที่นี่
jarno

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