Opened 9 years ago
Closed 9 years ago
#14665 closed defect (fixed)
vboxdrv.service unit file contains an extra '$' character in the "After=" line -> fixed in 5.0.x and later as of October 9 2015
Reported by: | Peter Palúch | Owned by: | |
---|---|---|---|
Component: | installer | Version: | VirtualBox 5.0.6 |
Keywords: | Cc: | ||
Guest type: | Linux | Host type: | all |
Description (last modified by )
Greetings,
In Debian packages of VBox 5.0.6, the /etc/init.d scripts have been replaced with, among others, native systemd units in /lib/systemd/system.
However, the /lib/systemd/system/vboxdrv.service file that is generated by the postinst-common.sh script based on LSB info in /usr/lib/virtualbox/vboxdrv.sh contains an extra '$' character in the "After=" line. After installing the Debian package of VBox 5.0.6, this line in the vboxdrv.service reads:
After=$syslog.service
As systemd does not recognize such service, it complains during system boot:
Oct 04 10:23:32 rameau systemd[1]: [/lib/systemd/system/vboxdrv.service:5] Failed to add dependency on $syslog.service, ignoring: Invalid argument
This error is caused by the /usr/lib/virtualbox/routines.sh that does not remove the '$' character from system facility names as parsed from the vboxdrv.sh file when these facilities are translated into systemd unit files.
I am attaching a patch that corrects the routines.sh script so that any '$' characters read in names of system facilities from LSB tags are removed. The patch is based on an additional use of the tr tool to delete the unwanted characters. In Debian, the tr tool is a part of the coreutils package which is an essential package, and so does not incur any additional package dependency.
Please consider integrating these corrections. Thank you!
Best regards, Peter
Attachments (1)
Change History (8)
by , 9 years ago
Attachment: | routines.sh.diff added |
---|
comment:1 by , 9 years ago
I've noticed I have swapped the "Host type" and "Guest type" in my original submission. Correctly, they should read:
Host type: Linux Guest type: All
My apologies for the mistake.
follow-up: 3 comment:2 by , 9 years ago
Someone on the forums pointed out that syslog.service doesn't exist on Debian 8.
comment:3 by , 9 years ago
Replying to Ryan Jaeb:
Someone on the forums pointed out that syslog.service doesn't exist on Debian 8.
Hi Ryan. While in Debian, the "syslog.service" file indeed does not exist natively, a symlink of this name is created to point to a proper unit file that starts the particular implementation of the syslog service.
By default, in Debian, the rsyslog package is installed. Consequently, the /lib/systemd/system/rsyslog.service file contains a line saying "Alias=syslog.service", causing a symlink called /etc/systemd/system/syslog.service to be installed, pointing to /lib/systemd/system/rsyslog.service. If syslog-ng package is installed, the /etc/systemd/system/syslog.service will point to /lib/systemd/system/syslog-ng.service thanks to the same Alias line.
In any case, referring to "syslog.service" is correct; referring to "$syslog.service" is not.
Best regards, Peter
comment:4 by , 9 years ago
Description: | modified (diff) |
---|
comment:5 by , 9 years ago
Summary: | vboxdrv.service unit file contains an extra '$' character in the "After=" line → vboxdrv.service unit file contains an extra '$' character in the "After=" line -> fixed in 5.0.x and later as of October 9 2015 |
---|
This should now be fixed in the latest available 5.0 test builds<1>. I did not use your patch, as this was already annoying me, and I had already thought about how to fix it myself, and I ended up just dropping all dependencies which start with '$'. (A bit hacky, but we only depend on $syslog at all, and systemd handles system logger dependencies automatically through its socket mechanism, so there is no need for anything to depend on it explicitly.)
Patch file correcting routines.sh to remove '$' characters from facility names