标签: rpm

RPM 弱依赖

在我的 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)

c++ compilation rpm rpmbuild rpm-spec

2
推荐指数
1
解决办法
506
查看次数

无法用yum更新Centos 6内核,uname -r仍然显示旧版本

我发送了这些命令:

# 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)

kernel centos rpm yum centos6

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

已安装RPM Spec文件但%doc指令中的未打包文件

我正在尝试创建一个.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)

specifications rpm

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

RPM spec文件问题

我有关于RPM spec文件的问题.

  1. 什么是执行spec文件的观点?spec文件是否意味着控制在源计算机上执行rpmbuild时会发生什么,或者在目标计算机上安装RPM时会发生什么?
  2. 如果我的想法只是获取tar.gz中的文件夹和文件,请将它们放在RPM中,然后在RPM安装点将它们部署到那些文件夹和文件中.我该怎么做%build和%install部分?
  3. 如何在%files部分中引用我想要最终部署在目标计算机上的文件?我是在源计算机上还是在目标计算机上引用它们.

我很抱歉这些问题看似含糊不清或业余但我真的有这个概念的问题和我引用的各种网站都使用make install

specifications rpm rpmbuild

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

RPM%post scriptlet最佳实践

我正在尝试跟踪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)

linux rpm rpm-spec

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

构建rpm spec文件以携带一个文件并执行一个命令

即时尝试构建包含的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规范文件正确和工作!

rpm rpmbuild

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

为什么RPM认为版本1.03ii> 1.1?

我正在尝试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-11.1-1.

为什么是这样?是以ii某种方式评估为数字?字母数字版本是否被视为高于数字版本?

python packaging rpm yum

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

CentOS 6.5 R安装依赖项

更新:

请注意,我确实在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-releaseepel-release-6-8.noarch.


我试图在一个新的CentOS 6.5盒子上安装R,但是我遇到了依赖的问题.我添加了EPEL 6 repo rpm,然后运行了一个yum install R.它以破坏的依赖关系中止: …

linux r centos rpm epel

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

如何在基于Debian的系统中构建RPM包?

我想使用构建系统(即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/

packaging rpm debian-based

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

在 CentOS 上安装最新的 SVN 1.9.2 - libserf-1.so.1 is required 错误

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

svn dependencies rpm svn-client centos6.5

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