ฉันจะเปลี่ยนกลับจากการอัปเกรดเป็นที่เก็บข้อมูลที่เสนอได้อย่างไร


23

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

ฉันจะยกเลิกสิ่งนี้ได้อย่างไร

นี่คือผลการทดสอบจากคำแนะนำของ @ enzotibและผลการทดสอบจากคำแนะนำของฉัน


1
Pastebins ผลการทดสอบตายไปแล้ว
enzotib

คำตอบ:


24

ต่อไปนี้เป็นวิธีทั่วไปมากขึ้นในการย้อนกลับจากแพคเกจที่ติดตั้งในท้องถิ่นแพคเกจที่เสนอและแบ็คแพ็คกลับไปยังช่อง + การอัปเดตที่เสถียร ในขณะที่คำตอบอื่น ๆ นั้นถูกต้องและทำงานในทำนองเดียวกันฉันคิดว่านี่เป็นวิธีที่สง่างามกว่า

  1. ตรวจสอบให้แน่ใจว่าคุณลบรายการของ-proposedหรือ-backportsใน/etc/apt/sources.listและ/etc/apt/sources.list.d/*ไฟล์ของคุณ
  2. เพิ่มไฟล์ apt-preferences เช่น/etc/apt/preferences.d/99-back-to-stable-updatesมี (สำหรับpreciseที่นี่ - แทนที่ด้วยเวอร์ชันของคุณ):

    Package: *
    Pin: release a=precise
    Pin-Priority: 1001
    
    Package: *
    Pin: release a=precise-updates
    Pin-Priority: 1001
    
    Package: *
    Pin: release a=precise-security
    Pin-Priority: 1001
    
    Package: *
    Pin: release a=precise-proposed
    Pin-Priority: -10
    
    Package: *
    Pin: release a=precise-backports
    Pin-Priority: -10
    

    การตรึงของ> 1000 นี้จะทำให้แรงฉลาดปรับลดในแพคเกจจากช่องดังกล่าวและจัดลำดับความสำคัญของ <0 ในที่-proposedและ-backportsช่องทางที่จะทำให้ลบแพคเกจใด ๆ เพิ่มเติมเกินไป

  3. ตอนนี้ทำงาน

    sudo apt-get update
    sudo apt-get dist-upgrade
    

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

  4. ลบ/etc/apt/preferences.d/99-back-to-stable-updatesไฟล์อีกครั้งเนื่องจากไม่ต้องการอีกต่อไป

ขอบคุณmlindบนฟอรัมของ Ubuntu สำหรับการสร้างแรงบันดาลใจในการปักหมุดในโพสต์ของเขาเมื่อกว่า 5 ปีที่แล้ว - แต่มันก็ช่วยฉันได้ค่อนข้างดีในวันนี้


ฉันคิดว่ามันควรจะทำงานกับ debian เช่นกัน น่าเสียดายที่มันไม่ได้ทำอะไรเพื่อฉัน: /
Michael

@Michael 1) Debian ไม่มีแนวคิดเกี่ยวกับที่เก็บข้อมูลอย่างเป็นทางการ 2) ไซต์นี้เกี่ยวกับ Ubuntu ไม่ใช่ Debian ผมขอแนะนำให้คุณถามคำถามใหม่ในUnix.SE
gertvdijk

โซลูชันนี้ยังทำงานร่วมกับรุ่น 'xenial'! (หลังจากเปลี่ยนแน่นอนด้วย xenial ในไฟล์แน่นอน) ขอบคุณมาก!
morhook

4

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

จากนั้นหนึ่งโซลูชันอาจเพิ่มขึ้นชั่วคราว 1,000 ลำดับความสำคัญเริ่มต้นของไฟล์แพ็กเกจทั้งหมดยกเว้นที่มาจากที่natty-proposedเก็บ:

apt-cache policy | awk '
    /^ [0-9]+ / {
        p = $1;
        getline;
        r = $0;
        if (r !~ /a=natty-proposed/) p += 1000;
        print "Package: *\nPin: " r "\nPin-priority: " p "\n"
    }
' | sudo tee /etc/apt/preferences.d/downgrade-from-natty-proposed

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

หลังจากทำสิ่งนี้แล้วapt-get --simulate upgradeคุณสามารถใช้เพื่อทดสอบการตรวจหาการดาวน์เกรดที่ประสบความสำเร็จ หลังจากยืนยันว่ามีการตรวจพบการดาวน์เกรดที่ถูกต้องsudo apt-get upgradeควรเป็นสิ่งที่จำเป็นสำหรับการลดระดับ

เมื่อการดาวน์เกรดเสร็จสมบูรณ์ให้ใช้แหล่งซอฟท์แวร์เพื่อปิดการใช้งานพื้นที่เก็บข้อมูลการอัพเดทล่วงหน้า

sudo rm /etc/apt/preferences.d/downgrade-from-natty-proposed

ในที่สุดรีบูตเพื่อให้โปรแกรมที่ทำงานอยู่ทั้งหมดเป็นรุ่นที่มีการลดระดับ


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

2

ฉันไม่สามารถหาทางออกที่ง่ายกว่านี้ได้ แต่หวังว่าบางคนจะได้รับคำตอบที่ดีกว่า

สคริปต์ต่อไปนี้ที่สามารถดำเนินการลดระดับ

#!/bin/bash

# get a list of installed packages
dpkg --get-selections | awk '{ print $1 }' > all-packages

# run apt-cache policy on each of them, then elaborate with the awk script 
apt-cache policy $(<all-packages) |
  ./get-prev-pkg-vers >old-versions

# install previous version of packages
sudo apt-get --simulate install $(< old-versions)

awkสคริปต์ชื่อget-prev-pkg-versมีดังนี้

#!/usr/bin/awk -f

/^[^ ]/ {
    package = $1
    gsub(":", "", package)
    search_next = 0
}
/^     [^ ]/ {
    installed = 0
    version = $1
    if (search_next == 1) {
        print package "=" version
        search_next = 0
    }
}
/^ \*\*\* [^ ]/ {
    installed = 1
}
/^        [^ ]/ {
    branch = $3
    if (installed == 1 && branch ~ /proposed/) {
        search_next = 1
    }
    installed = 0
}

เมื่อเรียกใช้สคริปต์repo ที่เสนอไม่ควรถูกปิดใช้งาน

จำไว้ว่าให้ตั้งบิตปฏิบัติการบนทั้งสองสคริปต์

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

เพื่อความปลอดภัยให้เพิ่ม--simulateตัวเลือกapt-getในตอนท้ายของสคริปต์ทุบตี


2

การย้อนกลับแพคเกจทั้งหมดจาก natty- เสนออาจไม่จำเป็น: แพคเกจส่วนใหญ่จะได้รับการปรับปรุงเป็นรุ่นเดียวกันเร็ว ๆ นี้ผ่านการปรับปรุง natty อยู่แล้ว

ในกรณีที่คุณมีปัญหากับหนึ่งในแพคเกจที่คุณสามารถย้อนกลับไปที่หนึ่งแพคเกจโดยใช้วิธีนำเสนอ Darent (หลังจากปิดการใช้งาน -proposed) sudo aptitude install packagename/nattyหรือคุณสามารถใช้ แต่ที่สำคัญคุณควรยื่นข้อผิดพลาดกับแพ็คเกจ มีเพียงไม่กี่คนที่ทดสอบการเสนอ natty จริง ๆ และหากการถดถอย (= ปัญหาใหม่) เกิดขึ้นพวกเขาควรได้รับการรายงานอย่างแน่นอน มิฉะนั้นพวกเขาอาจลงเอยด้วยการอัพเดตสำหรับผู้ใช้ Ubuntu ทุกคน ดังนั้นหากคุณมีปัญหาใด ๆ โปรดรายงาน


1

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

ตอนนี้คุณจะต้อง "ลดระดับ" แพ็คเกจเหล่านั้น เลือกหนึ่งต่อหนึ่งและในเมนูด้านบนเลือก:

package > force version

(หรือ Control + E)

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

วิธีแก้ปัญหาอย่างรวดเร็วคือใช้คำสั่ง purge-ppa ที่ชี้ไปยังที่เก็บ porposed แต่ไม่ทราบว่าจะใช้งานได้หรือไม่ฉันใช้เพื่อล้างแพ็คเกจ ppa และดาวน์เกรดภายนอกไปเป็นเวอร์ชั่น ubuntu อย่างเป็นทางการเท่านั้น ฉันจะไม่แนะนำให้คุณทำเช่นนี้ในกรณีนี้อาจมีใครบางคนรู้ว่ามันเป็นวิธีที่ปลอดภัยหรือไม่


ย่อหน้าสุดท้ายเป็นการเก็งกำไรเท่านั้นและควรแสดงความคิดเห็นต่อคำถามหรือวิจัยอย่างเหมาะสม
Karl Richter

0

ฉันเสนอให้จัดทำฟังก์ชั่นเพื่อดาวน์เกรดproposedแพคเกจทั้งหมดด้วยคำสั่งบำรุงรักษาง่าย ๆppa-purgeที่https://bugs.launchpad.net/ubuntu/+source/software-properties/+bug/1810499เนื่องจากโพสต์ที่นี่ยังดูเหมือนจะเป็นตัวแทนของ สถานะของระบบ

"เสนอ" - รับมันไหม

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