Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with HTTPS or Subversion.

Download ZIP

Loading…

pip does not preserve permissions when unpacking (Permission denied running ./configure) #317

Closed
duncf opened this Issue · 18 comments

15 participants

duncf Jannis Leidel Nick Holden Andrew Smith Andrew Cutler JLewis604 Rob Smith Curtis MacDuff Thor Daniel Holth jenc88 Andrew Grigorev Marcus Smith Marc Abramowitz Remi Rampin
duncf

"pip install ctypes" fails on Python 2.4 because pip does not properly apply the executable file permissions to ./source/libffi/configure when it unpacks the tarball (ctypes-1.0.2.tar.gz).

The ctypes setup.py executes this configure script directly, and this fails with permission denied. As a work around, it's possible to modify the ctypes setup.py to execute "sh /path/to/configure" instead of /path/to/configure

To reproduce this:

  • Build ctypes manually:

    • Download and unpack the ctypes tarball manually.

    • Note that source/libffi/configure has 755 permissions.

    • Run setup.py build manually. Note that it passes.

  • Let pip do the first step:

    • Do "pip install --no-install ctypes"

    • Verify that pip has unpacked /ctypes/source/libffi/configure with 644 permissions

    • Run setup.py build. Note that it fails.

This is related (but different) than issue #288, which specifically refers to how symlinks are handled when unpacking a tarball. I opened this issue to ensure that it didn't get lost.

I have not tested how permissions are handled with zip files.

Jannis Leidel
Owner

I wonder if the untar_file function could be compared with setuptools' setuptools.archive_util.unpack_tarfile function. It seems to use a different function of the tarfile module, extractfile instead of _extract_member.

Nick Holden

Is there a workaround for this, or a fix planned?

Andrew Smith

@nickpholden

  1. pip install --no-install ctypes
  2. cd /path/from/pip/error (should end in something like build/ctypes/source/libffi/configure just remove the configure part)
  3. chmod +x configure
  4. pip install ctypes

Just tried it for myself and it seems to have worked.

Andrew Cutler

This is not just Python 2.4. I just ran into this twice with Python 2.6.

JLewis604

Issue can be resolved by simply changing folder permissions to that of the user you are installing with.

EX: chown -R [user] build/ctypes

This may cause additional issues, but it seemed to resolve a similar issue i was having with pyev

Rob Smith

I also ran into this with python 2.7.

Curtis MacDuff

Ran into this problem with Python 2.5 and pyev. Are you guys going to fix this? I shouldn't have to account for pip failing to do what its designed to do in my scripts. That is dumb.

Thor

Having this problem with Python 2.7. If there's a fix, I'd love to hear about it.

jenc88

Was trying to install ctypes in python 2.4 and EspadaV8's comment worked, thanks!

Andrew Grigorev

Very bad behaviour. Gived up to build a .deb package for Djblets with pip. Migrated to easy_install.

Marcus Smith
Owner

for anyone following this, feel free to try the branch in #1146. hoping to include this in pip-1.4.2 shortly.

Marcus Smith
Owner

#1146 merged. closing this issue.

although the summary of this issue is about preserving permissions generally, the description and comments relate to preserving execute permissions, which #1146 handles.

Marcus Smith qwcode closed this
Marcus Smith
Owner

set to be released in 1.4.2 patch release

Marc Abramowitz

Any ETA on the 1.4.2 patch release?

(This issue is biting me with testing something that uses pyev in tox. Unfortunately, it will require a new version of pip AND then for tox to bundle the new version of pip in)

Marcus Smith
Owner

with 1.5 betas due to come out in ~2wks, 1.4.2 is very unlikley at this point unless that gets delayed. sorry to mislead.

Remi Rampin

I ran into this today trying to install ctypes on Debian (pip is 1.5.5).

Running setup.py install for ctypes
    env: /home/remram44/vtenv/build/ctypes/source/libffi/configure: Permission denied
    Configuring static FFI library:
    cd build/temp.linux-i686-2.7/libffi && env CFLAGS='' '/home/remram44/vtenv/build/ctypes/source/libffi/configure'
    Failed

What is going on?

Marcus Smith
Owner

I'm on ubuntu, and it works with 1.5.5 https://gist.github.com/qwcode/569afafab50e35bdd0d1

what's going on most likely is that '/home/remram44/vtenv/build/ctypes/source/libffi/configure' is not executable. as for why? not sure. be sure you're really using 1.5.5

Alan Franzoni alanfranz referenced this issue in alanfranz/docker-rpm-builder
Closed

dockerscripts not executable #4

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Something went wrong with that request. Please try again.