我正在为centos制定RPM规范,如果拱是64位,则需要将共享库安装到/ usr / lib64,否则需要将/ usr / lib安装到共享库?
我有一个rpm包,我需要从中提取一些文件.包是不可重定位的,我试过"rpm --root/ - prefix",这不起作用.我应该采取什么方法来提取?
感谢Advace.
我正在为rpm写一个.spec文件,它只是将tar球解压缩到文件系统的某个目录中
那我在哪里放原始的焦油球?我见过的所有例子都是从互联网上下载原始的tar球.但在我的情况下,情况并非如此.
我应该将tar球放在%files部分中,以便它成为rpm的一部分吗?如果是这样,那么如何在%setup宏中引用它来解压缩呢?
我正在编写一个Linux内核模块.它与所有源文件(尽管许可证是专有的)一起发布,以针对正在运行的内核进行编译.安装我的模块(作为.deb包分发)时,它会自动编译和安装.这有效.
问题是在整个Linux系统的常规升级过程中,安装了较新版本的Linux内核.当这样的新版本的内核开始运行时,它没有为我编译我的模块,并且我的应用程序失败了.我想在安装新的Linux内核软件包时编译和安装我的模块.
因此我的问题是:在dpkg安装新的Linux内核软件包时,是否有一种机制可以触发我的软件包中的某些内容来编译和安装我的模块?
同样的问题rpm?
ive 2个文件,其中包括要执行的shell命令,以及ive 1 iptables-save,其中包括需要安装的链
如何将spec文件写入:
-1将我的2个shell文件复制到/ etc /
-2执行iptables-restore </ home/iptables-save
谢谢你的时间.
PS:我经历了这个方法.不幸的是我是新手,我找不到解决方案.
我创造我自己的RPM使用rpmbuild.
我的RPM 包含配置文件,即使RPM包含这些配置文件的新版本,也不应该覆盖这些配置文件.
要归档这个,我用这些标记
%config(noreplace) /opt/mypackage/etc/*
Run Code Online (Sandbox Code Playgroud)
在spec文件中.
根据文档和本网站,在这种情况下,本地修改的文件永远不会被覆盖,这正是我想要的.
但是,在执行以下操作时:
etc/myconfig我遇到了冲突:
$ rpm --prefix ~/rpmroot/ -ih dist/mypackage-1.0.1-1.x86_64.rpm
########################################### [100%]
file /home/user/rpmroot/mypackage/etc/myconfig from install of mypackage-1.0.2-1.x86_64 conflicts with file from package mypackage-1.0.1-1.x86_64
Run Code Online (Sandbox Code Playgroud)
问题:
myconfig.rpmnew,并且现有的保持不变)
更新(附加信息)
输出rpm -qcp dist/mypackage-1.0.1-1.x86_64.rpm是:
/opt/mypackage/etc/config1.xml
/opt/mypackage/etc/config2.xml
/opt/mypackage/etc/run.sh
/opt/mypackage/etc/config3.xml
Run Code Online (Sandbox Code Playgroud)
完整%files部分:
%files
%defattr(0444,root,root)
/opt/mypackage/java/*
#dba
%defattr(0444,root,root)
/opt/mypackage/dba/sql/*
%defattr(0555,root,root)
/opt/mypackage/dba/script/*
#srv
%defattr(0555,root,root)
/opt/mypackage/srv/bin/*
/opt/mypackage/srv/lib/*
#etc
%defattr(0664,root,root)
%config(noreplace) /opt/mypackage/etc/*
Run Code Online (Sandbox Code Playgroud) 我在 el6 机器上得到如下错误:
Patch #4 (test.patch):
+ /bin/cat /path/to/test.patch
+ /usr/bin/patch -s -p0 --fuzz=0
1 out of 4 hunks FAILED -- saving rejects to file ***
1 out of 1 hunk FAILED -- saving rejects to file ***
error: Bad exit status from /var/tmp/rpm-tmp.YeRtKr (%prep)
Run Code Online (Sandbox Code Playgroud)
但是,我可以使用 commond 应用补丁文件,如下所示:
/usr/bin/patch -s -p0 < /path/to/test.patch.
我注意到 rpm--fuzz=0默认设置。有没有办法让 rpm 不设置--fuzz=0选项?
我已经按照此说明准备了一个构建框,我四处搜索并进行了 hello world rpm 构建,但仍然不确定打包一堆 js 文件(nodejs 应用程序)的最佳方法是什么。我想 :
我已经完成了一个非常简单的规范文件,如下所示:
Name: nodejsapp
Version: 1.0
Release: 0
Summary: API for a Platform
Group: Group
License: License
URL: somewebsite
Distribution: Linux CentOS
Source0: %{name}-%{version}.tar.gz
%description
CDR Platform is awesome product.
%prep
%install
install -m 755 -d $RPM_BUILD_ROOT/opt/cdr/api
%clean
rm -rf $RPM_BUILD_ROOT
%files
%defattr(-,root,root,-)
Run Code Online (Sandbox Code Playgroud)
以上构建,但当我安装时没有任何反应!我不确定我是否完全理解 rpmbuild 是如何开展业务的。
那么在这种情况下我需要使用哪个宏?我需要在 %files 下创建一个文件列表吗?在运行 rpmbuild 之前我需要 gzip 文件吗?或者我可以在 rpmbuild 期间 gzip 它们吗?
任何帮助表示赞赏。
给定最小的RPM规范文件,该文件应仅执行一个%post节:
$ cat ~/RPMBUILD/SPECS/test.spec
Name: None
Version: 1.0
Release: 1
Summary: Bla
License: Proprietary
%description
Bla
%prep
%build
%install
%clean
%post
echo ">>> Inside post <<<"
%files
Run Code Online (Sandbox Code Playgroud)
然而,从回声%post是不执行:
$ rpmbuild -v -bb ~/RPMBUILD/SPECS/test.spec
Executing(%prep): /bin/sh -e /home/ronbarak/RPMBUILD/tmp/rpm-tmp.IvhCZs
+ umask 022
+ cd /home/ronbarak/RPMBUILD/BUILD
+ LANG=C
+ export LANG
+ unset DISPLAY
+ exit 0
Executing(%build): /bin/sh -e /home/ronbarak/RPMBUILD/tmp/rpm-tmp.yCLpOK
+ umask 022
+ cd /home/ronbarak/RPMBUILD/BUILD
+ LANG=C
+ export LANG
+ unset DISPLAY
+ …Run Code Online (Sandbox Code Playgroud) 我想在Centos 7上安装GNU parrallel没有太多信息可以找到.有人能解释我怎么做吗?这是我发现的一些有用的信息