불필요한 패키지가 왜 이렇게 많나요?

불필요한 패키지가 왜 이렇게 많나요?

공식 웹사이트에서 다운로드한 파일로 Prey를 설치했을 때 .deb갑자기 내 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.
    
  2. 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를 사용하고 있지 않습니다.

답변1

이미 제안된 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입니다. apt 시스템의 gtkorphan 설명을 보면 다음과 같습니다.

GtkOrphan은 데비안 시스템에서 고아 라이브러리를 검색하는 그래픽 도구입니다. 이는 deborphan의 GUI 프런트엔드를 구현하지만 패키지 제거 기능을 추가합니다. 이 프로그램에 대한 자세한 문서는 다음에서 찾을 수 있습니다.http://www.marzocca.net/linux/gtkorphan.html.

또한 이를 사용하여 다른 섹션("libs" 제외)의 패키지를 정리하는 데 도움을 줄 수도 있습니다.

흥미롭지 않은 패키지를 종속성으로 표시: 가능한 한 빨리 제거하십시오.

적성에서 설치된 패키지의 하위 범주에 l(문자 "el")을 입력한 다음 나타나는 상자에 입력합니다 ?not(?automatic). 이제 다른 패키지에 의존하지 않는 패키지만 표시됩니다. 이제 각각을 스크롤하여 직접 관심이 없는 특정 가방의 키를 누르세요 M. 이는 패키지를 제거하지 않고 대신 각 패키지를 "뭔가 의존하기 때문에 여기에만 있음"으로 표시합니다.

이제 각 섹션을 하나씩 살펴보겠습니다. 대부분의 "종속성 전용" 패키지는 libs 섹션에 있습니다.

"pattern"과 일치하는 모든 패키지를 "auto"로 표시: 가능한 한 빨리 삭제

모든 "-dev" 패키지는 제거 대상으로 표시될 수 있습니다(필요하지 않은 경우).

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

전체 카테고리 지우기

다음 명령을 사용하면 전체 카테고리("CATEGORY_NAME")를 삭제할 수 있습니다.

aptitude purge '~sCATEGORY_NAME ! ~exceptThisApp

관련 정보