Apt

為什麼我有這麼多不必要的包裹?

  • February 2, 2016

我正在通過.deb從官方網站下載的文件安裝 Prey,突然我意識到我的 Ubunu 筆記型電腦中有這麼多“不必要的”安裝包。

這是我的一系列操作:

  1. 試圖sudo dpkg -i prey.deb。由於失去數據包/衝突而無法工作:
prey:i386 depèn de sudo.
prey:i386 depèn de python.
prey:i386 depèn de python-gtk2.
prey:i386 depèn de scrot.
prey:i386 depèn de streamer.
prey:i386 depèn de mpg123.
prey:i386 depèn de dmidecode.
prey:i386 depèn de gksu.
  1. 然後我做了一個sudo apt-get update(一切都很好)和一個sudo apt-get upgrade(失敗,因為我認為以前的軟體包安裝不成功)。APT 建議這樣做apt-get -f install,我就這樣做了。突然間,我意識到我有一個非常長的不必要的包裹清單,我沒有(至少昨天):
aglfn asymptote asymptote-doc checkbox-ng checkbox-ng-service cm-super cm-super-minimal context context-modules fonts-cabin fonts-comfortaa fonts-dejavu-extra fonts-ebgaramond fonts-ebgaramond-extra
fonts-font-awesome fonts-freefont-otf fonts-gfs-artemisia fonts-gfs-baskerville fonts-gfs-bodoni-classic fonts-gfs-complutum fonts-gfs-didot fonts-gfs-didot-classic fonts-gfs-gazis
fonts-gfs-neohellenic fonts-gfs-olga fonts-gfs-porson fonts-gfs-solomos fonts-gfs-theokritos fonts-hosny-amiri fonts-inconsolata fonts-junicode fonts-lato fonts-linuxlibertine fonts-lobster
fonts-lobstertwo fonts-oflb-asana-math fonts-roboto fonts-sil-gentium fonts-sil-gentium-basic fonts-sil-gentiumplus fonts-stix freeglut3 giblib1:i386 gstreamer0.10-alsa gstreamer0.10-plugins-good
gstreamer0.10-x lcdf-typetools libasound2:i386 libatk1.0-0:i386 libaudit1:i386 libavahi-client3:i386 libavahi-common-data:i386 libavahi-common3:i386 libbz2-1.0:i386 libcairo2:i386 libcomerr2:i386
libcups2:i386 libdatrie1:i386 libdb5.3:i386 libdbus-1-3:i386 libdbus-glib-1-2:i386 libdv4:i386 libffi6:i386 libfontconfig1:i386 libfreetype6:i386 libftgl2 libgconf-2-4:i386 libgcrypt20:i386
libgdk-pixbuf2.0-0:i386 libgif4:i386 libglib2.0-0:i386 libgmp10:i386 libgnome-keyring0:i386 libgnutls-deb0-28:i386 libgpg-error0:i386 libgpm2:i386 libgraphite2-3:i386 libgsl0ldbl libgssapi-krb5-2:i386
libgtk2.0-0:i386 libharfbuzz0b:i386 libhogweed4:i386 libid3tag0:i386 libimlib2:i386 libintl-perl libjbig0:i386 libjpeg-turbo8:i386 libjpeg8:i386 libk5crypto3:i386 libkeyutils1:i386 libkrb5-3:i386
libkrb5support0:i386 libltdl7:i386 liblzma5:i386 libmpg123-0:i386 libncursesw5:i386 libnettle6:i386 libosmesa6 libp11-kit0:i386 libpam-modules:i386 libpam0g:i386 libpango-1.0-0:i386
libpangocairo-1.0-0:i386 libpangoft2-1.0-0:i386 libpcre3:i386 libpixman-1-0:i386 libpng12-0:i386 libpoppler-qt5-1 libprojectm2v5 libpython-stdlib:i386 libpython2.7-minimal:i386
libpython2.7-stdlib:i386 libpython3.5-minimal libpython3.5-stdlib libqca2-plugins libqca2v5 libqt5script5 libqxt-core0 libqxt-gui0 libreadline6:i386 libselinux1:i386 libsigsegv2 libsqlite3-0:i386
libssl1.0.0:i386 libstartup-notification0:i386 libsystemd0:i386 libtasn1-6:i386 libtext-unidecode-perl libthai0:i386 libtiff5:i386 libtinfo5:i386 libv4l-0:i386 libv4lconvert0:i386 libx11-xcb1:i386
libxcb-render0:i386 libxcb-shm0:i386 libxcb-util1:i386 libxcomposite1:i386 libxcursor1:i386 libxdamage1:i386 libxfixes3:i386 libxi6:i386 libxinerama1:i386 libxml-libxml-perl
libxml-namespacesupport-perl libxml-sax-base-perl libxml-sax-expat-perl libxml-sax-perl libxrandr2:i386 libxrender1:i386 linux-image-4.2.0-16-generic linux-image-4.2.0-18-generic
linux-image-4.2.0-19-generic linux-image-4.2.0-22-generic linux-image-extra-4.2.0-16-generic linux-image-extra-4.2.0-18-generic linux-image-extra-4.2.0-19-generic linux-image-extra-4.2.0-22-generic
linux-signed-image-4.2.0-18-generic linux-signed-image-4.2.0-19-generic linux-signed-image-4.2.0-22-generic m-tx mpg123:i386 musixtex pfb2t1c2pfb plainbox-secure-policy pmx python3-checkbox-ng
python3-checkbox-support python3-jinja2 python3-plainbox python3-pyparsing python3-xlsxwriter python3.5 python3.5-minimal qml-module-qtquick-localstorage qtdeclarative5-localstorage-plugin scrot:i386
streamer:i386 sudo:i386 tex4ht tex4ht-common texinfo texlive-fonts-extra texlive-fonts-extra-doc texlive-formats-extra texlive-games texlive-generic-extra texlive-humanities texlive-humanities-doc
texlive-lang-african texlive-lang-arabic texlive-lang-cyrillic texlive-lang-czechslovak texlive-lang-english texlive-lang-european texlive-lang-french texlive-lang-german texlive-lang-greek
texlive-lang-indic texlive-lang-italian texlive-lang-polish texlive-lang-portuguese texlive-lang-spanish texlive-luatex texlive-math-extra texlive-music texlive-omega texlive-plain-extra
texlive-publishers texlive-publishers-doc texlive-science-doc texlive-xetex ttf-adf-accanthis ttf-adf-gillius ttf-adf-universalis ttf-dejavu-core xawtv-plugins:i386 zlib1g:i386

