ฉันสามารถอัพเกรดแบบเงียบหรือไม่มีใครดูแลได้หรือไม่


31

ฉันจะอัพเกรดเป็น Ubuntu รุ่นใหม่โดยไม่ต้องตอบสนองต่อข้อความแจ้งได้อย่างไร

ตอนนี้ฉันอยู่ที่ 12.04 และต้องการติดตั้ง 12.10 เมื่อฉันเริ่มการอัปเดตมักจะดาวน์โหลดสิ่งต่าง ๆ จากนั้นถามคำถามติดตั้งเล็กน้อยถามคำถาม ฯลฯ ฉันทิ้งไว้ค้างคืนและบางครั้งก็พบว่ามันแทบจะไม่มีการอัพเดตเลย ฉันอยากจะเตะกระบวนการออกไปและทำมันให้เสร็จภายในสองสามชั่วโมง ฉันสบายดีที่มันอัปเดตไฟล์กำหนดค่าโดยอัตโนมัติใน / etc และอื่น ๆ ดังนั้นวิธีการเริ่มต้นการอัพเกรดแบบอัตโนมัติ?

คำตอบ:


42

คำสั่งต่อไปนี้อัปเกรดเป็นรุ่นเสถียรใหม่โดยไม่ต้องแจ้ง:

do-release-upgrade -f DistUpgradeViewNonInteractive

คำสั่งต่อไปนี้อัปเกรดเป็นรีลีสการพัฒนาในปัจจุบันโดยไม่ต้องแจ้งให้ทราบ:

do-release-upgrade -d -f DistUpgradeViewNonInteractive

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

คุณอาจต้องใช้dpkg-reconfigureหลังจากนั้นถ้าคุณไม่พอใจกับการกำหนดค่าของแพ็คเกจบางอย่าง แต่โดยส่วนใหญ่คุณควรจะใช้

ที่มา: http://awaseroot.wordpress.com/2012/04/29/ubuntu-release-upgrade-fully-automatic-non-interactive-upgrade/ ในลิงค์ยังมีวิธีอื่นในการทำเช่นนี้


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

ฉันทำสิ่งนี้และดูเหมือนว่าทุกอย่างจะทำงาน แต่หลังจากรีบูตฉันได้รับข้อผิดพลาดด้วงดังนั้นคุณจึงต้องเพิ่มการกำหนดค่าด้วงเพิ่มเติมหลังจากการอัพเกรดแบบอัตโนมัตินี้ อาจจะด้วยsudo apt-get install grub-emu?
rubo77

6
สิ่งนี้ใช้ไม่ได้กับ Trusty => Xenial ยังคงได้รับคำถามเกี่ยวกับไฟล์ที่แก้ไข / etc
วิลเล็ม

สิ่งนี้จะไม่ทำงานด้วย sudo หรือไม่
Cerin

เกี่ยวกับคำถามเกี่ยวกับการแก้ไขไฟล์ / etc, มีวิธีเย็นที่นี่: awaseroot.wordpress.com/2012/04/29/... เรียกใช้คำสั่งด้วย 'echo "y \ n \ ny \ ny \ ny \ n" | 'ด้านหน้าของ do-release-upgrade มันเมล็ดคำตอบสำหรับคำถาม เพิ่มคำตอบจำนวนมากในกรณีที่มีไฟล์ที่แก้ไขจำนวนมากใน / etc
nmgeek

6

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

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

0. อัพเดตแพ็คเกจที่มีอยู่ทั้งหมด

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

1. ตั้งค่าการใช้รหัสผ่าน

เพิ่มตัวคุณเองลงในรายการผู้ใช้ที่สามารถดำเนินการอัปเกรดโดยใช้ sudo โดยไม่ต้องป้อนรหัสผ่านโดยการดำเนินการ

sudo visudo -f /etc/sudoers.d/do-release-upgrade.

และเพิ่มบรรทัดต่อไปนี้แทนชื่อผู้ใช้ของฉันสำหรับหลักสูตรของคุณเอง:

my-username ALL=NOPASSWD: /usr/bin/do-release-upgrade

2. เริ่มการอัพเกรดที่เพิ่มขึ้น

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

while true; do 
    ssh my-user@my-server sudo do-release-upgrade -f DistUpgradeViewNonInteractive;
    sleep 120; 
done

3. แก้ไขไฟล์กำหนดค่าให้อยู่ในสถานะก่อนหน้า

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

ไม่พอใจกับคำตอบเริ่มต้นหรือไม่

