Computer >> คอมพิวเตอร์ >  >> การเขียนโปรแกรม >> การเขียนโปรแกรม BASH

sudo apt-get update vs upgrade – อะไรคือความแตกต่าง?

sudo apt-get update และ sudo apt-get upgrade เป็นคำสั่งสองคำสั่งที่คุณสามารถใช้เพื่อทำให้แพ็คเกจทั้งหมดของคุณทันสมัยอยู่เสมอใน Debian หรือการกระจาย Linux ที่ใช้ Debian

เป็นคำสั่งทั่วไปสำหรับผู้ดูแลระบบ Linux และผู้ที่ใช้งาน DevOps แต่มีประโยชน์ที่จะทราบแม้ว่าคุณจะไม่ได้ใช้บรรทัดคำสั่งบ่อยๆ

ในบทความนี้ ผมจะพูดถึงการทำงานของคำสั่งทั้งสองนี้ วิธีใช้งาน และคำถามที่พบบ่อย

ความแตกต่างระหว่าง sudo apt-get update และ sudo apt-get upgrade ?

ข้อแตกต่างที่สำคัญคือ sudo apt-get update ดึงรายการแพ็คเกจเวอร์ชันล่าสุดจากที่เก็บซอฟต์แวร์ของ distro และที่เก็บของบุคคลที่สามที่คุณอาจกำหนดค่าไว้ กล่าวอีกนัยหนึ่งคือจะค้นหาว่าเวอร์ชันล่าสุดของแต่ละแพ็คเกจและการพึ่งพาคืออะไร แต่จะไม่ดาวน์โหลดหรือติดตั้งการอัปเดตเหล่านั้นจริง ๆ

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

วิธีใช้ sudo apt-get update คำสั่ง

ใน distro Linux ที่ใช้ Debian (Debian, Ubuntu, Linux Mint, Kali Linux, Raspberry Pi OS และอื่นๆ) ให้เปิดหน้าต่างเทอร์มินัล

เทอร์มินัลอาจใช้ชื่อต่างกันไป ขึ้นอยู่กับว่าคุณเปิดมันอย่างไร ทั้งนี้ขึ้นอยู่กับ distro ของคุณ ตัวอย่างเช่น ใน Ubuntu และ Linux Mint เทอร์มินัลเริ่มต้นคือ Gnome Terminal แต่อาจอยู่ภายใต้ Terminal ในเมนูแอปพลิเคชัน

ในเทอร์มินัล ให้ป้อน sudo apt-get update ในบรรทัดคำสั่ง ป้อนรหัสผ่านผู้ดูแลระบบของคุณ แล้วกดปุ่ม Enter

หากมีการอัปเดต คุณจะเห็นผลลัพธ์ที่คล้ายกับสิ่งนี้:

kris@pihole:~ $ sudo apt-get update
Hit:1 https://ftp.harukasan.org/raspbian/raspbian bullseye InRelease
Get:2 https://download.docker.com/linux/raspbian bullseye InRelease [26.7 kB]
Get:3 https://archive.raspberrypi.org/debian bullseye InRelease [23.7 kB]       
Get:4 https://packages.azlux.fr/debian buster InRelease [3,989 B]               
Get:5 https://archive.raspberrypi.org/debian bullseye/main armhf Packages [282 kB]
Get:6 https://packages.azlux.fr/debian buster/main armhf Packages [3,418 B]
Fetched 340 kB in 4s (94.8 kB/s)     
Reading package lists... Done
Building dependency tree... Done
Reading state information... Done
3 packages can be upgraded. Run 'apt list --upgradable' to see them.

หากคุณต้องการดูว่าแพ็คเกจใดสามารถอัพเกรดได้ ให้เรียกใช้ apt list --upgradable :

kris@pihole:~ $ apt list --upgradable
Listing... Done
libcamera0/stable 0~git20220426+18e68a9b-1 armhf [upgradable from: 0~git20220303+e68e0f1e-1]
raspi-config/stable 20220425 all [upgradable from: 20220419]
rpi-eeprom/stable 13.13-1 armhf [upgradable from: 13.12-1]

