标签: rpm

将 RPM 的内容提取到 Python 中的临时目录中

我正在编写一个工具来验证 Python 中的 RPM 并打印出更改的文件中的实际差异。

我可以使用 .ftp 从 ftp 服务器获取 RPM ftplib。我正在考虑保存 rpm/tmp并使用subprocess模块来运行

rpm2cpio myrpmfile.rpm | cpio -idmv
Run Code Online (Sandbox Code Playgroud)

获取 RPM 中的文件,以便我可以比较这些文件。之后,我将删除临时文件。

这似乎有点 hacky,那么这是最好的方法,还是有更优雅的 Python 解决方案?

python rpm temp

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

带有可执行文件的 RPMbuild

我正在尝试构建 RPM(rpmbuild -bb 规范文件)。安装 rpm 时,一些可执行 tcl 文件已损坏,并且所有文件都具有相同的大小。

rpm rpmbuild rpm-spec

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

在 CentOS / Fedora 上安装 OpenBLAS

在一个Java项目中,我使用matrix-toolkits-java (MTJ)来进行高效的矩阵乘法。这依赖于netlib-java,而 netlib-java 又依赖于计算机上安装的 BLAS 和 LAPACK 的优化实现。它专门寻找/usr/lib64/libblas.so.3/usr/lib64/liblapack.so.3找到这些库。

blas通过Yum安装时lapack,我们会获得符号链接/usr/lib64/libblas.so.3/usr/lib64/liblapack.so.3指向引用中的 .so 文件blaslapack通过 Yum 安装。

现在我们想要使用比参考更快的实现,在我的例子中是OpenBLAS。无论我是自己编译还是通过 Yum 安装它,我最终都会得到/usr/lib64/libopenblas-r0.2.18.so.

现在,根据互联网上的任何指南,我应该用 OpenBLAS 实现的符号链接替换参考实现的符号链接,最终得到如下结果:

libblas.so.3 -> libopenblas-r0.2.18.so
liblapack.so.3 -> libopenblas-r0.2.18.so
Run Code Online (Sandbox Code Playgroud)

好吧,我能做到!我可以使用ln或 via 来做到这一点alternatives。如果我这样做,我的代码就会愉快地使用快速的 OpenBLAS。

然而,当ldconfig运行时,我很棒的符号链接消失了,它们被参考 BLAS 和 LAPACK 安装覆盖。然后我的软件又变得悲伤和缓慢。

所以我的问题是,如何在CentOS/Fedora上安装OpenBLAS,并且运行时ldconfig不会破坏它?我无法删除blaslapack软件包,因为主机的其他客户端可能依赖它。blas相反,我会以某种方式让操作系统了解 OpenBLAS 是和的直接替代品lapack

centos rpm blas mtj openblas

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

升级过程中,rpm如何知道要删除哪些文件?

我是包装新手。

该网站指出升级过程中的步骤是:

因此,升级期间的操作顺序是:

  1. 运行正在安装的 RPM 的 %pre 部分。
  2. 安装 RPM 提供的文件。
  3. 运行 RPM 的 %post 部分。
  4. 运行旧包的 %preun。
  5. 删除所有未被新版本覆盖的旧文件。(此步骤将删除新包不需要的文件。)
  6. 运行旧包的 %postun 钩子。

关于第5步,它到底如何确定应该删除哪些文件?它是否只删除属于%install/%post旧版本步骤一部分的文件?或者安装目录中不属于新版本的任何文件(如果“安装目录”的概念有意义的话)是否会%install/%post被删除?

upgrade rpm rpm-spec

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

Gradle 将 RPM 发布到 Nexus Yum Repo 在 sha1 文件上失败

我正在尝试通过 Gradle 将项目中的 RPM 工件发布到 Nexus 上的 Yum Repo 中:

publishing {
    repositories {
        ivy {
            url 'http://myrepo:8081/repository/myproject'
            credentials {
                username "aaa"
                password "xxx"
            }
            layout "pattern", {
                artifact "${buildRpm.outputs.getFiles().getSingleFile().getName()}"
            }
        }

        publications {
            rpm(IvyPublication) {
                artifact buildRpm.outputs.getFiles().getSingleFile()
            }
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

当我运行./gradlew publish此任务时,它会启动并开始上传 90MB 的主要 .rpm 工件。然后它会失败并出现以下错误:

> Task :search:publishRpmPublicationToIvyRepository FAILED

FAILURE: Build failed with an exception.

* What went wrong:
Execution failed for task ':search:publishRpmPublicationToIvyRepository'.
> Failed to publish publication 'rpm' to repository 'ivy'
   > Could …
Run Code Online (Sandbox Code Playgroud)

rpm gradle maven maven-publish

5
推荐指数
0
解决办法
414
查看次数

RPM构建错误

我需要一些帮助来调试我的rpm构建.任何时候它遇到%文件或%build或%install指令它给我一个错误,我无法弄清楚"[rpm] + $'\ r'"是什么意思

  [rpm] Building the RPM based on the LBR.spec file
  [rpm] Executing(%build): /bin/sh -e /var/tmp/rpm-tmp.2932
  [rpm] + umask 022
  [rpm] + cd /home/user.username/workspace/LBR/dist/BUILD
  [rpm] + LANG=C
  [rpm] + export LANG
  [rpm] + unset DISPLAY
  [rpm] + $'\r'
  [rpm] /var/tmp/rpm-tmp.2932: line 28:
  [rpm] : command not founderror: Bad exit status from /var/tmp/rpm-tmp.2932 (%build)
  [rpm]     Bad exit status from /var/tmp/rpm-tmp.2932 (%build)
  [rpm]
  [rpm]
  [rpm] RPM build errors:
Run Code Online (Sandbox Code Playgroud)

rpm rpmbuild

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

我在哪里可以找到amzn repo的源rpm?

我需要在我的Centos6 EC2实例上构建一个RPM包,所以我认为最好使用amzn的"官方"规范.通常我这样做,yumdownloader --source xxx但在EC2实例上它找不到任何东西.

我查了一下/etc/yum.repo.d,似乎没有关于src的任何回购.

rpm amazon-ec2

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

自定义yum repo没有显示rpm

我有一个yum存储库,我已经设置了存储自定义rpms的地方.我在查找有关在此自定义仓库中构建和存储的其他软件包的信息时没有任何问题.

#yum  --disablerepo=rhui-us-east-rhel-server-1y,epel,epel-testing --enablerepo=customrepo install php53-pecl-xdebug

 php53-pecl-xdebug                   x86_64                   2.2.1-2  customrepo                      132 k
Run Code Online (Sandbox Code Playgroud)

没问题.

现在我将centrpm.rpm放在centos/repo/5/noarch中,运行createrepo --update.在此目录中并尝试相同的命令,但它没有显示任何结果.

我尝试在repo的根目录中运行createrepo --update,但这也不起作用(我实际上不确定在哪里运行它以及它是否需要每个子目录中的repodata目录).

[root@reposerver mnt]# ls -l /var/www/repo/ 
total 12
-rw-r--r-- 1 root root  203 Jun  8 00:13 REPO_README
drwxr-xr-x 3 root root 4096 Jun 10  2011 centos
drwxr-xr-x 2 root root 4096 Oct 18 20:02 repodata
[root@reposerver mnt]# ls -l /var/www/repo/centos/5/
SRPMS/    i386/     noarch/   repodata/ x86_64/   
[root@reposerver mnt]# ls -l /var/www/repo/centos/5/noarch/
total 7324
-rw-r--r-- 1 root root    1622 Jun 28  2011 compat-php-5.1.6-1.noarch.rpm
drwxr-xr-x 2 root …
Run Code Online (Sandbox Code Playgroud)

centos rpm rhel repository yum

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

参数'sourceEncoding'rpm -maven-plugin缺失或无效

我试图使用rpm maven插件,我得到以下错误:

[错误]无法执行目标org.codehaus.mojo:rpm -maven-plugin:2.1.3:项目上的rpm(generate-rpm)TestRpmAndDocker:目标org.codehaus.mojo的参数'sourceEncoding':rpm-maven-插件:2.1.3:rpm丢失或无效 - > [帮助1] org.apache.maven.lifecycle.LifecycleExecutionException:无法执行目标org.codehaus.mojo:rpm -maven-plugin:2.1.3:rpm(生成-rpm)on project TestRpmAndDocker:目标org.codehaus.mojo的参数'sourceEncoding':rpm -maven-plugin:2.1.3:rpm在org.apache.maven.lifecycle.internal.MojoExecutor.execute中丢失或无效( MojoExecutor.java:220)org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:153)org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:145)at org .apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject(LifecycleModuleBuilder.java:108)位于org.apache.mave的org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject(LifecycleModuleBuilder.java:76)n.lifecycle.internal.builder.singlethreaded.SingleThreadedBuilder.build(SingleThreadedBuilder.java:51)org.apache.maven.life.internal.LifecycleStarter.execute(LifecycleStarter.java:116)atg.apache.maven.DefaultMaven. doOecute(DefaultMaven.java:361)org.apache.maven.maven.DefaultMaven.execute(DefaultMaven.java:155)org.apache.maven.cli.MavenCli.execute(MavenCli.java:584)atg.apache.maven位于org.apache.maven.cli.MavenCli.main(mavenCli.java:157)的.cli.MavenCli.doMain(MavenCli.java:213)at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)at sun.reflect.NativeMethodAccessorImpl .invoke(NativeMethodAccessorImpl.java:62)位于org.codehaus.plexus.classworlds的java.lang.reflect.Method.invoke(Method.java:497)的sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43). launcher.Launcher.launchEnhanced(Launcher.java:289)org.codehaus.plexus.classworlds.launcher.Launcher.launch(Launcher.java:229)org.codehaus.plexus.classworlds.launcher.Launc her.mainWithExitCode(Launcher.java:415)at org.codehaus.plexus.classworlds.launcher.Launcher.main(Launcher.java:356)引起:org.apache.maven.plugin.PluginParameterException:参数'sourceEncoding'for目标org.codehaus.mojo:rpm -maven-plugin:2.1.3:在org.apache.maven的org.apache.maven.plugin.internal.DefaultMavenPluginManager.populatePluginFields(DefaultMavenPluginManager.java:584)中,rpm丢失或无效. plug.internal.DefaultMavenPluginManager.getConfiguredMojo(DefaultMavenPluginManager.java:537)org.apache.maven.plugin.DefaultBuildPluginManager.executeMojo(DefaultBuildPluginManager.java:120)org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor. java:208)......还有19个

