ฉันจะลบ apt ด้วย apt ได้ไหม?


45

ฉันรู้ว่าฉันสามารถใช้apt-get remove <package>เพื่อลบโปรแกรม

แต่aptเป็นโปรแกรมตัวเอง ฉันสามารถใช้apt-get remove aptเพื่อลบมันได้หรือไม่หรือจะสับสนบ้างไหม?


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

@ ByteCommander มันเป็นทั้งคู่ แต่ตอนนี้ฉันไม่สามารถลองได้จริงๆ
ทิม

13
คุณสามารถแต่คุณอาจไม่ควร ลินุกซ์ไม่ค่อยถามว่าทำไมผู้ใช้ถึงต้องการยิงตัวเองเพียงแค่สมมติว่าคุณมีเหตุผลที่ดีและให้คุณดึงทริกเกอร์ ...
Shadur

1
เพื่อความสมบูรณ์ Fedoras 'dnf จะไม่ยอมให้คุณทำ # dnf remove dnf Dependencies resolved. Error: The operation would result in removing the following protected packages: dnf.
Davidmh

ช่างเป็นคำถามที่น่าสนใจมาก! การติดตามแบบลอจิคัลคือ: คุณสามารถกู้คืนจากสิ่งนั้นหรือต้องติดตั้งใหม่ทั้งหมดหรือไม่
KlaymenDK

คำตอบ:


78

APT -sช่วยให้คุณจำลองคำสั่งของคุณโดยใช้ตัวเลือก คุณสามารถลองด้วยตัวเองโดยใช้คำสั่งapt-get -s remove apt(ไม่sudoจำเป็น)

สิ่งนี้ให้ผลลัพธ์ต่อไปนี้:

Reading package lists... Done
Building dependency tree       
Reading state information... Done
The following packages were automatically installed and are no longer required:
  apturl-common xul-ext-ubufox
Use 'apt-get autoremove' to remove them.
The following packages will be REMOVED:
  apt apt-utils apturl nautilus-share python3-software-properties
  software-properties-common software-properties-gtk ubuntu-desktop
  unattended-upgrades
WARNING: The following essential packages will be removed.
This should NOT be done unless you know exactly what you are doing!
  apt
0 upgraded, 0 newly installed, 9 to remove and 0 not upgraded.
Remv ubuntu-desktop [1.341]
Remv nautilus-share [0.7.3-1ubuntu5]
Remv apturl [0.5.2ubuntu9]
Remv software-properties-gtk [0.96.13.1]
Remv software-properties-common [0.96.13.1]
Remv python3-software-properties [0.96.13.1]
Remv unattended-upgrades [0.86.2ubuntu1]
Remv apt-utils [1.0.10.2ubuntu1]
Remv apt [1.0.10.2ubuntu1]

ดังนั้นคำตอบควรเป็น: ใช่คุณทำได้


8
ฉันไม่แน่ใจว่าโหมดจำลองของ apt ครอบคลุม fallout แบบเต็มสำหรับบางอย่างเช่นนี้ แน่นอนว่านี่จะเป็นกรณีที่รหัสอาจจะอยู่หรือไม่
Sparhawk

12
สิ่งนี้ไม่ต้องการsudo( -sโหมดไม่ได้ทำการเปลี่ยนแปลงใด ๆ ) ดังนั้นจึงน่าจะดีกว่าถ้าจะใช้โดยไม่ได้ sudoมีการป้องกันไว้ก่อน
ชื่อปลอม

3
Apt อาจสามารถกำหนดวิธีลบ apt ได้ดี แต่มันสามารถทำได้จริงเหรอ? เป็นเรื่องง่ายที่จะจินตนาการว่าอาจลบไฟล์ที่ขึ้นอยู่กับมันในภายหลังโดยปล่อยให้การติดตั้งอยู่ในสถานะไม่สอดคล้องกัน
user253751

1
@immibis ฉันจะกังวลมากขึ้นเกี่ยวกับการลบ dpkg Apt เองเพียงแค่บอก dpkg ว่าต้องทำอะไร dpkg คือสิ่งที่ทำการติดตั้ง (un) จริง ๆ
Random832

1
ดังนั้นหาก apt บอก dpkg ว่าจะทำอย่างไรจะเกิดอะไรขึ้นเมื่อคุณลบ dpkg ... lol
SuperSluether

30

คุณสามารถ...

sudo apt-get remove apt
Reading package lists... Done
Building dependency tree      
Reading state information... Done
The following packages will be REMOVED:
  apt apt-utils apturl nautilus-share python3-software-properties
  software-center software-properties-common software-properties-gtk
  ubuntu-desktop ubuntu-extras-keyring ubuntu-minimal unattended-upgrades
