Solving errors when updating linux-cloud-tools-common
When doing a regular periodical update of a webserver, some packages remain ‘not fully installed’.
I searched for a way to complete the update of a webserver and specifically the packages afflicted, which are:
- linux-cloud-tools-common
- linux-cloud-tools-3.13.0-100
- linux-cloud-tools-3.13.0-100-generic
- linux-cloud-tools-virtual
- hv-kvp-daemon-init
tl;dr
The solution I finally came up with is to run:
ln -s /usr/sbin/hv_kvp_daemon.hv-kvp-daemon-init /usr/sbin/hv_kvp_daemon
After that run apt upgrade
again to complete the installation of the updates.
I’d like to tell you a bit more about how I came to this solution.
More information about the issue
The issue turned up after a regular sudo apt-get update && sudo apt-get upgrade
. The server involved is a Ubuntu 14.04 Virtual Machine on Azure.
# sudo apt upgrade ... Setting up linux-cloud-tools-common (3.13.0-100.147) ... start: Job failed to start invoke-rc.d: initscript hv-kvp-daemon, action "start" failed. dpkg: error processing package linux-cloud-tools-common (--configure): subprocess installed post-installation script returned error exit status 1 ... Errors were encountered while processing: linux-cloud-tools-common linux-cloud-tools-3.13.0-100 linux-cloud-tools-3.13.0-100-generic linux-cloud-tools-virtual hv-kvp-daemon-init E: Sub-process /usr/bin/dpkg returned an error code (1)
The first thing I tried was running apt upgrade again. It showed that five packages are not fully installed.
# sudo apt upgrade Reading package lists... Done Building dependency tree Reading state information... Done Calculating upgrade... Done 0 upgraded, 0 newly installed, 0 to remove and 0 not upgraded. 5 not fully installed or removed. After this operation, 0 B of additional disk space will be used. Do you want to continue? [Y/n]
And after confirmation, the same errors as listed above are generated again and the situation is unchanged.
Finding others with the same issue
This is the point where I used Google to find out if others encountered the same error and if so, if they found a solution. At first I only found generic possible solutions that are applicable to every apt package issue. One that I tried is this recommendation.
Instead, I followed a stack-overflow post (which I can’t find anymore):
sudo apt-get update sudo apt-get clean sudo apt-get autoremove sudo apt-get update && sudo apt-get upgrade sudo dpkg --configure -a sudo apt-get install -f
However, when running upgrade, configure and/or force install, the same error occurs: ‘initscript hv-kpv daemon, action “start” failed’, just like the first time.
Even completely removing and reinstalling the package with the following commands gave the same issue.
apt-get --purge remove linux-cloud-tools-common apt-get install linux-cloud-tools-common
Direct cause
I found the following blog, which correctly found the issue to be with /etc/init/hv-kvp-daemon.conf. After installation the linux-cloud-tools-common package is configured by running this specific config file. On the last line it runs /usr/sbin/hv_kvp_daemon, however, this file does not exist.
# ls /usr/sbin/hv_kvp_daemon ls: cannot access /usr/sbin/hv_kvp_daemon: No such file or directory
The blog then suggests to simply not run the script by replacing the location to the script with /bin/true. This didn’t sound like a good suggestion to me, scripts are there for a reason (ok, maybe I’m a little naive). The blog also recommends to revert the config file afterwards, but this would only bring the issue back every time the linux-cloud-tools-common package is updated.
Looking for the file
I remembered that when upgrading a package, the previous configuration file is saved with an extra extension in the file name. So I went looking for such files.
# ls /usr/sbin/hv_kvp_daemon* /usr/sbin/hv_kvp_daemon_3.2.0-67-virtual /usr/sbin/hv_kvp_daemon.hv-kvp-daemon-init
The last modification date of the file hv_kvp_daemon_3.2.0-67-virtual was in 2014, which I believed to be too old to be applicable. However, the file hv_kvp_daemon.hv-kvp-daemon-init was actually installed at the same time as other files that begin with ‘hv_’, part of the same package. But this file was not listed in the packages file list, so I wasnt certain that this was the file that I was looking for.
On APT Browse, I found what the contents of /usr/sbin/hv_kvp_daemon should be (although it is not the lastest version), which seems to be the same as hv_kvp_daemon.hv-kvp-daemon-init.
Solution: so I made a symbolic link from hv_kvp_daemon.hv-kvp-daemon-init to hv_kvp_daemon, and when running apt upgrade the packages all updated correctly and everything was fully installed and fully up to date again.
After some thinking, I remembered that I recently upgraded the server. The underlying issue might have started by an earlier upgrade from Ubuntu 12.04 to 14.04 and only shown itself after the first update of linux-cloud-tools-common.
Note: after posting this article I found out that the solution had already been mentioned on this bug report, so much for thinking I was the awesome pioneer in this solution.