标签: rpm

当rpmbuild从tcl调用时,为什么topdir设置为默认值?

我有一个'exec'rpmbuild的tcl脚本.这样做时,rpmbuild使用的'topdir'是错误的.我的主目录中有一个.rpmmacros文件,如果我手动调用rpmbuild,它工作正常,即.'topdir'不是默认值.

我在tcl脚本中添加了[exec rpmbuild"--showrc"]以检查topdir的值,它显示'-14:_topdir%{_ usrsrc}/redhat'这是默认值.

有人能解释我为什么会出现这种情况以及如何解决这个问题?

我宁愿不用--define指定它,因为它实际上是在makefile中完成的,我不想触摸它(如果没有其他选择,我会这样做).

rpm tcl

26
推荐指数
2
解决办法
3万
查看次数

在CentOS 5.5上没有定义rpmbuild%{dist}?

我正在尝试%{dist}在我的RPM规范文件中使用标记来提供Fedora Core(例如fc12),CentOS 5(例如el5)和亚马逊的Linux AMI 之间的特定于分发的依赖关系:

Release: %_svn_revision%{?dist}
Run Code Online (Sandbox Code Playgroud)

# Depencencies
%{?rhel:Requires: ...}
%{?fedora:Requires: ...}
Run Code Online (Sandbox Code Playgroud)

不幸的是,%{dist}似乎没有在CentOS 5.5中定义,并且我没有找到与CentOS 5.5匹配的特定于发行版的条件(我认为el5匹配,但似乎没有).这张票据报告了%{dist}2008年CentOS 的遗失,但自2009年以来一直没有更新.

我如何%{dist}在CentOS中定义以及我应该使用什么条件来匹配CentOS 5?任何RPM大师能指出我正确的方向吗?

centos5 rpm rpmbuild

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

如何使用rpm更新/替换现有文件?

我有几个应用程序,我希望使用rpm部署.我的应用程序部署中的某些文件会覆盖其他已部署软件包中的文件.简单地在部署包中包含新文件将导致rpm冲突.

我正在寻找使用rpm来更新/替换已安装文件的正确方法.

我已经提出了一些解决方案,但似乎没有什么是正确的.

  • 维护包含原始文件的rpms的自定义版本.

这似乎是一项相对较小的奖励的大量工作,即使它感觉不像一个黑客比一些其他可能的解决方案.

  • 使用其他名称将文件包含在rpm中,并将其复制到post部分中.

这可行,但意味着乱丢系统的多个副本.此外,它还意味着每个文件的rpm构建规范中的额外维护.

  • 在post部分中使用wget替换某些已知服务器中的原始文件.

这与复制技术类似,但文件甚至不会存在于rpm中.这可能就像一个不错的中央配置权限.

  • 将文件部署为新文件,然后使用符号链接覆盖原始文件.

这也类似于复制技术,但杂乱程度较低.这里的问题是一些文件表现不如符号链接.

deployment lamp configuration rpm

21
推荐指数
2
解决办法
4万
查看次数

如何将文件从rpm提取到当前目录?

我最近发现了cpio的存在以及如何使用它,以及如何使用rpm和RPM2cpio工具从rpm中提取单个文件,如下所示:

rpm2cpio mypackage.rpm | cpio -idmv ./path/to/individual/file/inside/the/rpm/filename.txt
Run Code Online (Sandbox Code Playgroud)

问题是该命令将创建与rpm内部文件位置匹配的目录,即/path/to/individual/file/inside/the/rpm/在实际提取文件之前,它将在当前目录中创建目录.

有没有办法将文件解压缩到当前目录而不创建整个目录结构?

提前致谢!!

rpm extraction

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

在cPanel服务器上安装git

我需要在cPanel上安装git,但我发现很多信息表明这不是一个简单的过程.

我在CentOS发行版上有一个cPanel/WHM实例,我试图在不破坏cPanel的情况下安装git.我发现的信息说,由于Perl依赖性,安装git会破坏cPanel.

cPanel论坛上的这个页面建议不要安装git:

http://forums.cpanel.net/f391/installing-git-294411.html

但是,cPanel功能下的这个页面说明已经为git发布了一个RMP:

http://features.cpanel.net/responses/possibility-to-install-git-on-cpanel-server-without-breaking-it

我请求cPanel的支持并得到了这个回复:

我们实际上不建议安装GIT,除非你对它的安装非常有经验,因为它有可能破坏perl.

我们确实在安装过程中分发了git RPM,但是,它没有设置或支持 - 它只是为了方便而添加,需要手动安装其他软件包和配置.

我们为git提供的RPM会将二进制文件安装到/ usr/local/cpanel/3rdparty/bin,因此您需要在此处运行它.它不是完整的工具集,因此系统管理员需要安装任何其他工具.

