จะติดตั้งการอัพเดทผ่านทางบรรทัดคำสั่งได้อย่างไร


692

เมื่อฉันเข้าสู่เว็บเซิร์ฟเวอร์ของฉันผ่าน SSH ฉันเห็นข้อมูล:

88 packages can be updated.
80 updates are security updates

ฉันลองapt-get updateแล้วapt-get upgradeแต่ทุกครั้งที่เข้าสู่ระบบฉันยังเห็นข้อความเกี่ยวกับการอัปเดต ฉันจะติดตั้งพวกเขาได้อย่างไร


1
คุณลองวิธีนี้ก่อน: sudo apt-get clean นี่ควรล้างแคช
user2635584

คำตอบ:


868

ใช้สิ่งนี้:

sudo apt update        # Fetches the list of available updates
sudo apt upgrade       # Installs some updates; does not remove packages
sudo apt full-upgrade  # Installs updates; may also remove some packages, if needed
sudo apt autoremove    # Removes any old packages that are no longer needed

เอกสารเกี่ยวกับแต่ละaptตัวเลือกที่สามารถพบได้ในmanpages สำหรับฉลาด สิ่งเหล่านี้ยังมีให้ใช้งานman aptในเครื่องของคุณ

การใช้งานของทั้งสองupgradeและfull-upgradeร่วมกันมักจะไม่จำเป็น แต่มันอาจจะช่วยในบางกรณีดูเอกสาร Debian เกี่ยวกับการอัพเกรดจาก Debian 9


29
ฉันควรเริ่มต้นใหม่sudo rebootหลังจากนั้นหรือไม่?
hellboy

1
ฉันต้องการเพิ่ม-yเพื่อให้ทำงานได้ Ubuntu 17.10
T04435

124

ดำเนินการคำสั่งทั้งหมดโดยพิมพ์sudoครั้งเดียว:

sudo -- sh -c 'apt-get update; apt-get upgrade -y; apt-get dist-upgrade -y; apt-get autoremove -y; apt-get autoclean -y'

หรือ

sudo -s -- <<EOF
apt-get update
apt-get upgrade -y
apt-get dist-upgrade -y
apt-get autoremove -y
apt-get autoclean -y
EOF

หรือสั้นลงในfor for loop (ขอบคุณ @dessert)

sudo bash -c 'for i in update {,dist-}upgrade auto{remove,clean}; do apt-get $i -y; done'

3
คุณสามารถรวมdist-upgradeและโดยautoremove apt-get dist-upgrade --auto-remove
jarno

3
ไม่มีความจำเป็นต้องใช้ทั้งเป็นและupgrade dist-upgrade
jarno

3
@jarno dist-upgradeสามารถลบแพ็คเกจได้ การใช้upgradeครั้งแรกอาจหลีกเลี่ยงปัญหานี้ได้เช่นเมื่อแพ็คเกจรุ่นใหม่ตอบสนองต่อการพึ่งพาได้ง่ายกว่ารุ่นเก่า ผมไม่ทราบว่าวิธีการนี้จะช่วยให้บ่อยครั้งเมื่ออัพเกรดแพคเกจภายในรุ่นเสถียรของ Ubuntu แต่ก็แนะนำให้ใช้ในบริบทอื่น ๆ บาง ส่วนตัวผมไม่ค่อยใช้dist-upgradeใน Ubuntu -yและเมื่อผมทำผมไม่เคยผ่าน แต่ถ้าใครจะวิ่งdist-upgradeและผ่านไป-yฉันคิดว่ามันสมเหตุสมผลที่จะทำการแสดงupgradeก่อน
Eliah Kagan

1
@jarno ในขณะที่คุณสามารถเชื่อม--autoremoveโยงกับคำสั่งการอัพเกรดที่คุณเลือกมันไม่แนะนำให้เลือกเพราะมันสามารถทำให้คุณอยู่ในสถานะที่ไม่สะอาดเมื่อหนึ่งในแพคเกจล้มเหลว ดีกว่าถูกคือการใช้คนเดียวบนบรรทัดที่แยกต่างหากหลังจากขั้นตอนการปรับปรุงจะทำถ้าคุณต้องการที่จะทำความสะอาดออกการตั้งค่าไฟล์เก่าเกินไปคุณสามารถห่วงโซ่นี้กับautoremove --purge
Videonauth

@Videonauth โอ้มันขึ้นอยู่กับวิธีaptการใช้งาน ฉันคิดว่ามันควรจะดำเนินการเพื่อที่จะไม่ออกจากระบบในสถานะที่ไม่สะอาด
jarno

91

นี่เป็นพฤติกรรมปกติ

ข้อความที่คุณเห็นในการเข้าสู่ระบบได้ถูกผนวกเข้ากับสถานะเซิร์ฟเวอร์ 'Message-Of-The-Day' ซึ่งได้รับการอัปเดตเฉพาะในแต่ละวันตามปฏิทิน ดูเนื้อหาโดยใช้

