two users reported they were getting errors from consolekit:
CRITICAL: cannot initialize libpolkit
This was found to be because they had only libpolkit2 installed,
and not the policykit package, as Debian, and hence Ubuntu, splits
the packages.
consolekit reports this error on a failure from polkit_context_init.
That function includes code like
/* Watch the /etc/PolicyKit/PolicyKit.conf file */ pk_context->inotify_config_wd = inotify_add_watch (pk_context->inotify_fd, PACKAGE_SYSCONF_DIR "/PolicyKit/PolicyKit.conf", IN_MODIFY | IN_CREATE | IN_ATTRIB);
if (pk_context->inotify_config_wd < 0) { polkit_debug ("failed to add watch on file '" PACKAGE_SYSCONF_DIR "/PolicyKit/PolicyKit.conf': %s", strerror (errno)); /* TODO: set error */ goto error;
}
if the conf file is not present then the inotify_add_watch call fails
with ENOENT, and so polkit returns an error.
This then causes a problem on minimal debian based systems that only
have libpolkit installed, and not the policykit package that contains
these files. It will also fail if, e.g.the PolicyKit.reload file is
deleted.
It may be that the files are required for the library to work, and so
this is a packaging problem, but I'm not convinced that is the case
for two reasons. Firstly,
pk_context->config = polkit_config_new (PACKAGE_SYSCONF_DIR "/PolicyKit/PolicyKit.conf", pk_error);
/* if configuration file was bad, log it */
if (pk_context->config == NULL) { kit_warning ("failed to load configuration file: %s", polkit_error_get_error_message (*pk_error)); if (pk_error == &pk_error2) polkit_error_free (*pk_error);
}
if the config file isn't present then polkit_config_new will return
NULL, but this isn't fatal.
Secondly, inotify_add_watch is called with the IN_CREATE flag. This
only has an effect if the path is a directory, but it may indicate
that the intent was to get events on creation of a file at the specified
path. (The way to do that is apparently monitor the parent directory
with that flag and switch on the path name when the events occur).
So, I would appreciate clarification on what situations the code is intended
to work in, so that I can fix the packaging, or we can fix the code.
Hi,
In
https:/ /bugs.launchpad .net/bugs/ 275432
two users reported they were getting errors from consolekit:
CRITICAL: cannot initialize libpolkit
This was found to be because they had only libpolkit2 installed,
and not the policykit package, as Debian, and hence Ubuntu, splits
the packages.
consolekit reports this error on a failure from polkit_ context_ init.
That function includes code like
/* Watch the /etc/PolicyKit/ PolicyKit. conf file */
pk_context- >inotify_ config_ wd = inotify_add_watch (pk_context- >inotify_ fd,
PACKAGE_ SYSCONF_ DIR "/PolicyKit/ PolicyKit. conf",
IN_ MODIFY | IN_CREATE | IN_ATTRIB); >inotify_ config_ wd < 0) {
polkit_ debug ("failed to add watch on file '" PACKAGE_SYSCONF_DIR "/PolicyKit/ PolicyKit. conf': %s",
strerror (errno));
/* TODO: set error */
goto error;
if (pk_context-
}
if the conf file is not present then the inotify_add_watch call fails
with ENOENT, and so polkit returns an error.
This then causes a problem on minimal debian based systems that only
have libpolkit installed, and not the policykit package that contains
these files. It will also fail if, e.g.the PolicyKit.reload file is
deleted.
It may be that the files are required for the library to work, and so
this is a packaging problem, but I'm not convinced that is the case
for two reasons. Firstly,
/* if configuration file was bad, log it */
if (pk_context->config == NULL) {
}
if the config file isn't present then polkit_config_new will return
NULL, but this isn't fatal.
Secondly, inotify_add_watch is called with the IN_CREATE flag. This
only has an effect if the path is a directory, but it may indicate
that the intent was to get events on creation of a file at the specified
path. (The way to do that is apparently monitor the parent directory
with that flag and switch on the path name when the events occur).
So, I would appreciate clarification on what situations the code is intended
to work in, so that I can fix the packaging, or we can fix the code.
Thanks,
James