Autoremove excessif

Salut tous !
Je pense qu’une petite page sur ce sujet ne ferait pas de mal, le problème revenant souvent sur le forum.

Mettons-nous en situation…

J’installe un méta-paquet :

Je remarque qu’un des paquets qu’il a installé en dépendance ne me sert pas, je le désinstalle :

Maintenant, à chaque fois que je veux installer/désinstaller un nouveau paquet apt-get me propose une série de paquets à supprimer longue comme le bras :

# apt-get install Reading package lists... Done Building dependency tree Reading state information... Done The following packages were automatically installed and are no longer required: akregator dragonplayer freespacenotifier gwenview juk kate kcalc kde-baseapps kde-plasma-desktop kde-wallpapers-default kde-workspace kde-workspace-bin kde-workspace-data kde-workspace-kgreet-plugins kdepasswd kdeplasma-addons khelpcenter4 klipper kmix knotes korganizer kscreensaver ksnapshot ksysguard kwalletmanager kwrite libeventviews4 libgadu3 libkateinterfaces4 libkephal4abi1 libkexiv2-11 libkexiv2-data libkipi-data libkipi10 libknewstuff2-4 libkopete4 libkscreensaver5 libksignalplotter4 libmarblewidget15 libmeanwhile1 libmediastreamer-base3 libmsn0.3 libokularcore2 libortp9 libplasmagenericshell4 libprocessui4a libqimageblitz4 libqoauth1 libsolidcontrolifaces4abi2 libspectre1 marble-data okular plasma-containments-addons plasma-dataengines-addons plasma-desktop plasma-desktopthemes-artwork plasma-runners-addons plasma-wallpapers-addons plasma-widget-folderview plasma-widget-lancelot plasma-widgets-addons polkit-kde-1 sweeper systemsettings Use 'apt-get autoremove' to remove them.

La raison de cette liste est simple : lorsque j’ai désinstallé kopete, le méta-paquet kde-standard a été lui aussi désinstallé (kopete est une de ses dépendances), et toutes ses dépendances orphelines sont marquées comme « à supprimer au prochain autoremove ».
Et la solution est tout aussi simple, il suffit de désigner les paquets qu’on veut garder dans cette liste comme « installés manuellement » (comment identifier les paquets pertinents, version longue) :

La liste devrait se raccourcir et ne plus contenir que des paquets que je ne souhaite pas garder :

# apt-get install Reading package lists... Done Building dependency tree Reading state information... Done The following packages were automatically installed and are no longer required: akregator dragonplayer juk kate kcalc khelpcenter4 knotes korganizer kscreensaver ksnapshot kwalletmanager libeventviews4 libgadu3 libkateinterfaces4 libknewstuff2-4 libkopete4 libmeanwhile1 libmediastreamer-base3 libmsn0.3 libortp9 plasma-desktopthemes-artwork sweeper Use 'apt-get autoremove' to remove them. 0 upgraded, 0 newly installed, 0 to remove and 7 not upgraded.

Je peux alors m’en débarrasser :

# apt-get autoremove Reading package lists... Done Building dependency tree Reading state information... Done The following packages will be REMOVED: akregator* dragonplayer* juk* kate* kcalc* khelpcenter4* knotes* korganizer* kscreensaver* ksnapshot* kwalletmanager* libeventviews4* libgadu3* libkateinterfaces4* libknewstuff2-4* libkopete4* libmeanwhile1* libmediastreamer-base3* libmsn0.3* libortp9* plasma-desktopthemes-artwork* sweeper* 0 upgraded, 0 newly installed, 22 to remove and 7 not upgraded. After this operation, 27.6 MB disk space will be freed. Do you want to continue? [Y/n]

1 J'aime

Désolé de “déterrer” ce post mais j’ai une question le concernant.

Y’a-t-il un moyen simple de voir quels sont les paquets qui nécessitent telle ou telle librairie sur mon système?

Exemple pour mon poste:

