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 XYZ
where XYZ is the package name, what does it output?Hmm, must be a missing dependency then...
FWIW I will use the package
acl
as it is the on that the screenshot above is for.So here is what
dpkg --list acl
returns:Also, what output do you get if you run
dpkg --print-avail acl
Hmmm... Might be something...
Ok it looks like Webmin depends on dselect.
apt-get install dselect && dselect update
and the issue is resolved.
Is this an expected dependancy?
That's surprising - was this a completely fresh Debian install, or did you remove the
dselect
package?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 update
from 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 update
has already downloaded though and I have created an apt hook to update the dpkg list from these everytimeapt-get update
is 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 update
or 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-avail
command 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 update
or 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 thesoftware
module) 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 package
will show the version installed and any other versions available from the repositories (if they differ).dpkg --preint-avail
will only show package info ofdpkg -i
installed 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 show
shows 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-avail
is 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 update
was run).Once we update the dselect/dpkg package lists, then
dpkg --print-avail
is aware of the new package (and only shows that).I wold argue that the above demonstrates that
apt-cache show package
is a superior way to get the relevant package info. For Webmin's purposes though theapt-cache show package
output 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.