这是我的pom:

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>TestRpmAndDocker</groupId>
<artifactId>TestRpmAndDocker</artifactId>
<version>0.0.1-SNAPSHOT</version>
<name>TestRpmAndDocker</name>
<description>TestRpmAndDocker</description>


<build>

    <plugins>
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-compiler-plugin</artifactId>
            <version>3.3</version>
            <configuration>
                <source>1.8</source>
                <target>1.8</target>
            </configuration>
        </plugin>
        <plugin>
            <groupId>org.codehaus.mojo</groupId>
            <artifactId>rpm-maven-plugin</artifactId>
            <version>2.1.3</version>
            <executions>
                <execution>
                    <id>generate-rpm</id>
                    <goals>
                        <goal>rpm</goal>
                    </goals>
                </execution>
            </executions>
            <configuration>
                <license>GPL (c) 2005, SWWDC</license>
                <distribution>Trash 2005</distribution>
                <group>Application/Collectors</group>
                <icon>src/main/resources/icon.gif</icon>
                <packager>SWWDC</packager>
                <prefix>/usr/local</prefix>
                <changelogFile>src/changelog</changelogFile>
                <defineStatements>
                    <defineStatement>_unpackaged_files_terminate_build 0</defineStatement>
                </defineStatements>
                <mappings>
                    <mapping>
                        <directory>/usr/local/bin/landfill</directory> …
Run Code Online (Sandbox Code Playgroud)

java rpm maven rpm-maven-plugin

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

RPM安装后设置权限

我使用此spec文件来使用RPM文件

Name:           pack-agent
Version:        1.0
Release:        1%{?dist}
Summary:        Linux Agent installation script
Group:          Utilities
License:        license
Source0:        pack-agent-1.0.tar.gz
BuildArch:      x86_64
BuildRoot:      %{_tmppath}/%{name}-%{version}-%{release}-root-%(%{__id_u} -n)
%description

%prep
%setup -q -n opt

%build

%install
#install -m 0755 -d $RPM_BUILD_ROOT/agent
#cp -ap agent/* $RPM_BUILD_ROOT/agent/

install -m 0755 -d %{buildroot}/opt
#cp -a * %{buildroot}/agent
cp -a * %{buildroot}/opt

%clean
rm -rf $RPM_BUILD_ROOT

%files
/opt
%defattr(-,root,root,-)
%attr(777, root, root) /opt/agent/bin/karaf

%doc
%changelog
Run Code Online (Sandbox Code Playgroud)

但安装后文件不可执行.我需要启动文件洞察目录树.反正有没有添加chmod命令洞察spec文件并在RPM安装后用它来设置权限?

rpm rpmbuild rpm-spec

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