【问题标题】:bash script to run ./configure from sudo从 sudo 运行 ./configure 的 bash 脚本
【发布时间】:2013-09-11 16:01:53
【问题描述】:

我在 Solaris 上使用 GNU bash 版本 3.2.51(1)-release (sparc-sun-solaris2.10) 并尝试编写一个 bash 脚本来配置/编译 sudo 在完成一些其他项目之后。本质上,我希望能够让操作员运行这个脚本,这样他们就可以通过运行这个脚本从源代码安装 sudo,而不必担心运行带有选项和 make 等的 ./configure。

它似乎一直工作到 config.status libtool 部分,然后它死于:

: creating pathnames.h config.status: pathnames.h is unchanged config.status: executing libtool commands
./install_sudo.sh: line 55: configure:: command not found

install_sudo.sh 是我的脚本,它基本上只是解压缩 sudo 并设置路径。然后它运行一个函数 ConfigureSudo:

这是现在无法处理上述错误的脚本:

#!/usr/bin/bash
Unpack(){
SRCA="sudo-1.8.7.tar.gz"
SRCB="sudo-1.8.7.tar"

if [ -f $PWD/$SRCA ]; then
 echo "sudo source appears to be here!"
 `/usr/bin/gunzip "$SRCA"`
 `/usr/bin/tar xf "$SRCB"`
  else
 echo "Check your source file."
fi
}

SetupPath(){
echo "Setting up path to use included Solaris software..."
echo "Current PATH is $PATH"
PATH=/usr/sfw/bin:/usr/sfw/sbin:/usr/sfw/sparc-sun-solaris2.10/bin:$PATH
echo "Now set to $PATH"
}

ConfigureSudo(){
dir="/tmp/sudo-1.8.7"
arg1="--prefix=/usr/local"
arg2="--sysconfdir=/etc"
arg3="--localstatedir=/var/run/sudo"
arg4="--with-pam"
arg5="--with-timedir=/var/lib/sudo"
cmd=configure

$($dir/$cmd $arg1 $arg2 $arg3 $arg4 $arg5)
}

Unpack
SetupPath
ConfigureSudo

非常感谢任何帮助您度过难关。 蒂亚! 杰夫

【问题讨论】:

    标签: bash configure


    【解决方案1】:
    $($dir/$cmd $arg1 $arg2 $arg3 $arg4 $arg5)
    

    我认为您不需要将其放在进程替换中。它的输出也将被执行。您还应该正确引用您的变量。

    "$dir/$cmd" "$arg1" "$arg2" "$arg3" "$arg4" "$arg5"
    

    【讨论】:

      【解决方案2】:

      一个建议是放置这条线:

      set -x
      

      紧跟在 shebang 行(第 1 行)之后,以便在执行命令之前回显。

      这将向您显示正在发生的任何有问题的扩展,并可能导致您遇到问题。

      可能还需要把它放在每个函数的开头,我不记得它是否继承到函数中。但请先在脚本顶部尝试。

      【讨论】:

      • 谢谢,我已经尝试过了,一切都正常扩展,所以实际脚本似乎没有问题,但更多的是 libtool 和配置的问题。
      猜你喜欢
      • 1970-01-01
      • 2015-03-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-11-04
      • 2017-06-10
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多