./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
> --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.
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.
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?)
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
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)
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