solitone posted on Sun, 19 Mar 2017 08:17:39 +0100 as excerpted: > Just a curiosity. In debian it seems I don't have any indication on > slots, so it's not immediate to know whether a package is based on > kde4 or framework5. For instance: > > solitone@alan:~$ apt-cache policy okular > okular: > Installed: 4:16.08.2-1+b1 > Candidate: 4:16.08.2-1+b1 > > solitone@alan:~$ apt-cache policy kde-baseapps-bin > kde-baseapps-bin: > Installed: 4:16.08.3-1 > Candidate: 4:16.08.3-1 > > kde-baseapps-bin is the debian package providing kdialog. > > Is there a quick and easy way to find out whether an application is > based on kde4 or framework5, apart from looking at the version details > in every application?
FWIW, slots are gentoo's package-management mechanism for allowing multiple versions of something to be installed at the same time, assuming of course that they don't actually install any files to exactly the same path. Most commonly slots are used for libraries where the filenames don't collide because they're say *.so.1.2.3 and *.so.2.3.4, but they are often used for things like desktop major versions as well, to make tracking what's installed easier even when installing all packages of both slots isn't actually supported, and that's what you see here. Slots default to 0 if unset, and that's what most packages that haven't been specifically designed to allow more than one version to be installed at the same time use. So it's not surprising that Debian doesn't have an exactly similar mechanism because slots, as seen here, are gentoo-specific. **BUT**... There should be a way to query dependencies, and they have to be set correctly no matter the package management system or the package will have much bigger problems. I don't know Debian's packaging system well enough to give you an exact command, but querying it for what it depends on, and then piping that query to a grep for something like kdelibs, a kde4-only package that any kde4-based app should depend on, should work. Or grep for the qt dependency, qt4 or qt5. Alternatively, a method that doesn't depend on a package-manager query, but instead on the elf-executable information, run ldd on one of the binaries. That should produce a list of all the libraries it's linked against, and again, you can grep that for kdelibs or one of the qt libraries, and see that way whether it's kdelibs4 or kde-frameworks5 based, or qt4/5 based. You'll probably have to play around with the command and grep a bit (does the STDOUT or STDERR need piped to grep? do you want to do a grep -q and rely only on exit code, or do you prefer to see the actual grepped line, etc.), but either of these should be reliable enough to script if you like, once you get it working. Then you'll have your own script to run and won't have to remember the details. =:^) Someone here that's more familiar with Debian package management can probably post a nice one-liner, if you're not comfortable using grep, etc. -- Duncan - List replies preferred. No HTML msgs. "Every nonfree program has a lord, a master -- and if you use the program, he is your master." Richard Stallman