Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

make install DESTDIR

280 views
Skip to first unread message

aj

unread,
Aug 20, 2010, 7:21:15 PM8/20/10
to
I am trying to install python with make install DESTDIR=/home/blah

./python -E ./setup.py install \
--prefix=/ \
--install-scripts=//bin \
--install-platlib=//lib/python2.6/lib-dynload \
--root=//home/blah
running install
running build
running build_ext
INFO: Can't locate Tcl/Tk libs and/or headers

Failed to find the necessary bits to build these modules:
_tkinter bsddb185 dl
imageop sunaudiodev
To find the necessary bits, look in setup.py in detect_modules() for
the module's name.

running build_scripts
running install_lib
creating /lib/python2.6
error: could not create '/lib/python2.6': Permission denied
make: *** [sharedinstall] Error 1

Thomas Jollans

unread,
Aug 20, 2010, 7:39:47 PM8/20/10
to pytho...@python.org
On Saturday 21 August 2010, it occurred to aj to exclaim:

> I am trying to install python with make install DESTDIR=/home/blah
>

> --prefix=/

...

> creating /lib/python2.6
> error: could not create '/lib/python2.6': Permission denied
> make: *** [sharedinstall] Error 1

Obviously, the flags you specified didn't have the effect you intended.

--prefix=$HOME

should do the trick.

aj

unread,
Aug 20, 2010, 9:12:16 PM8/20/10
to

The whole point of DESTDIR is that it should be prepended to all
installed paths, but the binaries should not contain any references to
it.DESTDIR is commonly used by packagers, for example, to allow
installation without superuser privileges.

Thomas Jollans

unread,
Aug 21, 2010, 7:02:55 AM8/21/10
to pytho...@python.org

Sorry, that feature slipped my mind.

So, are you running
$ make install DESTDIR=/home/foo/bar

or are you trying to directly run setup.py? I just tried and use make worked
for me. (though I was in a Python 3.2 dev source tree, not 2.6 -- maybe this
was a bug that has been fixed?)

Martin v. Loewis

unread,
Aug 21, 2010, 7:43:48 AM8/21/10
to aj
> The whole point of DESTDIR is that it should be prepended to all
> installed paths, but the binaries should not contain any references to
> it.DESTDIR is commonly used by packagers, for example, to allow
> installation without superuser privileges.

So what is the point of your messages? Do you want to report a problem?
Are you asking for help? Do you want to vent frustration?

Regards,
Martin

aj

unread,
Aug 23, 2010, 1:43:56 PM8/23/10
to
Thanks for reply Thomas. I am running make install DESTDIR=/home/foo/
bar.
Martin- Asking for help :)

Martin v. Loewis

unread,
Aug 23, 2010, 5:23:09 PM8/23/10
to aj
> Martin- Asking for help :)

Ok. Please try the patch below.

If this works, please make a bug report.

Regards,
Martin

Index: Lib/distutils/util.py
===================================================================
--- Lib/distutils/util.py (Revision 84197)
+++ Lib/distutils/util.py (Arbeitskopie)
@@ -220,7 +220,7 @@
if not os.path.isabs(pathname):
return os.path.join(new_root, pathname)
else:
- return os.path.join(new_root, pathname[1:])
+ return os.path.join(new_root, pathname.lstrip('/'))

elif os.name == 'nt':
(drive, path) = os.path.splitdrive(pathname)

aj

unread,
Aug 23, 2010, 9:26:05 PM8/23/10
to

Thanks Martin. That seems to work. I will file a bug report. Also, can
you describe what the problem was?

Martin v. Loewis

unread,
Aug 24, 2010, 1:52:01 AM8/24/10
to aj
> Thanks Martin. That seems to work. I will file a bug report. Also, can
> you describe what the problem was?

If you have / as the prefix, you get two leading slashes, e.g. for
//lib/python2.x. Any other prefix would have given you only a single
slash: e.g. if it had been /usr, then you end up with /usr/lib/python2.x.

Now, the code strips the first character to make it a relative path name
(so that join can be used), which fails to work correctly if there are
two leading slashes.

HTH,
Martin

aj

unread,
Aug 24, 2010, 3:21:31 PM8/24/10
to
Thanks a lot for the help Martin. I have created http://bugs.python.org/issue9674
0 new messages