ผู้ชายคนนี้มีวิธีในการเตรียมตัวก่อนคำตอบสำหรับแต่ละพรอมต์ แต่ข้อเสียคือคุณต้องรู้ว่ามีหลายคนที่พร้อมท์ ...


5

เพื่อยืนยันสิ่งที่โทมัสวอร์ดระบุไว้ในคำตอบของเขาและขัดแย้งกับคำตอบที่ยอมรับdo-release-upgrade -d -f DistUpgradeViewNonInteractiveไม่ทำงาน

ในความเป็นจริงที่แจ้งครั้งแรกมันทำลายพาร์ทิชันทดสอบ 16.04 ถึง 18.04 ของฉันเสียและฉันต้อง reclone มัน นี่คือที่สคริปต์ค้าง:

Setting up mount (2.31.1-0.4ubuntu3) ...
Setting up systemd (237-3ubuntu10) ...
Installing new version of config file /etc/pam.d/systemd-user ...
Installing new version of config file /etc/systemd/journald.conf ...

Configuration file '/etc/systemd/logind.conf'
 ==> Modified (by you or by a script) since installation.
 ==> Package distributor has shipped an updated version.
   What would you like to do about it ?  Your options are:
    Y or I  : install the package maintainer's version
    N or O  : keep your currently-installed version
      D     : show the differences between the versions
      Z     : start a shell to examine the situation
 The default action is to keep your current version.
*** logind.conf (Y/I/N/O/D/Z) [default=N] ? y

Y
CRASHED... NOTHING HAPPENS NOW... WILL KILL AND RESTART WITHOUT -f OPTION...

เนื่องจาก Input Inhibitors ทั้งการรีบูตหรือปิดจะไม่ทำงานหลังจากฆ่าสคริปต์ คุณต้องทำการปิดระบบแบบเย็น (กดปุ่มเปิดปิดค้างไว้ ~ 10 วินาที)

ขอบคุณพระเจ้าที่นี่เป็นการอัพเกรดโคลน 16.04 ไม่ใช่ในพาร์ติชั่น 16.04 จริง


เพื่อทำให้ชีวิตน่าสนใจยิ่งขึ้นพาร์ติชันใหม่ 898 MB ได้ถูกเพิ่มเข้าไปใน NVMe SSD ของฉันและพาร์ติชันปกติของฉันได้เลื่อน:

$ lsdrv
NAME        FSTYPE  LABEL                  MOUNTPOINT          SIZE MODEL

nvme0n1                                                        477G Samsung SSD 960 PRO 512G
├─nvme0n1p5 ntfs                                               858M 
├─nvme0n1p3                                                     16M 
├─nvme0n1p1 ntfs                                               450M 
├─nvme0n1p8 ntfs    Shared_WSL+Linux       /mnt/e                9G 
├─nvme0n1p6 ext4    Ubuntu18.04                               23.7G 
├─nvme0n1p4 ntfs    NVMe_Win10             /mnt/c            390.4G 
├─nvme0n1p2 vfat                           /boot/efi            99M 
├─nvme0n1p9 swap    Linux Swap             [SWAP]              7.9G 
└─nvme0n1p7 ext4    NVMe_Ubuntu_16.0       /                  44.6G 
  • nvme0n1p5 เคยเป็นที่ตั้งของพาร์ทิชัน Ubuntu 16.04 ของฉัน แต่ตอนนี้มันเปิดอยู่ nvme0n1p7
  • nvme0n1p8 เคยเป็นที่ตั้งของพาร์ติชันทดสอบ 18.04 ของฉัน แต่ตอนนี้มันเปิดอยู่ nvme0n1p8

หมายเหตุ:ฉันได้อัปเกรด Windows 10 จาก Build 1709 เป็น Build 1803 ในบ่ายวันนี้ด้วยดังนั้นจึงเป็นไปได้ที่จะสร้างnvme0n1p5พาร์ติชันใหม่ 898 MB ในntfsรูปแบบ


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

อัปเกรดทั้ง Ubuntu และ windows ในกล่องเดียวกันในวันเดียวกันหรือไม่ คุณต้องสนุกกับความเจ็บปวด
JDS

@JDS Windows ได้รับการ borked 1700 อัพเกรดหายไปทุกชนิดของการอ้างอิงเสียหลาม 2 เทียบกับงูหลาม 3. ฉันต้องลบและติดตั้ง Ubuntu 16.04 จาก Windows ร้านถอนหายใจ
WinEunuuchs2Unix

2