cat /etc/motd

ยังคงเห็นการปรับปรุงเดียวกันพร้อมใช้งานหลังจากทำงาน

sudo apt-get update && sudo apt-get upgrade

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


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

คุณหมายถึงการอัปเดตเนื้อหาของMessage-Of-The-Dayหรือไม่ได้รับสิ่งที่คุณต้องการหลังจากใช้งานsudo apt-get update && sudo apt-get upgradeหรือไม่?
david6

3
สิ่งนี้ไม่เป็นความจริงอีกต่อไปใน 16.04 หลังจาก "apt-get dist-upgrade" และรีบูตฉันเห็น "0 แพ็คเกจสามารถอัพเกรดได้"
Bogdan Calmac

1
คำสั่ง'.. หรือที่เซิร์ฟเวอร์รีบูต .. 'ด้านบนไม่ครอบคลุม
david6

3
cat: / etc / motd: ไม่มีไฟล์หรือไดเรกทอรีดังกล่าว
xApple

11

เมื่อเข้าสู่เซิร์ฟเวอร์ของคุณเรียกใช้คำสั่งด้านล่าง

sudo apt-get upgrade

มันควรจะทำเคล็ดลับ บางทีคุณอาจต้องรีสตาร์ทเซิร์ฟเวอร์ของคุณ


3
ขอบคุณสำหรับคำตอบของคุณ แต่ฉันลองใช้ sudo apt-get upgrade การรีสตาร์ทเซิร์ฟเวอร์นั้นไม่เกิดขึ้นเพราะฉันมีเว็บไซต์อยู่
Marlin

3
หากคุณติดตั้งการอัปเดตที่ส่งผลกระทบโดยตรงกับเคอร์เนลหรือเป็นการอัปเดตไดรเวอร์หรือเป็นการอัปเดตความปลอดภัยที่สำคัญคุณต้องรีสตาร์ทเซิร์ฟเวอร์
Evandro Silva

บางทีคุณควรพิจารณาข้อผิดพลาด 503 เป็นเวลาหนึ่งนาที คุณรู้หรือไม่ว่าการอัพเดตประเภทนี้คืออะไร?
NorTicUs

1
คุณจะให้ 503 ได้อย่างไรถ้าเซิร์ฟเวอร์ออฟไลน์
mcont

8

ในกรณีของฉันฉันมีURL ที่ไม่ถูกต้องหรือไม่สามารถเข้าถึงได้ใน/etc/apt/sources.list หลังจากลบ URL นี้แล้วฉันสามารถอัปเดตแพ็คเกจทั้งหมดได้สำเร็จ

คำสั่ง:

sudo vi /etc/apt/sources.list
sudo apt-get update && sudo apt-get upgrade

7

ของฉัน (ช้าจริงๆ, ฉันชอบหมอผีหมอผี :-))

  1. ติดตั้งwajig (หนึ่งครั้ง):

    sudo apt-get install wajig 
    
  2. เมื่อคุณต้องการอัปเดต / อัปเกรดระบบของคุณอย่างเต็มที่

    wajig dailyupgrade
    

    (มันจะถามรหัสผ่านหากจำเป็นและทำตามขั้นตอนการอัปเกรดอัปเกรดอัพเกรดและอัปเดตอัตโนมัติให้คุณ)



1

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

remote_user=usernamehere
remote_host=example.com

ssh -A -n -o StrictHostKeyChecking=no ${remote_user}@${remote_host} && \
sudo apt-get update && \
sudo apt-get -f install -y && \
sudo apt-get -o Dpkg::Options::="--force-confnew" -yy dist-upgrade -y && \
sudo apt-get autoremove -y && \
[ -f /var/run/reboot-required ] && \
echo "sudo reboot now" && \
sudo reboot now 

เพื่อเรียกใช้ในกล่องท้องถิ่นของคุณเพียงแค่ปล่อยให้บรรทัดแรกทำ ssh

นี่คือนามแฝงที่ฉันบันทึกใน ~ / .bashrc

alias doit='echo; kill $( ps -eafww|grep update-manager|grep -v grep | grep update-manager | tr -s " " |cut -d" "  -f2 ) > /dev/null 2>&1;  echo "sudo apt-get update && sudo apt-get dist-upgrade &&  [ -f /var/run/reboot-required ] && echo && echo reboot required && echo";echo;sudo apt-get update && sudo apt-get dist-upgrade &&  [ -f /var/run/reboot-required ] && echo && echo reboot required && echo '

จากนั้นใน terminal ฉันเพิ่งออก doit


0

หากคุณทำงานapt-get updateอีกครั้งหลังจากapt-get upgradeได้รับการสรุปข้อความเหล่านั้นที่ล็อกอิน ssh ควรหายไป

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