Requesting advice on removing leftover computer software following multiple, mostly upgrades

Following multiple upgrades of openSUSE operating systems, in my present, Leap-15.4 installation you can see below that I have lots of “orphaned” software packages. In December of the year 2004 I began using Oracle VM (Virtual Machine) VirtualBox in a Windows operating system on a then-new notebook computer and having my openSUSE operating system as a VM in VirtualBox. Notice that the “orphaned” texlive-… software packages below are labeled with probably the year 2017. My installed, texlive… software packages have generally come to my computer via one or more openSUSE online repositories. For example, texlive-mychemistry was installed in July of the year 2021. So I probably obtained that version of texlive-chemistry, which I supposed may have originated as a part of TeX Live 2017, via an openSUSE online repository while I had Leap 15.3 installed in VirtualBox. Since on September 9, 2022, for example, no newer version of texlive-mychemistry was offered for installation from an openSUSE online repository for Leap 15.4, I guess that the software package texlive-mychemistry might have been discontinued beginning with some version of TeX Live during the interval of years 2018-2021. In contrast in Leap 15.4 most of my installed texlive… software packages appear to have come from TeX Live 2021.

I have probably many texlive… software packages installed in my Leap-15.4 installation which I have not been using in Leap-15.4 or even in some earlier versions of openSUSE. It is even conceivable that some TeX Live 2017 software packages obtained via some earlier version of openSUSE might still work in my Leap-15.4 installation. Of course I would prefer to avoid problems caused by removing software packages; yet when such a removal would not cause problems for the rest of my installed computer software, I would be in favor of such a removal to avoid wasteful storage of computer software and to eliminate software which might even be unusable in my Leap-15.4 installation. My Leap-15.4 user name shown below is “newbie”.

