我知道您可以在Chef recipes中运行“execute”模块,它包含一个cwd和用户参数,允许您在当前工作目录中以该用户的身份运行命令。这就是我在代码中所做的:
execute 'rpmdev-setuptree' do
user 'rpmbuild'
cwd '/home/rpmbuild'
live_stream true
action :run
end
我一直在以root用户身份执行此命令或显式更改目录(即执行“cd/home/rpmbuild&rpmdev setuptree”),但这不起作用。Chef似乎下定决心,无论我做什么,都要在/根目录下运行此命令。为什么会这样?请注意,我一直在做:
execute 'cd /home/rpmbuild && rpmdev-setuptree' do
user 'rpmbuild'
cwd '/home/rpmbuild'
live_stream true
action :run
end
或
execute 'sudo su - rpmbuild && rpmdev-setuptree' do
user 'root'
cwd '/home/rpmbuild'
live_stream true
action :run
end
有人能告诉我为什么会这样吗?我试图在/home/rpmbuild目录中运行rpmdev setuptree,以便它构建出路径,但它总是在/root目录中运行此命令。
输出在我运行的代码段之间有所不同,有些代码段已完成,但没有输出。但我没有注意到,当尝试单独使用rpmdev setuptree时,它会:
[execute] touch: cannot touch â/root/.rpmmacrosâ: Permission denied
grep: /root/.rpmmacros: No such file or directory
/bin/rpmdev-setuptree: line 43: [: -lt: unary operator expected
grep: /root/.rpmmacros: No such file or directory
/bin/rpmdev-setuptree: line 57: [: -lt: unary operator expected
grep: /root/.rpmmacros: No such file or directory
/bin/rpmdev-setuptree: line 75: [: -lt: unary operator expected
mkdir: cannot create directory â/root/rpmbuildâ: Permission denied
mkdir: cannot create directory â/root/rpmbuildâ: Permission denied
mkdir: cannot create directory â/root/rpmbuildâ: Permission denied
mkdir: cannot create directory â/root/rpmbuildâ: Permission denied
mkdir: cannot create directory â/root/rpmbuildâ: Permission denied