# apt-get install Lecture des listes de paquets... Fait Construction de l'arbre des dépendances Lecture des informations d'état... Fait Les paquets suivants ont été installés automatiquement et ne sont plus nécessaires : audacity-data blender-data calligra-data fonts-freefont-ttf gir1.2-gtop-2.0 gir1.2-mediaart-1.0 gnome-media gstreamer1.0-plugins-base:i386 i965-va-driver:i386 kate-data katepart kde-runtime-data kdelibs-bin kdelibs5-plugins kdoctools krita-data libasyncns0:i386 libattica0.4 libaudio2:i386 libavahi-client3:i386 libavahi-common-data:i386 libavahi-common3:i386 libavcodec56:i386 libavresample-ffmpeg2:i386 libavresample2:i386 libavutil-ffmpeg54:i386 libavutil54:i386 libbasicusageenvironment0 libboost-chrono1.55.0 libboost-locale1.55.0 libboost-regex1.55.0 libcamel-1.2-49 libcddb2 libcdparanoia0:i386 libcoverart0 libcups2:i386 libdap11 libdapclient3 libdbus-1-3:i386 libdbusmenu-qt2 libdirac-encoder0 libdlrestrictions1 libdvbpsi10 libdvbpsi9 libebackend-1.2-7 libebml4 libebook-1.2-14 libebook-contacts-1.2-0 libecal-1.2-16 libedata-book-1.2-20 libedata-cal-1.2-23 libedataserver-1.2-18 libfam0 libflac++6 libflac8:i386 libgcrypt20:i386 libgdata19 libgdict-1.0-6 libgit2-21 libgles1-mesa libglib2.0-0:i386 libglu1-mesa:i386 libgmp10:i386 libgnutls-deb0-28:i386 libgpg-error0:i386 libgpgme++2 libgroupsock1 libgsm1:i386 libgssapi-krb5-2:i386 libgstreamer-plugins-base1.0-0:i386 libgstreamer1.0-0:i386 libgtkhtml-4.0-0 libgtkhtml-4.0-common libgtkhtml-editor-4.0-0 libgtop2-7 libhogweed4:i386 libinput5 libiodbc2 libiscsi2 libjack-jackd2-0:i386 libjbig0:i386 libjim0.75 libjpeg8 libjson-c2:i386 libk5crypto3:i386 libkactivities-bin libkactivities-models1 libkactivities6 libkatepartinterfaces4 libkcmutils4 libkdcraw-data libkdcraw23 libkde3support4 libkdeclarative5 libkdecore5 libkdesu5 libkdeui5 libkdewebkit5 libkdnssd4 libkemoticons4 libkeyutils1:i386 libkfile4 libkhtml5 libkio5 libkjsapi4 libkjsembed4 libkmediaplayer4 libknewstuff3-4 libknotifyconfig4 libkntlm4 libkparts4 libkpty4 libkrb5-3:i386 libkrb5support0:i386 libkrosscore4 libkrossui4 libktexteditor4 libkxmlrpcclient4 liblcms2-2:i386 liblivemedia23 libmatroska6 libmediaart-1.0-0 libmng1:i386 libmp3lame0:i386 libmusicbrainz5-1 libnepomuk4 libnepomukcore4 libnepomukquery4a libnepomukutils4 libnettle6:i386 libntrack-qt4-1 libntrack0 libnuma1:i386 libogg0:i386 libopencolorio1 libopenjpeg5:i386 libopus0:i386 liborc-0.4-0:i386 liborcus-0.8-0 libp11-kit0:i386 libpanel-applet-4-0 libphonon4 libphononexperimental4 libplasma3 libplist2 libpolkit-qt-1-1 libpoppler-qt4-4 libportsmf0 libpostproc52 libprocps3 libproj0 libproxy-tools libpulse0:i386 libqca2 libqca2-plugin-ossl libqca2-plugins libqgis-analysis2.8.1 libqgis-core2.8.1 libqgis-gui2.8.1 libqgis-networkanalysis2.8.1 libqgis-server2.8.1 libqgisgrass2.8.1 libqgispython2.8.1 libqscintilla2-11 libqt4-dbus:i386 libqt4-network:i386 libqt4-opengl:i386 libqt4-xml:i386 libqt4-xmlpatterns:i386 libqtcore4:i386 libqtdbus4:i386 libqtgui4:i386 libqtwebkit4:i386 libraw10 libresid-builder0c2a librygel-core-2.4-2 librygel-renderer-2.4-2 librygel-renderer-gst-2.4-2 librygel-server-2.4-2 libsamplerate0:i386 libsbsms10 libschroedinger-1.0-0:i386 libsdl-image1.2 libsidplay2 libsnappy1 libsndfile1:i386 libsolid4 libsoprano4 libspatialindex3 libspatialite5 libspeex1:i386 libspeexdsp1:i386 libspnav0 libsqlite3-0:i386 libssl1.0.0:i386 libstreamanalyzer0 libstreams0 libsystemd0:i386 libtasn1-6:i386 libtheora0:i386 libthreadweaver4 libtiff5:i386 libupnp6 libusageenvironment1 libva-drm1 libva-x11-1 libva1:i386 libvamp-hostsdk3 libvdpau1:i386 libvisual-0.4-0:i386 libvisual-0.4-plugins:i386 libvlc5 libvlccore8 libvncclient0 libvncserver0 libvorbis0a:i386 libvorbisenc2:i386 libvpx1 libvpx2:i386 libwps-0.3-3 libwrap0:i386 libx264-142 libx264-142:i386 libx264-146:i386 libx265-51 libx265-51:i386 libx265-59:i386 libxcb-composite0 libxfcegui4-4 libxss1:i386 libxt6:i386 libxv1:i386 libxvidcore4:i386 libyaml-cpp0.3 linux-image-3.14-2-amd64 nepomuk-core-data ntrack-module-libnl-0 oxygen-icon-theme perlmagick plasma-scriptengine-javascript soprano-daemon va-driver-all:i386 vdpau-va-driver:i386 vlc-data xfce-keyboard-shortcuts xfce4-quicklauncher-plugin Veuillez utiliser « apt-get autoremove » pour les supprimer. 0 mis à jour, 0 nouvellement installés, 0 à enlever et 0 non mis à jour.

