Instalando o pacote + dependências e removendo-as todas

3

Eu atualmente uso o Xubuntu e estava pensando em instalar / experimentar o GNOME Shell ou o Cinnamon instalando seus respectivos meta-pacotes. No entanto, isso resultaria em um enorme número de dependências sendo instaladas, o que seria quase impossível de remover individualmente em uma data posterior, se eu decidisse que não gostava disso. Pergunto-me, portanto, se existe uma maneira de rastrear quais pacotes o Synaptic transfere automaticamente como parte do processo e criar um script de algum tipo para removê-los também. Eu poderia então ter certeza de que, se eu não gostar de nenhum dos meus novos ambientes de área de trabalho, posso removê-los totalmente sem deixar uma carga de outros aplicativos e bibliotecas por aí.

Obrigado por qualquer ajuda! :)

    
por Sman789 21.10.2012 / 02:15

3 respostas

0

Eu encontrei a minha própria solução para isso, e estou me chutando porque deveria ter sido óbvio o tempo todo.

Instale seu programa a partir do terminal e simplesmente copie / cole a lista de dependências que ele sugere em um arquivo de texto. Eles já estão no formato perfeito para reentrar / colar no terminal em uma data posterior (se você quiser removê-los).

Por exemplo:

sudo apt-get install unity

me apresenta:

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]? 

Eu simplesmente copio e colo a lista abaixo de The following NEW packages will be installed em um arquivo de texto. Então eu apenas substituo a 'nova linha' por um espaço e tudo está pronto para colar de volta em sudo apt-get remove quando eu precisar.

Então, para remover o Unity (para mim), o comando é:

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

Fácil! E funciona para qualquer programa.

    
por Sman789 15.11.2012 / 23:39
1

Você pode usar o registro de histórico do apt:

gedit /var/log/apt/history.log

e encontre no log, a entrada quando você instalou o metapacote do seu ambiente de trabalho env (Gnome-shell, Cinnamon, KDE ...). Você encontrará uma entrada como: apt-get install yourdesktopenv seguido por todas as dependências de pacotes e suas informações de arco.

Copie toda a entrada e coloque-a no LibreOffice Writer e use uma Pesquisa / Substituição usando uma expressão regular: :amd64 \([0-9\~\.\+a-zA-Z\-, ]*\),? Substitua por um espaço vazio . (amd64 ou i368 dependendo do seu arco de sistema) Esta operação de substituição substituirá toda a independência: amd64 (4.9.2-0ubuntu2, automático), por somepackage . No final, anexe sudo apt-get remove --auto-remove ao topo do texto substituído. Copie e cole no terminal.

Aviso : este método só estará correto se você não tiver executado atualizações significativas entre a primeira vez que você instalou o env da área de trabalho e a hora em que deseja removê-lo.

Idealmente, você pode automatizar essas operações em um 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;

Faça o download do script aqui: link

    
por Hanynowsky 21.10.2012 / 03:16
0

Este link pode ajudá-lo: link

Eu usei o método dele antes e funcionou para mim. Ele oferece a opção de retornar a um Ubuntu "Pure", Kubuntu, Xubuntu ou Lubuntu.

    
por Jayson Rowe 21.10.2012 / 02:20