这可能是一个有点尴尬的问题,我不知道这是否可能。
问题是:
file.txt
public class HelloWorld {
public static void main(String[] args) {
System.out.println("Hello, ${MY_USERNAME}");
}
}
我想在我的一个rpm中加入上面的文件。 RPM创建的.spec文件仅对此特定文件具有以下操作。
cp /root/template/file.txt /home/gaur/hello.java
是否可以在.spec文件中使用某些逻辑(用于rpm创建),当我将其从/root/template/file.txt
复制到/home/gaur/hello.java
时,file.txt中的值即${MY_USERNAME}
被gaur
取代? (通过在file.txt
中添加内容?
注意:我知道我可以在sed
中使用.spec
,但我很想知道我们是否可以在file.txt
内部使用某些逻辑。
注意:/root/template
中的模板文件可以是任何语言,包括shell,Python,Perl等。
答案 0 :(得分:0)
考虑替代方案,更好的方法是生成spec-file本身(使用sed或任何工具),因为你的rpm显然用于为可能改变的路径名(用户名)生成数据。 / p>
例如,您的rpm可能用于创建具有示例程序的用户。用户名将是示例程序中替换的参数,以及传递给useradd
的参数。
生成规范文件还可以生成rpm的%files
部分,使其与实际路径名匹配。
依赖环境变量会很尴尬:
sudo
修剪了大多数环境变量,并且答案 1 :(得分:0)
非常确定您要求的是不可能的,因为RPM会提供编译的Java字节码,而您要求修改源代码。为此,就像你说的那样,sed
或类似的将是你要走的路。