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 และแจ้งให้เราทราบว่าคุณคิดอย่างไร