เมื่อใดที่คุณจะใช้ apt-get remove ในระบบตอบรับอัตโนมัติ apt-get


16

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

คำตอบ:


11

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

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

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

ตัวอย่างเช่นถ้าฉันจะติดตั้งAwesomePackageก็อาจขึ้นอยู่กับAwesomeLibraryและจึงAwesomeLibraryจะได้รับการติดตั้งโดยอัตโนมัติเป็นdependancy เมื่อฉันลบAwesomePackageโดยใช้ autoremove ตราบใดที่ไม่มีแพ็คเกจอื่นที่ต้องAwesomeLibraryพึ่งพามันก็จะถูกถอนการติดตั้งเช่นกัน แต่ถ้าSuperPackageต้องมีAwesomeLibraryหรือถ้าฉันได้ติดตั้งAwesomeLibraryตัวเองอย่างชัดเจนมากกว่าที่จะมาโดยอัตโนมัติเป็นพึ่งพา ( apt-get install AwesomeLibrary) แล้ว autoremove จะไม่กำจัดมัน

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


ขออภัย Myrddin Emrys คุณสูญเสียฉันไปที่นั่น ดังนั้นให้ฉันลองและเข้าใจสิ่งที่คุณพูด ตัวอย่างเช่นถ้าฉันติดตั้ง libreoffice โดยใช้ apt-get มันจะติดตั้งการพึ่งพาทั้งหมดโดยสมมติว่าฉันไม่ได้ติดตั้งไว้แล้ว ตอนนี้ถ้าฉันตัดสินใจที่จะกำจัด libreoffice ฉันคิดว่าฉันจะทำงานapt-get remove libreoffice
PeanutsMonkey

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

นั่นถูกต้องอย่างแน่นอน @PeanutsMonkey Autoremove จะลบแพ็กเกจอื่น ๆ ที่แพ็คเกจที่มีชื่อขึ้นอยู่กับว่าหากพวกเขาไม่ต้องการอะไรอีกต่อไปและไม่ได้ติดตั้งแยกต่างหากตามวัตถุประสงค์
Myrddin Emrys

จริงๆแล้วมันไม่ถูกต้องอย่างแน่นอน ฉันมีไวยากรณ์ที่ไม่ถูกต้องในคำตอบของฉัน (ตามที่ @ cooper ระบุ) ฉันได้แก้ไขสิ่งนี้ในคำตอบข้างต้น apt-get autoremoveเป็นคำสั่งแยกต่างหากจากapt-get remove Packageฉันขอโทษสำหรับข้อมูลที่ผิดครั้งแรก
Myrddin Emrys

ขอบคุณ Myrddin Emrys ขออภัยถ้าฉันเป็น n00b เมื่อคุณพูดThere are exceptions, but the times when removing a dependancy will cause problems outnumber the times when it will solve or prevent a problemอย่างนั้น คุณหมายถึงอะไรกันแน่
PeanutsMonkey

12

คุณสามารถค้นหารายละเอียดของลบ , autoremove , ล้าง , ทำความสะอาดและautocleanเช่นเดียวกับไวยากรณ์ใน manpages สำหรับ apt-get man apt-getนี้:

หากคุณยังไม่แน่ใจหลังจากอ่าน (แม้ว่าฉัน) วิธีที่ดีที่สุดที่จะชี้แจงก็คือลองทำดู

ด้านล่างเป็นตัวอย่างของแผนภูมิการพึ่งพาแบบเต็มสำหรับกลุ่ม :

เป็นกลุ่มพึ่งพาต้นไม้

คุณสามารถรับมันด้วย:

apt-rdepends -d vim > vim.dot
dotty vim.dot

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

$ apt-cache depends vim
vim
  Depends: vim-common
  Depends: vim-runtime
  Depends: libacl1
  Depends: libc6
  Depends: libgpm2
  Depends: libselinux1
  Depends: libtinfo5
  Suggests: <ctags>
    exuberant-ctags
  Suggests: vim-doc
  Suggests: vim-scripts

ดังนั้นดูเหมือนเป็นกลุ่มขึ้นอยู่กับแพคเกจจำนวนมากลองติดตั้งapt-get installและดูว่าเกิดอะไรขึ้น:

$ sudo apt-get install vim
...
The following extra packages will be installed:
  vim-common vim-runtime
Suggested packages:
  ctags vim-doc vim-scripts
The following NEW packages will be installed:
  vim vim-common vim-runtime
0 upgraded, 3 newly installed, 0 to remove and 0 not upgraded.
After this operation, 25.1 MB of additional disk space will be used.
Do you want to continue [Y/n]? n

ในการรับvimให้ทำงานเราต้องใช้vim-commonและvim-runtime package และapt-getจะดูแลมัน เราสามารถตรวจสอบได้ด้วยdpkg -s pkg...(ดูman dpkgข้อมูลเพิ่มเติมเกี่ยวกับสถานะ):

$ sudo dpkg -s libc6
Package: libc6
Status: install ok installed        // we already have it, no need to install