WARNING: The following essential packages will be removed.
This should NOT be done unless you know exactly what you are doing!
  apt
0 upgraded, 0 newly installed, 12 to remove and 0 not upgraded.
After this operation, 9,031 kB disk space will be freed.
You are about to do something potentially harmful.
To continue type in the phrase 'Yes, do as I say!'
?] Yes, do as I say!
(Reading database ... 179817 files and directories currently installed.)
Removing ubuntu-desktop (1.327) ...
Removing nautilus-share (0.7.3-1ubuntu5) ...
Removing apturl (0.5.2ubuntu4) ...
dpkg: warning: while removing apturl, directory '/usr/lib/python3/dist-packages/AptUrl/gtk/backend' not empty so not removed
Removing software-properties-gtk (0.94) ...
dpkg: warning: while removing software-properties-gtk, directory '/usr/lib/python3/dist-packages/softwareproperties/gtk' not empty so not removed
Removing software-properties-common (0.94) ...
Removing python3-software-properties (0.94) ...
Removing unattended-upgrades (0.82.8) ...
Removing ubuntu-minimal (1.327) ...
Removing apt-utils (1.0.9.2ubuntu2) ...
Removing software-center (13.10-0ubuntu4.1) ...
Removing ubuntu-extras-keyring (2010.09.27) ...
OK
Removing apt (1.0.9.2ubuntu2) ...
Processing triggers for man-db (2.7.0.2-2) ...
Processing triggers for gconf2 (3.2.6-2ubuntu1) ...
Processing triggers for hicolor-icon-theme (0.13-1) ...
Processing triggers for shared-mime-info (1.2-0ubuntu3) ...
Processing triggers for gnome-menus (3.10.1-0ubuntu2) ...
Processing triggers for desktop-file-utils (0.22-1ubuntu2) ...
Processing triggers for bamfdaemon (0.5.1+14.10.20140925-0ubuntu1) ...
Rebuilding /usr/share/applications/bamf-2.index...
Processing triggers for mime-support (3.55ubuntu1) ...
Processing triggers for dbus (1.8.8-1ubuntu2) ...
Processing triggers for libc-bin (2.19-10ubuntu2) ...

และจะได้รับการเตือนว่าคุณกำลังจะทำสิ่งที่อันตรายมาก ฉันต้องบอกว่า ... รายการแพ็คเกจดูเหมือนน่ากลัวสำหรับการประหยัดพื้นที่น้อยกว่า 6000kb: D

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


12
จะต้องใช้ "dpkg" เพื่อติดตั้งตัวจัดการแพคเกจอีกครั้ง (และยังต้องติดตั้งการอ้างอิงทั้งหมดด้วยตนเอง)ดังนั้นในคำอื่น ๆsudo apt-get remember-what-2002-was-like
user1717828

คุณไม่สามารถบูตเข้าซีดีสดแล้วchrootและapt-getเหมือน Arch ไม่?
Sparhawk

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

ไม่มีแพ็คเกจที่ลบออกโดยเฉพาะอย่างยิ่ง IMO "น่ากลัว" ยกเว้นสำหรับตัวเองแน่นอน
Random832

@ MichaelKjörlingฉันคิดว่าคุณสามารถเรียกใช้พา ธ แบบแมนนวลไปยังการapt-getติดตั้งใน "root" ใหม่ แต่ฉันลืมไปว่าคุณต้องการไฟล์ config / cache ทั้งหมดด้วย คำแนะนำที่เป็นไปได้ของคุณจะสะอาดกว่าแน่นอน
Sparhawk

12

เมื่อกลับมาเมื่อฉันวิ่ง CoreUbuntu ผมติดตั้งแพคเกจรถจากแหล่งที่ตัดสินใจที่จะจำหน่ายแล้วapt aptครั้งต่อไปที่ฉันวิ่งapt autoremoveฉันไม่ได้ดูรายการซอฟต์แวร์ที่จะลบและaptอยู่ในรายการ

นึกแปลกใจของฉันในครั้งต่อไปผมพิมพ์และได้apt install <package-name>The program 'apt' is currently not installed. You can install it by typing: sudo apt-get install apt

โชคดีด้วยเหตุผลบางอย่างautoremoveไม่ได้ลบใด ๆ ของapt's อ้างอิงดังนั้นสิ่งที่ผมต้องทำคือwget apt' s เก็บและติดตั้งโดยใช้.debdpkg -i


ดังแสดงในคำตอบอื่น ๆ ถ้าคุณเอาapt กับ aptคุณจะมีปัญหามากขึ้นเพราะจากการอ้างอิงก็พยายามที่จะแก้ปัญหา

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


