使用带有 --after-install 的 fpm 创建 rpm 包会出错
Create rpm package using fpm with --after-install gives error
我是 linux 包装的新手,所以我可能遗漏了一些明显的东西。我正在将我的程序打包到 deb
和 rpm
包中,我正在使用 fpm 来帮助我。我需要人们在安装结束时输入他们的 API 密钥,以便配置文件可以自动更新。我有一个包含此部分的 blah.postinst
文件:
#!/bin/bash
set -e
read -p 'Please enter your API key(skip this step by just press ENTER): ' apikey_var
if [[ ! -z $apikey_var ]]
then
echo "The API key is set. You could always change it by editing /etc/agent/process-collector.ini file"
sed "s/sample_apikey/$apikey_var/" /etc/agent/process-collector.ini.example > /etc/agent/process-collector.ini
else
echo "You didn't enter any API key, you could always add it by editing /etc/agent/process-collector.ini file"
mv /etc/agent/process-collector.ini.example /etc/agent/process-collector.ini
fi
并且我正在使用 fpm 的 --after-install
标志来包含此脚本。
这适用于 deb
包,但是在我使用 fpm 创建 rpm
包并尝试安装它之后,行 read -p 'Please enter your API key(skip this step by just press ENTER): ' apikey_var
(我认为)产生错误:
warning: %post(process-agent-0.99.0-1.x86_64) scriptlet failed, exit status 1
Non-fatal POSTIN scriptlet failure in rpm package dd-process-agent-0.99.0-1.x86_64
我想如果我手动创建一个 rpm 包,blah.postinst
脚本中的代码将正好适合 spec
文件的 %post
部分,但我不能'不知道会出什么问题。有人可以帮忙吗?或者至少我该如何调试它?谢谢。
之前已经讨论过了; rpm
设计为 自动化。 不要 期望有一个终端可以进行交互。它可能在另一个会话中(如 anaconda
或 puppet
会)。可能是有背景的。这可能是一个 cron 作业。让它收集有关第一个 运行 的信息,或者让它们 运行 在您的 "Getting Started" 指南中注明的脚本。
我是 linux 包装的新手,所以我可能遗漏了一些明显的东西。我正在将我的程序打包到 deb
和 rpm
包中,我正在使用 fpm 来帮助我。我需要人们在安装结束时输入他们的 API 密钥,以便配置文件可以自动更新。我有一个包含此部分的 blah.postinst
文件:
#!/bin/bash
set -e
read -p 'Please enter your API key(skip this step by just press ENTER): ' apikey_var
if [[ ! -z $apikey_var ]]
then
echo "The API key is set. You could always change it by editing /etc/agent/process-collector.ini file"
sed "s/sample_apikey/$apikey_var/" /etc/agent/process-collector.ini.example > /etc/agent/process-collector.ini
else
echo "You didn't enter any API key, you could always add it by editing /etc/agent/process-collector.ini file"
mv /etc/agent/process-collector.ini.example /etc/agent/process-collector.ini
fi
并且我正在使用 fpm 的 --after-install
标志来包含此脚本。
这适用于 deb
包,但是在我使用 fpm 创建 rpm
包并尝试安装它之后,行 read -p 'Please enter your API key(skip this step by just press ENTER): ' apikey_var
(我认为)产生错误:
warning: %post(process-agent-0.99.0-1.x86_64) scriptlet failed, exit status 1
Non-fatal POSTIN scriptlet failure in rpm package dd-process-agent-0.99.0-1.x86_64
我想如果我手动创建一个 rpm 包,blah.postinst
脚本中的代码将正好适合 spec
文件的 %post
部分,但我不能'不知道会出什么问题。有人可以帮忙吗?或者至少我该如何调试它?谢谢。
之前已经讨论过了; rpm
设计为 自动化。 不要 期望有一个终端可以进行交互。它可能在另一个会话中(如 anaconda
或 puppet
会)。可能是有背景的。这可能是一个 cron 作业。让它收集有关第一个 运行 的信息,或者让它们 运行 在您的 "Getting Started" 指南中注明的脚本。