請注意,除了這個長長的列表之外,apt還表示將刪除以下軟體包(sudo??):

Es SUPRIMIRAN els paquets següents:
    plainbox-provider-resource-generic prey:i386 sudo

所以因為這一切,我流產apt-get -f install了,以防萬一…… 3. 因為我不確定這個dpkg過程,所以我通過執行dpkg --purge prey. 4. 此時,我apt-get -f install再次檢查了不必要的包列表( )並減少了,但仍然足夠長,可以讓我取消此命令。這是apt“想要”解除安裝的軟體包列表,因為它們不是必需的:

aglfn asymptote asymptote-doc checkbox-ng checkbox-ng-service cm-super cm-super-minimal context context-modules fonts-cabin fonts-comfortaa fonts-dejavu-extra fonts-ebgaramond fonts-ebgaramond-extra
fonts-font-awesome fonts-freefont-otf fonts-gfs-artemisia fonts-gfs-baskerville fonts-gfs-bodoni-classic fonts-gfs-complutum fonts-gfs-didot fonts-gfs-didot-classic fonts-gfs-gazis
fonts-gfs-neohellenic fonts-gfs-olga fonts-gfs-porson fonts-gfs-solomos fonts-gfs-theokritos fonts-hosny-amiri fonts-inconsolata fonts-junicode fonts-lato fonts-linuxlibertine fonts-lobster
fonts-lobstertwo fonts-oflb-asana-math fonts-roboto fonts-sil-gentium fonts-sil-gentium-basic fonts-sil-gentiumplus fonts-stix freeglut3 gstreamer0.10-alsa gstreamer0.10-plugins-good gstreamer0.10-x
lcdf-typetools libftgl2 libgsl0ldbl libintl-perl libosmesa6 libpoppler-qt5-1 libprojectm2v5 libpython3.5-minimal libpython3.5-stdlib libqca2-plugins libqca2v5 libqt5script5 libqxt-core0 libqxt-gui0
libsigsegv2 libtext-unidecode-perl libxml-libxml-perl libxml-namespacesupport-perl libxml-sax-base-perl libxml-sax-expat-perl libxml-sax-perl linux-image-4.2.0-16-generic linux-image-4.2.0-18-generic
linux-image-4.2.0-19-generic linux-image-4.2.0-22-generic linux-image-extra-4.2.0-16-generic linux-image-extra-4.2.0-18-generic linux-image-extra-4.2.0-19-generic linux-image-extra-4.2.0-22-generic
linux-signed-image-4.2.0-18-generic linux-signed-image-4.2.0-19-generic linux-signed-image-4.2.0-22-generic m-tx musixtex pfb2t1c2pfb plainbox-provider-resource-generic plainbox-secure-policy pmx
python3-checkbox-ng python3-checkbox-support python3-jinja2 python3-plainbox python3-pyparsing python3-xlsxwriter python3.5 python3.5-minimal qml-module-qtquick-localstorage
qtdeclarative5-localstorage-plugin tex4ht tex4ht-common texinfo texlive-fonts-extra texlive-fonts-extra-doc texlive-formats-extra texlive-games texlive-generic-extra texlive-humanities
texlive-humanities-doc texlive-lang-african texlive-lang-arabic texlive-lang-cyrillic texlive-lang-czechslovak texlive-lang-english texlive-lang-european texlive-lang-french texlive-lang-german
texlive-lang-greek texlive-lang-indic texlive-lang-italian texlive-lang-polish texlive-lang-portuguese texlive-lang-spanish texlive-luatex texlive-math-extra texlive-music texlive-omega
texlive-plain-extra texlive-publishers texlive-publishers-doc texlive-science-doc texlive-xetex ttf-adf-accanthis ttf-adf-gillius ttf-adf-universalis ttf-dejavu-core

