小编Jim*_*mie的帖子

使用RPM spec文件中的脚本定义版本

我有一个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)

bash rpm software-packaging rpmbuild rpm-spec

14
推荐指数
1
解决办法
7007
查看次数

在其中安装整个文件夹和文件,RPM规格文件

我有一个用于构建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”

shell software-packaging rpmbuild rpm-spec

5
推荐指数
0
解决办法
3434
查看次数

在AngularJS中的setTimeout之前显示标签

我有一个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

html javascript settimeout angularjs

0
推荐指数
1
解决办法
83
查看次数