“ sudo apt-get update” ทำอะไร?


คำตอบ:


550

สรุปapt-get updateไม่ได้ติดตั้งซอฟต์แวร์เวอร์ชันใหม่จริง ๆ แต่จะอัพเดตรายการแพ็กเกจสำหรับการอัพเกรดสำหรับแพ็กเกจที่ต้องการอัพเกรดรวมถึงแพ็กเกจใหม่ที่เพิ่งมาถึงที่เก็บ

  • apt-get updateดาวน์โหลดรายการแพ็กเกจจากที่เก็บและ "อัพเดต" เพื่อรับข้อมูลเกี่ยวกับแพ็กเกจเวอร์ชันใหม่ล่าสุดและการอ้างอิง มันจะทำเช่นนี้สำหรับที่เก็บและ PPA ทั้งหมด จากhttp://linux.die.net/man/8/apt-get :

    ใช้เพื่อซิงโครไนซ์ไฟล์ดัชนีแพ็คเกจอีกครั้งจากแหล่งที่มา ดัชนีของแพ็คเกจที่มีอยู่จะถูกดึงจากตำแหน่งที่ระบุใน/etc/apt/sources.list(5) ควรทำการอัปเดตเสมอก่อนที่จะอัปเกรดหรืออัพเกรด

  • apt-get upgradeจะเรียกรุ่นใหม่ของแพคเกจที่มีอยู่ในเครื่องถ้า APT apt-get updateรู้เกี่ยวกับเหล่านี้รุ่นใหม่โดยทาง

    จากhttp://linux.die.net/man/8/apt-get :

    ใช้เพื่อติดตั้งแพ็คเกจล่าสุดทั้งหมดที่ติดตั้งบนระบบจากแหล่งที่ระบุใน/etc/apt/sources.list(5) แพคเกจที่ติดตั้งในปัจจุบันพร้อมเวอร์ชั่นใหม่ที่มีอยู่จะถูกเรียกคืนและอัปเกรด ภายใต้สถานการณ์ที่ไม่ได้ติดตั้งแพคเกจที่ถูกลบออกในปัจจุบันและไม่ได้เป็นแพคเกจที่ยังไม่ได้ติดตั้งที่ดึงและติดตั้ง แพ็คเกจที่ติดตั้งในปัจจุบันเวอร์ชั่นใหม่ที่ไม่สามารถอัพเกรดได้โดยไม่เปลี่ยนสถานะการติดตั้งของแพ็คเกจอื่นจะยังคงอยู่ในเวอร์ชั่นปัจจุบัน [เหมืองเน้นข้อมูล] ต้องทำการอัปเดตก่อนเพื่อที่จะได้รับการรู้ว่ามีแพ็คเกจรุ่นใหม่

  • apt-get dist-upgradeจะทำงานเดียวกันกับที่ทำโดยapt-get upgradeบวกมันจะจัดการกับการอ้างอิงอย่างชาญฉลาดดังนั้นจึงอาจลบแพ็กเกจที่ล้าสมัยหรือเพิ่มแพ็กเกจใหม่ ดูที่นี่: "dist-upgrade" คืออะไรและทำไมจึงอัพเกรดมากกว่า "upgrade"

    จากhttp://linux.die.net/man/8/apt-get :

    นอกเหนือจากการทำหน้าที่อัพเกรดแล้วตัวเลือกนี้ยังจัดการการเปลี่ยนแปลงที่อ้างอิงได้อย่างชาญฉลาดด้วยแพ็คเกจรุ่นใหม่ apt-get มีระบบการแก้ไขข้อขัดแย้ง "ฉลาด" และจะพยายามอัพเกรดแพ็คเกจที่สำคัญที่สุดโดยมีค่าใช้จ่ายน้อยกว่าหากจำเป็น /etc/apt/sources.list(5) แฟ้มมีรายชื่อของสถานที่จากการที่จะดึงไฟล์แพคเกจที่ต้องการ ดูเพิ่มเติมที่ apt_preferences (5) สำหรับกลไกในการตั้งค่าทั่วไปสำหรับแต่ละแพ็คเกจ

คุณสามารถรวมคำสั่ง&&ดังนี้:

sudo apt-get update && sudo apt-get install foo bar baz foo-dev foo-dbg

หรือเพื่อรับรุ่นใหม่ล่าสุดที่เป็นไปได้ตามข้อกำหนดของการอ้างอิงรุ่น:

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

คุณต้องการsudoทั้งสองครั้ง แต่เนื่องจากsudoค่าเริ่มต้นจะไม่แจ้งให้คุณทราบภายใน 5 นาทีหรือมากกว่านั้นนับตั้งแต่การsudoดำเนินการครั้งสุดท้ายคุณจะได้รับแจ้งให้ป้อนรหัสผ่านของคุณเพียงครั้งเดียวเท่านั้น (หรือไม่เลย)