我記得昨天在這個列表中填充了一些linux-signed-image...和其他的,但絕對沒有全部。事實上,如果我確定這些軟體包正在被使用(例如,、、、texlive-*… ) fonts-*,我可能會損壞什麼ttf-*python-*我該如何恢復呢?

我懷疑錯誤來自第 3 步,但我不確定。

**更新:**甚至在按照評論中的建議進行修補之前debfoster,我已經檢查了一些包,我注意到:

  • ubuntu-desktop未安裝(?!) - 我沒有使用 KDE 或 XCFE。

除了已經建議的 debfoster 之外,還有一些常式,老太太的故事,用於查找然後清理不必要的包。

(第一)但是,為什麼要安裝那個包?

清理軟體包時要使用的工具aptitude why pkg-name 來自 aptitude 手冊頁:

$ aptitude why kdepim
 i   nautilus-data Recommends nautilus
 i A nautilus      Recommends desktop-base (>= 0.2)
 i A desktop-base  Suggests   gnome | kde | xfce4 | wmaker
 p   kde           Depends    kdepim (>= 4:3.4.3)

這只會列印出最強的依賴鏈,但會很快回答很多問題。還有why-not一些與刪除軟體包不太相關。

包被刪除,配置文件剩餘

您可以找到自己不再使用但仍保留配置文件等的軟體包。為此,請打開終端並鍵入

dpkg-query -l '*' | grep ^rc | awk '{print $2}' |xargs > my_ apt_rc_removeList.lst

生成的列表包含處於“rc”狀態的所有文件 - 已刪除但配置文件仍然存在。您現在將刪除這些遺留文件,但首先查看 my_apt_rc_removeList.lst 文件中列出的文件,以檢查您是否確實希望刪除所有這些雜物。現在輸入

aptitude purge `cat apt_rc_removeList.lst`

所有這些垃圾都將被刪除。

gtkorphan

另一個可以用來查找剩餘包的應用程序是 gtkorphan。來自 gtkorphan 在 apt 系統中的描述:

GtkOrphan 是一個圖形工具,它掃描你的 Debian 系統,尋找孤立的庫。它為 deborphan 實現了一個 GUI 前端,但增加了包刪除功能。有關該程序的詳細文件,請訪問: http: //www.marzocca.net/linux/gtkorphan.html

您也可以使用它來幫助清理其他部分(“libs”除外)中的包。

將不感興趣的包標記為依賴項:盡快刪除

在 aptitude 中,在“已安裝包”的一個子類別中,鍵入l(字母“el”),然後在出現的框中輸入?not(?automatic)。這現在將只顯示不依賴於其他包的包。現在,滾動到其中的每一個,然後在您不直接感興趣的非常包上,點擊M鍵。這不會刪除任何包,而是將每個包標記為“僅在此處,因為同時,某些東西取決於它”

現在逐節瀏覽。大多數“僅作為依賴項”包將位於 libs 部分。

將所有匹配“模式”的包標記為“自動”:盡快刪除

所有的“-dev”包都可以被標記為刪除,如果不需要的話

aptitude markauto ~i~n"\-dev$"

清除整個類別

可以清除整個類別(“CATEGORY_NAME”)

aptitude purge '~sCATEGORY_NAME ! ~exceptThisApp

引用自:https://unix.stackexchange.com/questions/259070