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 of over 48,000 articles and solutions.
Welcome! Check out the Getting Started with Red Hat page for quick tours and guides for common tasks.
