标签: rpm

使用Hudson构建RPM包

我在Hudson建立了一个C项目进行了很好的构建,我还有一个.rpm规范文件,用于从这些源创建rpms.

有没有人有任何使用Hudson构建rpms的经验?

现在,我看到的唯一解决方案是设置一个运行脚本的作业,该脚本检查svn导出源,创建tarball并完成整个rpm构建.这似乎与Hudson没有很好的整合 - 例如我如何收集工件?

hudson rpm

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

由于未找到依赖性/ bin/sh,rpm安装失败

我正在尝试使用rpm安装一个软件包,为此我创建了一个不同的数据库,rpmdb --initdb --dbpath $HOME/myrpmdb 并在编译时指定了--dbpath中的路径.我得到的错误是

root@jason:su rpm --dbpath $HOME/myrpmdb -ivh XXX.rpm
error: Failed dependencies:
/bin/sh is needed by XXX
Run Code Online (Sandbox Code Playgroud)

和/ bin/sh存在我可以通过某种方式将其指定给安装程序吗?在创建不同的rpm数据库时是否有一些我错过的原因现在它无法对默认命令进行优化?

linux rpm

12
推荐指数
3
解决办法
5万
查看次数

通过rpmbuild打包符号链接?

是否有可能使rpmbuild在包装上保留符号链接?

目前的行为是创建文件的副本,我想避免.

symlink rpm rpmbuild rpm-spec

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

如何在%files文件中设置目录的所有者?

如果我在%文件中有这一行:

%attr(0555, myuser, myuser) /opt/myapp/lib/my.jar
Run Code Online (Sandbox Code Playgroud)

然后my.jar将myuser作为所有者,但目录/ opt/myapp/lib将由root用户拥有.我不想写

%attr(0555, myuser, myuser) /opt/myapp/lib/
Run Code Online (Sandbox Code Playgroud)

因为我不希望包含/ opt/myapp/lib /中的所有文件.

如何为/ opt/myapp/lib /目录设置所有者?

谢谢.

rpm rpmbuild rpm-spec

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

使用rpm或yum擦除多个包

我被允许访问安装了50+ php rpms的服务器.我试图将它们全部删除.

基本上,我正在尝试将这两个命令组合在一起:

rpm -qa | grep 'php'
Run Code Online (Sandbox Code Playgroud)

rpm --erase
Run Code Online (Sandbox Code Playgroud)

我对管道和重定向有一点了解,但我不知道如何将它们用于此目的.请帮忙.

unix rpm yum

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

使用RPM分发python包以及模块依赖项

我有几个python应用程序包含应该打包并部署为RPM的脚本/模块.

更棘手的是每个应用程序应该与所有python模块依赖项一起分发,并且这些应该优先于系统安装的任何应用程序使用.

其中一些RPM的目标主机具有有限的网络访问权限,因此RPM应包含运行应用程序所需的所有内容,而不是在部署时下载任何内容.

我已经看过包装和分发virtualenv,但重新定位virtualenv似乎并没有得到很好的支持.

我查看了zc.buildout,但发现文档缺乏.我可以看到如何在开发期间下载依赖项,而不是如何将它们作为更大的应用程序的一部分进行分发.不同的应用程序可能需要同一模块的不同版本,因此不应在系统范围内安装这些版本.

另一个痛点是应用程序中的任何python脚本都需要修改为在开发期间和部署后使用不同的sys.path,我无法看到明显的方法.

有关如何最好地实现这一点的建议吗?从开发人员的角度来看,工作流程的理想总结如下所示:

  1. 下载应用程序源
  2. 运行脚本以获取特定模块依赖项(如果不存在)(可能使用pip)
  3. 运行脚本来构建python应用程序,并将它和所有下载的依赖项打包到RPM中

然后,最终的RPM应该可以在没有网络访问权限的主机上安装和运行,并且只安装了python解释器.

python packaging rpm buildout virtualenv

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

使用setuptools创建deb或rpm - data_files

我有一个Python 3项目.