linux-hdi0:/home/newbie # zypper pa --orphaned
Loading repository data...
Reading installed packages...
S  | Repository | Name                                 | Version                         | Arch
---+------------+--------------------------------------+---------------------------------+-------
i+ | @System    | libbind9-160                         | 9.11.2-12.13.2                  | x86_64
i+ | @System    | libbind9-1600                        | 9.16.6-150300.22.16.1           | x86_64
i+ | @System    | libcamel-1_2-62                      | 3.34.4-3.3.1                    | x86_64
i+ | @System    | libdns169                            | 9.11.2-12.13.2                  | x86_64
i+ | @System    | libdns1605                           | 9.16.6-150300.22.16.1           | x86_64
i+ | @System    | libedataserver-1_2-24                | 3.34.4-3.3.1                    | x86_64
i+ | @System    | libedataserverui-1_2-2               | 3.34.4-3.3.1                    | x86_64
i+ | @System    | libfolks-eds25                       | 0.13.1-2.62                     | x86_64
i+ | @System    | libfolks-telepathy25                 | 0.13.1-2.62                     | x86_64
i+ | @System    | libfolks25                           | 0.13.1-2.62                     | x86_64
i+ | @System    | libgit2-28                           | 0.28.4-1.28                     | x86_64
i+ | @System    | libGLEW2_1                           | 2.1.0-1.28                      | x86_64
i+ | @System    | libhavege1                           | 1.9.2-6.1                       | x86_64
i+ | @System    | libhdf5-101                          | 1.10.1-6.6                      | x86_64
i+ | @System    | libhdf5_hl100-openmpi                | 1.10.1-6.8                      | x86_64
i+ | @System    | libhogweed4                          | 3.4.1-4.18.1                    | x86_64
i+ | @System    | libhogweed4-32bit                    | 3.4.1-4.18.1                    | x86_64
i+ | @System    | libimobiledevice6                    | 1.2.0+git20180427.26373b3-1.40  | x86_64
i+ | @System    | libirs160                            | 9.11.2-12.13.2                  | x86_64
i+ | @System    | libirs1601                           | 9.16.6-150300.22.16.1           | x86_64
i+ | @System    | libisc166                            | 9.11.2-12.13.2                  | x86_64
i+ | @System    | libisc1606                           | 9.16.6-150300.22.16.1           | x86_64
i+ | @System    | libisccc160                          | 9.11.2-12.13.2                  | x86_64
i+ | @System    | libisccc1600                         | 9.16.6-150300.22.16.1           | x86_64
i+ | @System    | libisccfg160                         | 9.11.2-12.13.2                  | x86_64
i+ | @System    | libisccfg1600                        | 9.16.6-150300.22.16.1           | x86_64
i+ | @System    | liblwres160                          | 9.11.2-12.13.2                  | x86_64
i+ | @System    | libmarblewidget20                    | 14.12.3-16.2                    | x86_64
i+ | @System    | libmediacheck5                       | 5.4-1.13                        | x86_64
i+ | @System    | libnetcdf13                          | 4.6.1-5.7.1                     | x86_64
i+ | @System    | libnettle6                           | 3.4.1-4.18.1                    | x86_64
i+ | @System    | libnettle6-32bit                     | 3.4.1-4.18.1                    | x86_64
i+ | @System    | libnfs13                             | 4.0.0-pm153.2.4                 | x86_64
i+ | @System    | libns1604                            | 9.16.6-150300.22.16.1           | x86_64
i+ | @System    | libopencv3_3                         | 3.3.1-6.6.1                     | x86_64
i+ | @System    | libpeas-loader-python                | 1.22.0-3.32                     | x86_64
i+ | @System    | libphonon4                           | 4.10.1-lp152.3.7                | x86_64
i+ | @System    | libplist3                            | 2.0.0-1.31                      | x86_64
i+ | @System    | libply-boot-client4                  | 0.9.4+git20190304.ed9f201-3.3.1 | x86_64
i+ | @System    | libply-splash-core4                  | 0.9.4+git20190304.ed9f201-3.3.1 | x86_64
i+ | @System    | libply-splash-graphics4              | 0.9.4+git20190304.ed9f201-3.3.1 | x86_64
i+ | @System    | libply4                              | 0.9.4+git20190304.ed9f201-3.3.1 | x86_64
i+ | @System    | libpoppler73                         | 0.62.0-4.6.1                    | x86_64
i+ | @System    | libpoppler89                         | 0.79.0-3.5.1                    | x86_64
i+ | @System    | libqt4                               | 4.8.7-lp152.10.9.1              | x86_64
i+ | @System    | libqt4-sql                           | 4.8.7-lp152.10.9.1              | x86_64
i+ | @System    | libqt4-x11                           | 4.8.7-lp152.10.9.1              | x86_64
i+ | @System    | libQtWebKit4                         | 4.8.7+2.3.4-6.24                | x86_64
i+ | @System    | libraw16                             | 0.18.9-3.14.1                   | x86_64
i+ | @System    | libreoffice-gtk2                     | 6.2.7.1-8.10.1                  | x86_64
i+ | @System    | libsgutils2-1_43-2                   | 1.44~763+19.1ed0757-9.3.1       | x86_64
i+ | @System    | libsynctex1                          | 1.18-19.4                       | x86_64
i+ | @System    | libtexlua52-5                        | 5.2.4-19.4                      | x86_64
i+ | @System    | libusbmuxd4                          | 1.0.10-3.23                     | x86_64
i+ | @System    | libvncclient0                        | 0.9.10-4.25.1                   | x86_64
i+ | @System    | libvncserver0                        | 0.9.10-4.25.1                   | x86_64
i+ | @System    | libwebp5                             | 0.4.3-9.3                       | x86_64
i+ | @System    | libyui-ncurses11                     | 2.54.5-1.36                     | x86_64
i+ | @System    | libyui-ncurses15                     | 4.1.5-150300.3.8.7              | x86_64
i+ | @System    | libyui-qt-graph11                    | 2.46.3-1.8                      | x86_64
i+ | @System    | libyui-qt-graph15                    | 4.1.5-150300.3.8.6              | x86_64
i+ | @System    | libyui-qt11                          | 2.52.4-1.8                      | x86_64
i+ | @System    | libyui-qt15                          | 4.1.5-150300.3.8.6              | x86_64
i+ | @System    | libyui11                             | 3.9.3-1.29                      | x86_64
i+ | @System    | libyui15                             | 4.1.5-150300.3.8.7              | x86_64
i+ | @System    | python-backports.functools_lru_cache | 1.2.1-1.37                      | noarch
i+ | @System    | python-enum34                        | 1.1.6-1.24                      | noarch
i+ | @System    | python-gobject2                      | 2.28.7-1.27                     | x86_64
i+ | @System    | python-ipaddress                     | 1.0.18-3.3.1                    | noarch
i+ | @System    | python-sip-common                    | 4.19.19-1.52                    | x86_64
i+ | @System    | python2-appdirs                      | 1.4.3-1.21                      | noarch
i+ | @System    | python2-asn1crypto                   | 0.24.0-3.2.1                    | noarch
i+ | @System    | python2-Babel                        | 2.8.0-3.3.1                     | noarch
i+ | @System    | python2-backports                    | 4.0.0-3.2.1                     | noarch
i+ | @System    | python2-bottle                       | 0.12.13-3.3.1                   | noarch
i+ | @System    | python2-cairo                        | 1.15.1-3.3.1                    | x86_64
i+ | @System    | python2-certifi                      | 2018.1.18-1.18                  | noarch
i+ | @System    | python2-cheroot                      | 6.5.5-3.8                       | noarch
i+ | @System    | python2-configobj                    | 5.0.6-1.24                      | noarch
i+ | @System    | python2-decorator                    | 4.4.2-7.3.13                    | noarch
i+ | @System    | python2-gobject                      | 3.34.0-2.27                     | x86_64
i+ | @System    | python2-gobject-cairo                | 3.34.0-bp153.1.33               | x86_64
i+ | @System    | python2-gobject-Gdk                  | 3.34.0-bp153.1.33               | x86_64
i+ | @System    | python2-httplib2                     | 0.19.0-3.3.1                    | noarch
i+ | @System    | python2-idna                         | 2.6-1.20                        | noarch
i+ | @System    | python2-jedi                         | 0.11.0-bp153.1.21               | noarch
i+ | @System    | python2-Jinja2                       | 2.10.1-3.10.2                   | noarch
i+ | @System    | python2-MarkupSafe                   | 1.0-1.29                        | x86_64
i+ | @System    | python2-more-itertools               | 4.2.0-3.2.3                     | noarch
i+ | @System    | python2-packaging                    | 20.3-1.9                        | noarch
i+ | @System    | python2-parso                        | 0.1.1-bp153.1.45                | noarch
i+ | @System    | python2-ply                          | 3.10-1.27                       | noarch
i+ | @System    | python2-portend                      | 2.5-1.28                        | noarch
i+ | @System    | python2-pyasn1                       | 0.4.2-3.2.1                     | noarch
i+ | @System    | python2-pycparser                    | 2.17-3.2.1                      | noarch
i+ | @System    | python2-pyparsing                    | 2.4.7-1.24                      | noarch
i+ | @System    | python2-pytz                         | 2021.1-3.3.1                    | noarch
i+ | @System    | python2-pyudev                       | 0.21.0-3.22                     | noarch
i+ | @System    | python2-pyxdg                        | 0.26-1.21                       | noarch
i+ | @System    | python2-repoze.lru                   | 0.7-bp153.1.17                  | noarch
i+ | @System    | python2-Routes                       | 2.4.1-bp153.1.18                | noarch
i+ | @System    | python2-simplejson                   | 3.17.2-1.10                     | x86_64
i+ | @System    | python2-sip                          | 4.19.19-1.52                    | x86_64
i+ | @System    | python2-six                          | 1.14.0-12.1                     | noarch
i+ | @System    | python2-tempora                      | 1.8-1.27                        | noarch
i+ | @System    | python2-urwid                        | 2.0.1-1.15                      | x86_64
i+ | @System    | texlive-babel-spanglish              | 2017.135.0.0.3svn37629-6.16     | noarch
i+ | @System    | texlive-babel-spanglish-doc          | 2017.135.0.0.3svn37629-6.16     | noarch
i+ | @System    | texlive-bezos                        | 2017.133.svn25507-5.18          | noarch
i+ | @System    | texlive-bezos-doc                    | 2017.133.svn25507-5.18          | noarch
i+ | @System    | texlive-einfuehrung                  | 2017.133.svn29349-5.18          | noarch
i+ | @System    | texlive-einfuehrung2                 | 2017.133.svn39153-5.18          | noarch
i+ | @System    | texlive-FAQ-en                       | 2017.133.3.28svn34303-6.18      | noarch
i+ | @System    | texlive-genmisc                      | 2017.133.svn27208-5.18          | noarch
i+ | @System    | texlive-geometry-de                  | 2017.133.1.1svn21882-5.18       | noarch
i+ | @System    | texlive-ifetex                       | 2017.133.1.2svn24853-5.18       | noarch
i+ | @System    | texlive-ifetex-doc                   | 2017.133.1.2svn24853-5.18       | noarch
i+ | @System    | texlive-ifxetex                      | 2017.133.0.0.6svn19685-5.18     | noarch
i+ | @System    | texlive-ifxetex-doc                  | 2017.133.0.0.6svn19685-5.18     | noarch
i+ | @System    | texlive-knuth                        | 2017.133.svn32899-5.18          | noarch
i+ | @System    | texlive-knuth-doc                    | 2017.133.svn32899-5.18          | noarch
i+ | @System    | texlive-latex-bib-ex                 | 2017.133.svn25831-5.18          | noarch
i+ | @System    | texlive-latex-bib2-ex                | 2017.133.svn40098-5.18          | noarch
i+ | @System    | texlive-latex-referenz               | 2017.137.2svn36671-7.6.4        | noarch
i+ | @System    | texlive-latex-tabellen               | 2017.137.svn16979-7.6.4         | noarch
i+ | @System    | texlive-lua2dox                      | 2017.133.0.0.2svn29349-5.18     | noarch
i+ | @System    | texlive-lua2dox-bin                  | 2017.20170520.svn29053-19.4     | x86_64
i+ | @System    | texlive-lua2dox-doc                  | 2017.133.0.0.2svn29349-5.18     | noarch
i+ | @System    | texlive-math-e                       | 2017.133.svn20062-5.18          | noarch
i+ | @System    | texlive-mychemistry                  | 2017.133.1.99bsvn28611-5.18     | noarch
i+ | @System    | texlive-mychemistry-doc              | 2017.133.1.99bsvn28611-5.18     | noarch
i+ | @System    | texlive-presentations                | 2017.133.svn43949-5.18          | noarch
i+ | @System    | texlive-presentations-en             | 2017.133.svn29803-5.18          | noarch
i+ | @System    | texlive-spanish-mx                   | 2017.133.1.1asvn15878-4.18      | noarch
i+ | @System    | texlive-spanish-mx-doc               | 2017.133.1.1asvn15878-4.18      | noarch
i+ | @System    | texlive-sympytexpackage              | 2017.133.svn41190-4.18          | noarch
i+ | @System    | texlive-sympytexpackage-doc          | 2017.133.svn41190-4.18          | noarch
i+ | @System    | texlive-tabulars-e                   | 2017.134.1.0svn21191-5.18       | noarch
i+ | @System    | texlive-wasy2-ps                     | 2017.136.svn35830-10.15         | noarch
i+ | @System    | texlive-wasy2-ps-doc                 | 2017.136.svn35830-10.15         | noarch
i+ | @System    | texlive-wasy2-ps-fonts               | 2017.136.svn35830-10.15         | noarch
linux-hdi0:/home/newbie # 

