LinuxQuestions.org

LinuxQuestions.org (/questions/)
-   Slackware (https://www.linuxquestions.org/questions/slackware-14/)
-   -   Dependency management (not strictly Slackware related) (https://www.linuxquestions.org/questions/slackware-14/dependency-management-not-strictly-slackware-related-4175498372/)

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.

moisespedro 03-16-2014 06:29 AM

That is why I avoid apt distros, back when I used Debian/Ubuntu I couldn't try to remove anything without apt trying to remove the whole GNOME DE.

solarfields 03-16-2014 06:35 AM

what the hell

gengisdave 03-16-2014 06:39 AM

it remembers me a monthy python sketch; a friend of mine had a similar problem, every packages wanted to install dutch language for openoffice and removing dutch language, was removing all openoffice and part of system libs

isn't there a way to _not_ remove "dependent" packages, keeping upgrading and install new ones? i'm not into apt-get; or use dpkg? but i don't know if it still exists on ubuntu

ruario 03-16-2014 06:48 AM

Quote:

Originally Posted by gengisdave (Post 5135470)
isn't there a way to _not_ remove "dependent" packages, keeping upgrading and install new ones? i'm not into apt-get; or use dpkg? but i don't know if it still exists on ubuntu

Sure but it would not be known to a newbie. In this particular case you could have done this:


Code:

sudo dpkg -r --ignore-depends=libcups2 libcups2
Your system will still be somewhat broken but it will be a lot faster to fix!

gengisdave 03-16-2014 06:59 AM

totally right, it's not easy; i started with redhat and got crazy with rpm system and i switched to slackware (still can't remember how and when, i only remember kde2)

enorbet 03-16-2014 08:33 AM

Actually I think this points up an important dividing line. What the system depends on isn't necessarily what we depend on. There is no need to actually remove a fundamental program or set of libraries. If you don't need them, don't run them, and they will consume nothing but a little hard drive space. Isn't this an underlying part of Slackware Philosophy, the part that recommends Full Install, making dependencies all but a non-issue?

JWJones 03-16-2014 08:40 AM

And some wonder why us crazy Slackers don't care for dependency management!

moisespedro 03-16-2014 08:48 AM

Quote:

Originally Posted by JWJones (Post 5135521)
And some wonder why us crazy Slackers don't care for dependency management!


To me it is one of its best Slackware "features"

gengisdave 03-16-2014 09:14 AM

not completely true, when i have dependencies lack, program doesn't start blaming some library missing, so i install/compile what i'm missing and launch it again, this works even for version bump;

to feel safe, i have a little script that asks every binary/library for dependencies and output me what is missing, i think i don't need anymore

http://www.linuxquestions.org/questi...encies-794133/

hitest 03-16-2014 11:29 AM

Quote:

Originally Posted by moisespedro (Post 5135526)
To me it is one of its best Slackware "features"

Agreed. The lack of dependency resolution in Slackware is a strength, not a deficit.


All times are GMT -5. The time now is 04:17 PM.