5
ฉันพนันได้ว่าเหตุผลที่aptไม่ได้ลบการอ้างอิงคือแพคเกจรถที่คุณติดตั้งไว้ในรายการตามที่ต้องการ ทำให้รู้สึกว่าแพคเกจนั้นมีความหมายแทน
Dmitry Grigoryev

5

ในทางเทคนิคแล้ว apt ไม่สามารถลบ apt ... เพราะ apt ไม่ทราบวิธีการลบติดตั้งหรืออัพเกรดแพ็คเกจ ภารกิจของการติดตั้งการถอดการอัพเกรดการกำหนดคอนฟิกแพ็กเกจจะเหลือที่ dpkg แม้ว่าคุณสามารถบอกให้ apt ลบแพ็คเกจที่เรียกว่า "apt" สิ่งที่ทำคือตรวจสอบการพึ่งพาย้อนกลับของแพ็คเกจ apt จดบันทึกแพ็คเกจเหล่านั้นและสั่งซื้อ dpkg เพื่อลบออก ซึ่งเป็นสิ่งที่สามารถเห็นได้ในอีก คำตอบ

คุณสามารถใช้ dpkg เพื่อติดตั้งเอาออกหรืออัพเกรดแพ็คเกจได้ แต่มันจะเจ็บปวดมากขึ้นในการติดตามการพึ่งพาและการอัพเกรดที่จำเป็นซึ่งก็คือraison d'être of apt


ใช่ฉลาดเป็นเพียงส่วนหน้าที่ง่ายกว่าdpkgและถ้าคุณลบออกdpkgแล้วมันเป็น Ubuntu จริง ๆ อีกต่อไปหรือไม่
แมว

@cat ฉันคิดว่ามันจะยังคงเป็น ... ตราบใดที่คุณไม่ได้กำจัดแพคเกจหรือลบ/var/lib/dpkg/statusไฟล์ คุณสามารถกู้ dpkg ได้หากต้องการเช่นกัน
Braiam

1

แน่นอนคุณสามารถ. Apt และ dpkg เป็นแพ็คเกจของตัวเองและพวกมันตั้งใจที่จะอัพเดทด้วยตัวเองดังนั้นจึงมีข้อกำหนดสำหรับการลบ เป็นอย่างอื่น/var/lib/dpkg/info/dpkg.prermและ/var/lib/dpkg/info/dpkg.postrmจะไม่มีเหตุผลที่มีอยู่ :)

หากคุณลบไฟล์เหล่านั้นโดยไม่ตั้งใจออกไปโดยที่คุณไม่ได้ใช้ dpkg คุณสามารถแกะไฟล์. deb สำหรับ dpkg ได้ด้วยตนเองจนกว่าคุณจะกำจัด binutils, tar, gzip / bzip2 ด้วยตนเอง

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


-1

ฉันสาบานว่าฉันเห็นaptไบนารีภายใต้ระบบ/usr/local/binที่ใช้ Ubuntu เมื่อไม่นานมานี้ แต่พวกเขาไม่ได้อยู่ในระบบ Ubuntu MATE 15.04 ปัจจุบันของฉัน (พวกเขาอยู่ใน/usr/binไบนารีอื่น ๆ ส่วนใหญ่) หากเป็นไป/usr/local/binแล้วอาจจะไม่สามารถถอนการติดตั้งได้aptเนื่องจากตัว/usr/local/binจัดการแพคเกจควรละเว้นไฟล์ที่อยู่ข้างใน ฉันต้องยอมรับว่าการวางapt(และdpkgเช่นกัน) ภายใต้/usr/local/binจะเป็นความคิดที่ดี

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


(ตลก :) Debian ของผู้ใช้เทียบเท่ากับการมี# rm -rf /# apt-get purge ".*"


หากสิ่งใดก็ตามที่มาจากแพ็คเกจการจัดจำหน่ายอย่างเป็นทางการสิ้นสุดลงใน / usr / local / bin ให้ยื่นข้อบกพร่องกับแพ็คเกจนั้น
rackandboneman

สิ่งนี้คือมันไม่ได้มาจากแพ็คเกจ มันถูกติดตั้งแยกต่างหากจากตัวจัดการแพคเกจโดยมีวัตถุประสงค์เพื่อหลีกเลี่ยงปัญหา "apt-get remove apt" และ "apt-get remove dpkg" ฉันคิดว่ามันเป็น Linux Mint จริง ๆ แล้วซึ่งฉันเคยใช้เป็นระบบหลักของฉัน
เชลจอห์นสัน
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.