Correction: year 2004 to year 2013. Sorry, I made that error.

Many of those lib packages you list are the same ones I find myself manually removing after upgrades between Leap versions. The texlives never get installed here in the first place, so don’t show up as orphaned. e.g., I remove: libhogweed*, libnettle*, lib16, libpoppl*, libdns* & libyu11, and keep going unless stopped by a previously unannounced dependency.

I do trust zypper enough the remove packages I do not need longer, if that works without problems I can always later reinstall it.
If the remove triggers a warning I review that warning and make based on that a decision what to do.

Just my two cents (or pence) worth - from several years of using openSUSE’s zypper this is what I’ve found…

It is generally quite “safe” to remove packages that zypper finds as orphaned, unless they are from a repository which you have purposely disabled, in which case you would need to establish if the package was still needed.

For “unneeded” packages found by zypper, I tend not to remove them unless I’m certain the package(s) are in fact unneeded. There seems some “confusion” regarding what constitutes an unneeded package.

Either way, before removing anything I like to create a list of what zypper has found:

zypper packages --orphaned > filename.txt
zypper packages --unneeded > filename.txt

Then at a latter date if I find something not working and I suspect it may be because of package removal I’m able to easily refer back.

I must say that I don’t actually trust zypper’s interpretation of “unneeded” this is a list of what zypper believes is unneeded on this machine:

paul@HP255G7:~> sudo zypper packages --unneeded
Loading repository data...
Reading installed packages...
S | Repository      | Name                        | Version                 | Arch
--+-----------------+-----------------------------+-------------------------+-------
i | Main Repository | accounts-qml-module         | 0.7-bp154.2.54          | x86_64
i | Main Repository | avogadrolibs                | 0.9.0-bp154.1.61        | x86_64
i | Main Repository | dmz-icon-theme-cursors      | 11.3.0-1.22             | noarch
i | Main Repository | enchant-1-backends          | 1.6.1-1.57              | x86_64
i | Main Repository | gconf2                      | 3.2.6-9.26              | x86_64
i | Main Repository | kross                       | 5.90.0-bp154.1.44       | x86_64
i | Main Repository | ksysguard5                  | 5.22.0-bp154.1.24       | x86_64
i | Main Repository | libavogadrolibs-suse0       | 0.9.0-bp154.1.61        | x86_64
i | Main Repository | libebur128-1                | 1.2.6-bp154.1.41        | x86_64
i | Main Repository | libenchant1                 | 1.6.1-1.57              | x86_64
i | Main Repository | libfam0-gamin               | 0.1.10-150400.12.4      | x86_64
i | Main Repository | libftgl2                    | 2.4.0-150400.1.8        | x86_64
i | Main Repository | libglade-2_0-0              | 2.6.4-150400.13.10      | x86_64
i | Main Repository | libgypsy0                   | 0.9-2.30                | x86_64
i | Main Repository | libhttp_parser2_7_1         | 2.7.1-4.2.2             | x86_64
i | Main Repository | libjemalloc2                | 5.0.1-1.25              | x86_64
i | Main Repository | libKF5Emoticons5            | 5.90.0-bp154.1.139      | x86_64
i | Main Repository | libKF5JsEmbed5              | 5.90.0-bp154.1.55       | x86_64
i | Main Repository | libKF5XmlRpcClient5         | 5.90.0-bp154.1.49       | x86_64
i | Main Repository | libLLVM9                    | 9.0.1-3.3.1             | x86_64
i | Main Repository | libmodman1                  | 2.0.1-1.27              | x86_64
i | Main Repository | libmozjs-52                 | 52.6.0-3.3.2            | x86_64
i | Main Repository | liborcus-0_16-0             | 0.16.1-3.9.2            | x86_64
i | Main Repository | libqrcodegencpp1            | 1.5.0-1.3.2             | x86_64
i | Main Repository | libserf-1-1                 | 1.3.9-2.31              | x86_64
i | Main Repository | libshine3                   | 3.1.0-bp154.1.27        | x86_64
i | Main Repository | libstartup-notification-1-0 | 0.12-150400.13.6        | x86_64
i | Main Repository | libtar1                     | 1.2.20-bp154.2.27       | x86_64
i | Main Repository | make                        | 4.2.1-7.3.2             | x86_64
i | Main Repository | mksh                        | 56c-1.10                | x86_64
i | Main Repository | perl-XML-Simple             | 2.24-1.22               | noarch
i | Main Repository | perl-XML-XPath              | 1.42-1.20               | noarch
i | Main Repository | poppler-data                | 0.4.9-1.31              | noarch
i | Main Repository | release-notes-openSUSE      | 15.4.20220511-lp154.1.4 | noarch
i | Main Repository | xf86-input-mouse            | 1.9.3-bp154.1.34        | x86_64
i | Main Repository | xorg-x11                    | 7.6_1-1.22              | noarch
i | Main Repository | yast2-printer               | 4.4.2-150400.1.9        | x86_64
i | Main Repository | yast2-scanner               | 4.4.1-150400.1.12       | x86_64
i | Main Repository | yast2-support               | 4.4.0-150400.1.10       | noarch
i | Main Repository | yast2-sysconfig             | 4.4.0-150400.1.10       | noarch
i | Main Repository | yast2-tftp-server           | 4.4.0-150400.1.9        | noarch
i | Main Repository | yast2-vpn                   | 4.4.0-150400.1.9        | noarch
paul@HP255G7:~> 

