เลิกใช้งาน 'apt-get' หรือไม่


54

เมื่อเร็ว ๆ นี้ฉันเคยเห็นหลายคนใช้

sudo apt

แทน

sudo apt-get

นอกจากนี้ Ubuntu ยังบอกให้ฉันติดตั้งสิ่งต่าง ๆ ด้วย sudo apt

The program 'foo' is currently not installed. You can install it by typing:
sudo apt install foo

(จำไว้ว่า foo เป็นตัวยึดตำแหน่งไม่ใช่แอป)

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

ในโปรแกรมทุบตีของฉัน

  • ฉันต้องแทนที่apt-getคำสั่งทั้งหมดด้วยaptหรือไม่
  • เป็นapt-getอันตรายหรือไม่?
  • โปรแกรมของฉันจะยังใช้งานได้หรือไม่

7
ดูโพสต์ที่เกี่ยวข้องนี้: askubuntu.com/q/445384/295286
Sergiy Kolodyazhnyy

ฉลาดดีกว่าฉลาดรับ
WinEunuuchs2Unix

2
เหตุผลที่ผู้ใช้บางคน (เช่นตัวเอง) ใช้เป็นเพราะมันสั้นกว่าapt apt-getการกดแป้นพิมพ์น้อยลงใช้เวลาน้อยลง ผมใช้apt-getสำหรับสิ่งที่ต้องการcheckแม้ว่า
Gallifreyan

คำตอบ:


36

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

ทั้งสองอย่างดีอย่างสมบูรณ์ apt-getไม่เลิกใช้ แต่การติดตั้ง 15.10 ของคุณคือ :)

แก้ไข: จาก man page ของ apt (8)

คำสั่ง apt เหมาะสำหรับผู้ใช้ปลายทางและไม่จำเป็นต้องย้อนกลับเข้ากันได้เช่น apt-get (8)

Edit2: ได้รับการออกแบบมาเพื่อแก้ไขบางส่วนของข้อบกพร่องพื้นฐานในการพึ่งพาapt apt-getเนื่องจากเป็น wrapper aptจึงอยู่ในระดับที่สูงกว่าและยังสูญเสียความสามารถในการใช้งานร่วมกันได้และการเขียนสคริปต์ย้อนหลัง


19
คุณสมบัติอะไรที่ไม่ได้อยู่ในแพกเกจ - ไม่เหมาะเจาะ และ apt ดีกว่าสำหรับผู้ใช้อย่างไร
อันวาร์

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

@ อันวาร์: มีความแตกต่าง ตัวอย่างหนึ่ง: apt upgradeapt-get upgradeตั้งแต่อดีตติดตั้งแพ็คเกจใหม่ในขณะที่แพคเกจไม่ทำ
Gunnar Hjalmarsson

26
@ อันวาร์ถ้าaptเป็นเสื้อคลุม arount apt-getแล้วมันระดับที่สูงขึ้นอย่างแน่นอน
Tavian Barnes

2
@ อันวาร์นั่นคือคำจำกัดความของการเป็น "ระดับที่สูงขึ้น" หรือ "ระดับที่ต่ำกว่า" apt อยู่ในระดับที่สูงขึ้นเพราะมันจะตัด apt-get การทดสอบแบบหนึ่งก็คือถ้าคุณมีความผิดปกติ apt-get ก็ยังคงใช้ได้ แต่ไม่ใช่ในทางกลับกัน
Sir Robert

47

ไม่apt-getไม่เลิก man page ของaptมีสิ่งนี้เพื่อพูดเกี่ยวaptกับ vs. apt-get(และapt-cache):

การใช้สคริปต์และความแตกต่างจากเครื่องมือ APT อื่น ๆ

commandline apt (8) ได้รับการออกแบบเป็นเครื่องมือสำหรับผู้ใช้และอาจเปลี่ยนพฤติกรรมระหว่างเวอร์ชัน แม้ว่าจะพยายามไม่แบ่งความเข้ากันได้แบบย้อนหลัง แต่ก็ไม่รับประกันว่าจะมีการเปลี่ยนแปลงหากดูเหมือนว่ามีประโยชน์สำหรับการใช้แบบโต้ตอบ

คุณสมบัติทั้งหมดของ apt (8) มีอยู่ในเครื่องมือ APT เฉพาะเช่น apt-get (8) และ apt-cache (8) เช่นกัน apt (8) เพียงแค่เปลี่ยนค่าเริ่มต้นของตัวเลือกบางตัว (ดู apt.conf (5) และเฉพาะขอบเขต Binary) ดังนั้นคุณควรใช้คำสั่งเหล่านี้ (อาจมีการเปิดใช้งานตัวเลือกเพิ่มเติมบางอย่าง) ในสคริปต์ของคุณเนื่องจากพวกเขารักษาความเข้ากันได้ย้อนหลังให้มากที่สุด

apt ยังให้คำเตือนว่า

WARNING: apt does not have a stable CLI interface. Use with caution in scripts.

หากตรวจพบว่ามีท่อ ตัวอย่างเช่น:

$ apt show python | grep Package

WARNING: apt does not have a stable CLI interface. Use with caution in scripts.

Package: python
APT-Sources: http://us.archive.ubuntu.com/ubuntu xenial/main amd64 Packages

สำหรับคำถามของคุณ

ฉันต้องแทนที่คำสั่ง apt-get ทั้งหมดด้วยaptหรือไม่

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

เป็นapt-getอันตรายหรือไม่?

aptอันตรายเท่าapt-get: คุณควรติดตั้งซอฟต์แวร์จากแหล่งที่คุณเชื่อถือเท่านั้น

ฉันสามารถใช้aptใน Ubuntu 15.10 ได้ไหม?

ใช่คุณสามารถ ปัญหาที่นี่คือคุณยังคงใช้ Ubuntu 15.10 ซึ่งไม่ได้รับการสนับสนุนในขณะนี้! โปรดอัปเกรดเป็น 16.04 ซึ่งเป็นรุ่น LTS

โปรแกรมของฉันจะยังใช้งานได้หรือไม่

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


7

aptและapt-getมีพื้นผู้จัดการแพคเกจเดียวกันสิ่งที่พวกเขาทำคือเดียวกัน

ความแตกต่างคือaptยังมีคุณสมบัติจากเช่นapt-cacheและมีผลลัพธ์ที่ดูดีกว่า

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

คุณสามารถใช้ทั้งสองแบบตามที่คุณต้องการ


ฉลาดมีคุณสมบัติฉลาดแคด้วยความล่าช้าเพิ่ม! ลองใช้ apt search package และ apt-cache search package นโยบายการใช้เดียวกัน
Anwar

@Anwar ผมไม่เห็นความแตกต่างใด ๆ apt(-cache) policyโดยใช้ ด้วยapt(-cache) searchมีความแตกต่างในความเร็วใช่ แต่ผลลัพธ์ของaptเรียงลำดับและจัดรูปแบบในทางกลับกัน
ผู้บัญชาการไบต์

-1

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

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

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