Problems using import --link
Mike Bonnet
mikeb at redhat.com
Wed Jul 23 20:46:50 UTC 2008
On Wed, 2008-07-23 at 16:33 -0400, Naveen Gavini wrote:
> Hello all,
>
> We are trying to bootstrap our new koji setup and when we attempt to
> import using --link we get the error below.
> The packages that we are attempting to import are on the hub and have
> been places in /mnt/koji/import (same volume).
> The ownership on the packages is daemon (same as /mnt/koji/) - not sure
> if this matters.
>
>
> sudo koji import --link /mnt/koji/alsa-lib-1.0.14-1.rc4.el5.src.rpm
>
> Linking rpm to:
> /mnt/koji/work/cli-import/1216842099.8955669.PLyYLFZS/alsa-lib-1.0.14-1.rc4.el5.src.rpm
>
> importing alsa-lib-1.0.14-1.rc4.el5.src.rpm... Fault: <Fault 1:
> 'Traceback (most recent call last):\n File
> "/usr/share/koji-hub/kojixmlrpc.py", line 86, in _marshaled_dispatch\n
> response = self._dispatch(method, params)\n File
> "/usr/share/koji-hub/kojixmlrpc.py", line 156, in _dispatch\n ret =
> func(*params,**opts)\n File "/usr/share/koji-hub/kojihub.py", line 4110,
> in importRPM\n import_rpm_file(fn,rpminfo[\'build\'],rpminfo)\n File
> "/usr/share/koji-hub/kojihub.py", line 2991, in import_rpm_file\n
> os.rename(fn,final_path)\nOSError: [Errno 13] Permission denied\nLocals
> by frame, innermost last\nFrame HandlerDispatch in
> /usr/lib64/python2.4/site-packages/mod_python/importer.py at line 1537\n
> req = <mp_request object at 0x2b3497cbd410>\n parent = None\n config =
> {\'PythonAutoReload\': \'0\', \'PythonDebug\': \'1\'}\n self =
> <mod_python.apache.CallBack instance at 0x2b3497cb3710>\n cache = <ERROR
> WHILE PRINTING VALUE>\n default_handler = handler\n phase =
> PythonHandler\n handler = kojixmlrpc\n hlist =
> {\'handler\':\'kojixmlrpc\',\'directory\':\'/usr/share/koji-hub/\',\'silent\':0}\n
> aborted = False\n directory = /usr/share/koji-hub/\n root =
> /usr/share/koji-hub/\n options = {\'KojiTraceback\': \'extended\',
> \'KojiDebug\': \'On\', \'EmailDomain\': \'192.168.226.61\',
> \'KojiWebURL\': \'http://192.168.226.61/koji\
> <http://192.168.226.61/koji%5C>', \'LoginCreatesUser\': \'Off\',
> \'ProxyDNs\': \'/C=US/ST=New Jersey/O=Open System
> Solutions/CN=192.168.226.61\', \'DNUsernameComponent\': \'CN\',
> \'KojiDir\': \'/mnt/koji\', \'DBHost\': \'localhost\', \'DBUser\':
> \'koji\', \'DBName\': \'koji\'}\n result = 500\nFrame _process_target in
> /usr/lib64/python2.4/site-packages/mod_python/importer.py at line 1229\n
> req = <mp_request object at 0x2b3497cbd410>\n silent = 0\n default =
> handler\n handler = kojixmlrpc\n object = <function handler at
> 0x2b34997152a8>\n module = <module
> \'_mp_df1c13776110deb1e020020636703560\' from
> \'/usr/share/koji-hub/kojixmlrpc.py\'>\n directory =
> /usr/share/koji-hub/\n parts = [\'kojixmlrpc\']\n result = -1\n
> object_str = handler\n expected = [-1, 0]\n module_name = kojixmlrpc\n
> path = [\'/usr/share/koji-hub/\']\n config = {\'PythonAutoReload\':
> \'0\', \'PythonDebug\': \'1\'}\n arg = <mp_request object at
> 0x2b3497cbd410>\nFrame _execute_target in
> /usr/lib64/python2.4/site-packages/mod_python/importer.py at line 1128\n
> one_process = False\n object = <function handler at 0x2b34997152a8>\n
> req = <mp_request object at 0x2b3497cbd410>\n pdb_debug = 0\n arg =
> <mp_request object at 0x2b3497cbd410>\n config = {\'PythonAutoReload\':
> \'0\', \'PythonDebug\': \'1\'}\nFrame handler in
> /usr/share/koji-hub/kojixmlrpc.py at line 291\n functions =
> <_mp_4e76479ee7b716cdbf29397025ee2356.RootExports object at
> 0x2b349c6f08d0>\n profiling = False\n h =
> <_mp_df1c13776110deb1e020020636703560.ModXMLRPCRequestHandler object at
> 0x2b349c6f0d10>\n req = <mp_request object at 0x2b3497cbd410>\n
> hostFunctions = <_mp_4e76479ee7b716cdbf29397025ee2356.HostExports object
> at 0x2b349c6f0d90>\n opts = {\'KojiTraceback\': \'extended\',
> \'KojiDebug\': \'On\', \'EmailDomain\': \'192.168.226.61\',
> \'KojiWebURL\': \'http://192.168.226.61/koji\
> <http://192.168.226.61/koji%5C>', \'LoginCreatesUser\': \'Off\',
> \'ProxyDNs\': \'/C=US/ST=New Jersey/O=Open System
> Solutions/CN=192.168.226.61\', \'DNUsernameComponent\': \'CN\',
> \'KojiDir\': \'/mnt/koji\', \'DBHost\': \'localhost\', \'DBUser\':
> \'koji\', \'DBName\': \'koji\'}\nFrame handle_request in
> /usr/share/koji-hub/kojixmlrpc.py at line 242\n self =
> <_mp_df1c13776110deb1e020020636703560.ModXMLRPCRequestHandler object at
> 0x2b349c6f0d10>\n req = <mp_request object at 0x2b3497cbd410>\nFrame
> _marshaled_dispatch in /usr/share/koji-hub/kojixmlrpc.py at line 112\n e
> = [Errno 13] Permission denied\n self =
> <_mp_df1c13776110deb1e020020636703560.ModXMLRPCRequestHandler object at
> 0x2b349c6f0d10>\n e_class = exceptions.OSError\n start = 1216842100.35\n
> faultCode = 1\n params = <ERROR WHILE PRINTING VALUE>\n tb_str =
> Traceback (most recent call last):\n File
> "/usr/share/koji-hub/kojixmlrpc.py", line 86, in _marshaled_dispatch\n
> response = self._dispatch(method, params)\n File
> "/usr/share/koji-hub/kojixmlrpc.py", line 156, in _dispatch\n ret =
> func(*params,**opts)\n File "/usr/share/koji-hub/kojihub.py", line 4110,
> in importRPM\n import_rpm_file(fn,rpminfo[\'build\'],rpminfo)\n File
> "/usr/share/koji-hub/kojihub.py", line 2991, in import_rpm_file\n
> os.rename(fn,final_path)\nOSError: [Errno 13] Permission denied\n\n
> tb_type = extended\n data = <?xml
> version=\'1.0\'?>\n<methodCall>\n<methodName>importRPM</methodName>\n<params>\n<param>\n<value><string>cli-import/1216842099.8955669.PLyYLFZS</string></value>\n</param>\n<param>\n<value><string>alsa-lib-1.0.14-1.rc4.el5.src.rpm</string></value>\n</param>\n</params>\n</methodCall>\n\n
> method = importRPM\nFrame _dispatch in /usr/share/koji-hub/kojixmlrpc.py
> at line 156\n self =
> <_mp_df1c13776110deb1e020020636703560.ModXMLRPCRequestHandler object at
> 0x2b349c6f0d10>\n start = 1216842100.38\n params = <ERROR WHILE PRINTING
> VALUE>\n func = <bound method RootExports.importRPM of
> <_mp_4e76479ee7b716cdbf29397025ee2356.RootExports object at
> 0x2b349c6f08d0>>\n method = importRPM\n opts = {}\nFrame importRPM in
> /usr/share/koji-hub/kojihub.py at line 4110\n uploadpath =
> /mnt/koji/work\n basename = alsa-lib-1.0.14-1.rc4.el5.src.rpm\n rpminfo
> = {\'build_id\': 20L, \'brootid\': None, \'sourcepackage\': 1, \'name\':
> \'alsa-lib\', \'buildtime\': 1194704966, \'id\': 28L, \'epoch\': None,
> \'version\': \'1.0.14\', \'build\': {\'sourcepackage\': 1, \'name\':
> \'alsa-lib\', \'buildtime\': 1194704966, \'epoch\': None, \'version\':
> \'1.0.14\', \'release\': \'1.rc4.el5\', \'sourcerpm\': [], \'arch\':
> \'src\', \'id\': 20L}, \'release\': \'1.rc4.el5\', \'sourcerpm\': [],
> \'arch\': \'src\', \'payloadhash\':
> \'8fa4adb63144d52fc1ceb29f6022b7cb\', \'size\': 796510}\n path =
> cli-import/1216842099.8955669.PLyYLFZS\n self =
> <_mp_4e76479ee7b716cdbf29397025ee2356.RootExports object at
> 0x2b349c6f08d0>\n fn =
> /mnt/koji/work/cli-import/1216842099.8955669.PLyYLFZS/alsa-lib-1.0.14-1.rc4.el5.src.rpm\nFrame
> import_rpm_file in /usr/share/koji-hub/kojihub.py at line 2991\n
> final_path =
> /mnt/koji/packages/alsa-lib/1.0.14/1.rc4.el5/src/alsa-lib-1.0.14-1.rc4.el5.src.rpm\n
> rpminfo = {\'build_id\': 20L, \'brootid\': None, \'sourcepackage\': 1,
> \'name\': \'alsa-lib\', \'buildtime\': 1194704966, \'id\': 28L,
> \'epoch\': None, \'version\': \'1.0.14\', \'build\': {\'sourcepackage\':
> 1, \'name\': \'alsa-lib\', \'buildtime\': 1194704966, \'epoch\': None,
> \'version\': \'1.0.14\', \'release\': \'1.rc4.el5\', \'sourcerpm\': [],
> \'arch\': \'src\', \'id\': 20L}, \'release\': \'1.rc4.el5\',
> \'sourcerpm\': [], \'arch\': \'src\', \'payloadhash\':
> \'8fa4adb63144d52fc1ceb29f6022b7cb\', \'size\': 796510}\n buildinfo =
> {\'sourcepackage\': 1, \'name\': \'alsa-lib\', \'buildtime\':
> 1194704966, \'epoch\': None, \'version\': \'1.0.14\', \'release\':
> \'1.rc4.el5\', \'sourcerpm\': [], \'arch\': \'src\', \'id\': 20L}\n fn =
> /mnt/koji/work/cli-import/1216842099.8955669.PLyYLFZS/alsa-lib-1.0.14-1.rc4.el5.src.rpm\n'>
Embedded in that horribly mangled stack trace was the root of the
problem:
File "/usr/share/koji-hub/kojihub.py", line 2991, in import_rpm_file
os.rename(fn,final_path)
OSError: [Errno 13] Permission denied
The problem is that "koji import --link", while very useful, is kind of
a hack. In order for it to work, is assumes your httpd is running as
uid 48 (the "apache" user on Fedora) and chown's the directory
under /mnt/koji/work/cli-import to uid 48 so httpd can rename() the file
from that dir to it's final location under /mnt/koji/packages
successfully. In your case, httpd is running under a different uid, so
that rename fails.
To fix this, I would do 2 things:
1. In /usr/bin/koji, change the last 2 numbers in the line
os.chown(os.path.dirname(dst), 48, 48) #XXX - hack
to the uid of the "daemon" user (whatever user httpd runs as).
2. Make sure all packages under /mnt/koji/import are owned by the daemon
user before starting the import.
Give that a try, and let me know if you're still running in to errors.
More information about the Fedora-buildsys-list
mailing list