Disk space is not an issue, they all stay… I’m sure some are actually needed but can’t be bothered to find out which.

For me zypper’s definition of “orphaned” is clear: those packages that are not (anymore) found on an enabled repository. E.g. I disabled the Teams repo, and thus the teams package is orphaned (but I still need it and I will update it with enable, update, disable when I think fit)

zypper’s definition of “unneeded” is not clear to me. And I think it isn’t to many, because I have seen different interpretations of it in the forums. Including some I assume is wishful thinking of the authors.

I forgot to include my own definition of leftover, aka “old”, which is in a script:

# cat /usr/local/bin/zypseo
#!/bin/sh
zypper --no-refresh se -si | grep 'tem Pac' | grep -v plication

It’s only useful when run in between finishing zypper up and the next zypper ref, or in TW, between zypper dup and next zypper ref. The keyword is (System Packages), which most often translates into not currently in any enabled repo, in addition to old or leftover.

In zypper I trust:

6700K:~ # zypper packages --unneeded 
Loading repository data... 
Reading installed packages... 
S | Repository             | Name                     | Version     | Arch 
--+------------------------+--------------------------+-------------+------- 
i | Haupt-Repository (OSS) | joe                      | 4.6-2.18    | x86_64 
i | Haupt-Repository (OSS) | libappstream-glib8       | 0.8.1-1.1   | x86_64 
i | Haupt-Repository (OSS) | policycoreutils-lang     | 3.4-4.2     | noarch 
i | Haupt-Repository (OSS) | python310-more-itertools | 8.13.0-1.3  | noarch 
i | Haupt-Repository (OSS) | python310-networkx       | 2.6.3-2.8   | noarch 
i | Haupt-Repository (OSS) | reiserfs                 | 3.6.27-5.11 | x86_64 
6700K:~ # zypper packages --unneeded | grep ^i|cut -d '|' -f3|xargs zypper rm --clean-deps --no-confirm
Reading installed packages...
Resolving package dependencies...

