ทำไมต้องใช้การอัพเกรด apt-get แทน apt-get dist-upgrade


302

ฉันมักจะใช้apt-get update && apt-get upgradeเพื่อเรียกใช้อัปเดตและอัปเกรดแทน GUI เพราะดูเหมือนว่าจะทำงานได้เร็วขึ้น

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

ดังนั้นคำถามของฉันคือทำไมใช้apt-get upgradeเลย ทำไมไม่ใช้apt-get dist-upgradeตลอดเวลา? ทำไมapt-get upgradeถึงมีอยู่จริง?


1
ใน Ubuntu รุ่นใหม่กว่าsudo apt full-upgradeทำสิ่งที่คล้ายกัน
Aaron Franke

คำตอบ:


410

ฉันมักจะอัพเกรดเครื่องด้วย:

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

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

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

upgrade
    upgrade is used to install the newest versions of all packages
    currently installed on the system from the sources enumerated in
    /etc/apt/sources.list. Packages currently installed with new
    versions available are retrieved and upgraded; under no
    circumstances are currently installed packages removed, or packages
    not already installed retrieved and installed. New versions of
    currently installed packages that cannot be upgraded without
    changing the install status of another package will be left at
    their current version. An update must be performed first so that
    apt-get knows that new versions of packages are available.

dist-upgrade
    dist-upgrade in addition to performing the function of upgrade,
    also intelligently handles changing dependencies with new versions
    of packages; apt-get has a "smart" conflict resolution system, and
    it will attempt to upgrade the most important packages at the
    expense of less important ones if necessary. So, dist-upgrade
    command may remove some packages. The /etc/apt/sources.list file
    contains a list of locations from which to retrieve desired package
    files. See also apt_preferences(5) for a mechanism for overriding
    the general settings for individual packages.

44
ขอบคุณสำหรับการสรุปความแตกต่างระหว่างสองข้อนี้เท่านั้น แต่ยังอธิบายถึงสถานการณ์ที่สถานการณ์หนึ่งอาจดีกว่าอีกสถานการณ์หนึ่ง นี่คือสิ่งที่ฉันกำลังมองหา
jimchristie

10
dist-upgradeupgradeมีแนวโน้มที่จะทำลายสิ่งที่แย่กว่า upgradeทำให้แน่ใจว่าระบบของคุณยังคงสมบูรณ์
Braiam

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

1
คำถามเล็ก ๆ เกี่ยวกับ 'apt-get upgrade' อ้างถึงข้อเท็จจริงที่ว่า "ไม่ได้ลบแพ็คเกจที่ติดตั้งอยู่ในปัจจุบันหรือเพิ่มแพ็คเกจใหม่": ทำแพ็คเกจที่มีอยู่ให้อัพเกรดด้วยเช่นกัน ตัวอย่างเช่น oldA ขึ้นอยู่กับ oldB oldA และ oldB ทั้งคู่จะได้รับการอัปเกรดหรือไม่ ถ้า newA ขึ้นอยู่กับ oldB ไม่ใช่ newB จะเกิดอะไรขึ้นกับทั้งสองนี้ระหว่างการอัพเกรด ทั้งไม่ได้อัปเกรดหรืออัพเกรดทั้งสองอย่างซึ่งอาจทำให้ newA ไม่ทำงานเพราะ oldB หายไป?
Kenny

2
อะไรคือเหตุผลที่ใช้timeที่นี่?
ItalyPaleAle

128

ฉันรู้ว่าคำถามนี้ได้รับการตอบแล้วและมีอายุหนึ่งปี แต่ฉันรู้สึกว่าต้องพูดเช่นนี้ Ubuntu 14.04 และใหม่กว่า (และ Debian Jessie และใหม่กว่าสำหรับผู้ที่ค้นหาสิ่งนี้จาก Google) ใช้ APT 1.0 ซึ่งอนุญาตให้ใช้คำสั่งaptแทนapt-getและapt-cacheสำหรับการดำเนินการบางอย่าง

  • apt-get upgrade จะไม่เปลี่ยนสิ่งที่ติดตั้ง (เฉพาะรุ่น)
  • apt-get dist-upgrade จะติดตั้งหรือลบแพ็คเกจตามที่จำเป็นเพื่อให้การอัปเกรดเสร็จสมบูรณ์
  • apt upgrade จะติดตั้งโดยอัตโนมัติ แต่ไม่ได้ลบแพ็คเกจ
  • apt full-upgradeapt-get dist-upgradeดำเนินการเช่นเดียวกับฟังก์ชั่น

@muru ขอบคุณสำหรับการแก้ไขและบันทึกเกี่ยวกับการอัพเกรดแบบเต็ม ฉันใช้ Debian 7 (ซึ่งเป็น pre-APT 1.0) เป็นหลักและฉันเล่นกับ Debian Jessie และ Ubuntu 14.04 เท่านั้น
Stephen Angelico

