В настоящее время я использую Xubuntu и собирался установить / попробовать GNOME Shell или Cinnamon, установив соответствующий метапакет. Однако в результате этого будет установлено огромное количество зависимостей, которые было бы практически невозможно удалить по отдельности на более позднем этапе, если бы я решил, что мне это не нравится. Поэтому мне интересно, есть ли способ, которым я могу отследить, какие пакеты Synaptic автоматически загружает как часть процесса, и создать какой-то сценарий, чтобы также удалить их все. Тогда я могу быть уверен, что если мне не понравится какая-либо из моих новых сред рабочего стола, я смогу удалить их полностью, не оставляя загрузки других приложений и библиотек.
Спасибо за любую помощь! :)
Вы можете использовать apt history log:
gedit /var/log/apt/history.log
и найти в журнале запись, когда вы впервые установили метапакет вашего рабочего стола env (Gnome-shell, Cinnamon, KDE ...). Вы найдете запись типа: apt-get install yourdesktopenv
, за которой следуют все зависимости пакетов и их информацию об архивах.
Скопируйте всю запись и поместите ее в LibreOffice Writer, затем используйте поиск / замену с помощью регулярного выражения: :amd64 \([0-9\~\.\+a-zA-Z\-, ]*\),?
Заменить на пустое место. (amd64 или i368 в зависимости от вашей системной арки) Эта операция замены заменит всю некоторую зависимость: amd64 (4.9.2-0ubuntu2, автоматический) на somepackage
. В конце добавьте sudo apt-get remove --auto-remove
к началу заменяемого текста. Скопируйте и вставьте в терминал.
Предупреждение : этот метод верен только в том случае, если вы не выполнили значительных обновлений между временем, когда вы впервые установили среду рабочего стола, и временем, когда вы хотите удалить его.
В идеале вы можете автоматизировать эти операции в 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= hanynowsky@gmail.com
#---------------------------------------------------------------------------------------
#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;
Скачать скрипт можно здесь: http://ubuntuone.com/4CPFXpA2gFDRZtfS6Y7sva
Эта ссылка может вам помочь: http://www.psychocats.net/ubuntu/purexubuntu
Я использовал его метод раньше, и он работал для меня. Он предлагает возможность вернуться в «Чистый» Ubuntu, Kubuntu, Xubuntu или Lubuntu.
Я нашел свое собственное решение для этого, и я бью себя, потому что это должно было быть очевидно с самого начала.
Установите программу из терминала и просто скопируйте / вставьте список предлагаемых зависимостей в текстовый файл. Они уже в идеальном формате для повторного ввода / вставки в терминал позднее (если вы хотите удалить их).
Например:
sudo apt-get install unity
представляет мне:
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]?
Я просто копирую и вставляю список под The following NEW packages will be installed
в текстовый файл. Затем я просто заменяю 'новую строку пробелом, и все готово для вставки обратно в sudo apt-get remove
, когда мне это нужно.
Итак, чтобы удалить Unity (для меня), команда:
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
Легко! И работает для любой программы.