แต่ถ้าไม่มีแพ็คเกจหรือการพึ่งพาเวอร์ชันใหม่กว่าในที่เก็บซอฟต์แวร์ของ distro คุณจะเห็นผลลัพธ์ดังนี้:

kris@pihole:~ $ sudo apt-get update
Get:1 https://download.docker.com/linux/raspbian bullseye InRelease [26.7 kB]
Hit:2 https://ftp.harukasan.org/raspbian/raspbian bullseye InRelease           
Hit:3 https://packages.azlux.fr/debian buster InRelease                         
Hit:4 https://archive.raspberrypi.org/debian bullseye InRelease
Fetched 26.7 kB in 3s (8,789 B/s)
Reading package lists... Done

สังเกตว่าไม่มีการกล่าวถึงแพ็คเกจที่สามารถอัพเกรดได้ และไม่มีหมายเหตุเกี่ยวกับการรัน apt list --upgradable .

แต่นี่ไม่ได้แปลว่าไม่มีซอฟต์แวร์ที่ล้าสมัยในระบบของคุณ เพียงแต่ว่าคุณมีรายการแพ็คเกจเวอร์ชันล่าสุดแล้ว คุณอาจได้เรียกใช้ sudo apt-get update หลายครั้ง

คุณสามารถเรียกใช้ apt list --upgradable . ได้ตลอดเวลา อีกครั้งเพื่อดูว่าสามารถอัพเกรดอะไรได้บ้าง

หรือคุณสามารถใช้ sudo apt update . ที่ทันสมัยกว่า คำสั่งแทน คำสั่งนี้จะแสดงจำนวนแพ็คเกจที่สามารถอัพเกรดได้เสมอ หรือข้อความแจ้งว่าทุกอย่างเป็นปัจจุบัน

สำหรับข้อมูลเพิ่มเติมเกี่ยวกับความแตกต่างระหว่าง apt และ apt-get , ตรวจสอบส่วนนี้ด้านล่าง.

วิธีใช้ sudo apt-get upgrade คำสั่ง

หลังจากรัน sudo apt-get update คำสั่ง ในหน้าต่างเทอร์มินัลเดียวกัน ให้พิมพ์ sudo apt-get upgrade ให้ป้อนรหัสผ่านหากจำเป็น แล้วกด Enter

จากนั้น คุณจะเห็นผลลัพธ์ที่คล้ายกับสิ่งนี้:

kris@pihole:~ $ sudo apt-get upgrade
Reading package lists... Done
Building dependency tree... Done
Reading state information... Done
Calculating upgrade... Done
The following packages will be upgraded:
  libcamera0 raspi-config rpi-eeprom
3 upgraded, 0 newly installed, 0 to remove and 0 not upgraded.
Need to get 2,616 kB of archives.
After this operation, 1,596 kB of additional disk space will be used.
Do you want to continue? [Y/n] 

ที่ด้านล่างของผลลัพธ์ คุณจะเห็นแพ็คเกจที่จะอัปเกรด:

The following packages will be upgraded:
  libcamera0 raspi-config rpi-eeprom
3 upgraded, 0 newly installed, 0 to remove and 0 not upgraded.

จำนวนข้อมูลที่จำเป็นต้องดึง และพื้นที่เก็บข้อมูลที่แพ็กเกจที่อัปเกรดจะใช้เมื่อติดตั้งแล้ว:

Need to get 2,616 kB of archives.
After this operation, 1,596 kB of additional disk space will be used.

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

Do you want to continue? [Y/n] 

คุณสามารถป้อน y , Y หรือ ใช่ เพื่อดำเนินการอัปเกรดต่อ หรือ n , N , หรือ ไม่ เพื่อออกจาก อัพเกรด คำสั่ง

หากคุณเลือกที่จะออกจากระบบ คุณจะเห็นผลลัพธ์ดังนี้:

kris@pihole:~ $ sudo apt-get upgrade
Reading package lists... Done
Building dependency tree... Done
Reading state information... Done
Calculating upgrade... Done
The following packages will be upgraded:
  libcamera0 raspi-config rpi-eeprom
3 upgraded, 0 newly installed, 0 to remove and 0 not upgraded.
Need to get 2,616 kB of archives.
After this operation, 1,596 kB of additional disk space will be used.
Do you want to continue? [Y/n] n
Abort.

หากคุณเลือกที่จะอัปเกรดต่อ คุณจะเห็นผลลัพธ์ที่ยาวดังนี้:

kris@pihole:~ $ sudo apt-get upgrade
Reading package lists... Done
Building dependency tree... Done
Reading state information... Done
Calculating upgrade... Done
The following packages will be upgraded:
  libcamera0 raspi-config rpi-eeprom
3 upgraded, 0 newly installed, 0 to remove and 0 not upgraded.
Need to get 2,616 kB of archives.
After this operation, 1,596 kB of additional disk space will be used.
Do you want to continue? [Y/n] y
Get:1 https://archive.raspberrypi.org/debian bullseye/main armhf libcamera0 armhf 0~git20220426+18e68a9b-1 [548 kB]
Get:2 https://archive.raspberrypi.org/debian bullseye/main armhf raspi-config all 20220425 [30.3 kB]
Get:3 https://archive.raspberrypi.org/debian bullseye/main armhf rpi-eeprom armhf 13.13-1 [2,037 kB]
Fetched 2,616 kB in 3s (1,019 kB/s)   
Reading changelogs... Done
(Reading database ... 43496 files and directories currently installed.)
Preparing to unpack .../libcamera0_0~git20220426+18e68a9b-1_armhf.deb ...
Unpacking libcamera0:armhf (0~git20220426+18e68a9b-1) over (0~git20220303+e68e0f1e-1) ...
Preparing to unpack .../raspi-config_20220425_all.deb ...
Unpacking raspi-config (20220425) over (20220419) ...
Preparing to unpack .../rpi-eeprom_13.13-1_armhf.deb ...
Unpacking rpi-eeprom (13.13-1) over (13.12-1) ...
Setting up rpi-eeprom (13.13-1) ...
Setting up libcamera0:armhf (0~git20220426+18e68a9b-1) ...
Setting up raspi-config (20220425) ...
Processing triggers for man-db (2.9.4-2) ...
Processing triggers for libc-bin (2.31-13+rpt2+rpi1+deb11u2) ...

และเมื่อเสร็จแล้ว แพ็คเกจและการอ้างอิงที่ล้าสมัยทั้งหมดจะได้รับการอัปเดต

สิ่งสำคัญอย่างหนึ่งที่ต้องจำเกี่ยวกับ sudo apt-get upgrade คำสั่งคืออัพเกรดเฉพาะสิ่งที่สามารถทำได้โดยไม่ต้องลบอะไรเลย

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

หากคุณเห็นข้อความลักษณะนี้หลังจากอัปเกรด:

The following packages were automatically installed and are no longer required:
  g++-8 gir1.2-mutter-4 libapache2-mod-php7.2 libcrystalhd3
Use 'sudo apt autoremove' to remove them.

คุณสามารถทำตามคำแนะนำและใช้ sudo apt autoremove เพื่อลบแพ็คเกจที่ไม่จำเป็นเหล่านั้นออก

วิธีใช้ตัวเลือกพิเศษด้วย sudo apt-get upgrade คำสั่ง

มีตัวเลือกหรือพารามิเตอร์พิเศษจำนวนหนึ่งที่คุณสามารถใช้กับ sudo apt-get upgrade คำสั่ง แต่โดดเด่นสองอย่าง:--dry-run และ --ใช่ .

วิธีใช้ --dry-run ตัวเลือก:

--dry-run (หรือ -s หรือ --จำลอง ) ตัวเลือกจะจำลองสิ่งที่จะเกิดขึ้นระหว่างกระบวนการอัปเกรด แต่ไม่ได้เปลี่ยนแปลงอะไรในระบบของคุณ:

kris@pihole:~ $ sudo apt-get upgrade --dry-run
Reading package lists... Done
Building dependency tree... Done
Reading state information... Done
Calculating upgrade... Done
The following packages will be upgraded:
  libcamera0 raspi-config rpi-eeprom
3 upgraded, 0 newly installed, 0 to remove and 0 not upgraded.
Inst libcamera0 [0~git20220303+e68e0f1e-1] (0~git20220426+18e68a9b-1 Raspberry Pi Foundation:stable [armhf])
Inst raspi-config [20220331] (20220425 Raspberry Pi Foundation:stable [all])
Inst rpi-eeprom [13.12-1] (13.13-1 Raspberry Pi Foundation:stable [armhf])
Conf libcamera0 (0~git20220426+18e68a9b-1 Raspberry Pi Foundation:stable [armhf])
Conf raspi-config (20220425 Raspberry Pi Foundation:stable [all])
Conf rpi-eeprom (13.13-1 Raspberry Pi Foundation:stable [armhf])

แม้ว่า distros ที่ใช้ Debian และ Debian จะมีเสถียรภาพมาก แต่ตัวเลือกนี้มีประโยชน์หากคุณต้องการให้แน่ใจว่าไม่มีข้อขัดแย้งระหว่างการอัปเกรด

วิธีใช้ --yes ตัวเลือก:

--ใช่ (หรือ -y หรือ --สมมติ-ใช่ ) ตัวเลือกจะตอบใช่โดยอัตโนมัติสำหรับข้อความแจ้งใด ๆ หากทำได้อย่างปลอดภัย:

kris@pihole:~ $ sudo apt-get upgrade --yes
Reading package lists... Done
Building dependency tree... Done
Reading state information... Done
Calculating upgrade... Done
The following packages will be upgraded:
  libcamera0 raspi-config rpi-eeprom
3 upgraded, 0 newly installed, 0 to remove and 0 not upgraded.
Need to get 2,616 kB of archives.
After this operation, 1,596 kB of additional disk space will be used.
Get:1 https://archive.raspberrypi.org/debian bullseye/main armhf libcamera0 armhf 0~git20220426+18e68a9b-1 [548 kB]
Get:2 https://archive.raspberrypi.org/debian bullseye/main armhf raspi-config all 20220425 [30.3 kB]
Get:3 https://archive.raspberrypi.org/debian bullseye/main armhf rpi-eeprom armhf 13.13-1 [2,037 kB]
...
Processing triggers for libc-bin (2.31-13+rpt2+rpi1+deb11u2) ...

โปรดทราบว่า คุณต้องการดำเนินการต่อหรือไม่? [ใช่/ไม่ใช่] ถูกข้ามไปด้านบน และแพ็คเกจทั้งหมดได้รับการอัพเกรด

คำถามที่พบบ่อย

อะไรคือ sudo และ apt-get ?

สิ่งสำคัญที่ควรทราบเกี่ยวกับ sudo apt-get update และ sudo apt-get upgrade คือคำสั่งทั้งสองประกอบด้วยสามส่วน:sudo , apt-get และ อัปเดต หรือ อัพเกรด .

sudo ย่อมาจาก "superuser do" และอนุญาตให้คุณเรียกใช้โปรแกรมที่มีสิทธิ์รูทหรือผู้ดูแลระบบ

ตัวอย่างเช่น การรีบูตระบบต้องใช้สิทธิ์ superuser/root-level ดังนั้นการเรียกใช้ reboot ในเทอร์มินัลอาจแสดงข้อผิดพลาดในลักษณะนี้:

Failed to set wall message, ignoring: Interactive authentication required.
Failed to reboot system via logind: Interactive authentication required.
Failed to open initctl fifo: Permission denied
Failed to talk to init daemon.

แต่ถ้าคุณเรียกใช้ sudo reboot จากนั้นป้อนรหัสผ่านผู้ดูแลระบบของคุณ คุณจะเรียกใช้ รีบูต คำสั่งในฐานะ superuser และระบบของคุณจะรีสตาร์ททันที