ไม่เป็นไร ในฐานะที่เป็นคนที่ใช้งานjessieและเป็นประจำ 14.04 ฉันได้เรียนรู้เกี่ยวกับประโยชน์ใหม่นี้จากคำตอบของคุณ!
muru

คุณมีแหล่งที่มาสำหรับคำอธิบายของapt upgradeคุณหรือไม่ ทุกอย่างที่ฉันสามารถขึ้นมาแสดงให้เห็นว่าเป็นเช่นเดียวกับapt upgrade apt-get upgradeตัวอย่างเช่นapt help upgradeในระบบของฉันแสดงผล:"apt upgrade" is equivalent to "sudo apt-get upgrade"
Jon Bentley

1
manpages ที่เกี่ยวข้องสำหรับaptและapt-getระบุสิ่งที่ฉันพูด
Stephen Angelico

1
apt safe-upgradeไม่ใช่การดำเนินการที่ถูกต้องในระบบของฉัน ถ้าคุณหมายถึงaptitude safe-upgradeไม่มาก apt-get upgradeจะไม่ติดตั้งแพคเกจในขณะที่apt upgradeและaptitude safe-upgradeจะติดตั้งแพคเกจใหม่ตามความต้องการของมัน ดังนั้นaptitude safe-upgradeจะเทียบเท่ากับการไม่ได้apt upgrade apt-get upgrade
Stephen Angelico

7

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

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

อย่างไรก็ตามdist-upgradeตัวเลือกสามารถ "ฉลาด" จัดการการเปลี่ยนแปลงในระบบการอ้างอิง ซึ่งรวมถึงการลบแพคเกจที่ไม่จำเป็นหรือแก้ไขข้อขัดแย้งระหว่างแพคเกจที่เกิดขึ้นเนื่องจากการเปลี่ยนแปลงในการอ้างอิง


5
ในขณะนี้ถูกต้องฉันไม่คิดว่ามันจะตอบคำถาม หากเรามีตัวเลือก "อัจฉริยะ" ที่สามารถจัดการการเปลี่ยนแปลงการพึ่งพาและกำจัดความยุ่งเหยิงทำไมไม่ใช้มันตลอดเวลา?
ændrük

1
upgradeนอกจากนี้ยังจะไม่เพิ่มแพคเกจใหม่ที่กลายเป็นสิ่งจำเป็นเช่นการอ้างอิง จากman apt-get: "ภายใต้สถานการณ์ที่ไม่ได้ติดตั้งแพคเกจที่ถูกลบออกหรือแพ็คเกจที่ยังไม่ได้ติดตั้งเรียกและติดตั้ง" @ ændrükเพียงเพราะสิ่งที่ "ฉลาด" ไม่ได้หมายความว่ามันจะทำในสิ่งที่ผู้ใช้ต้องการเสมอ . เมื่อใดก็ตามที่มีการอัปเดตระบบจะลบแพคเกจคุณควรตรวจสอบสิ่งที่มันทำก่อนกด Y
Eliah Kagan

2

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


-4

ไม่ควรเป็นปัญหาสำหรับผู้ใช้ Win-Home เสมอ "dist-upgrade" แต่ถ้าคุณใช้ระบบที่ซับซ้อนคุณดีกว่า "ไม่เคย (จริงๆ) เปลี่ยนระบบที่ใช้งาน" ... แม้ว่าจะมี "ควร" จะไม่มีปัญหา มี "ได้" เป็นปัญหา - สิ่งที่จะตัดคุณออก! คุณควรเป็นคนที่มีสิทธิ์ตัดสินใจ 2 คน ;-)


3
Should not be a problem for Win-Home Users to always "dist-upgrade".. ทำไมล่ะ
heemayl

1
สมมุติว่าคุณตั้งค่า ubuntu-server ซึ่งเป็นเวิร์กสเตชันสำหรับสภาพแวดล้อมที่มีประสิทธิผล: เมื่อคุณทำการปรับรุ่นอัตโนมัติและอัตโนมัติคุณอาจไม่สามารถควบคุมได้เมื่อคุณพบปัญหา - แม้ว่าคุณจะไม่มีเวลาแก้ปัญหา ขณะนั้นการอัปเกรดอัตโนมัติจะเสร็จสิ้น การกำหนดค่าบางอย่างอาจต้องใช้การ "พอร์ต" แบบสัมผัสกับพอร์ต นั่นคือสิ่งที่ฉันพิชิตหลายครั้ง เมื่อคุณทำงานบนแพลตฟอร์ม "บ้าน" อย่าง Win-Home โดยค่าเริ่มต้นผู้ใช้จะไม่ได้รับการควบคุมการอัปเดต ดังนั้นคุณอาจไม่รบกวนคุณ
Thorben Kaufmann
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.