sudo apt-get -y upgradeคุณสามารถทำเช่นนี้ผ่านทางสถานีโดยใช้ สิ่งนี้จะตอบว่า "ใช่" ในทุกคำสั่ง มันจะไม่ทำงานโดยอัตโนมัติดังนั้นคุณต้องเรียกใช้ มันควรจะทำงาน AFAIK ไม่มีทางที่จะใช้ตัวจัดการการอัปเดต GUI เพื่อทำการอัปเกรดซอฟต์แวร์แบบอัตโนมัติ ( นี่ไม่เหมือนกับการอัปเกรดรีลีส! )

ถ้าคุณกำลังพยายามที่จะอัพเกรดเป็นเวอร์ชั่นอูบุนตูที่แตกต่างกัน (aka อัพเกรดปล่อยและมักจะได้รับการปล่อยตัวในบรรทัดถัดไปของการเผยแพร่เมื่อเทียบกับรุ่นของอูบุนตู), คุณต้องเปิดใช้งานที่ ตนเอง sudo do-release-upgradeอาจใช้งานได้ ไม่มีวิธีที่จะข้ามการแจ้งเตือนในอดีต นี่คือเหตุผลที่คุณเริ่มต้นการอัพเกรดเมื่อคุณพร้อมที่จะรับพรอมต์ดังกล่าว - จะมีการแจ้งเตือน


1
ไม่มีทางที่จะข้ามข้อความแจ้งเตือนที่ผ่านมาได้ ". สิ่งที่เกี่ยวกับการตั้งค่า DistUpgradeViewNonInteractive ที่ข้ามพรอมต์
oligofren

1
@oligofren Thomas ถูกต้องเนื่องจากการ-f DistUpgradeViewNonInteractiveตั้งค่าสถานะทำให้สคริปต์ล็อคขึ้นที่(Y/I/N/O/D/Z)พรอมต์แรก ดูคำตอบของฉันฉันเพิ่งโพสต์
WinEunuuchs2Unix

-4

ลองเพิ่ม-yตัวเลือกapt-getแต่รู้ว่ามันจะตอบคำถามyทั้งหมด


1
ฉันใช้ตัวจัดการการปรับปรุงกราฟิกไม่ใช่ฉลาด - รับ ฉันสามารถทำการอัปเดตในคอนโซลได้ แต่ฉันได้ยินว่า 'apt-get dist-upgrade' ใช้งานไม่ได้ในหลายปี (เพื่ออัพเกรดระหว่างรุ่น) ดังนั้นคำสั่งจะไม่ 'apt-get'
jdm

@jdm apt-get dist-upgradeควรทำงานได้ดี คุณมาที่นี่ไม่ทำงานอีกต่อไปที่ไหน
เซท

3
@Seth apt-get dist-upgradeไม่ได้ตอนนี้และไม่เคยมีมาก่อนในระบบปฏิบัติการใด ๆ ทำการอัปเกรดด้วยตัวเอง man apt-getดู upgradeเฉพาะอัพเกรดแพ็คเกจที่สามารถอัพเกรดได้โดยไม่ต้องมีแพ็คเกจใด ๆ ติดตั้งใหม่หรือถอนการติดตั้ง dist-upgradeอัพเกรดแพ็คเกจแม้ว่ามันจะหมายถึงแพคเกจจะถูกลบออกหรือเพิ่ม สิ่งนี้มีประโยชน์เป็นหลักสำหรับการดำเนินการอัพเดทปกติ - ตัวอย่างเช่นupgradeจะไม่อัพเกรดเมล็ด
Eliah Kagan

2
การเปลี่ยนsources.listเป็นชี้ไปยังไฟล์เก็บถาวรของรีลีสถัดไปจากนั้นapt-get dist-upgradeจะรันหากสำเร็จจะทำการอัพเกรดรีลีส สิ่งนี้ได้รับการสนับสนุนใน Debian แม้ว่าจะแนะนำให้ใช้aptitude dist-upgradeแทนเนื่องจากความละเอียดการพึ่งพาขั้นสูงกว่า ในอูบุนตูสิ่งนี้ไม่ได้รับการสนับสนุนเลยแม้ว่ามันจะประสบความสำเร็จก็ตาม แต่หากต้องการอัปเกรดเป็นรุ่นที่ใหม่กว่าในบรรทัดคำสั่งdo-release-upgradeจะใช้แทน ยูทิลิตี้ที่ไม่ได้ใช้-yธงดังนั้นคำตอบนี้ไม่ได้นำไปใช้กับสถานการณ์ของการอัพเกรดไปยังรุ่นใหม่
Eliah Kagan

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