2013-10-03 40 views
2

我想在RedHat 5安装TCL/TK作为一个普通用户:安装TCL/TK无根

TCL_VERSION=8.6.1 
BASE_PATH=/myownpath 

tar -xzf tcl${TCL_VERSION}-src.tar.gz 
cd tcl${TCL_VERSION}/unix 
./configure \ 
    --prefix=${BASE_PATH} \ 
    --without-tzdata \ 
    --enable-64bit 
make -j9 
sed -e "[email protected]^\(TCL_SRC_DIR='\).*@\1${BASE_PATH}'@" \ 
    -e "/TCL_B/[email protected]='\(-L\)\?.*[email protected]='\1${BASE_PATH}/[email protected]" \ 
    -i tclConfig.sh 
make install 
make install-private-headers 
chmod -v 755 ${BASE_PATH}/lib/libtcl*.so 

到目前为止好:$ {} BASE_PATH存在/include/tcl.h和$ {} BASE_PATH看起来/lib/tclConfig.sh罚款:

# String to pass to the compiler so that an extension can 
# find installed Tcl headers. 
TCL_INCLUDE_SPEC='-I/myownpath/include' 

然后我尝试安装TK:

tar -xzf tk${TCL_VERSION}-src.tar.gz 
cd tk${TCL_VERSION}/unix 
./configure \ 
    --prefix=${BASE_PATH} \ 
    --enable-64bit \ 
    --with-tcl=${BASE_PATH}/lib \ 
make -j9 
sed -e "[email protected]^\(TK_SRC_DIR='\).*@\1${BASE_PATH}'@" \ 
    -e "/TK_B/[email protected]='\(-L\)\?.*[email protected]='\1${BASE_PATH}/[email protected]" \ 
    -i tkConfig.sh 
make install 
make install-private-headers 
chmod -v 755 ${BASE_PATH}/lib/libtk*.so 

它无法在化妆以下消息:

tk8.6.1/unix/../generic/tk.h:19:17: error: tcl.h: No such file or directory 

我错过了什么?!?

+0

试试这个http://stackoverflow.com/questions/15364371/tcl-h-no-such-file-或目录 – TrojanName

+0

不,我已经检查过,我不是从RPM安装我正在使用源代码! – crusaderky

+1

为什么使用'sed'行修补tclConfig.sh?如果你不修补Tcl的tclConfig.sh,它会工作吗? (Tk有点脏,希望有一个Tcl源代码目录可用,至少在过去是如此)。 – schlenk

回答

0

如果你想以普通用户的身份安装Tcl,从source distribution开始很容易(你需要选择你想要的版本;我现在一般推荐8.6.1,但这是这个建议必然会随着时间而改变)。

然后,转到解压源代码发行版内的unix目录并运行./configure; 重要:安装作为非root你必须指定--prefix选项configure说得清它会被安装,你必须将其指定为一个完整路径。例如,如果我是安装我的主目录下,我会使用:

./configure --prefix=/home/dkf 

然后,只是做makemake install。或者合并为一个为make all install;如果您不是以其他用户身份进行安装,则可以将其作为一步完成。在此之后,我会发现我可以通过执行/home/dkf/bin/tclsh8.6来运行Tcl 8.6.1,并且二进制库和tclConfig.sh将位于/home/dkf/lib;以明显的方式调整您指定的路径。如果您未指定--prefix,则源代码发行版使用/usr/local作为默认值,但这是通常只能由root用户写入的目录。

你必须指定这样的路径的原因是Tcl支持脚本的路径被烘焙到二进制库中。 (这是运行时重写,但我不建议这样做时,你可以很容易地只是正确的事情,开始了用。)


当建立TK,你需要一个兄弟 tcl制作。目前,建议您将它们设置为相同的版本。您还应指定--with-tcl=并指定您刚刚安装的tclConfig.sh的路径;虽然它可能没有工作,但最简单的做法就是这样做。一旦你建立并安装了Tcl和Tk,你(可能)不需要保留源代码树。

好吧,我承认,我让他们身边,但我是一个数据packrat ...