我有一个RPM规范文件,在rhel7上使用rpmbuild构建,我想用脚本定义Version.
我在这里阅读http://www.techrepublic.com/article/rpmproc-spec-file/,我可以这样做:
%define version 1.2
Version: %{version}
Run Code Online (Sandbox Code Playgroud)
在这里RPM spec文件 - 是否可以动态填充spec文件变量,我可以用脚本定义:
%define whoami %(cmd)
Run Code Online (Sandbox Code Playgroud)
所以我试着在我的规范文件中这样做:
%define version %(echo "$(sed -n 's|^[ ]*appVersion = "\(.*\)"|\1|p' /fullfilepath/values.txt | sed 's/^\(.*\)-.*$/\1/')")
Version: %{version} **Line 23**
Run Code Online (Sandbox Code Playgroud)
但我得到了一个
error: line 23: Empty tag: Version:
Run Code Online (Sandbox Code Playgroud)
到目前为止我测试的东西:
%define version %(echo "12") --basic script works ok, version becomes 12
//As a command straight in terminal
$ echo "$(sed -n 's|^[ ]*appVersion = "\(.*\)"|\1|p' /fullfilepath/values.txt | sed 's/^\(.*\)-.*$/\1/')"
//returns 1.2
Run Code Online (Sandbox Code Playgroud)
这些工作得很好,所以我不知道是什么导致它失败.当我在spec文件中的define标签中调用相同的东西时,有什么想法可能会让它失败?
更新
我尝试用实际值替换文件名,所以它看起来像这样
echo "$(sed …Run Code Online (Sandbox Code Playgroud) 我有一个用于构建rpm软件包的规范文件,在我的%install部分中,我具有以下内容:
%install
install -m 700 foo/bar/filesToCopy/. $RPM_BUILD_ROOT/
Run Code Online (Sandbox Code Playgroud)
filesToCopy文件夹是一棵树,与打包文件树的外观完全一样。它具有软件包具有的所有子目录,例如etc /...、/ usr / bin,/ usr / share ...,以及这些文件中的后续文件。
建立时给我
install: omitting directory 'foo/bar/filesToCopy/'
error: Bad exit status from /var/tmp/rpm-tmp.sea6XO (%install)
Run Code Online (Sandbox Code Playgroud)
有没有一种方法我不必像这样单独复制每个文件:
install -m 700 foo/bar/filesToCopy/usr/bin/file1.ex $RPM_BUILD_ROOT/usr/bin/
...
Run Code Online (Sandbox Code Playgroud)
由于filesToCopy /中的所有内容都是$ RPM_BUILD_ROOT /中的结构
更新
我找到了解决方法,将“ install -m 700”更改为“ cp -a”
我有一个page.html和controller.js文件.
我希望在输入文本框后显示标签,然后在2秒后弹出警报窗口,然后再次隐藏标签.
到目前为止我有这个:
page.html中
<div ng-app>
<h2>Calculate</h2>
<div ng-controller="controller">
<form>
<input type="text" ng-model="name" ng-change="myFunc()"
ng-model-options="{debounce: 200}">
<label ng-show="showMe">Checking</label>
</form>
</div>
</div>
Run Code Online (Sandbox Code Playgroud)
controller.js
angular.module('Ctrl', []).controller('controller', function($scope) {
var alertToCheck = function() {
alert("Some Message");
return true;
}
var checked = false;
$scope.showMe = false;
$scope.myFunc = function() {
if(checked == true){
$scope.cancel(alertToCheck());
checked = false;
}
$scope.showMe = !$scope.showMe;
setTimeout(alertToCheck(), 2000);
};
});
Run Code Online (Sandbox Code Playgroud)
问题是,当我输入文本框时,一旦完成输入,我会收到警报,然后弹出检查标签.我不知道我需要做什么才能得到
userfinshestyping - > show label - > pausefor 2秒 - > show Alertbox
rpm-spec ×2
rpmbuild ×2
angularjs ×1
bash ×1
html ×1
javascript ×1
rpm ×1
settimeout ×1
shell ×1