$ sudo dpkg -s vim-common
Package: vim-common
Status: deinstall ok config-files   // we don't have it, have to install

เพียงเท่านี้เราตรวจสอบสิ่งที่เป็นกลุ่มขึ้นอยู่กับเรายังสามารถตรวจสอบสิ่งที่สิ่งอื่น ๆ ขึ้นอยู่กับแพคเกจเดียวกันเป็นกลุ่มapt-cache rdependsโดยใช้ เราควรเห็นกลุ่มอื่น ๆ (อาจ):

$ apt-cache rdepends vim-common
vim-common
Reverse Depends:
  vim-latexsuite
  vim-addon-manager
  vim-tiny
  vim-nox
  vim-gtk
  vim-gnome
 |vim-dbg
  vim-athena
  vim                               // there it is

มาทำการติดตั้งต่อ เมื่อเราได้รับการติดตั้งเป็นกลุ่มเราสามารถสัมผัสความแตกต่างระหว่างการลบและautoremove ลองลบออกก่อน:

$ sudo apt-get remove vim
...
The following packages will be REMOVED:
  vim
0 upgraded, 0 newly installed, 1 to remove and 0 not upgraded.
After this operation, 1,922 kB disk space will be freed.
Do you want to continue [Y/n]? n

apt-get removeแล้วจะเอาเป็นกลุ่มแต่ไม่พึ่งพาปล่อยให้พวกเขาอยู่เบื้องหลัง ตอนนี้ลองลบการอ้างอิงของvim :

$ sudo apt-get remove vim-runtime
...
The following packages will be REMOVED:
  vim vim-runtime
0 upgraded, 0 newly installed, 2 to remove and 0 not upgraded.
After this operation, 24.8 MB disk space will be freed.
Do you want to continue [Y/n]? n

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

$ sudo apt-get remove libgpm2
...
The following packages were automatically installed and are no longer required:
  libgtkglext1 libqtassistantclient4 libtiff-tools libtiff5 python-qt4
  python-sip python-sqlalchemy python-sqlalchemy-ext
Use 'apt-get autoremove' to remove them.
The following packages will be REMOVED:
  anki cheese gimp gimp-gmic gimp-plugin-registry gnome-control-center      // !
  gnome-media gnome-video-effects gstreamer0.10-plugins-good libaa1         // !
  libcheese-gtk21 libcheese3 libgpm2 mplayer quodlibet vim vlc w3m          // !
0 upgraded, 0 newly installed, 18 to remove and 0 not upgraded.
After this operation, 63.1 MB disk space will be freed.
Do you want to continue [Y/n]? n

มันจะลบเสียงเรียกเข้าและสารพัดมากมาย!

มาเริ่มapt-get remove vimกันเลยดีกว่า เมื่อเราทำมันเสร็จแล้วเราควรจะมีของเหลือ ถ้าตอนนี้เราพยายามที่autoremoveเราสามารถมองเห็น:

$ sudo apt-get autoremove
...
The following packages will be REMOVED:
  vim-common vim-runtime
0 upgraded, 0 newly installed, 2 to remove and 0 not upgraded.
After this operation, 23.2 MB disk space will be freed.
Do you want to continue [Y/n]? y

เหล่านี้เป็นสองแพคเกจที่apt-get removeเหลืออยู่แม้ว่าจะไม่มีอะไรอื่นที่ต้องการ

ทดลองกับ apt-get 0.9.7.9


4

ตามนี้: http://ubuntuforums.org/showthread.php?t=996053 autoremove จะลบแพ็คเกจทั้งหมดที่โปรแกรมอื่นไม่ต้องการ คุณจะทำ 'apt-get autoremove' ไม่ใช่ 'apt-get autoremove libreoffice' การลบแพ็คเกจที่ไม่จำเป็นออกไม่เพียงเพิ่มพื้นที่ว่างบนดิสก์เพียงเล็กน้อยเท่านั้น แต่ยังช่วยลด 'พื้นผิวการโจมตี' ของระบบของคุณ


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

3

removeจะลบโปรแกรมที่ระบุในขณะที่autoremoveจะรวมถึงการพึ่งพาเป็นอย่างอื่นไม่ได้ใช้อีกต่อไป

นอกจากนี้หากคุณต้องการเพิ่มพื้นที่ว่างในไดรฟ์คำสั่งที่มีประโยชน์และปลอดภัยคือ ...

sudo apt-get clean

ที่ลบแคชความถนัดใน / var / cache / apt / archives


ขออภัยที่เป็นเช่น n00b แต่ฉันไม่ได้ทำตามนั้น ดังนั้นถ้าฉันเรียกใช้คำสั่งapt-get remove libreofficeฉันเอามันว่ามันจะลบ libreoffice นั่นถูกต้องใช่ไหม? อย่างไรก็ตามถ้าฉันรันคำสั่งapt-get autoremove libreofficeนั่นไม่เพียง แต่จะลบ libreoffice แต่ยังเป็นการพึ่งพาได้ด้วย?
PeanutsMonkey

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