Luci fails to start via init scripts on Red Hat Enterprise Linux 6?
Issue
Symptoms
- When trying to start luci service with "service luci start", it runs with no issues::
# service luci start Start luci... [ OK ] Point your web browser to https://127.0.0.1:8084 (or equivalent) to access luci
- But when trying to access the url of luci site, its not available. And luci status reports:
# service luci status No PID file /var/run/luci/luci.pid
- But when trying to access the url of luci site, its not available. And luci status reports:
Environment
-
Red Hat Enterprise Linux 6 (RHEL6)
-
System has yum repository configured for EPEL packages
- Luci package: luci-0.23.0-13.el6
- python-repoze-who-friendlyform package version: python-repoze-who-friendlyform-0:1.0.8-2.el6 (provided by EPEL)
Resolution
- There is no resolution as yet.
- Red Hat can't change the version of packages provided by EPEL.
- There are no plans for Red Hat to upgrade python-webob to a version compatible with python-repoze-who-friendlyform provided by EPEL
- This is being tracked via Red Hat Bugzilla: BZ#751202
- As a workaround, it is possible to downgrade python-repoze-who-friendlyform to the Red Hat Enterprise Linux 6 version:
- Downgrade the package version to python-repoze-who-friendlyform-1.0-0.3.b3.el6:
# yum downgrade python-repoze-who-friendlyform-1.0-0.3.b3.el6 Loaded plugins: product-id, refresh-packagekit, rhnplugin, subscription-manager Updating Red Hat repositories. Setting up Downgrade Process Resolving Dependencies --> Running transaction check ---> Package python-repoze-who-friendlyform.noarch 0:1.0-0.3.b3.el6 will be a downgrade ---> Package python-repoze-who-friendlyform.noarch 0:1.0.8-2.el6 will be erased --> Finished Dependency Resolution Dependencies Resolved ==================================================================================================================================== Package Arch Version Repository Size ==================================================================================================================================== Downgrading: python-repoze-who-friendlyform noarch 1.0-0.3.b3.el6 rhel-x86_64-server-ha-6 13 k Transaction Summary ==================================================================================================================================== Downgrade 1 Package(s) Total download size: 13 k Is this ok [y/N]: y Downloading Packages: python-repoze-who-friendlyform-1.0-0.3.b3.el6.noarch.rpm | 13 kB 00:00 Running rpm_check_debug Running Transaction Test Transaction Test Succeeded Running Transaction Installing : python-repoze-who-friendlyform-1.0-0.3.b3.el6.noarch 1/2 Cleanup : python-repoze-who-friendlyform-1.0.8-2.el6.noarch 2/2 duration: 225(ms) Installed products updated. Removed: python-repoze-who-friendlyform.noarch 0:1.0.8-2.el6 Installed: python-repoze-who-friendlyform.noarch 0:1.0-0.3.b3.el6 Complete!
-
To prevent this package being accidentally updated again, one of the following two actions can be taken:
- Remove the EPEL repository from the system. This will prevent the system from accessing any EPEL packages which may not be desirable.
- Add an "excludes" line to /etc/yum/yum.conf so that the package is ignored by yum when looking for upgrades:
# cat /etc/yum.conf [main] cachedir=/var/cache/yum/$basearch/$releasever keepcache=0 debuglevel=2 logfile=/var/log/yum.log exactarch=1 obsoletes=1 gpgcheck=1 plugins=1 installonly_limit=3 exclude=python-repoze-who-friendlyform
- Downgrade the package version to python-repoze-who-friendlyform-1.0-0.3.b3.el6:
- An alternative is to remove luci and python-repoze-who-friendlyform (and all dependencies) from the system, then disable EPEL and reinstall luci.
- Remove luci and python-repoze-who-friendlyform:
# yum remove luci python-repoze-who-friendlyform
-
Disable EPEL repository by removing epel-release, by disabling the repository, or just temporarily disabling the repository for this command:
# yum remove epel-release # yum install luci or: # vi /etc/yum.repos.d/epel.repo (change all "enabled=1" to "enabled=0") # yum install luci or: # yum install luci --disablerepo=epel
- Remove luci and python-repoze-who-friendlyform:
Root Cause
- If the version is not specificed, yum will always pull in the latest available version of packages.
- In this case, the python-repoze-info-friendlyform package provided by epel is version 1.0.8-2.el6, whereas the RHEL6 version is 1.0-0.3.b3.el6. This means yum will believe the epel version is an upgrade and attempt to upgrade it.
- python-repoze-who-friendlyform package provided by EPEL cannot enforce RPM-require "python-webob >= 0.9.7" as it should according to native Python package requirement because:
- No such package cannot occur in EPEL as it would collide with base RHEL 6 package
- RHEL 6 does not provide python-webob in a sufficient version (0.9.6.1)
- As a result, the EPEL version of python-info-friendlyform does not require python-webob >= 0.9.7 and it can therefore be installed successfully.
- When luci is starting, python discovers a verstion conflict between python-webob and python-repoze-who-friendlyform and throws an exception:
pkg_resources.VersionConflict: (WebOb 0.9.6.1 (/usr/lib/python2.6/site-packages), Requirement.parse('WebOb>=0.9.7'))
Diagnostic Steps
- Attempt to start luci and find if it fails:
# service luci start Start luci... [ OK ] Point your web browser to https://127.0.0.1:8084 (or equivalent) to access luci # service luci status No PID file /var/run/luci/luci.pid
-
Check versions of luci, python-webob and python-repoze-who-friendlyform:
# rpm -q luci python-webob python-repoze-who-friendlyform luci-0.23.0-13.el6.x86_64 python-webob-0.9.6.1-3.el6.noarch python-repoze-who-friendlyform-1.0.8-2.el6.noarch
-
Check /var/log/luci/luci.log for a backtrace similar to the following:
Traceback (most recent call last): File "/usr/bin/paster", line 9, in <module> load_entry_point('PasteScript==1.7.3', 'console_scripts', 'paster')() File "/usr/lib/python2.6/site-packages/paste/script/command.py", line 84, in run invoke(command, command_name, options, args[1:]) File "/usr/lib/python2.6/site-packages/paste/script/command.py", line 123, in invoke exit_code = runner.run(args) File "/usr/lib/python2.6/site-packages/paste/script/command.py", line 218, in run result = self.command() File "/usr/lib/python2.6/site-packages/paste/script/serve.py", line 276, in command relative_to=base, global_conf=vars) File "/usr/lib/python2.6/site-packages/paste/script/serve.py", line 313, in loadapp **kw) File "/usr/lib/python2.6/site-packages/paste/deploy/loadwsgi.py", line 204, in loadapp return loadobj(APP, uri, name=name, **kw) File "/usr/lib/python2.6/site-packages/paste/deploy/loadwsgi.py", line 224, in loadobj global_conf=global_conf) File "/usr/lib/python2.6/site-packages/paste/deploy/loadwsgi.py", line 248, in loadcontext global_conf=global_conf) File "/usr/lib/python2.6/site-packages/paste/deploy/loadwsgi.py", line 278, in _loadconfig return loader.get_context(object_type, name, global_conf) File "/usr/lib/python2.6/site-packages/paste/deploy/loadwsgi.py", line 409, in get_context section) File "/usr/lib/python2.6/site-packages/paste/deploy/loadwsgi.py", line 431, in _context_from_use object_type, name=use, global_conf=global_conf) File "/usr/lib/python2.6/site-packages/paste/deploy/loadwsgi.py", line 361, in get_context global_conf=global_conf) File "/usr/lib/python2.6/site-packages/paste/deploy/loadwsgi.py", line 248, in loadcontext global_conf=global_conf) File "/usr/lib/python2.6/site-packages/paste/deploy/loadwsgi.py", line 278, in _loadconfig return loader.get_context(object_type, name, global_conf) File "/usr/lib/python2.6/site-packages/paste/deploy/loadwsgi.py", line 409, in get_context section) File "/usr/lib/python2.6/site-packages/paste/deploy/loadwsgi.py", line 431, in _context_from_use object_type, name=use, global_conf=global_conf) File "/usr/lib/python2.6/site-packages/paste/deploy/loadwsgi.py", line 361, in get_context global_conf=global_conf) File "/usr/lib/python2.6/site-packages/paste/deploy/loadwsgi.py", line 248, in loadcontext global_conf=global_conf) File "/usr/lib/python2.6/site-packages/paste/deploy/loadwsgi.py", line 278, in _loadconfig return loader.get_context(object_type, name, global_conf) File "/usr/lib/python2.6/site-packages/paste/deploy/loadwsgi.py", line 409, in get_context section) File "/usr/lib/python2.6/site-packages/paste/deploy/loadwsgi.py", line 431, in _context_from_use object_type, name=use, global_conf=global_conf) File "/usr/lib/python2.6/site-packages/paste/deploy/loadwsgi.py", line 361, in get_context global_conf=global_conf) File "/usr/lib/python2.6/site-packages/paste/deploy/loadwsgi.py", line 248, in loadcontext global_conf=global_conf) File "/usr/lib/python2.6/site-packages/paste/deploy/loadwsgi.py", line 285, in _loadegg return loader.get_context(object_type, name, global_conf) File "/usr/lib/python2.6/site-packages/paste/deploy/loadwsgi.py", line 561, in get_context object_type, name=name) File "/usr/lib/python2.6/site-packages/paste/deploy/loadwsgi.py", line 581, in find_egg_entry_point pkg_resources.require(self.spec) File "/usr/lib/python2.6/site-packages/pkg_resources.py", line 648, in require needed = self.resolve(parse_requirements(requirements)) File "/usr/lib/python2.6/site-packages/pkg_resources.py", line 550, in resolve raise VersionConflict(dist,req) # XXX put more info here pkg_resources.VersionConflict: (WebOb 0.9.6.1 (/usr/lib/python2.6/site-packages), Requirement.parse('WebOb>=0.9.7')) Removing PID file /var/run/luci/luci.pid
Subscriber exclusive content
A Red Hat subscription provides unlimited access to our knowledgebase, tools, and much more.