非root用户安装expect

非root用户安装expect

看了很多教程,踩了很多坑,分享给需要的人

准备
  • 参考资料:ubuntu安装expect

    • 其实不用root权限的原理很简单,那就是把文件安装到home/用户工作目录下:修改–prefix,调用的时候直接调用home/用户目录的文件
  • expect是对TCL(tool command language)的扩充,所以需要先安装tcl

  • 检查是否有tcl和expect

    ~$ whereis tcl
    ~$ whereis expect
    
  • 查看操作系统位数

    ~$ cat /proc/version
    Linux version 5.4.0-91-generic (buildd@lgw01-amd64-024) (gcc version 7.5.0 (Ubuntu 7.5.0-3ubuntu1~18.04)) #102~18.04.1-Ubuntu SMP Thu Nov 11 14:46:36 UTC 2021
    
tcl安装
  • Tcl 主页

  • TCL 下载页 Download Tcl/Tk 8.4.20

  • 创建tcl目录,然后下载源码包

    ~$ cd tcl
    # 下载tcl 8.4.11
    ~/tcl$ wget http://nchc.dl.sourceforge.net/sourceforge/tcl/tcl8.4.11-src.tar.gz
    # 解压
    ~/tcl$ tar xzvf tcl8.4.11-src.tar.gz
    # 进入刚刚解压的 /home/user/tcl/tcl8.4.19/unix 目录
    ~/tcl$ cd tcl8.4.11/unix/
    ~/tcl/tcl8.4.11/unix$ ./configure --prefix=$HOME/tcl --enable-shared #prefix是安装目录; $HOME代表/home/user; ‘./’是编译操作,用于得到makefile; ebavke-shared是开启共享,其他内置包可以使用
    checking system version (for dynamic loading)... ./configure: 1: ./configure: Syntax error: Unterminated quoted string
    
  • 这里的./configure会报错,8.4.13后的安装包就没有了 这里引用自大佬的踩坑史,直接复制了

    #看提示好像是configure出了问题,于是我就上网去搜了,没有打开cnfigure看:)
    #得到的结果说是configure里的引号配对错误引起的,搜了关键字 system,找到了一看,还真是:
    2133     system=MP-RAS-`awk '{print }' /etc/.relid'`
    #处理方式是去掉倒数第2个那个多出来的下引号,改为:
    7611     system=MP-RAS-`awk '{print }' /etc/.relid`
    #多了一个下引号,本以为去掉之后可以直接执行完,没想到又有一个错误:
    checking FIONBIO vs. O_NONBLOCK for nonblocking I/O... ./configure: 1: ./configure: Syntax error: Unterminated quoted string
    #这回就有经验了,十有八九还是configure的问题啊,于是又搜FIONBIO,结果有找到了一处
    7611     system=MP-RAS-`awk '{print }' /etc/.relid‘`
    #处理方式依旧是去掉多出来下引号,改为:
    7611     system=MP-RAS-`awk '{print }' /etc/.relid`
    #然后再重新configure就可以了。
    
  • 执行源码安装命令

    ~/tcl/tcl8.4.11/unix$ make
    ~/tcl/tcl8.4.11/unix$ make install
    #安装完毕以后,进入tcl源代码的根目录,把子目录unix下面的tclUnixPort.h 拷贝到子目录generic中。暂时不要删除tcl源代码,因为expect的安装过程还需要用。
    ~/tcl/tcl8.4.11$ cp unix/tclUnixPort.h generic/
    
expect安装
  • Expect | NIST 主页

  • 下载页 Expect download | SourceForge.net

  • 创建tcl目录,把源码包搞到服务器上

    ~$ cd expect
    # 解压
    ~/expect$ tar xzvf expect5.45.tar.gz
    # 进入解压目录
    ~/expect$ cd expect5.45/
    ~/expect/expect5.45$ ./configure --prefix=$HOME/expect --with-tcl=$HOME/tcl/lib --with-tclinclude=/home/user/tcl/tcl8.4.11/generic  #--with-tcl:指定tcl相关的路径,为了找到tclConfig.sh文件; --prefix:指定expect的安装路径
    # 安装
    ~/expect/expect5.45$ make
    ~/expect/expect5.45$ make install
    
  • 这个时候expect已经成功安装好了,可以在/home/user/tcl/bin中看到

  • 注意/home/user/expect/bin目录下是没有expect文件的,所以在.sh文件中使用expect的时候,第一行需要指定\#!/home/user/tcl/bin/expect

  • 当然,这个问题可以通过设置软链接(我理解为window中的快捷方式)解决。这样就会在/home/user/expect/bin/目录下创建expect文件,在.sh文件中使用expect的时候,第一行可以指定\#!/home/user/expect/bin/expect

    # ln的功能是为某一个文件在另外一个位置建立一个同不的链接,这个命令最常用的参数是-s,具体用法是:ln -s 源文件 目标文件
    ~$ ln -s /home/user/tcl/bin/expect /home/user/expect/bin/expect
    
    # 通过以下命令查看软链接情况
    ~$ ls -l /home/user/expect/bin/expect
    lrwxrwxrwx 1 user 27 113 22:40 /home/user/expect/bin/expect -> /home/user/tcl/bin/expect
    # 这个符号链接将在编写expect脚本文件时用到,例如在expect文件头部会指定用于执行该脚本的shell
    
怎么卸载
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值