Luci fails to start via init scripts on Red Hat Enterprise Linux 6?

Solution Verified - Updated -

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
      

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:

      1. Remove the EPEL repository from the system.  This will prevent the system from accessing any EPEL packages which may not be desirable.
      2. 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
        
  • 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
      

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:
    1. No such package cannot occur in EPEL as it would collide with base    RHEL 6 package
    2. 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.

Current Customers and Partners

Log in for full access

Log In

New to Red Hat?

Learn more about Red Hat subscriptions

Using a Red Hat product through a public cloud?

How to access this content