#2834 closed bug (WontFix)
PYTHON_EGG_CACHE not set on FreeBSD
| Reported by: | kendokan | Owned by: | |
|---|---|---|---|
| Priority: | minor | Milestone: | not applicable |
| Component: | Web UI | Version: | 1.3.12 |
| Keywords: | web-ui plugins label freebsd | Cc: |
Description
Plugins fail to load in web-ui on FreeBSD package "deluge-1.3.12,1" due to an inability to write to the default Python egg cache directory. This directory does not exist in the default installation, nor is there a documented dependency. Most visibly for me, this breaks labels in web-ui; you can't create them or assign torrents to them.
Creating a directory (I used "/usr/local/etc/deluge/.python-eggs") and adding export PYTHON_EGG_CACHE="/usr/local/etc/deluge/.python-eggs" to /usr/local/etc/rc.d/deluge_web resolved the issue.
[ERROR ] 10:23:49 pluginmanagerbase:146 Unable to instantiate plugin!
[ERROR ] 10:23:49 pluginmanagerbase:147 Can't extract file(s) to egg cache
The following error occurred while trying to extract file(s) to the Python egg
cache:
[Errno 13] Permission denied: '/.python-eggs'
The Python egg cache directory is currently set to:
/.python-eggs
Perhaps your account does not have write access to this directory? You can
change the cache directory by setting the PYTHON_EGG_CACHE environment
variable to point to an accessible directory.
Traceback (most recent call last):
File "/usr/local/lib/python2.7/site-packages/deluge/pluginmanagerbase.py", line 144, in enable_plugin
instance = cls(plugin_name.replace("-", "_"))
File "/usr/local/lib/python2.7/site-packages/deluge/plugins/Extractor-0.4-py2.7.egg/extractor/__init__.py", line 56, in __init__
from webui import WebUI as _plugin_cls
File "/usr/local/lib/python2.7/site-packages/deluge/plugins/Extractor-0.4-py2.7.egg/extractor/webui.py", line 47, in <module>
File "/usr/local/lib/python2.7/site-packages/deluge/plugins/Extractor-0.4-py2.7.egg/extractor/webui.py", line 54, in WebUI
File "/usr/local/lib/python2.7/site-packages/deluge/plugins/Extractor-0.4-py2.7.egg/extractor/common.py", line 38, in get_resource
return pkg_resources.resource_filename("extractor", os.path.join("data", filename))
File "/usr/local/lib/python2.7/site-packages/pkg_resources/__init__.py", line 1150, in resource_filename
self, resource_name
File "/usr/local/lib/python2.7/site-packages/pkg_resources/__init__.py", line 1863, in get_resource_filename
return self._extract_resource(manager, zip_path)
File "/usr/local/lib/python2.7/site-packages/pkg_resources/__init__.py", line 1892, in _extract_resource
self.egg_name, self._parts(zip_path)
File "/usr/local/lib/python2.7/site-packages/pkg_resources/__init__.py", line 1217, in get_cache_path
self.extraction_error()
File "/usr/local/lib/python2.7/site-packages/pkg_resources/__init__.py", line 1197, in extraction_error
raise err
ExtractionError: Can't extract file(s) to egg cache
Change History (5)
comment:1 by , 10 years ago
| Milestone: | needs verified → not applicable |
|---|---|
| Resolution: | → WontFix |
| Status: | new → closed |
comment:2 by , 10 years ago
Since it is a required dependency, shouldn't the init script at least check that the egg cache directory is writable and fail if it isn't? Also, you seem to be addressing this issue for at least OpenSUSE, so why not FreeBSD? http://dev.deluge-torrent.org/wiki/UserGuide/InitScript/OpenSUSE
comment:3 by , 10 years ago
That script in particular were user contributed and are obsolete, OpenSUSE uses the generic systemd scripts. Setting up python environment variables in an init script doesn't seem correct at all.
You are the only FreeBSD user (in fact any user) to have reported this issue so I would check with FreeBSD what is the actual correct setup as it is a dependency of Python not Deluge.
comment:4 by , 10 years ago
I found this reference from a few years ago at http://forums.nas4free.org/viewtopic.php?p=51023#p51023, along with a handful of other posts around the 'net referencing plugin troubles without clear solutions. But, I do recognize your assessment that setting the environment is outside your scope.
I am now instead suggesting deluge_web perform a simple validation check of the environment before continuing. Without at least that, the web-ui will happily start, but plugins will be broken.
These three lines could be inserted into the init script in the deluge_web_prestart() section:
if [ ! -w "${PYTHON_EGG_CACHE}" ] ; then
err 1 "Python egg cache directory does not exist or is not writable"
fi
comment:5 by , 10 years ago
Eh, ok I realize my solution is a bad idea, disregard. Would still be great if it failed more visibly, but perhaps this post will eventually help others anyway. Thanks much for taking a look.



Sorry but that is not to do with Deluge, it's a system python setup issue so nothing for us to fix.