apt-get เป็นเครื่องมือบรรทัดคำสั่งใน Linux distros ที่ใช้ Debian และ Debian ที่คุณใช้เพื่อติดตั้งและจัดการแพ็คเกจ

ความแตกต่างระหว่าง apt-get คืออะไร และ apt ?

ฉลาด เป็นเครื่องมือที่ทันสมัยกว่าสำหรับการติดตั้งและจัดการแอปพลิเคชันบน distros แบบ Debian และ Debian

โดยส่วนใหญ่ apt และ apt-get สามารถใช้แทนกันได้ – sudo apt update และ sudo apt-get update ทั้งอัปเดตรายการแพ็คเกจในระบบของคุณ

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

ในขณะที่ตัวอย่างส่วนใหญ่ในบทความนี้ใช้ apt-get ฉันขอแนะนำอย่างยิ่งให้คุณใช้ apt แทน

เป็น sudo apt-get update และ sudo apt-get upgrade ปลอดภัยต่อการใช้งานหรือไม่

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

ข้อเสียคือ ไม่เหมือนกับการหลั่งไหลขอบ distros เช่น Arch Linux หากคุณต้องการใช้เวอร์ชันล่าสุดของแพ็คเกจ คุณอาจต้องทำงานพิเศษบางอย่าง คุณอาจต้องกำหนดค่าที่เก็บของบุคคลที่สามผ่าน PPA ใช้ระบบบรรจุภัณฑ์ทางเลือก เช่น Snap of Flatpak หรือรวบรวมแพ็คเกจด้วยตนเอง

แต่ความเสถียรที่มาพร้อมกับซอฟต์แวร์ที่เก่ากว่าเล็กน้อยนั้นคุ้มค่า อย่างน้อยก็ในความคิดของฉัน

คุณโยง sudo apt-get update ได้ไหม และ sudo apt-get upgrade คำสั่ง?

คุณอาจกำลังคิดว่าการเรียกใช้ sudo apt-get update ไม่ใช่เรื่องน่าเบื่อ รอให้เสร็จสิ้น จากนั้นเรียกใช้ sudo apt-get upgrade ?

ในขณะที่ทั้ง sudo apt-get update และ sudo apt-get upgrade เรียกใช้ได้ค่อนข้างเร็ว บางครั้งการรันชุดคำสั่งก็ง่ายกว่า และกลับมาตรวจสอบอีกครั้งในอีกไม่กี่นาทีต่อมา

ด้วย && โอเปอเรเตอร์ คุณสามารถโยงหลายคำสั่งเข้าด้วยกันดังนี้:

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

สิ่งสำคัญที่ต้องจำด้วย && โอเปอเรเตอร์คือคำสั่งหลังจากโอเปอเรเตอร์รันก็ต่อเมื่อคำสั่งก่อนจะสำเร็จเท่านั้น

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

อะไรคือ sudo apt- รับ dist-upgrade และ sudo apt full-upgrade และปลอดภัยต่อการใช้งานหรือไม่

ตามเธรด Stack Overflow คำสั่งเหล่านี้ทำสิ่งเดียวกันภายใต้ประทุน – พวกเขาอัพเกรดแพ็คเกจที่ล้าสมัย และยังลบบางแพ็คเกจอย่างชาญฉลาดเมื่อจำเป็น

โดยพื้นฐานแล้วมันเหมือนกับการรวมกันของ sudo apt-get upgrade และ sudo apt autoremove คำสั่ง

การรันคำสั่งเหล่านี้ ควร ให้ปลอดภัยโดยส่วนใหญ่

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

./thanks_for_reading.sh

หากคุณพบรายละเอียดนี้ใน sudo apt-get update และ sudo apt-get upgrade มีประโยชน์ โปรดแบ่งปันกับเพื่อนของคุณเพื่อให้คนอื่นได้รับประโยชน์จากมันมากขึ้น

นอกจากนี้ อย่าลังเลที่จะติดต่อ Twitter และแจ้งให้เราทราบว่าคุณคิดอย่างไร