The issue was reported to me by a TurnKey Linux user.
thread on TurnKey forums: http://www.turnkeylinux.org/forum/support/20151001/file-server-appliance14-webmin-not-working#comment-24294
issue on TurnKey tracker issue tracker: https://github.com/turnkeylinux/tracker/issues/493
As reported here: https://virtualmin.com/node/38076
Webmin --> System --> Software Packages --> Package Tree
When any of the packages are clicked on; it raises an error: "Package is no longer installed"; however I can confirm from the commandline that the packages are definitely there.
I did discover that we there is a dependancy mssing; namely apt-show-versions but even after installing that (and it's dependency) the problem remains. All dependencies (as listed http://www.webmin.com/deb.html) are now installed.
Is there a new dependency for this to work in Jessie?
I just did a test on a fresh install of Debian Jessie, and the package tree worked just fine.
Did you test this with Webmin 1.770?
Thanks for your quick response Jamie.
I removed the version I had (apt-get purge webmin*) and installed your webmin_1.770_all.deb package and the issue still exists.
Although perhaps I need to explain more/better. The package tree works fine, it's when you actually click on any of the packages that the error occurs. I will attach screenshots to hoepfully help explain.
Right, I understand the probem - but on my test system, clicking on a package works fine.
At the shell prompt if you run
dpkg --list XYZwhere XYZ is the package name, what does it output?Hmm, must be a missing dependency then...
FWIW I will use the package
aclas it is the on that the screenshot above is for.So here is what
dpkg --list aclreturns:Also, what output do you get if you run
dpkg --print-avail aclHmmm... Might be something...
Ok it looks like Webmin depends on dselect.
apt-get install dselect && dselect updateand the issue is resolved.
Is this an expected dependancy?
That's surprising - was this a completely fresh Debian install, or did you remove the
dselectpackage?This is TurnKey Linux v14.0. It is essentially a minimalist Debian Jessie with only the essentials (and a few custom extras - one of which is Webmin).
Thanks for your help working this out.
Out of interest is there a reason why you don't just use apt (e.g. apt-cache show) to get this info rather than using using dselect via dpkg?
Last edit: Jeremy Davis 2015-11-16
We use dpkg becuase in theory the package management system (dpkg) is seperate from the update system (apt).
After much digging it appears that dselect is not actually required afterall, although manually running
deselect updatefrom time to time is the easiest way to keep dpkg's list of packages up to date. They are a completely separate to apt's list of packages.It is possible to leverage the lists that
apt-get updatehas already downloaded though and I have created an apt hook to update the dpkg list from these everytimeapt-get updateis run:TBH I'm surprised that other Debian users have not come across this issue as dselect is not a "required", "important" or "standard" package (at least not in Jessie) so I imagine that only users who have upgraded from a previous version will have it installed. Apparently in previous versions it was a pre-depends of dpkg - not sure when that changed.
Also FWIW the dpkg man page says:
Seeing as Webmin uses apt for package management, the last sentence suggests to me that Webmin should be using
apt-cache show <package-name>instead ofdpkg --print-avail <package-name>.Also my research suggests that even if everything appears to be working properly, unless the user manually updates the dpkg/dselect package lists then they will become stale over time.
So IMO Webmin either needs to use
apt-cache show, provide a button to rundselect updateor update the dpkg package list similar to the way my apt hook does.Last edit: Jeremy Davis 2016-02-17
Webmin only uses the
dpkg --print-availcommand to show the details of an installed package though. Can this really get out of sync with what is actually installed?I understand that, but unless you are (creating and) updating the dpkg package lists (either via manually running
dselct updateor the trick that I discovered and noted above) then the information does not exist or will become out of date (until you manually update it). TBH I'm not sure how this worked before? But it doesn't appear to be working the way you intend now in Debian Jessie.Seeing as you are already using apt then using
apt-cache show(as recommended in the dpkg man page) would be a much more robust solution and would still be backwards compatible. The apt package lists are easily updated (via the Webmin button in thesoftwaremodule) so just swapping the command that Webmin uses should do the trick nicely.Does using apt-cache show imply that APT is always being used as a package installer, which may not necessarily be the case? Debian packages can exist and be installed without using APT at all.
Not neccessarily.
apt-cache show packagewill show the version installed and any other versions available from the repositories (if they differ).dpkg --preint-availwill only show package info ofdpkg -iinstalled packages after you have rundselect update.To clearly demonstrate this:
So v1.760 is installed and is the latest availble version from the repos.
dselect is installed but the dselect/dpkg package lists have not been updated. So it's not showing any packages.
apt-cache showshows the currently installed package. If webmin weren't installed then it would still show this same info as the info is drawn from both the package repos (collected duringapt-get update) and installed packages.Once the dselect/dpkg package lists have been updated then it shows essentially the same info as
apt-cache show.So now I have just manually installed a newer version (that is not available from the repos).
v1.760 is no longer installed but
dpkg --print-availis still only showing the info from the last time it's info was updated.Whereas, with no further configuration or update (i.e. no
apt-get update) apt is already aware that there has been a new package version installed. It then goes on to show other versions available from the repos (i.e. info collected from the repos last time thatapt-get updatewas run).Once we update the dselect/dpkg package lists, then
dpkg --print-availis aware of the new package (and only shows that).I wold argue that the above demonstrates that
apt-cache show packageis a superior way to get the relevant package info. For Webmin's purposes though theapt-cache show packageoutput would need to be cleaned so that it only provides the first entry (which would either be the currently installed package info or the latest version from the repos).Thanks for the detailed explanation - I will fix Webmin in the next release to use apt-cache show instead.