easy_install fails with tarfile.ExtractError: could not change mode
Hi, I've found that for easy_install fails to install zc.recipe.testrunner for python 2.3 on OS X. % easy_install-2.3 zc.recipe.testrunner Searching for zc.recipe.testrunner Reading http://cheeseshop.python.org/pypi/zc.recipe.testrunner/ Reading http://svn.zope.org/zc.buildout Reading http://cheeseshop.python.org/pypi/zc.recipe.testrunner/1.0.0b6 Best match: zc.recipe.testrunner 1.0.0b6 Downloading http://cheeseshop.python.org/packages/source/z/zc.recipe.testrunner/zc.recip... Processing zc.recipe.testrunner-1.0.0b6.tar.gz Traceback (most recent call last): File "/opt/local/bin/easy_install-2.3", line 7, in ? sys.exit( File "/opt/local/lib/python2.3/site-packages/setuptools-0.6c5-py2.3.egg/setuptools/command/easy_install.py", line 1670, in main with_ei_usage(lambda: File "/opt/local/lib/python2.3/site-packages/setuptools-0.6c5-py2.3.egg/setuptools/command/easy_install.py", line 1659, in with_ei_usage return f() File "/opt/local/lib/python2.3/site-packages/setuptools-0.6c5-py2.3.egg/setuptools/command/easy_install.py", line 1674, in <lambda> distclass=DistributionWithoutHelpCommands, **kw File "/opt/local/lib/python2.3/distutils/core.py", line 149, in setup dist.run_commands() File "/opt/local/lib/python2.3/distutils/dist.py", line 907, in run_commands self.run_command(cmd) File "/opt/local/lib/python2.3/distutils/dist.py", line 927, in run_command cmd_obj.run() File "/opt/local/lib/python2.3/site-packages/setuptools-0.6c5-py2.3.egg/setuptools/command/easy_install.py", line 211, in run self.easy_install(spec, not self.no_deps) File "/opt/local/lib/python2.3/site-packages/setuptools-0.6c5-py2.3.egg/setuptools/command/easy_install.py", line 446, in easy_install return self.install_item(spec, dist.location, tmpdir, deps) File "/opt/local/lib/python2.3/site-packages/setuptools-0.6c5-py2.3.egg/setuptools/command/easy_install.py", line 471, in install_item dists = self.install_eggs(spec, download, tmpdir) File "/opt/local/lib/python2.3/site-packages/setuptools-0.6c5-py2.3.egg/setuptools/command/easy_install.py", line 626, in install_eggs unpack_archive(dist_filename, tmpdir, self.unpack_progress) File "/opt/local/lib/python2.3/site-packages/setuptools-0.6c5-py2.3.egg/setuptools/archive_util.py", line 67, in unpack_archive driver(filename, extract_dir, progress_filter) File "/opt/local/lib/python2.3/site-packages/setuptools-0.6c5-py2.3.egg/setuptools/archive_util.py", line 192, in unpack_tarfile tarobj._extract_member(member,dst) # XXX Ugh File "/opt/local/lib/python2.3/tarfile.py", line 1414, in _extract_member self.chmod(tarinfo, targetpath) File "/opt/local/lib/python2.3/tarfile.py", line 1532, in chmod raise ExtractError, "could not change mode" tarfile.ExtractError: could not change mode zsh: 1148 exit 1 easy_install-2.3 zc.recipe.testrunner The root of the problem seems to a file mode with the set-group-ID-on-execution bit set in the source distribution of zc.recipe.testrunner. Here is a demonstration of that:
import os import tempfile tmp_dir = tempfile.mkdtemp(prefix="easy_install-") example_dir = os.path.join(tmp_dir, 'example') os.mkdir(example_dir) os.chmod(example_dir, 02755) Traceback (most recent call last): File "<stdin>", line 1, in ? OSError: [Errno 1] Operation not permitted: '/tmp/easy_install-UlgpCH/example'
I see the same failing behaviour for handling of tempfile and chmod for Python 2.4 on OS X. However there is an explicit egg for python 2.4: http://cheeseshop.python.org/pypi/zc.recipe.testrunner/1.0.0b6#download which does not have set-group-ID-on-execution bit set for any of the archive members. So the egg easy installs just fine in that case. And I don't see any such problems using FreeBSD. Michael
On Apr 13, 2007, at 9:33 PM, Michael Dunstan wrote:
I've found that for easy_install fails to install zc.recipe.testrunner for python 2.3 on OS X.
...
The root of the problem seems to a file mode with the set-group-ID-on-execution bit set in the source distribution of zc.recipe.testrunner.
Weird. Thanks for chasing this down. I've uploaded a new release without that bit set. Jim -- Jim Fulton mailto:jim@zope.com Python Powered! CTO (540) 361-1714 http://www.python.org Zope Corporation http://www.zope.com http://www.zope.org
participants (2)
-
Jim Fulton
-
Michael Dunstan