web-dev-qa-db-fra.com

Installer le package + les dépendances et les supprimer tous

J'utilise actuellement Xubuntu et envisageais d'installer/d'essayer GNOME Shell ou Cinnamon en installant leur métapaquet respectif. Cependant, cela entraînerait l'installation d'un grand nombre de dépendances qu'il serait presque impossible de supprimer individuellement à une date ultérieure si je décidais de ne pas l'aimer. Je me demande donc s'il existe un moyen de suivre les packages que Synaptic télécharge automatiquement dans le cadre du processus et de créer un script quelconque pour les supprimer tous également. Je pourrais alors être assuré que si je n'aime aucun de mes nouveaux environnements de bureau, je peux les supprimer complètement sans laisser une charge d'autres applications et bibliothèques traîner.

Merci pour toute aide! :)

3
Sman789

J'ai trouvé ma propre solution à cela, et je me donne des coups de pied car cela aurait dû être évident tout au long.

Installez votre programme depuis le terminal, et copiez/collez simplement la liste des dépendances qu'il suggère dans un fichier texte. Ils sont déjà dans le format parfait pour rentrer/coller dans le terminal à une date ultérieure (si vous souhaitez les supprimer).

Par exemple:

Sudo apt-get install unity

me présente:

Reading package lists... Done
Building dependency tree       
Reading state information... Done
The following packages were automatically installed and are no longer required:
  lib32stdc++6 libdmx1
Use 'apt-get autoremove' to remove them.
The following extra packages will be installed:
  account-plugin-flickr appmenu-gtk appmenu-gtk3 appmenu-qt bamfdaemon compiz
  compiz-gnome geoclue geoclue-ubuntu-geoip gir1.2-accounts-1.0
  gir1.2-gdata-0.0 gir1.2-goa-1.0 gir1.2-signon-1.0 gir1.2-ubuntuoneui-3.0
  indicator-appmenu indicator-datetime indicator-printers libbamf3-0
  libdbusmenu-qt2 libglewmx1.8 libgnome-menu2 libnux-3.0-0 libnux-3.0-common
  libpackagekit-glib2-14 libsyncdaemon-1.0-1 libtimezonemap1
  libubuntuoneui-3.0-1 libunity-core-6.0-5 libunity-misc4 libunity-webapps0
  nux-tools python3-crypto python3-httplib2 python3-oauthlib
  rhythmbox-ubuntuone unity-asset-pool unity-common unity-lens-applications
  unity-lens-files unity-lens-music unity-lens-photos unity-lens-shopping
  unity-lens-video unity-scope-gdocs unity-scope-musicstores
  unity-scope-video-remote unity-services unity-webapps-service
Suggested packages:
  python3-crypto-dbg python-crypto-doc
The following NEW packages will be installed
  account-plugin-flickr appmenu-gtk appmenu-gtk3 appmenu-qt bamfdaemon compiz
  compiz-gnome geoclue geoclue-ubuntu-geoip gir1.2-accounts-1.0
  gir1.2-gdata-0.0 gir1.2-goa-1.0 gir1.2-signon-1.0 gir1.2-ubuntuoneui-3.0
  indicator-appmenu indicator-datetime indicator-printers libbamf3-0
  libdbusmenu-qt2 libglewmx1.8 libgnome-menu2 libnux-3.0-0 libnux-3.0-common
  libpackagekit-glib2-14 libsyncdaemon-1.0-1 libtimezonemap1
  libubuntuoneui-3.0-1 libunity-core-6.0-5 libunity-misc4 libunity-webapps0
  nux-tools python3-crypto python3-httplib2 python3-oauthlib
  rhythmbox-ubuntuone unity unity-asset-pool unity-common
  unity-lens-applications unity-lens-files unity-lens-music unity-lens-photos
  unity-lens-shopping unity-lens-video unity-scope-gdocs
  unity-scope-musicstores unity-scope-video-remote unity-services
  unity-webapps-service
0 upgraded, 49 newly installed, 0 to remove and 6 not upgraded.
Need to get 6,194 kB of archives.
After this operation, 23.8 MB of additional disk space will be used.
Do you want to continue [Y/n]? 

Je copie et colle simplement la liste en dessous The following NEW packages will be installed dans un fichier texte. Ensuite, je remplace simplement la 'nouvelle ligne par un espace et tout est prêt à être recollé dans Sudo apt-get remove quand j'en ai besoin.

Donc pour supprimer Unity (pour moi), la commande est:

Sudo apt-get remove account-plugin-flickr appmenu-gtk appmenu-gtk3 appmenu-qt bamfdaemon compiz compiz-gnome geoclue geoclue-ubuntu-geoip gir1.2-accounts-1.0 gir1.2-gdata-0.0 gir1.2-goa-1.0 gir1.2-signon-1.0 gir1.2-ubuntuoneui-3.0 indicator-appmenu indicator-datetime indicator-printers libbamf3-0 libdbusmenu-qt2 libglewmx1.8 libgnome-menu2 libnux-3.0-0 libnux-3.0-common libpackagekit-glib2-14 libsyncdaemon-1.0-1 libtimezonemap1 libubuntuoneui-3.0-1 libunity-core-6.0-5 libunity-misc4 libunity-webapps0 nux-tools python3-crypto python3-httplib2 python3-oauthlib rhythmbox-ubuntuone unity unity-asset-pool unity-common unity-lens-applications unity-lens-files unity-lens-music unity-lens-photos unity-lens-shopping unity-lens-video unity-scope-gdocs unity-scope-musicstores unity-scope-video-remote unity-services unity-webapps-service