The following 170 packages are going to be REMOVED:
  graphviz graphviz-gd graphviz-plugins-core joe jupyter-ipyparallel jupyter-jupyter-client jupyter-jupyter_core-filesystem jupyter-jupyterlab jupyter-jupyterlab-filesystem jupyter-jupyterlab-pygments jupyter-jupyterlab-widgets jupyter-nbclassic jupyter-nbconvert jupyter-nbformat jupyter-notebook jupyter-notebook-filesystem jupyter-notebook-shim jupyter-widgetsnbextension libQt5Bluetooth5 libQt5Bluetooth5-imports libQt5Designer5 libQt5Location5 libQt5Nfc5 libQt5Nfc5-imports libQt5PositioningQuick5 libQt5WebSockets5 libQt5WebSockets5-imports libappstream-glib8 libcblas3 libev4 libgts-0_7-5 libgvpr2 libimagequant0 liblab_gamut1 libqt5-qtconnectivity-tools libreiserfscore0 nodejs-common nodejs17 npm17 pandoc policycoreutils-lang python-rpm-generators python-rpm-macros python-tqdm-bash-completion python310-Automat python310-Babel python310-Bottleneck python310-Cycler python310-FontTools python310-Genshi python310-Jinja2 python310-MarkupSafe python310-Pillow python310-Pillow-tk python310-PyYAML python310-Pygments python310-QtPy python310-Send2Trash python310-Twisted python310-Twisted-tls python310-anyio python310-appdirs python310-argon2-cffi python310-argon2-cffi-bindings python310-asttokens python310-backcall python310-beautifulsoup4 python310-bleach python310-constantly python310-debugpy python310-defusedxml python310-dnspython python310-editables python310-entrypoints python310-executing python310-fastjsonschema python310-fs python310-gevent python310-gmpy python310-greenlet python310-h11 python310-h2 python310-hatchling python310-hpack python310-html5lib python310-httpcore python310-httpx python310-hyperframe python310-hyperlink python310-incremental python310-ipykernel python310-ipyparallel python310-ipython python310-ipython_genutils python310-ipywidgets python310-jedi python310-json5 python310-jsonschema python310-jupyter python310-jupyter-client python310-jupyter-core python310-jupyter-jupyterlab-server python310-jupyter-server python310-jupyter_console python310-jupyterlab python310-jupyterlab-pygments python310-jupyterlab-widgets python310-kiwisolver python310-matplotlib python310-matplotlib-inline python310-matplotlib-tk python310-more-itertools python310-mpmath python310-nbclassic python310-nbclient python310-nbconvert python310-nbformat python310-nest-asyncio python310-networkx python310-notebook python310-notebook-shim python310-numexpr python310-numpy python310-olefile python310-pandas python310-pandocfilters python310-parso python310-pexpect python310-pickleshare python310-prometheus-client python310-prompt_toolkit python310-ptyprocess python310-pure-eval python310-pyasn1 python310-pyasn1-modules python310-pybind11 python310-pydot python310-pyftpdlib python310-pygraphviz python310-pyrsistent python310-pysendfile python310-pytz python310-pyzmq python310-qt5 python310-qt5-sip python310-qtconsole python310-reportlab python310-requests-toolbelt python310-rfc3986 python310-scipy python310-service_identity python310-sniffio python310-soupsieve python310-stack-data python310-sympy python310-terminado python310-tinycss2 python310-tk python310-tornado6 python310-tqdm python310-traitlets python310-unicodedata2 python310-wcwidth python310-webencodings python310-websocket-client python310-widgetsnbextension python310-zope.event python310-zope.interface python310-zopfli reiserfs

170 packages to remove.
After the operation, 784.0 MiB will be freed.
Continue? [y/n/v/...? shows all options] (y): y
(  1/170) Removing joe-4.6-2.18.x86_64 .....done]
(  2/170) Removing jupyter-ipyparallel-8.4.1-1.3.noarch .....done]
...
(169/170) Removing python310-hatchling-1.8.1-1.3.noarch .....done]
(170/170) Removing python310-editables-0.3-1.3.noarch .....done]
There are running programs which still use files and libraries deleted or updated by recent upgrades. They should be restarted to benefit from the latest updates. Run 'zypper ps -s' to list these programs.
 
**6700K:~ # zypper verify
Loading repository data...
Reading installed packages...
Dependencies of all installed packages are satisfied.**
6700K:~ #

The above is what I expected:

