gpt4 book ai didi

python - 如何使用 rpm 规范文件中的参数调用函数?

转载 作者:太空狗 更新时间:2023-10-29 12:42:42 24 4
gpt4 key购买 nike

我正在构建一个 rpm 以在我的机器上安装一个组件,但我想检查是否已经安装了某些 python 库,以免不必要地重新安装它们。所以,在我的规范文件的 %post 部分,我这样做:

function check4pythonlib() {
library=$1
if [[ $(/usr/local/bin/python2.7 -c "import $library" 2> /dev/null ; echo $?) -eq 0 ]]; then
echo "$library is installed"
else
echo "$library is not installed"
echo "Installing $library..."
cd /path/to/lib/$library
/usr/local/bin/python2.7 setup.py build
/usr/local/bin/python2.7 setup.py install
fi
}

check4pythonlib pythonlib1
check4pythonlib pythonlib2

我正在将所有输出写入日志文件,我看到了:

 is not installed
Installing ...
/usr/local/bin/python2.7: can't open file 'setup.py': [Errno 2] No such file or directory
/usr/local/bin/python2.7: can't open file 'setup.py': [Errno 2] No such file or directory
is not installed
Installing ...
/usr/local/bin/python2.7: can't open file 'setup.py': [Errno 2] No such file or directory
/usr/local/bin/python2.7: can't open file 'setup.py': [Errno 2] No such file or directory

似乎参数没有传递给函数。我也试过用双引号将参数括起来,但它也不起作用。我该怎么做才能在 rpm 安装过程中正确传递参数,这样才能正常工作?

最佳答案

因此,我注意到当按照 Etan Reisner 的建议使用 set -vx 运行规范文件的那一部分时,会发生一些奇怪的事情……输出如下所示:

function check4pythonlib() {
library=pythonlib1
if [[ $(/usr/local/bin/python2.7 -c "import " 2> /dev/null ; echo $?) ]]; then
echo " is installed"
else
echo " is not installed"
echo "Installing ..."
cd /path/to/lib/
/usr/local/bin/python2.7 setup.py build
/usr/local/bin/python2.7 setup.py install
fi
}

很明显,参数 pythonlib1 是在函数内部生成的,但出于某种原因,我看不到我分配给它的变量(在本例中为 $library ).

所以这就是我最终做的:

function check4pythonlib() {
if [[ $(/usr/local/bin/python2.7 -c "import $1" 2> /dev/null ; echo $?) ]]; then
echo "$1 is installed"
else
echo "$1 is not installed"
echo "Installing $1..."
cd /path/to/lib/$1
/usr/local/bin/python2.7 setup.py build
/usr/local/bin/python2.7 setup.py install
fi
}

我直接用参数替换了变量 $library,在本例中是 $1。脏了,但现在可以了。现在我只需要弄清楚为什么变量在规范文件中使用时似乎消失了......

关于python - 如何使用 rpm 规范文件中的参数调用函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36630135/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com