Facile! Et fonctionne pour n'importe quel programme.

0
Sman789

Vous pouvez utiliser le journal d'historique d'apt:

gedit /var/log/apt/history.log

et retrouvez sur le journal, l'entrée lors de la première installation du métapaquetage de votre bureau env (Gnome-Shell, Cinnamon, KDE ...). Vous trouverez une entrée comme: apt-get install yourdesktopenv Suivie de toutes les dépendances des packages et de leurs informations Arch.

Copiez l'intégralité de l'entrée et collez-la dans LibreOffice Writer, puis utilisez une recherche/remplacement à l'aide d'une expression régulière: :AMD64 \([0-9\~\.\+a-zA-Z\-, ]*\),? Remplacez par un espace vide. (AMD64 ou i368 selon votre système Arch) Cette opération de remplacement remplacera toutes les dépendances: AMD64 (4.9.2-0ubuntu2, automatique), par somepackage. À la fin, ajoutez Sudo apt-get remove --auto-remove En haut du texte remplacé. Copiez et collez sur le terminal.

Attention : cette méthode n'est correcte que si vous n'avez pas effectué de mises à jour significatives entre le moment où vous avez installé le bureau env pour la première fois et le moment où vous souhaitez le supprimer.


Idéalement, vous pouvez automatiser ces opérations dans un script bash:

 #!/bin/bash

#This creepy & very small script extracts package strings from APT history log file.
#Tested in Ubuntu 12.10 Linux
#this script is not fully portable; ksh & zsh not supported.
#---------------------------------------------------------------------------------------
#@author= [email protected]
#---------------------------------------------------------------------------------------
#Beware. This scripts supposes you installed the desktop environment only once. Besides if 
#you performed significant updates from the time when you installed it and the time when
# you want to remove it, there is a risk that you'd likely remove other dependency packages needed by other programs. 
#---------------------------------------------------------------------------------------
#REGEXMATCH=`grep -Po ':AMD64 \([0-9\~\.\+a-zA-Z\-, ]*\),?'`
#APPENDCOM=`sed -i '1isudo apt-get remove --auto-remove ' ~/Desktop/removeENV.txt`
# or sed 's/\[[^]]*\]//g'    instead of Perl -lpwe   | tee ~/Desktop/removeENV.txt`
# insert command: sed '/Install:/ i\Sudo apt-get remove --auto-remove '
# Arch=`dpkg --print-architecture`   ->  variable to get Arch (AMD64 or i386)
#---------------------------------------------------------------------------------------

# k = kde | g = gnome-Shell | c = cinnamon | x = xcfe | l = lmde | o = openbox
echo "Uninstall Desktop-Environment : "
read -p "Enter letter ( k ) for KUBUNTU - ( g ) for GNOME-Shell - ( x ) for XUBUNTU - ( l ) for LUBUNTU - ( o ) for openbox : " desk
if [ "$desk" = "k" ]; then DESKSTRING="kubuntu-desktop"
Elif [ "$desk" = "g" ]; then DESKSTRING="gnome-Shell";
Elif [ "$desk" = "x" ]; then DESKSTRING="xubuntu-desktop";
Elif [ "$desk" = "l" ]; then DESKSTRING="lubuntu-desktop";
Elif [ "$desk" = "o" ]; then DESKSTRING="openbox";
else DESKSTRING="UNKNOWN-DESKTOP-ENV"; echo "Sorry $USER, operation is not valid for $DESKSTRING" ; echo "Aborted."; exit 0;
fi

Arch=`dpkg --print-architecture`
APTLOGFILE="/var/log/apt/history.log"
WARNING="This will uninstall your desktop environment : $DESKSTRING . Enter 'y' to continue, or 'n' to abort. "
read -p "$WARNING" option
if [ "$option" = "y" ]; then FETCHCOM=`sed -n "/$DESKSTRING/{:a;n;/End-Date/q;p;ba}" $APTLOGFILE | 
sed -e 's/Install://g'  | 
sed -e 's/,//g' | 
Perl -lpwe "s/:$Arch \(.*?\)//g" | tee ~/Desktop/un_desk_log.txt`
else FETCHCOM="aborted by $USER"
fi
if [ "$option" = "y" ]; then ACTIONCOM="Sudo apt-get remove --auto-remove "
else ACTIONCOM=""
fi
FINALCOM=$ACTIONCOM$FETCHCOM
COMLOGFILE=~/Desktop/un_desk_log.txt
eval $FINALCOM | tee -a $COMLOGFILE
sed -i.bak '1i Sudo apt-get remove --auto-remove ' $COMLOGFILE
exit 0;

Téléchargez le script ici: http://ubuntuone.com/4CPFXpA2gFDRZtfS6Y7sva

1
Hanynowsky

Ce lien peut vous aider: http://www.psychocats.net/ubuntu/purexubunt

J'ai déjà utilisé sa méthode et cela a fonctionné pour moi. Il offre la possibilité de revenir à un Ubuntu "pur", Kubuntu, Xubuntu ou Lubuntu.

0
Jayson Rowe