“Unneeded” means the auto-installed package is not referenced with respect to the broadest definition of dependency, directly or indirectly, by a user installed package.](https://forums.opensuse.org/showthread.php/573509-Cleanup-of-distribution-upgrades?p=3148355#post3148355)

I assume “user” here means system manager (root).

I know man zypper mentions user installed vs. automatically installed packages (i+ vs. i in the status listings). But I can not find any more mentioning of these two terms in the man page. Thus it is still unknown to me what makes a package "automatically installed or “user installed”.

Indeed, while this distinction is clear in case of command line client (zypper), I am not as sure about YaST Software module. It resolves dependencies and presents me with the final list to be installed - now, are all packages in this list user installed?

… and you’ve never removed a package that was actually needed?

https://forums.opensuse.org/showthread.php/574463-woeusb-fails-with-unknown-filesystem-type-ntfs-3g?p=3153479#post3153479

Yes, in zypper’s defence, it did appear to be a packaging error; nonetheless in real terms the package wasn’t “unneeded” :wink:

Automatically installed packages

Packages added by the dependency solver in order to resolve a user’s request are remembered as having been ‘automatically installed’. They may later be removed, if no more user installed packages depend on them (e.g. by zypper remove --clean-deps).

In the Status column the search command distinguishes between user installed packages (i+) and automatically installed packages (i).

[noparse]https://en.opensuse.org/SDB:Zypper_manual[/noparse]

The package is outdated: 1180037 – X11:Utilities/WoeUSB: Version upgrade

From GitHub - WoeUSB/WoeUSB: A Microsoft Windows® USB installation media preparer for GNU+Linux

WoeUSB will not be able to function without these software installed in their proper locations:

  • GNU Bash
    For interpreting and executing the program logic
    Requires >= 4.3
  • The GNU Core Utilities(Coreutils)
    For common Unix utilities necessary for basic operations
  • util-linux
    For low-level utilities interacting with storage devices, etc
  • GNU Grep and Gawk
    For parsing necessary information out from a command output
  • The GNU Find Utilities
    For enumerating files required for operation
  • GNU GRUB
    For installing the bootstrap code used in a Legacy PC boot
    We specifically requires modules of the i386-pc architecture, for Debian-based distributions these are provided via the grub-pc-bin package
  • GNU Parted
    For manipulating disk partition table and partitions
  • GNU Wget
    For acquiring Pete Batard’s UEFI:NTFS UEFI bootloader
  • dosfstools
    For creating FAT filesystem in --device creation method
  • NTFS-3G
    For creating NTFS filesystem in --device creation method
  • wimlib
    For splitting install.wim Windows Imaging (WIM) archive so that archives over 4GiB can be fit in an FAT32 filesystem

Users installing the above version will need to check manually Dependencies · WoeUSB/WoeUSB Wiki · GitHub.

So, all packages that are a t the top of a dependency tree are “user requested” and all packages that are installed because the user requested ones need them, are “system installed”.

Now if I install package B, then that is a “user installed” one. If I later install package A (again a “user installed” one) that needs package B, does that change the status of B to “system installed”, or not, or does it have two statuses?,

I always find these sort of puzzles bewildering. The more because the terms used (“user install” and “system install”) are not self explaning IMHO.

Nope. Packages added by the dependency solver are automatically installed. All others are user installed. Forced reinstall of an automatically installed packages flags it as user installed.

More about https://forums.opensuse.org/showthread.php/574463-woeusb-fails-with-unknown-filesystem-type-ntfs-3g

ntfs-3g was automatically installed. “zypper packages --unneeded” listed ntfs-3g. Deleting unneeded packages removed this package. Reinstall flagged it as user installed. It is no longer unneeded:

**erlangen:~ #** zypper se -is ntfs-3g 
Loading repository data... 
Reading installed packages... 

S  | Name         | Type    | Version       | Arch   | Repository 
---+--------------+---------+---------------+--------+----------------------- 
i  | libntfs-3g89 | package | 2022.5.17-1.3 | x86_64 | Haupt-Repository (OSS) 
i+ | ntfs-3g      | package | 2022.5.17-1.3 | x86_64 | Haupt-Repository (OSS) 
**erlangen:~ #**
**erlangen:~ #** zypper packages --unneeded  
Loading repository data... 
Reading installed packages... 
No packages found. 
**erlangen:~ #**

“Thank you” to those of you who kindly took some time to post some information here. In partly following poster tannington’s generalization I removed all of the lib…, python-…, and python2-… software packages listed in the output following my entry of the command

zypper pa –orphaned

as a “root” user in my Leap-15.4 installation. The output of that command was in a tabular form with the so-qualified, software-package names in a column.

Item 1, a question: How could I instead have used “grep” within the above command to 1) provide just the package names in a row with consecutive package names in a so-produced list in each case separated by one space? The utility of such a result could be to enable the copying and “pasting” of that row of software package names into one “zypper rm …” command. And

Item 2, a question: how could I have used “grep” within a

zypper pa –orphaned

command to list packages with names beginning with “lib” and “python”?

Next I would like to know whether the texlive-… software packages in the output of

zypper pa –orphaned

would be functional in my Leap-15.4 installation or not. After all, it would not make sense for me to keep any old Teχ Live packages in my Leap-15.4 installation if they would not be functional in that installation.