11
เราจำเป็นต้องเรียกใช้sudo apt-get updateคำสั่งทุกครั้งที่ติดตั้งแพ็คเกจหรือไม่? อะไรคือข้อเสียถ้าเราไม่ทำเช่นนั้น?
JohnnyQ

14
@JohnnyQ หากคุณไม่ได้เรียกใช้คำสั่งนั้นคุณอาจได้รับการติดตั้งแพ็กเกจที่ล้าสมัย
ζ--

อาดูเหมือนว่ามันเป็นเพียงแค่การประชุม ดังนั้นฉันจึงสันนิษฐานว่ามันไม่จำเป็นจริงๆโดยเฉพาะถ้าคุณเพิ่งใช้แพ็คเกจพื้นฐานพร้อมคำสั่งพื้นฐานที่ไม่ได้รับการอัพเดทตามปกติ ปัญหาในสถานการณ์ของฉันคือที่apt-get updateในขณะที่อินเทอร์เน็ตที่นี่ยังคงดั้งเดิม
JohnnyQ

2
@ JohnnyQ หากการอัพเดต apt-get ของคุณช้าดังนั้น apt-get dist-upgrade ของคุณก็จะช้าเช่นกันดังนั้นจึงไม่ใช่ข้อโต้แย้งที่จะไม่ทำการอัพเดท apt-get ก่อน ไม่ว่าคุณจะสามารถอัปเดต apt-get ของคุณได้เร็วขึ้นโดยดูที่โฟลเดอร์ /etc/apt/sources.d/ เพื่อดูว่าคุณมีที่เก็บข้อมูลแบบกำหนดเองใด ๆ และหนึ่งในนั้นอาจไม่ตอบสนองซึ่งจะทำให้กระบวนการอัปเดตช้าลงทั้งหมด
Mladen B.

1
อย่างไรก็ตาม "apt" หมายถึงเครื่องมือบรรจุภัณฑ์ขั้นสูง ( wiki.debian.org/Apt "APT คืออะไร") บางสิ่งที่ฉันเรียนรู้เมื่อวันก่อนคิดว่าฉันจะแบ่งปัน ("apt" ปรากฏบ่อยครั้งใน man apt-get, man apt แต่ฉันไม่เคยเห็นคำย่อมาก่อน)
jgreve

47

การค้นหาของ Google สามารถให้คำจำกัดความสำหรับคำสั่งเทอร์มินัลเกือบทุกคำสั่งเช่น - ช่วยในเทอร์มินัล ตัวอย่างเช่น,

apt-get --help

sudo apt-get update เป็นหลักมีสามส่วน:

sudo

ดำเนินการคำสั่งต่อไปนี้ด้วยความสามารถ super-user (root) การกระทำหลายอย่างที่ต้องมีการแก้ไขไฟล์ระบบหรือการติดตั้งแอพพลิเคชั่นนั้นต้องมีการอนุญาตพิเศษเพิ่มเติม

apt-get

เป็นเครื่องมือบรรทัดคำสั่งที่ Ubuntu ใช้เพื่อติดตั้งลบและจัดการแพ็คเกจซอฟต์แวร์

update

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

sudo apt-get install guake

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

sudo apt-get update
sudo apt-get install <package>

มั่นใจได้ว่า apt-get รู้ว่าจะต้องติดตั้งแพ็คเกจเวอร์ชันล่าสุด

แหล่งข้อมูลที่มีประโยชน์อีกแหล่งหนึ่งคือhelp.ubuntu.comเว็บไซต์ ตัวอย่างเช่นหากคุณค้นหาไซต์นั้นapt-getคุณจะพบว่าAptGet / Howtoเป็นหนึ่งในผลลัพธ์


อืมฉันสามารถใช้คำสั่งตามที่คุณวางไว้ได้ไหม: "apt-get update apt-get install <package>" โดยทั่วไป 2 สิ่งสามารถทำได้เพียงแค่พิมพ์ 2 คำสั่งด้วยกันแบบนี้?
Elysium

1
@Elysium ใช่ถ้าคุณมี&&ระหว่างพวกเขาในฐานะsudo apt-get update&&sudo apt-get install foo bar baz
ζ--

7
การใช้&&หมายความว่าคำสั่งที่สองจะทำงานต่อเมื่อคำสั่งแรกประสบความสำเร็จ หากคุณไม่สนใจเกี่ยวกับความสำเร็จของคำสั่งแรกให้ใช้;แทน
Flimm

4
การค้นหาของ Google ทำให้ฉันมีคำถาม / คำตอบนี้ เพียงแค่ FYI;)
teewuane

19

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

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


13

มันอัพเดตรายการซอฟต์แวร์ที่มีอยู่ในคอมพิวเตอร์ของคุณ

คอมพิวเตอร์ของคุณมีรายการ (เช่นแคตตาล็อก) ที่มีซอฟต์แวร์ทั้งหมดที่เซิร์ฟเวอร์ Ubuntu มีให้ แต่ซอฟต์แวร์และรุ่นที่มีให้อาจมีการเปลี่ยนแปลงดังนั้น "อัปเดต" จะเข้าสู่เซิร์ฟเวอร์และดูว่าซอฟต์แวร์ใดที่มีให้เพื่ออัปเดตรายการท้องถิ่น (หรือแคตตาล็อก)

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

