apt-get install ด้วย '-' (ลบ / ยัติภังค์) ลบแพ็คเกจออก


22

ฉันกำลังมองหาแพ็คเกจ ( nautilus-terminal) และทำสิ่งนี้โดยไม่ตั้งใจ:

$ sudo apt-get install nautilus-
Reading package lists... Done                                                                                                                                                                                                 
Building dependency tree                                                                                                                                                                                                      
Reading state information... Done                                                                                                                                                                                             
The following packages were automatically installed and are no longer required:                                                                                                                                               
  apturl apturl-common libgail-3-0 linux-headers-4.4.0-57 linux-headers-4.4.0-57-generic linux-image-4.4.0-57-generic linux-image-extra-4.4.0-57-generic                                                                      
Use 'sudo apt autoremove' to remove them.                                                                                                                                                                                     
The following packages will be REMOVED:                                                                                                                                                                                       
  gnome-session-flashback nautilus nautilus-sendto nautilus-share ubuntu-desktop                                                                                                                                              
0 upgraded, 0 newly installed, 5 to remove and 69 not upgraded.                                                                                                                                                               
After this operation, 2 031 kB disk space will be freed.                                                                                                                                                                      
Do you want to continue? [Y/n] ^[[^C                                                                                                                                                                                          

นั่นค่อนข้างอันตรายเพราะการลบนั้นยากต่อการพิมพ์ผิดมากกว่าเส้นประแบบง่าย ๆ จากการเติมข้อความอัตโนมัติที่ล้มเหลว

นั่นเทียบเท่าapt-get removeหรือไม่ ฉันไม่พบเอกสารใด ๆ สำหรับสิ่งนั้น แก้ไข: ยกเว้นการมองเห็นหน้าคน ...


1
ทำไมมันถึงอันตรายมากกว่าapt-get remove? ฉลาดรับได้บอกคุณว่ามันจะทำอะไรและขอการยืนยัน
marcelm

3
@marcelm เพราะremoveพิมพ์ผิดได้ยากกว่า dash แบบง่าย ๆ จากการเติมข้อความอัตโนมัติที่ล้มเหลว
stebu92

@ stebu92 ถ้อยคำสมบูรณ์แบบฉันจะเพิ่มว่าถ้าคุณไม่รังเกียจ
Ondra Žižka

ฉันคิดว่าอย่างน้อย Y / n ควรเปลี่ยนเป็น y / N เมื่อ-มีการใช้งาน
Ondra Žižka

บางทีฉันอาจจะตีความผิด ๆ แต่ดูเหมือนว่าจะเป็นเรื่องจับใจ / การร้องเรียนมากกว่าคำถาม คำถามอะไรที่คุณหวังว่าจะได้รับคำตอบจากการโพสต์ข้อความนี้?
thomasrutter

คำตอบ:


28

จากman apt-get:

ติดตั้ง
   ตามด้วยการติดตั้งหนึ่งหรือหลายแพ็คเกจที่ต้องการ
   การติดตั้งหรืออัพเกรด แต่ละแพ็คเกจเป็นชื่อแพ็คเกจไม่ใช่
   ชื่อไฟล์ที่ผ่านการรับรองโดยสมบูรณ์ (ตัวอย่างเช่นในระบบ Debian
   apt-utils จะเป็นข้อโต้แย้งที่มีให้ไม่ใช่
   apt-utils_1.2.10_amd64.deb) แพ็คเกจทั้งหมดที่ต้องการโดย
   แพคเกจที่ระบุไว้สำหรับการติดตั้งจะถูกเรียกคืนและ
   การติดตั้ง ไฟล์ /etc/apt/sources.list ถูกใช้เพื่อค้นหา
   แพ็คเกจที่ต้องการ หากมีการใส่ยัติภังค์ต่อท้ายชื่อแพ็คเกจ (ด้วย
   ไม่มีพื้นที่ว่าง) แพ็คเกจที่ระบุจะถูกลบหากมัน
   ติดตั้งแล้ว ในทำนองเดียวกันเครื่องหมายบวกสามารถใช้ในการกำหนด
   แพคเกจที่จะติดตั้ง คุณสมบัติหลังเหล่านี้อาจถูกใช้เพื่อแทนที่
   การตัดสินใจทำโดยระบบการแก้ไขความขัดแย้งของ apt-get

ดังนั้น OP ควรทำ: sudo apt install nautilus && sudo apt install nautilus-terminalที่ OP ได้ผ่านไปกับremoveคำสั่งอื่น: sudo apt install nautilus-terminalถ้าไม่ถูกเลือก?
George Udosen

3
เหตุผลสำหรับคุณลักษณะนี้คือบางครั้งคุณต้องการติดตั้งแพคเกจที่ขัดแย้งกับแพคเกจที่ติดตั้งไว้แล้ว แต่แพ็กเกจอื่นจำเป็นต้องใช้แพ็กเกจอื่นดังนั้นจึงต้องดำเนินการทั้งสองอย่างในการทำงานเดียวกัน เช่นapt install sysvinit-core systemd-sysv-(จำเป็นต้องมีในแพ็คเกจแพ็คเกจEssential init) หรือapt install msmtp postfix-(แพ็คเกจจำนวนมากขึ้นอยู่กับ MTA)
Simon Richter

1
@SimonRichter กำลังพยายามapt -s install upstart-sysv16.04 ตัวบ่งชี้aptจะถูกลบโดยอัตโนมัติsystemd-sysv(เนื่องจากมีข้อขัดแย้ง) เช่นเดียวกันสำหรับและmsmtp-mta postifxอาจจำเป็นต้องใช้ตัวอย่างที่ซับซ้อนมากขึ้นซึ่งaptอาจเลือกแพ็คเกจที่ไม่ถูกต้องเพื่อลบ
muru

ขอบคุณสำหรับการแก้ไขตาที่ตาบอดของฉัน ระบุว่าapt-get remove foo+ติดตั้ง foo
Ondra Žižka

นั่นเป็นคุณสมบัติที่เรียบร้อย : D
Andrea Lazzarotto

0

สองต่อไปนี้หมายถึงเหมือนกัน:

# apt-get remove nautilus
# apt-get install nautilus-

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

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

# apt-get install php5-cgi libapache2-mod-php5- 

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

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

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