MKC
??? latex
?   ??? macros.tex
?   ??? main.tex
??? mkc
?   ??? cache.py
?   ??? __init__.py
?   ??? __main__.py
??? README.md
??? setup.py
??? stdeb.cfg
Run Code Online (Sandbox Code Playgroud)

在安装时,我想将我的乳胶文件移动到已知目录,比如说/usr/share/mkc/latex,所以我已经告诉setuptools要包含数据文件

data_files=[("/usr/share/mkc/latex",
             ["latex/macros.tex", "latex/main.tex"])],
Run Code Online (Sandbox Code Playgroud)

现在我跑的时候

./setup.py bdist --formats=rpm
Run Code Online (Sandbox Code Playgroud)

要么

./setup.py --command-packages=stdeb.command bdist_deb
Run Code Online (Sandbox Code Playgroud)

我收到以下错误:

error: can't copy 'latex/macros.tex': doesn't exist or not a regular file

运行./setup.py bdist正常,所以问题必须在包创建中.

python rpm setuptools deb python-3.x

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

在bdist_rpm中设置RPM包名称

我正在使用Python setuptools来构建包.bdist_rpm由于某些命名限制,我想将选项中构建的rpm命名为与Python包名称不同.

可以setup.cfg[bdist_rpm]部分中完成吗?

python linux centos rpm

11
推荐指数
2
解决办法
3627
查看次数

如何在不知道其版本号的情况下以编程方式安装最新的epel-release rpm?

我在这里的第一篇文章,但我google了,找不到一个简单的方法来做到这一点.

我有一个程序,当它们上线时自动配置新的CentOS Linux服务器.作为该过程的一部分,它安装了最新版本的epel-release rpm.

我使用的命令如下所示:

$ rpm -Uvh http://dl.fedoraproject.org/pub/epel/6/x86_64/epel-release-6-7.noarch.rpm && \
     yum clean all
Run Code Online (Sandbox Code Playgroud)

这很有效......直到他们将rpm文件更改为epel-release-6-8.noarch,然后是epel-release-6-9.noarch,依此类推.他们似乎每3-4个月更新一次版本.这是一个问题,因为如果存储库更新了epel-release版本号,我的脚本将会失败,因为它不知道该版本应该是什么.

我找不到可能重定向到最新的epel rpm文件的链接,所以我别无选择,只能将版本硬编码到我的安装脚本中,并在失败时更改它.

任何人都知道一种简单的(非硬编码)方式来下载最新的epel rpm而不知道版本号?我希望有一种方式不会涉及到repo文件列表中的卷曲和grep'ing url,但好奇有人可能会建议什么?

centos rpm yum

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

安装的库中的依赖项解析失败

我正在尝试安装rpm并获得以下错误:

---> Package geramer-server.x86_64 0:3.6.0.117-1 will be an update
--> Processing Dependency: libcrypto.so.10(libcrypto.so.10)(64bit) for package: geramer-server-3.6.0.117-1.x86_64
---> Package geramer-ui.x86_64 0:3.6.0.98-1 will be updated
---> Package geramer-ui.x86_64 0:3.6.0.117-1 will be an update
--> Finished Dependency Resolution
Error: Package: geramer-server-3.6.0.117-1.x86_64 (/geramer-server-3.6.0.117.x86_64)
           Requires: libcrypto.so.10(libcrypto.so.10)(64bit)
Run Code Online (Sandbox Code Playgroud)

我的第一个想法是没有安装libcrypto.so.但事实并非如此,请参阅:

$ ldconfig -p | grep libcrypto.so
    libcrypto.so.10 (libc6,x86-64) => /usr/lib64/libcrypto.so.10
Run Code Online (Sandbox Code Playgroud)

它也存在于磁盘上:

$ ls -l /usr/lib64/libcrypto.so.10
lrwxrwxrwx 1 root root 18 Dec  4 13:11 /usr/lib64/libcrypto.so.10 -> libcrypto.so.1.0.0
Run Code Online (Sandbox Code Playgroud)

RPM也知道它:

$ yum whatprovides "*/libcrypto.so.10"
Loaded plugins: product-id, rhnplugin, subscription-manager
*Note* Red …
Run Code Online (Sandbox Code Playgroud)

rpm

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