I found indications from https://www.educba.com/linux-distributions/ and https://www.texdev.net/2011/10/29/tex-live-in-linux-distributions/ on the Internet that a version of a texlive-… software package provided via a distributor of a Linux operating system might possibly be kernel dependent. Then in Yet another Software Tool (YaST) Software for the package named “texlive” I saw that its version number included both “2021” for probably the year of Teχ Live and “150400”, which is part of my currently running Linux kernel version of “5.14.21-150400.24.18-default”! And that same number of “150400” appears in numerous other texlive-… software package version numbers which also include the number “2021” in them. So I suppose that many texlive-… software packages in my Leap-15.4 installation with both “2021” and “150400” in their version numbers may be dependent on at least the current series of Linux kernels which include “150400” in their version numbers. Similarly among a large number of the “orphaned,” texlive-… software packages in my Leap-15.4 installation I found that their version numbers include both “2017” and “5.18” in their version numbers. And among them, for example texlive-knuth and texlive-tabulars-e, were installed in my Leap-15.4 installation on July 13, 2021 when I was using Leap 15.3. And in my former Leap-15.3 installation I was usually, if not always using Linux kernels with “5.3.18” in their version numbers. So I suppose that all members of that set of “orphaned,” texlive-… software packages were kernel dependent. For the remaining 10, “orphaned” texlive-… sofware packages which all have “2017” in their version numbers, but not “5.18” in their version numbers, all ten of them were installed on July 13, 2021 in my then, Leap-15.3 installation.

So here is what I suppose or speculate that openSUSE developers might have been doing concerning texlive- software packages: a) obtaining them in primitive forms, perhaps as source-code files from Teχ Live from the Teχ Users Group (TUG) or perhaps the Comprehensive Teχ Archive Network (CTAN), b) perhaps modifying them in ways to make them usable in the latest version of openSUSE with its Linux kernels, possibly backporting some kernel-appropriate computer code; and c) providing such a modified software package in an openSUSE, online repository. In anticipation of the types of content to be used in Linux kernels in Leap 15.4 perhaps those so-produced, texlive-… software packages would not need to be compiled at the time of their installations, but instead might be released from an online openSUSE repository having already been compiled.

Item 3, a question: Do you agree with my thinking and speculations in my previous two paragraphs? If not, please correct my writing here.

Some relevance of part of my previous discussion to deciding whether or not to remove “orphaned,” texlive-… software packages is that it is conceivable that such texlive-… packages produced for use in one set of Linux kernels used in my Leap-15.3 installation might not work in the Linux kernels in and to be used in my Leap-15.4 installation; and if those “orphaned” texlive-… software packages would turn out to not work in my Leap-15.4 installation, I should remove them from my Leap-15.4 installation.

Regarding Linux kernels I recently moved all of my remaining versions of initrd [initial RAM (Random Access Memory) disk] from the directory /boot into the “trash” directory, except for initrd files corresponding to the latest two versions of the Linux kernel in the latest openSUSE operating system. Correspondingly in /etc/zypp/zypp.conf I have a statement reading

multiversion.kernels = latest, latest-1,running

. And, according to the procedure posted on https://forums.opensuse.org/showthread.php/572815-dracut-generates-initrd-files-for-kernels-that-are-no-longer-on-my-system on the Internet, I moved to the “trash” directory all of the subfolders or subfolders of subfolders which contained Linux kernel modules within /lib/modules, except for kernel modules for the latest two Linux kernels. And at some future time, in the absence of related software problems, I hope to empty that “trash” directory. And I executed the command

zypper purge-kernels

as a “root” user.

And after a future, Linux kernel update is installed I should check in /lib/modules to see whether a subfolder of /lib/modules containing kernel modules for two kernel versions prior to the updated kernel version will remain there or not; and if that subfolder of /lib/modules will then be there, I should delete it. Based on my experience and some reading on https://forums.opensuse.org/showthread.php/572815-dracut-generates-initrd-files-for-kernels-that-are-no-longer-on-my-system, for Linux kernels which are not going to be used in the future, deleting unused initrd files and unused kernel-module subfolders of /lib/modules might shorten processes in which new initrd files will be produced.

There is a possibility that the function of an old texlive-… software package from Teχ Live 2017 could have been replaced by a texlive-… software package with a different name in a year-2018, 2019, 2020, or 2021 version of Teχ Live; and if such a replacement of function was indeed made, the old, “orphaned,” texlive-… software package should be removed my Leap-15.4 installation. An imaginable way that such a possibility might be checked might be to scan the so-called changelogs for the year-2018, 2019, 2020, and 2021 versions of Teχ Live, if they were all thoroughly produced and can be found somewhere online.

To somehow learn how to work with each of 35, relatively old,“orphaned,” texlive-… software packages and afterward to test each of them, one at a time, in a LaTeχ, .tex file using one or both of the computer programs pdflatex or bibtex might take a large amount of time!

Item 4, a question: So instead is there a way I may determine en masse, or in a group, whether each of the installed “orphaned” texlive-… packages will be functional or not in my Leap-15.4 installation, perhaps in a short .tex file which would include a \usepackage{…} statement and between those braces have all of the “orphaned” texlive-… package names minus “texlive-” in each case and separated by commas?