Dois-je ajouter à la main chacun de ces paquets via apt-mark ou ai-je un moyen de savoir si la totalité de ces paquets ne sont pas finalement que les dépendances d’un paquet unique qu’il suffira de “marquer”?

Ne t’embête pas avec tous les paquets dont le nom débute par “lib”, marque uniquement ceux que tu utilises et par le jeu des dépendances les bibliothèques nécessaires seront automatiquement gardées.

Et il n’y a aucun moyen de savoir quel paquet a nécessité l’installation d’une dépendance présente sur le système?

Ca permettrait d’éviter pas mal de bétises.

Bonjour,
Il y a moyen de connaître la liste des lib nécessaires à un paquet :

avec les flèches du clavier, mettre le paquet à étudier en surbrillance pour le sélectionner puis appuyer sur "Entrée"
On a alors toutes les caractéristiques du paquet, avec en particulier, la liste des dépendances.

Mais comme l’indique vv222, la bêtise consiste à vouloir gérer les libs à la main : apt (via apt-get, aptitude, synaptic ou wajig) est prévu pour les gérer comme un grand et les charge, les met à jour ou les supprime tout seul. Il suffit simplement de le laisser faire sans se casser la tête … :smiley:

En imaginant que tu cherches à savoir pourquoi le paquet ‘libtruc’ est installé sur ton système :

(pas besoin de droits root pour cette commande)

Sinon, tu peux aussi tenter d’éclaircir la situation avec:

et

Un “apt-cache rdepends” liste toutes les dépendances inverse, même celle que tu n’as pas installé.
Mais le “aptitude why” “de vv222” semble régler le problème.