我在linux上提出了一个集中式日志记录服务器.在这一点上,我正在努力巩固,使事情更容易加载到另一台机器上.我希望有一个RPM可以一次安装多个程序.我正在使用CentOS 7服务器.我想要打包到rpm的程序将是:
eventlog 2.12
libdbi 0.9.0
freetds 0.91
libdbi-drivers 0.9.0
json-c
syslog-ng 3.5.6
Run Code Online (Sandbox Code Playgroud)
我一直在做很多关于RPM的阅读,只是很难理解如何将多个源集成到一个RPM中.我安装这些的原因而不仅仅是yum安装它们是因为我需要在"./configure --enable-example"中调用配置.所以我有源在我的机器上安装了所有这些程序,然后我重新安装它们并尝试使用该文件作为源.任何能够指出我正确方向的想法或任何人都将不胜感激.
这似乎是一个简单的问题,但文档似乎没有任何关于这个主题的说法.我想做点什么,Requires: vim or emacs但是当我这样做时,我实际上依赖于vim,or而且emacs.取决于两个包中的一个或另一个的语法是什么?
我想在rpm spec文件的%install部分中使用'chkconfig --del NetworkManager'命令.如果我包含此命令,rpm正在构建正常但是当我安装该rpm时,它看起来命令没有被执行.安装后我使用'chkconfig --list'命令验证并观察到服务一直运行.
这是我正在使用的spec文件.请让我知道我错了.
%define name disable_network-manager
%define version 1.0
%define release fc
Name: %{name}
Version: %{version}
Release: 1%{?dist}
Summary: Includes the script to disable Network Manager services
Group: Development/Other
License: GPL
URL: www.abcd.com
Source0: %{name}-%{version}.tar.gz
BuildRoot: %(mktemp -ud %{_tmppath}/%{name}-%{version}-%{release}-XXXXXX)
%description
sample text.
%prep
%setup -q
#%build
%install
/sbin/chkconfig --del NetworkManager
rm -rf $RPM_BUILD_ROOT
install -m 0755 -d $RPM_BUILD_ROOT/usr/bin
install -m 0755 enablenm.sh $RPM_BUILD_ROOT/usr/bin/enablenm.sh
%clean
rm -rf $RPM_BUILD_ROOT
%files
/usr/bin/enablenm.sh
Run Code Online (Sandbox Code Playgroud) 我正在调整以前为Ubuntu编写的CentOS准备脚本.
在Ubuntu脚本中,dpkg -s {some program}经常调用该命令.例如,一个这样的命令是dpkg -s snmpd检查是否安装了SNMP守护程序.
CentOS中的等价物是什么?我知道RPM是包管理器.该命令rpm -q类似,但它查找包而不是程序.
例如,运行rpm -q snmpd返回:
package snmpd is not installed
Run Code Online (Sandbox Code Playgroud)
我的问题是,相当于Ubuntu命令的CentOS是什么dpkg -s?
我有一个奇怪的RPM问题,我是新手,所以请耐心等待...我创建了spec文件,当我运行构建时出现错误:
/var/tmp/rpm-tmp.ajKra4:第36行:cd:hero-01:没有这样的文件或目录错误:/var/tmp/rpm-tmp.ajKra4的错误退出状态(%prep)
然后我检查那个临时文件,它正在尝试将CD发送到一个不存在的目录.它应该在spec文件中创建吗?如果是这样的话?
这是我的spec文件:
Summary: Install Hero
Name: hero
Version: 01
Release: 1
Group: Billing reporting
Source: %{name}-%{version}.tar.gz
License: SLA
%description
Hero billing reports system
%prep
rm -rf %{_topdir}/BUILD/*
%setup
%install
mkdir -p /opt/%{name}
cp -r * /opt/%{name}
%post
find /opt/%{name} -type d -exec chmod 755 {} \;
find /opt/%{name} -type f -exec chmod 644 {} \;
chmod -R 755 /opt/%{name}/bin
%files
/opt/%{name}
%defattr(-,root,root,0755)
%clean
rm -rf $RPM_BUILD_ROOT
%postun
rm -rf /opt/%{name}
Run Code Online (Sandbox Code Playgroud)
也许我错过了什么?不会是第一个大声笑,谢谢
这也是tmp文件输出的内容:
#!/bin/sh
RPM_SOURCE_DIR="/root/rpmbuild/SOURCES"
RPM_BUILD_DIR="/root/rpmbuild/BUILD"
RPM_OPT_FLAGS="-O2 -g"
RPM_ARCH="x86_64" …Run Code Online (Sandbox Code Playgroud) 我正在尝试在REDHAT 6系统上从二进制文件构建RPM.我有所有文件包含在%files部分(查找/ path/to/fake/install -type f >> specfile)
当我运行rpmbuild -bb specfile --target x86_64时,我得到了
检查未打包的文件:/ usr/lib/rpm/check-files /path/to/rpmbuild/BUILDROOT/Package-1.0.0-1.el6.x86_64错误:已找到已安装(但未打包)的文件:
RPM构建错误:已找到已安装(但未打包)的文件:
请注意,错误消息中未列出任何文件.我不确定什么是错的,还有想法?
我正在尝试创建一个只更新系统上文件的软件包,但是在运行rpmbuild时我一直遇到错误.该错误表示文件丢失.
我在CentOS 5和6上尝试过这个,结果相同.
我曾经rpmdev-setuptree设置过文件系统,也就是设置~/.rpmmacros文件.然后我用来rpmdev-newspec初始化spec文件.
我作为非root用户运行.
我有spec文件~/rpmbuild/SPECS/test.spec,我的来源是:~/rpmbuild/SOURCES/test-1.tar.gz.提取此文件会创建一个以test-12个文件命名的目录.我已经确认~/rpmbuild/BUILD/test-1在我尝试构建软件包时它会被提取出来.
我跑: rpmbuild -ba ~/rpmbuild/SPECS/test.spec
然后我收到这个错误:
- ./configure --build = x86_64-redhat-linux-gnu --host = x86_64-redhat-linux-gnu --target = x86_64-redhat-linux-gnu --program-prefix = --prefix =/usr - exec-prefix =/usr --bindir =/usr/bin --sbindir =/usr/sbin --sysconfdir =/etc --datadir =/usr/share --includedir =/usr/include --libdir =/usr/lib64 --libexecdir =/usr/libexec --localstatedir =/var --sharedstatedir =/usr/com --mandir =/usr/share/man --infodir =/usr/share/info/home/me/rpmbuild /tmp/rpm-tmp.58942:line 37:./ configure:没有这样的文件或目录错误:/home/me/rpmbuild/tmp/rpm-tmp.58942(%build)的退出状态错误
RPM构建错误:/home/me/rpmbuild/tmp/rpm-tmp.58942(%build)的退出状态错误
这是我的spec文件:
Name: test
Version: 1
Release: 1%{?dist}
Summary: Test
Group: Test
License: …Run Code Online (Sandbox Code Playgroud) 说我想安装相同包的两个不同版本.
具体来说,我想为GNOME,gjs包安装两个版本的Javascript绑定.我想拥有gjs-1.38.1-1.fc20.x86_64和gjs-1.36.1-1.fc19.x86_64.
Fedora 20中还有其他软件包,这在很大程度上依赖于gjs-1.38.1-1.fc20.x86_64它,因此无法替换它gjs-1.36.1-1.fc19.x86_64.
我有一个不兼容的特定程序,gjs-1.38.1-1.fc20.x86_64需要前一个程序.
那么有可能安装以前版本的gjs gjs-1.36.1-1.fc19.x86_64并通过/usr/bin/env gjs1(通过一些魔术!)访问它来运行不兼容的程序而不会破坏任何东西吗?
如何制作一个设置文件POSIX功能的RPM?如果我尝试以非root用户身份进行操作,那么当我的makefile的安装挂钩尝试运行时,我会收到错误,但如果我不运行,将如何 复制这些功能?似乎没有任何方法可以在RPM spec文件中设置功能.rpmbuildsetcapsetcaprpmbuild
我想要一个用于 CentOS 7 的 OpenSSL 1.1.1 RPM 包。(不是 1.1.0...)
我在谷歌上搜索了这个非常具体的 RPM 文件,但它根本不可用。
我也发了邮件openssl-users,但没有人回复正确的答案。
- - 编辑 - -
最后,该包可用。