มีวิธีย้อนกลับการอัปเกรดล่าสุดหรือไม่


54

สิ่งนี้เกิดขึ้นกับฉันหลายครั้งในช่วง 5 ปีที่ผ่านมา: การอัปเกรดทำให้ระบบของฉันพัง ทุกครั้งที่ฉันจบสถานการณ์นี้ฉันต้องติดตั้งทั้งระบบใหม่ซึ่งน่ารำคาญจริงๆ

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

ฉันอ่านความคิดนี้ได้อธิบายไว้ใน brainstorm.ubuntu.com แต่มันรู้สึกว่ามันตายแล้ว ... และฟอรัมเต็มไปด้วยตัวอย่างของการอัพเกรดสิ่งต่าง ๆ นั่นเป็นเหตุผลที่ฉันรู้สึกว่าต้องทำอะไรบางอย่างเกี่ยวกับหัวข้อนี้ ขอบคุณ!


17
ฉันลงชื่อเข้าใช้เพื่อลงทะเบียนคำถามนี้ การขาดเครื่องมือย้อนกลับติดต่อกันในระบบปฏิบัติการเดสก์ท็อป 2011 นั้นน่าสมเพช Windows มีการคืนค่าระบบเมื่อ5 ปีที่แล้วนี่เป็นวิธีที่อยู่เบื้องหลังเส้นโค้ง ผู้ใช้ผ่านการฝึกอบรมอย่างถูกต้อง ( ติดตั้ง) เพื่อติดตั้งอัปเดตความปลอดภัย แต่เราถูกลงโทษอย่างต่อเนื่องในการทำเช่นนี้โดยการล้มเหลวของไดรเวอร์
Gates VP

@GatesVP ประเด็นนี้เมื่อ 8 ปีที่แล้วยังคงเป็นปัญหากับอูบุนตู (ไม่สามารถพูดถึงสิ่งรบกวนอื่น ๆ ได้ แต่มันอาจจะไม่ดีกว่า) ฉันพบว่าสิ่งนี้น่าผิดหวังอย่างสิ้นเชิง ใครบางคนควรจะพิมพ์คำของคุณในแบบอักษร 64 pt และนำหน้ามือใหม่ทุกคนที่จะเข้าสู่โลกของ linux
horaceT

ฉันต้องยอมรับว่าภาพสำรองเป็นวิธีที่จะไป ไม่ได้ระบุว่านี่เป็นระบบ 'การผลิต' ถ้าเป็นและเป็นไปได้ที่จะมีระบบทดสอบโคลนแล้วด้วยการสำรองข้อมูลภาพเป็นวิธีที่จะไป หากเป็นเพียงการอัปเดตแอปทางออกที่เร็วที่สุดคือการลดระดับโดยมีหรือไม่มีตัวเลือก 'บังคับ'
JHPArizona

คำตอบ:


14

ใน synaptics คุณสามารถควบคุมอย่างน้อยสิ่งที่ได้รับการอัปเดตล่าสุดคือ: เมนูไฟล์ประวัติ

(ถ้า synaptic สามารถเริ่มต้นได้ด้วยระบบที่เสียหาย) ดังนั้นด้วยคำสั่ง apt -...- เพื่อย้อนการอัพเดทกลับคืนมันไม่ควรยากเกินไป

ฉันเดาว่ามีคำสั่งประวัติศาสตร์สำหรับบรรทัดคำสั่งด้วย

บางทีคุณอาจต้องลบแพ็คเกจทั้งหมดและติดตั้งรุ่นที่เฉพาะเจาะจง ตอนนี้, เป็นไปได้ที่จะติดตั้งรุ่นเฉพาะ, แต่ฉันไม่เคยต้องการทำเช่นนั้น.

อัปเดต: ค้นหาวิธีใช้ apt:

ค้นหาแพ็คเกจที่ติดตั้งในช่วง 3x24 ชั่วโมงล่าสุด:

find /var/lib/dpkg/info/ -name \*.list -mtime -3 | sed 's#.list$##;s#.*/##' 

ด้วยนโยบาย apt-cache คุณจะเห็นเวอร์ชันของโปรแกรมที่ใช้งานได้:

sudo apt-cache policy PROGRAM:
 *** 3.6.7+build3+nobinonly-0ubuntu0.10.04.1 0
        500 http://de.archive.ubuntu.com/ubuntu/ lucid-updates/main Packages
        500 http://security.ubuntu.com/ubuntu/ lucid-security/main Packages
        100 /var/lib/dpkg/status
     3.6.3+nobinonly-0ubuntu4 0

ที่นี่ 3.6.7 และ 3.6.3 ตอนนี้คุณรู้ว่าอาจมีการติดตั้งรุ่นก่อนหน้า (มักไม่ใช่รุ่นก่อน):

sudo apt-get install PROGRAM=3.6.3

จากนั้นคุณต้องทำการติดตั้ง apt-pinning เพื่อป้องกันการอัพเดทในอนาคต:

สร้างไฟล์ใหม่ใน /etc/apt/preferences.d/ (ถ้า> = 10.4) ตั้งชื่อตามโปรแกรมของคุณ

Package: program
Pin: version 3.6.3*
Pin-Priority: 1000

ขอบคุณสำหรับข้อมูลทั้งหมด ฉันไม่สามารถรอให้ Ubuntu จัดการ zfs ได้นอกกรอบ!
Marcelo Ruiz

ฉันขอโทษ - zfs เกี่ยวข้องกับอะไร? zfs จัดการการย้อนกลับหรือไม่? หรือการอัปเดตนั้นทำลายการติดตั้ง zfs ของคุณหรือไม่ หรืออัพเดต zfs ทำลายบางอย่าง?
ผู้ใช้ที่ไม่รู้จัก

เกิดอะไรขึ้นถ้ารุ่นเป็น1.0.2g-1ubuntu4.12ไปตามที่เหมาะสม? มันปฏิเสธที่จะยอมรับว่าเป็นหมายเลขรุ่นแม้ว่า ฉันต้องการปรับลดรุ่น1.0.2g-1ubuntu4.13เป็น1.0.2g-1ubuntu4.12
Csaba Toth

ขอบคุณ suuuuuuuuuuuuuuch ปวดแม้ว่า การอัปเดตครั้งล่าสุดของฉันซึ่งอินพุตคอนโทรลเลอร์ที่ถูกทำลายอย่างสมบูรณ์มี 80 แพคเกจที่ระบุไว้find /var/lib/dpkg/info/ -name \*.list -mtime -3 | sed 's#.list$##;s#.*/##' ณ จุดนี้มันไม่ยุ่งยากในการติดตั้งระบบทั้งหมดของฉันอีกครั้ง
tatsu

7

ส่วนใหญ่คุณสามารถปรึกษา/var/log/apt/history.logการเปลี่ยนแปลงที่ทำโดย apt / synaptic มันเป็นเพียงการพิสูจน์ทางนิติศาสตร์และการตัด / แปะเล็กน้อย

กลับไปที่วันที่ระบบของคุณยังทำงานได้ดี

ก่อนอื่นให้นำแพคเกจทั้งหมดที่ติดตั้งมาตั้งแต่นั้นมาและรวมเข้าด้วยกันในสคริปต์ถอนการติดตั้ง เมื่อสคริปต์เสร็จสิ้นให้เริ่มเพิ่มแพ็กเกจที่ถูกลบทั้งหมดอีกครั้ง

ตัวอย่างกรณี:
logfile:

Start-Date: 2014-05-28  21:28:11
Commandline: synaptic
Install: libfglrx-amdxvba1:amd64 (13.12-3kali1, automatic), libgl1-fglrx-glx:amd64 (13.12-3kali1), glx-alternative-fglrx:amd64 (0.4.1kali1, automatic), libfglrx:amd64 (13.12-3kali1, au$
Remove: fglrx-glx-ia32:amd64 (12-6+point-3)
End-Date: 2014-05-28  21:28:27

คุณสามารถเห็น

libfglrx-amdxvba1:amd64 libgl1-fglrx-glx:amd64 glx-alternative-fglrx:amd64 & libfglrx:amd64 

ได้รับการติดตั้งโดย Synaptic เหมือนlibfglrx:amd64ถูกลบออกโดย Synaptic

เราไปที่ลำดับที่กลับกันดังนั้นก่อนอื่นเราจึงลบแพ็คเกจที่ติดตั้งใหม่และเราเพิ่มแพ็คเกจที่ถูกลบออกไป

คำสั่งที่ใช้งานได้สำหรับกรณีนี้อาจมีลักษณะดังนี้:

sudo apt-get remove -y libfglrx-amdxvba1:amd64 libgl1-fglrx-glx:amd64 glx-alternative-fglrx:amd64 libfglrx:amd64 && sudo apt-get install -y libfglrx:amd64

บางทีมันอาจไม่ใช่ความคิดที่ดีที่สุดหากไม่มี-yสวิตช์ - เพื่อให้สามารถควบคุมกระบวนการได้มากขึ้น (เพื่อหลีกเลี่ยงการพึ่งพาที่ไม่สมบูรณ์) พวกคุณส่วนใหญ่จะไม่ทลายนิ้วของพวกเขาในขณะที่ทำการตรวจสอบ "y"

ในกรณีส่วนใหญ่การย้อนกลับเป็นไปได้ด้วยวิธีนี้ แต่ถ้าการพึ่งพาเสียแล้ว - คุณอาจพบปัญหาที่ใหญ่กว่า


6

ส่วนใหญ่เวลาหากระบบของคุณเสียมันเป็นปัญหาเคอร์เนล

เพียงแค่บูตเคอร์เนลที่เก่ากว่าและติดตั้งแพ็คเกจล่าสุด (โดยเฉพาะแพ็คเกจเคอร์เนล) ที่อาจอัปเดตไม่ถูกต้อง หมายเหตุเล็กน้อย:

/var/log/dpkg.log

เป็นเพื่อนของคุณที่จะตรวจสอบว่าเป็นรายการของแพคเกจการปรับปรุง / ติดตั้งเมื่อเร็ว ๆ นี้คืออะไร

sudo apt-get -f install

สามารถแก้ไขแพ็คเกจที่ติดตั้งครึ่งหนึ่งได้เกือบทุกครั้ง


4

น่าเสียดายที่ยังไม่มีวิธีการนี้ สแน็ปช็อตระดับระบบไฟล์ / การย้อนกลับเป็นหนึ่งในคุณสมบัติของ btrfs ที่กำลังจะมาถึง แต่ก็มีวิธีที่จะกลายเป็นคุณสมบัติที่สมบูรณ์และเสถียรพอที่จะใช้เป็นระบบไฟล์เริ่มต้น


1
สำหรับสแน็ปช็อตระบบไฟล์คุณสามารถใช้ LVM แทนด้วย ext3 หรือ ext4
Flimm

@Flimm ตอนนี้คุณสามารถทำได้แม้ว่ามันจะทำงานได้ไม่ดีนักและต้องการให้คุณตั้งค่า LVM เมื่อคุณติดตั้งในตอนแรก
psusi

3

เมื่อทำรุ่นใหญ่ผมโคลนดิสก์โดยใช้Clonezilla เขียนลงบนแผ่นซีดีมี HDD ว่าง (ภายนอก) และทำตามคำแนะนำบน Clonezilla LiveCD เลือกpartition-imageโหมดนี้ใช้พื้นที่น้อยที่สุด

หากคุณคิดว่าระบบของคุณเสียหาย (หรือต้องการยกเลิกการเปลี่ยนแปลงใด ๆ ) เพียงแค่บูทใน Clonezilla LiveCD ให้เลือกภาพบน HDD (ภายนอก) ของคุณแล้วกู้คืน เนื่องจากรูปภาพเหล่านี้เป็นสำเนาที่แท้จริงของดิสก์ทุกบิตของคุณจึงอาจใช้เวลาสองสามชั่วโมงขึ้นอยู่กับความเร็วดิสก์และความเร็วในการเชื่อมต่อของคุณ (การเชื่อมต่อระหว่างข้อมูลโดยทั่วไปจะเป็น USB HDD ภายนอกและคอมพิวเตอร์)

โดยวิธีการนี้เรียกว่าวิธีการสำรองข้อมูล


3

คุณสามารถติดตั้งรุ่นเก่าของแพคเกจที่กำหนด (ปรับลด) กับฉลาดหรือ dpkg ได้อย่างง่ายดาย การค้นหาแพ็คเกจที่เก่ากว่านั้นเป็นปัญหาเพราะสิ่งเหล่านี้มักจะหายไปจากพูลและมิเรอร์เมื่อมีการอัพเดต

หากคุณติดตั้งแพคเกจจากแผ่นซีดีติดตั้งหรือมิเรอร์ที่ล้าสมัยหรือแคชคุณจะต้องตรึงไว้กับเวอร์ชันเก่าเพื่อไม่ให้อัปเกรดจนกว่าคุณจะอนุญาต ซึ่งหมายความว่าคุณต้องคอยดูการอัพเดทและทดสอบจนกว่าปัญหาของคุณจะได้รับการแก้ไข นี่เป็นปัญหาที่เกิดขึ้นในขณะเดียวกัน (อาจจะตลอดไป) คุณจะถูกทิ้งให้อยู่กับแพ็คเกจที่ไม่คงที่และอาจไม่ปลอดภัย นั่นหมายความว่าผู้ใช้ทุกคนที่มีปัญหาระบบบางอย่างจะถูกปล่อยให้อยู่ในสถานะสุ่มจนกระทั่งพวกเขาสามารถแก้ไขได้

ซอฟต์แวร์ทั้งหมดไม่รองรับการส่งต่อดังนั้นรุ่นเก่าของบางอย่างอาจทำงานไม่ถูกต้องเมื่อป้อนด้วยการกำหนดค่าใหม่หรือไฟล์ข้อมูล เห็นได้ชัดว่านี่เป็นไปไม่ได้ที่จะแก้ปัญหาเว้นแต่ว่าคุณจะย้อนกลับข้อมูลผู้ใช้ทั้งหมดไปยังสถานะก่อนที่จะทำการอัพเกรด

มันจะดีถ้ามีวิธีการทำเช่นนี้ แต่มันเป็นปัญหาอย่างใหญ่หลวง ใครก็ตามที่คิดว่ามีวิธีแก้ปัญหาที่สอดคล้องกันควรเขียนข้อเสนอและเชิญความคิดเห็นหรือพิสูจน์การแก้ปัญหาด้วยแนวคิด (รหัสสคริปต์เอกสาร) การหมุนรอบและการส่งเสียงหอนนั้นไม่สร้างสรรค์

เนื่องจากไม่มีวิธีแก้ปัญหาด้านเทคนิคที่สะอาดซอฟต์แวร์ส่วนใหญ่จึงได้รับการพัฒนา (และผสานรวม) กับความคิด "หนทางเดียวคือส่งต่อ" การพยายามจัดการเวอร์ชันที่ล้าสมัยนั้นเป็นการเสียเวลาของทุกคน ปัญหาที่พบจะได้รับการแก้ไขใน ASAP รุ่นที่ใหม่กว่า ในฐานะที่เป็นโซลูชันเล็กน้อยฉันต้องการดูไฟล์เก็บถาวรของเวอร์ชันแพ็กเกจก่อนหน้านี้ซึ่งเก็บไว้ที่ใดที่หนึ่งเพื่อแก้ไขปัญหาชั่วคราวเป็นครั้งคราว

ในขณะเดียวกันคุณสามารถรายงานข้อผิดพลาดและอย่าคาดหวังว่าซอฟต์แวร์ที่ทันสมัยจะไม่ล้มเหลว การแก้ไขเมื่อพบควรจะอยู่ในการปรับปรุงต่อไป Devs เป็นมนุษย์ (ส่วนใหญ่) และทำให้เข้าใจผิดได้ คอมพิวเตอร์มีเที่ยวยุ่งยิ่งและเต็มไปด้วยความหลากหลายและรายละเอียดที่บ้า ระบบที่ได้รับการดูแลรักษาอย่างดีโดยใช้ส่วนประกอบที่ได้รับการสนับสนุนอย่างดีและการกระจายซอฟต์แวร์แบบรวมที่มีความเสถียรสามารถเสถียรมากโดยไม่ทำให้เกิดความไม่ปลอดภัยหรือไม่สามารถอัพเกรดได้

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