在我的 RPM 规范文件中,我声明我的软件包需要 C++ 编译器来构建:
BuildRequires: gcc-c++
Run Code Online (Sandbox Code Playgroud)
现在我希望能够使用 devtoolset-8(甚至将来使用 clang)构建这个包。gcc-c++如果没有找到,我怎样才能使依赖解析器失败devtoolset-8?我正在寻找某种OR要求:
BuildRequires: ( gcc-c++ || devtoolset-8 ) # ?
Run Code Online (Sandbox Code Playgroud) 我发送了这些命令:
# yum install kernel
Loaded plugins: fastestmirror, security
Loading mirror speeds from cached hostfile
* base: centosr3.centos.org
* extras: centosg4.centos.org
* updates: centosg4.centos.org
Setting up Install Process
Package kernel-2.6.32-279.2.1.el6.i686 already installed and latest version
Nothing to do
Run Code Online (Sandbox Code Playgroud)
# yum install kernel-devel
Loaded plugins: fastestmirror, security
Loading mirror speeds from cached hostfile
* base: centosr3.centos.org
* extras: centosg4.centos.org
* updates: centosg4.centos.org
Setting up Install Process
Package kernel-devel-2.6.32-279.2.1.el6.i686 already installed and latest version
Nothing to do
Run Code Online (Sandbox Code Playgroud)
#uname -r
2.6.32-042stab057.1
#uname -a …Run Code Online (Sandbox Code Playgroud) 我正在尝试创建一个.spec文件,并将%log,README,INSTALL,COPYING,NEWS,AUTHORS放在%file指令右下方的%doc指令中.包tarname是recafoh-prealpha,版本是svn73.rpmbuild -ba recafoh.spec说
RPM build errors:
Installed (but unpackaged) file(s) found:
/usr/share/doc/recafoh-prealpha/COPYING
/usr/share/doc/recafoh-prealpha/ChangeLog
/usr/share/doc/recafoh-prealpha/INSTALL
/usr/share/doc/recafoh-prealpha/NEWS
/usr/share/doc/recafoh-prealpha/README
/usr/share/doc/recafoh-prealpha/TODO
Run Code Online (Sandbox Code Playgroud)
但它们安装在BUILDROOT/usr/share/doc/recafoh-prealpha-svn73/{ChangeLog,README,INSTALL,COPYING,NEWS,AUTHORS}中,这是另一件奇怪的事情:README也安装在BUILDROOT/usr/share/DOC/recafoh-prealpha-svn73.
那么,任何人都可以解释1)如何解决rpmbuild错误,2)为什么README安装在recafoh-prealpha-svn73和README中,其余的安装在recafoh-prealpha?
非常感谢
编辑:
以下是recafoh.spec文件的相关部分:
%files
%doc AUTHORS ChangeLog COPYING NEWS README TODO
%{_sbindir}/recafohd
%{_bindir}/recafoh
Run Code Online (Sandbox Code Playgroud) 我有关于RPM spec文件的问题.
我很抱歉这些问题看似含糊不清或业余但我真的有这个概念的问题和我引用的各种网站都使用make install
我正在尝试跟踪rpm.spec文件中%pre /%post scriptlets的最佳做法.
具体来说,我的系统安装非常复杂.除此之外,它需要做很多"安全增强Linux"自定义,iptable编辑,用户创建(带密码)和"chown"等.
问题是在哪里这样做?这应该放在前/后小脚架中吗?最好的做法似乎是尽可能保持这些简单,绝对不要让它具有互动性.
我注意到Postgres安装程序(以及其他一些人)执行"手动安装后"步骤,其中root用户需要运行脚本来执行某些操作,例如设置postgres用户的密码等.您可以在下面看到rpm打印的位置这个: To initialize, run /etc/init.d/postgres-9.1-openscg start as root user.
以下是提取的scriptlet:
rpm -qp --scripts postgres-9.1.2-1.i386.openscg.rpm
Run Code Online (Sandbox Code Playgroud)
预安装scriptlet(使用/ bin/sh):
if [ "$1" = "2" ]; then
#Perform maintenance tasks before server upgrade begins.
#Determine if server is running, stops it.
/etc/init.d/postgres-9.1-openscg status &> /dev/null
if [ "$?" = "0" ];
then
/etc/init.d/postgres-9.1-openscg stop
touch /tmp/pg_9.1.stopped
fi
fi
Run Code Online (Sandbox Code Playgroud)
postinstall scriptlet(使用/ bin/sh):
if type "/usr/bin/chcon" &> /dev/null ; then
/usr/bin/chcon -t textrel_shlib_t $RPM_INSTALL_PREFIX/lib/libedit.so &> /dev/null
fi
#Create a …Run Code Online (Sandbox Code Playgroud) 即时尝试构建包含的rpm文件
1 file /usr/local/stats.sh
Run Code Online (Sandbox Code Playgroud)
rpm会做一件事
echo -e "*/5 * * * * /usr/bin/sh /usr/local/stats.sh" >> /var/spool/cron/root
Run Code Online (Sandbox Code Playgroud)
我已经开始了
Name: stats
Version: 0.1
Release: el%{redhat_releasever}%{redhat_releasever_minor}.1
Summary: stats
Source0: %{svn_url_Systems}/%{name}.spec
BuildArch: noarch
Group: %{repo_name_Systems}
License: stat
BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-root-%(%{__id_u} -n)
%description
Script
%prep
%setup -cT
%build
%{__mkdir} -p %{buildroot}/%{_sysconfdir}/
echo -e "*/5 * * * * /usr/bin/sh /usr/local/stats.sh " >> /var/spool/cron/root
%changelog
Run Code Online (Sandbox Code Playgroud)
任何提示,使这个rpm规范文件正确和工作!
我正在尝试1.03ii-1使用最新版本的软件包升级以前版本的RPM 1.1-1.
百胜,出于某种原因,认为1.03ii-1是较新的比1.1-1.既不封装具有一个划时代,并且rpm.labelCompare(('1', '1.03ii', '1'), ('1','1.1','1')) 在python也意味着1.03ii-1是高比1.1-1.
为什么是这样?是以ii某种方式评估为数字?字母数字版本是否被视为高于数字版本?
请注意,我确实在Unix和Linux SE上发布了不同的风格,但在重新发布之前的一天没有收到任何有用的回复.该帖子中与此相关的信息是我首先将EPEL 7添加到repos列表中,rpm -Uvh这可能是为什么要求使用EL 7版本的R的原因.
无论如何,根据用户Sami Laine的要求,这里是输出 cat /etc/yum.repos.d/epel.repo
[epel]
name=Extra Packages for Enterprise Linux 6 - $basearch
#baseurl=http://download.fedoraproject.org/pub/epel/6/$basearch
mirrorlist=https://mirrors.fedoraproject.org/metalink?repo=epel-6&arch=$basearch
failovermethod=priority
enabled=1
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL-6
[epel-debuginfo]
name=Extra Packages for Enterprise Linux 6 - $basearch - Debug
#baseurl=http://download.fedoraproject.org/pub/epel/6/$basearch/debug
mirrorlist=https://mirrors.fedoraproject.org/metalink?repo=epel-debug-6&arch=$basearch
failovermethod=priority
enabled=0
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL-6
gpgcheck=1
[epel-source]
name=Extra Packages for Enterprise Linux 6 - $basearch - Source
#baseurl=http://download.fedoraproject.org/pub/epel/6/SRPMS
mirrorlist=https://mirrors.fedoraproject.org/metalink?repo=epel-source-6&arch=$basearch
failovermethod=priority
enabled=0
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL-6
gpgcheck=1
Run Code Online (Sandbox Code Playgroud)
而输出 rpm -q epel-release是epel-release-6-8.noarch.
我试图在一个新的CentOS 6.5盒子上安装R,但是我遇到了依赖的问题.我添加了EPEL 6 repo rpm,然后运行了一个yum install R.它以破坏的依赖关系中止: …
我想使用构建系统(即jenkins,travis等)构建软件包,但我所拥有的只是Ubuntu 12.04 VM.
我发现了这[1]条说明但马赫不支持CentOS 7.0.
[1] http://blog.burghardt.pl/2008/12/how-to-build-rpm-packages-in-centos-chroot-on-debian/
CentOS 6.5 颠覆 rpm:http : //opensource.wandisco.com/centos/6/svn-1.9/RPMS/x86_64/subversion-1.9.2-1.x86_64.rpm
冉RPM -ivh上述文件,并收到下面的错误。我应该安装什么 (yum install ??) 来摆脱以下错误。
$ rpm -ivh subversion-1.9.2-1.x86_64.rpm
warning: subversion-1.9.2-1.x86_64.rpm: Header V4 DSA/SHA1 Signature, key ID 3bbf077a: NOKEY
error: Failed dependencies:
libserf-1.so.1()(64bit) is needed by subversion-1.9.2-1.x86_64
Run Code Online (Sandbox Code Playgroud)
我发现如果我从源 .tar.gz 文件安装,那么在一台机器上安装 2 个不同版本的 svn 会很麻烦,因为它需要先安装各种先决条件 yum 模块,然后发出命令才能让它工作,我正在使用 Ansible。
最简单的方法是运行“sudo yum install subversion”,但它没有给我最新的 1.9.2 版本。使用这种方式,我得到 1.6.11 或接近。
是否有任何列表显示需要通过简单步骤(可能是多个版本)安装的工具的完整列表。IE
sudo yum -y install pre-requisite-tools-abc xyz giga1
make || make prefix=/home/user/tools/subversion-1.9.2
make || make prefix=/home/user/tools/subversion-1.9.2 install
svn --version
rpm ×10
rpmbuild ×3
centos ×2
linux ×2
packaging ×2
rpm-spec ×2
yum ×2
c++ ×1
centos6 ×1
centos6.5 ×1
compilation ×1
debian-based ×1
dependencies ×1
epel ×1
kernel ×1
python ×1
r ×1
svn ×1
svn-client ×1