不带root用户安装TCL / TK

时间:2013-10-03 16:08:40

标签: linux install tcl configure tk

我正在尝试在RedHat 5上安装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 "s@^\(TCL_SRC_DIR='\).*@\1${BASE_PATH}'@" \
    -e "/TCL_B/s@='\(-L\)\?.*unix@='\1${BASE_PATH}/lib@" \
    -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 "s@^\(TK_SRC_DIR='\).*@\1${BASE_PATH}'@" \
    -e "/TK_B/s@='\(-L\)\?.*unix@='\1${BASE_PATH}/lib@" \
    -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

我错过了什么?!?

2 个答案:

答案 0 :(得分:1)

我按照以下步骤在Linux(Ubuntu)上安装tcl,tk。 请使用sudo以避免任何与权限相关的问题 创建您选择的目录,例如/ opt / tcltk

安装tcl

  1. 创建目录/ opt / tcltk
  2. 从(http://www.tcl.tk/software/tcltk/download.html)下载tcl8.6.9-src.tar.gz,tk8.6.9.1-src.tar.gz
  3. 在opt / tcltk /
  4. 中将这两个tar文件移到上方
  5. cd / opt / tcltk /安装tcl8.6.9
  6. / opt / tcltk> sudo gunzip -c tcl8.6.9-src.tar.gz | tar -xf-
  7. cd /opt/tcltk/tcl8.6.9/unix /
  8. /opt/tcltk/tcl8.6.9/unix> sudo ./configure --prefix = / opt / tcltk
  9. /opt/tcltk/tcl8.6.9/unix> sudo make
  10. 可选,您可以通过执行“ sudo make test”来检查make。
  11. /opt/tcltk/tcl8.6.9/unix> sudo make install
  12. 通过在cli上执行“ /opt/tcltk/bin/tclsh8.6”来验证安装

安装tk

  1. cd / opt / tcltk /提取tk焦油

  2. / opt / tcltk /> sudo gunzip -c tk8.6.9.1-src.tar.gz | tar -xf-

  3. /opt/tcltk/tk8.6.9/unix> sudo ./configure --prefix = / opt / tcltk

  4. /opt/degrib/tcltk/tk8.6.9/unix> sudo make

  5. sudo make install

如果安装时出现任何问题,请发表评论

答案 1 :(得分: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,你(可能)就不需要保留源树了。

好的,我承认我确实保留了它们,但我是一个数据包......