ruario |
03-16-2014 06:27 AM |
Dependency management (not strictly Slackware related)
This is not strictly Slackware related but I know it will raise a wry smile from a few of you.
I just received an email from a friend who is new to Linux and has started with Ubuntu. His mail begins as follows:
Quote:
ok, so, apparently, it's easier to remove IE from Windows then cups from Linux:
|
Followed by output from his terminal on attempting to remove libcups2. Now I don't know why he wants to remove cups but that is not really the point. The output looked interesting, so I decided to fire up VirtualBox with Ubuntu 13.10 and try it myself.
Here is what I get (and yes it is pretty much the same as what he saw):
Code:
ruario@ruario-VirtualBox:~$ sudo apt-get remove libcups2
[sudo] password for ruario:
Reading package lists... Done
Building dependency tree
Reading state information... Done
The following extra packages will be installed:
docbook-xml fonts-droid gir1.2-ibus-1.0 gir1.2-javascriptcoregtk-3.0 hud
libgles2-mesa libgtk-3-common libjavascriptcoregtk-3.0-0 librarian0
libreoffice-common python-apport python-aptdaemon python-keyring
python-launchpadlib python-lazr.restfulclient python-lazr.uri python-oauth
python-problem-report python-simplejson python-wadllib python3-apport
python3-distupgrade python3-software-properties python3-update-manager
rarian-compat sgml-data software-properties-common
ubuntu-release-upgrader-core update-manager-core usb-creator-common
Suggested packages:
docbook docbook-dsssl docbook-xsl docbook-defguide libreoffice-style-crystal
libreoffice-style-hicontrast libreoffice-style-oxygen
libreoffice-style-tango python-gdata python-keyczar python-kde4
python-testresources python3-launchpadlib perlsgml w3-recs opensp
libxml2-utils
Recommended packages:
python-secretstorage libjs-jquery
The following packages will be REMOVED:
account-plugin-aim account-plugin-facebook account-plugin-flickr
account-plugin-google account-plugin-jabber account-plugin-salut
account-plugin-twitter account-plugin-windows-live account-plugin-yahoo
activity-log-manager activity-log-manager-control-center aisleriot
apport-gtk apturl bamfdaemon baobab bluez-cups brasero brasero-cdrkit compiz
compiz-gnome cups cups-browsed cups-bsd cups-client cups-daemon cups-filters
cups-pk-helper cups-ppdc deja-dup deja-dup-backend-gvfs
deja-dup-backend-ubuntuone empathy eog evince evolution-data-server
evolution-data-server-goa file-roller firefox friends-facebook
friends-twitter gcr gedit ghostscript ghostscript-x gir1.2-appindicator3-0.1
gir1.2-gdata-0.0 gir1.2-gnomebluetooth-1.0 gir1.2-goa-1.0 gir1.2-gtk-3.0
gir1.2-peas-1.0 gir1.2-rb-3.0 gir1.2-totem-1.0 gir1.2-vte-2.90
gir1.2-webkit-3.0 gir1.2-wnck-3.0 gkbd-capplet gnome-bluetooth
gnome-calculator gnome-contacts gnome-control-center
gnome-control-center-datetime gnome-control-center-signon
gnome-control-center-unity gnome-disk-utility gnome-font-viewer
gnome-icon-theme gnome-icon-theme-symbolic gnome-keyring gnome-mahjongg
gnome-mines gnome-orca gnome-power-manager gnome-screensaver
gnome-screenshot gnome-session gnome-session-bin gnome-session-canberra
gnome-settings-daemon gnome-sudoku gnome-system-log gnome-system-monitor
gnome-terminal gnome-user-guide gnome-user-share gnomine
gstreamer1.0-clutter gtk2-engines-murrine gtk3-engines-unico gucharmap
gvfs-backends hplip humanity-icon-theme ibus ibus-gtk ibus-gtk3 ibus-pinyin
ibus-table indicator-application indicator-appmenu indicator-bluetooth
indicator-keyboard indicator-printers indicator-session indicator-sync
landscape-client-ui-install language-selector-gnome libaccount-plugin-1.0-0
libaccount-plugin-generic-oauth libaccount-plugin-google libappindicator3-1
libbrasero-media3-1 libcanberra-gtk-module libcanberra-gtk0
libcanberra-gtk3-0 libcanberra-gtk3-module libcheese-gtk23 libcheese7
libclutter-1.0-0 libclutter-gst-2.0-0 libclutter-gtk-1.0-0 libcups2
libcupscgi1 libcupsfilters1 libcupsimage2 libcupsmime1 libcupsppdc1
libevdocument3-4 libevview3-3 libfolks-eds25 libfreerdp-plugins-standard
libgail-3-0 libgail-common libgail18 libgcr-3-1 libgcr-ui-3-1 libgdata13
libgnome-bluetooth11 libgnome-control-center1 libgnome-desktop-3-7
libgnomekbd8 libgoa-1.0-0 libgrip0 libgs9 libgtk-3-0 libgtk-3-bin
libgtk2-perl libgtk2.0-0 libgtk2.0-bin libgtkmm-3.0-1 libgtksourceview-3.0-1
libgucharmap-2-90-7 libgweather-3-3 libido3-0.1-0 libindicator3-7
libmetacity-private0a libnautilus-extension1a libnm-gtk0 libpeas-1.0-0
libreoffice-base-core libreoffice-calc libreoffice-core libreoffice-draw
libreoffice-gnome libreoffice-gtk libreoffice-help-en-us libreoffice-impress
libreoffice-math libreoffice-ogltrans libreoffice-pdfimport
libreoffice-presentation-minimizer libreoffice-writer librhythmbox-core7
libsane-hpaio libspectre1 libtimezonemap1 libtotem0 libufe-xidgetter0
libunity-core-6.0-8 libunity-gtk2-parser0 libunity-gtk3-parser0
libunity-misc4 libunity-webapps0 libvte-2.90-9 libwebkitgtk-3.0-0
libwnck-3-0 libwnck22 libyelp0 light-themes lightdm-remote-session-freerdp
lightdm-remote-session-uccsconfigure mcp-account-manager-uoa modemmanager
mousetweaks nautilus nautilus-sendto nautilus-sendto-empathy nautilus-share
network-manager-gnome network-manager-pptp-gnome notify-osd onboard
onboard-data oneconf overlay-scrollbar overlay-scrollbar-gtk2
overlay-scrollbar-gtk3 policykit-1-gnome printer-driver-c2esp
printer-driver-foo2zjs printer-driver-gutenprint printer-driver-hpcups
printer-driver-pnm2ppa printer-driver-postscript-hp printer-driver-ptouch
printer-driver-sag-gdi printer-driver-splix python-aptdaemon.gtk3widgets
python-cups python-gnomekeyring python-gtk2 python-notify
python-ubuntu-sso-client python-ubuntuone-client
python-ubuntuone-control-panel python-ubuntuone-storageprotocol
python3-aptdaemon.gtk3widgets python3-pyatspi python3-uno remmina
remmina-plugin-rdp remmina-plugin-vnc rhythmbox rhythmbox-mozilla
rhythmbox-plugin-cdrecorder rhythmbox-plugin-magnatune
rhythmbox-plugin-zeitgeist rhythmbox-plugins rhythmbox-ubuntuone seahorse
sessioninstaller shotwell simple-scan software-center
software-properties-gtk ssh-askpass-gnome system-config-printer-common
system-config-printer-gnome system-config-printer-udev telepathy-indicator
thunderbird thunderbird-gnome-support totem totem-mozilla totem-plugins
transmission-gtk ubuntu-artwork ubuntu-desktop ubuntu-docs ubuntu-mono
ubuntu-release-upgrader-gtk ubuntu-sso-client ubuntu-sso-client-qt
ubuntuone-client ubuntuone-control-panel ubuntuone-control-panel-qt unity
unity-asset-pool unity-greeter unity-gtk2-module unity-gtk3-module
unity-lens-applications unity-lens-photos unity-scope-calculator
unity-scope-gdrive unity-scope-manpages unity-services unity-webapps-common
unity-webapps-service update-manager update-notifier usb-creator-gtk vino
webaccounts-extension-common xdg-user-dirs-gtk xdiagnose xul-ext-unity
xul-ext-webaccounts xul-ext-websites-integration yelp zeitgeist
zeitgeist-datahub zenity
The following NEW packages will be installed:
docbook-xml fonts-droid libgles2-mesa librarian0 python-apport
python-keyring python-launchpadlib python-lazr.restfulclient python-lazr.uri
python-oauth python-problem-report python-simplejson python-wadllib
rarian-compat sgml-data
The following packages will be upgraded:
gir1.2-ibus-1.0 gir1.2-javascriptcoregtk-3.0 hud libgtk-3-common
libjavascriptcoregtk-3.0-0 libreoffice-common python-aptdaemon
python3-apport python3-distupgrade python3-software-properties
python3-update-manager software-properties-common
ubuntu-release-upgrader-core update-manager-core usb-creator-common
15 upgraded, 15 newly installed, 293 to remove and 197 not upgraded.
Need to get 33,7 MB of archives.
After this operation, 704 MB disk space will be freed.
Do you want to continue [Y/n]?
Now of course I am aware that most of those packages are linked to libcups2 directly or indirectly and would indeed break but I have a hard time believing that the best option is to actually remove them all. Consider a user who clicks yes without fully thinking through or understanding the consequences. They will be left with a broken system and the need to reinstall (and hence re-download) almost 300 packages. Compare with a Slackware user who also attempts to remove a key lib due to similar lack of understanding. Again the system would break but the user need only add back that one lib they just removed to restore full functionality.
Sometimes over automation can lead you into a tight spot.
|