หากต้องการอัปเกรดซอฟต์แวร์ของคุณ (ไม่ใช่ "อัพเดต" รายการ) ให้คุณดำเนินการคำสั่ง

sudo apt-get upgrade

ซึ่งมักจะดำเนินการหลังจาก "อัพเดท"


ถ้าเช่นนั้นจะเป็นsudo apt-get installอย่างไร ติดตั้งแพคเกจพิเศษแทนการอัพเกรดทั่วไปหรือไม่?
Peter Mortensen

12

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


เคล็ดลับที่ดีสำหรับเรื่องนี้!
Emerson Hsieh

6

เมื่อคุณติดตั้งแพคเกจจากบรรทัดคำสั่งด้วยsudo apt-get install ...(หรือsudo aptitude install ...) หรือเมื่อคุณอัพเกรดจากบรรทัดคำสั่ง (ด้วยupgradeหรือdist-upgradeแทนinstall) ข้อมูลต่อไปนี้จะได้รับจากการกำหนดค่าระบบภายในเครื่องของคุณไม่ใช่จากอินเทอร์เน็ต:

  1. มีแพ็คเกจอะไรให้บ้าง

  2. มีเวอร์ชันอะไรให้ใช้บ้าง

  3. โดยที่ควรจะดึงแพ็คเกจที่มีอยู่ออกมา

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

เมื่อคุณติดตั้งแพ็กเกจด้วยอินเตอร์เฟส GUI (Update Manager, Software Center หรือ Synaptic Package Manager) การทำงานของsudo apt-get updateจะเสร็จสิ้นโดยอัตโนมัติ เมื่อคุณติดตั้งแพคเกจจากบรรทัดคำสั่งมันไม่ได้และคุณควรทำสิ่งนี้ด้วยตัวเองเสมอเว้นแต่ว่าคุณเพิ่งทำไปแล้ว

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

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


4

ดังที่ Eliah Kagan ได้กล่าวไว้ข้างต้นคุณคาดหวังว่าแอปพลิเคชั่น GUI จะทำงานapt-get updateก่อนหน้าapt-get install/ apt-get upgradeแต่ฉันเพิ่งค้นพบข้อผิดพลาด 404 ที่น่าสนใจบนเครื่อง VM ที่มีการรักษาความปลอดภัยที่น่ารังเกียจ

จากบรรทัดคำสั่งฉันวิ่งapt-get updateแล้วลองคำสั่ง System Tools / Software-Update อีกครั้งและครั้งนี้มันทำงานโดยไม่มีข้อผิดพลาด 404

ดังนั้นฉันคิดว่าคุณคงไม่สามารถสันนิษฐานได้ว่าapt-get updateเป็นแอปพลิเคชัน GUI ...


ที่น่าสนใจ ... อาจมีสถานการณ์เครือข่ายที่ผิดปกติระหว่างคุณและเซิร์ฟเวอร์ที่จัดการได้ดีกว่าเมื่อคุณทำงานapt-getมากกว่าการตรวจสอบอัตโนมัติที่ดำเนินการโดยเรียกใช้ Software Updater / Update Manager? คุณใช้พร็อกซี HTTP หรือไม่ และคุณสามารถทำให้มันเกิดขึ้นอีกครั้งหรือมันเกิดขึ้นเพียงครั้งเดียว? หากเป็นความผิดปกติแบบแยกฉันสงสัยว่าอาจเป็นเพราะเซิร์ฟเวอร์กำหนดค่าผิดพลาดหรือไม่ คุณใช้กระจกแบบไหน ด้วยข้อมูลเพิ่มเติมฉันอาจปรับปรุงคำตอบของฉันได้ (Btw, นี่คือตั้งใจเป็นคำตอบที่แยกจากกันหรือควรแปลงเป็นความคิดเห็นหรือไม่?)
Eliah Kagan

3

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

คุณอาจพบปัญหาหากพยายามติดตั้ง

apt-get install foobar

และ foobar หรือการพึ่งพาไม่มีรุ่นล่าสุดในพื้นที่เก็บข้อมูล ซึ่งอาจเป็นปัญหาโดยเฉพาะอย่างยิ่งหากติดตั้งไฟล์. deb ด้วยตนเองหรือ ppa จากบุคคลที่สาม

โดยทั่วไปจะทำให้แน่ใจว่ารายการของคุณตรงกับรายการหลัก


2

ลองพิจารณาตัวอย่างของการติดตั้งVLC media playerบน Ubuntu:

sudo apt-get update

มันจะตรวจสอบที่เก็บสำหรับการปรับปรุงที่มีอยู่

แต่ทว่า

sudo apt-get install vlc vlc-plugin-pulse mozilla-plugin-vlc

จะติดตั้ง VLC media player จากแหล่งเก็บข้อมูลที่เราค้นหา

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

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