有没有人建议如何最好地在cPanel上安装git,这样所有cPanel用户帐户都可以使用git,确保安装不会破坏Perl,以及cPanel根据语句提供的RPM中缺少的内容在上面引用的最后一段?

git install rpm cpanel whm

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

%defattr在RPM规范文件中的含义是什么?

在创建RPM时,RPM规范文件有一个指令%defattr.我知道它定义了该RPM安装的文件的默认属性.如果我写%defattr下面的内容,那是什么意思?

%defattr(-testuser, testuser)
Run Code Online (Sandbox Code Playgroud)

permissions rpm rpm-spec

20
推荐指数
2
解决办法
3万
查看次数

Rpm升级处理配置文件

我正在使用rpm -upgrade命令,并注意到rpm有不同的方法来处理修改后的配置文件,因此在升级过程中不会丢失.根据我的理解,如果修改了配置文件并使用rpm -U升级了包,则rpm会将原始属性文件重命名为{file} .rpmsave,并使用原始文件名{file}安装新配置文件.

但是,当我尝试使用我创建的包运行rpm -U时,我实际看到的是原始配置文件被删除,新配置文件被重命名为{file} .rpmsave.这是预期的行为吗?在我的安装脚本中,我还使用"sed"修改配置文件中的一些文本.这会干扰rpm在升级过程中处理配置文件的方式吗?

config upgrade rpm

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

我可以使用rpm扩展specfile中的宏吗?

具体的例子是我有很多specfiles Source0:或其他Source包含宏的行.如何在不实际启动specfile构建或编写自己的解析器的情况下扩展这些宏?

rpm rpm-spec

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

rpmbuild更改压缩格式

我尝试在内部rpm包中为我们的地理服务器打包一些地图文件.对于构建部分,这只是复制文件.我认为这可以按预期工作.但要打包这些20GB的图像需要花费很长时间.

我已经读过rpm内部压缩数据,这可以通过几种不同的压缩算法来完成.但是,我不知道我的转速选择哪种压缩以及如何影响它.我找不到rpmbuild命令的任何选项,也没有为specfile找到任何选项,也没有找到我可以列出的常规rpm选项rpmbuild --showrc

我对rpmbuild和specfiles不是很有经验,但在阅读了很多关于rpm.org的手册和教程后,我没有进一步的想法.

我使用的specfile看起来像:

%define debug_package %{nil}

%global mapsversion 0.9
# If this is a snapshot, put the date here and uncomment
#global snapshot_version 20100519

# This is the version in a form acceptable
# an an RPM version string (i.e. no '-')
# Hier werden die Makros definiert.
%global rpmversion %(echo %{mapsversion} | tr '-' '_')
%global pkgversion %{mapsversion}%{?snapshot_version:-SNAPSHOT}
%global pkgname %{name}

Name:           geoserver-maps-part2
Version:        %{rpmversion}
Release:        1%{?dist}
Summary:        Swiss Maps for GeoServer
Group:          Application/ourApp
License:        Copyright …
Run Code Online (Sandbox Code Playgroud)

compression rpm rpmbuild rpm-spec

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

python distutils不包括SWIG生成的模块

我正在使用distutils从我的项目中创建一个rpm.我有这个目录树:

project/
        my_module/
                 data/file.dat
                 my_module1.py
                 my_module2.py
        src/
            header1.h
            header2.h
            ext_module1.cpp
            ext_module2.cpp
            swig_module.i
        setup.py
        MANIFEST.in
        MANIFEST
Run Code Online (Sandbox Code Playgroud)

我的setup.py:

from distutils.core import setup, Extension

module1 = Extension('my_module._module',
                sources=['src/ext_module1.cpp',
                         'src/ext_module2.cpp',
                         'src/swig_module.i'],
                swig_opts=['-c++', '-py3'],
                include_dirs=[...],
                runtime_library_dirs=[...],
                libraries=[...],
                extra_compile_args=['-Wno-write-strings'])

setup(  name            = 'my_module',
        version         = '0.6',
        author          = 'microo8',
        author_email    = 'magyarvladimir@gmail.com',
        description     = '',
        license         = 'GPLv3',
        url             = '',
        platforms       = ['x86_64'],
        ext_modules     = [module1],
        packages        = ['my_module'],
        package_dir     = {'my_module': 'my_module'},
        package_data    = {'my_module': ['data/*.dat']} )
Run Code Online (Sandbox Code Playgroud)

我的MANIFEST.in档案:

include src/header1.h …
Run Code Online (Sandbox Code Playgroud)

c++ python swig distutils rpm

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