标签: rpm

验证 yum 存储库的依赖项

我正在尝试为我的使用创建一个自定义的 rhel5.5 存储库,但我很难验证我的存储库中是否拥有每个包的所有依赖项。

我想要做的是在我的存储库中的每个包上进行 yum 安装,以查看是否所有依赖项都可用。

有没有简单的方法来做到这一点?


编辑我找到了答案。下载 yum-utils

yum 安装 yum-utils

并做一个repoclosure

回购

它将找到您在 /etc/yum.repo.d/* 中设置的存储库的所有缺失依赖项

rpm yum rhel5

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

如何重建 rpm 包排除某些依赖项?

有下一种问题。想要重建垃圾收集器 (gc-7.1-10.el6.src.rpm) 并排除 ld-linux.so.2, ld-linux.so.2(GLIBC_2.3) & libpthread.so.0(GLIBC_2.3.2) ) 依赖项。我怎样才能得到我想要的类似的东西? (CentOS 6)

% rpm -qp -R rpmbuild/RPMS/i386/gc-7.1-10.el6.i386.rpm
/sbin/ldconfig  
/sbin/ldconfig  
ld-linux.so.2  
ld-linux.so.2(GLIBC_2.3)  
libc.so.6  
libc.so.6(GLIBC_2.0)  
libc.so.6(GLIBC_2.1)  
libc.so.6(GLIBC_2.1.3)  
libc.so.6(GLIBC_2.2.4)  
libc.so.6(GLIBC_2.3)  
libcord.so.1  
libdl.so.2  
libdl.so.2(GLIBC_2.1)  
libgc.so.1  
libgcc_s.so.1  
libgcc_s.so.1(GCC_3.0)  
libgcc_s.so.1(GCC_3.3.1)  
libgccpp.so.1  
libm.so.6  
libpthread.so.0  
libpthread.so.0(GLIBC_2.0)  
libpthread.so.0(GLIBC_2.1)  
libpthread.so.0(GLIBC_2.2)  
libpthread.so.0(GLIBC_2.2.3)  
libpthread.so.0(GLIBC_2.3.2)  
libstdc++.so.6  
libstdc++.so.6(CXXABI_1.3)  
rpmlib(CompressedFileNames) <= 3.0.4-1
rpmlib(PayloadFilesHavePrefix) <= 4.0-1
rpmlib(VersionedDependencies) <= 3.0.3-1
rtld(GNU_HASH)
Run Code Online (Sandbox Code Playgroud)

我需要编辑我的规范文件,或者更改和重建我的 tar.gz 档案吗?

linux rpm dynamic-linking rpmbuild

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

出现错误时如何退出rpm安装

如果某些条件为假,我正在寻找一种退出 rpm 安装的方法。我在 %pre 部分添加了一个小脚本,如果我的条件失败,它会退出安装。

我面临的问题是我看到 %pre scriptlet 已执行,并且 rpm 安装失败。然而,在它的最后,我得到了这 2 行我不想要的 - 已安装......然后是完成!

Downloading Packages:
Running Transaction Test
Finished Transaction Test
Transaction Test Succeeded
Running Transaction
missing file zyWhg1. exiting install..
error: %pre(tyr-3.2.1.x86_64) scriptlet failed, exit status 255
error:   install: %pre scriptlet failed (2), skipping tyr-3.2.1

Installed: tyr-3.2.1.x86_64 0:3.2.1
Complete!
Run Code Online (Sandbox Code Playgroud)

rpm rpmbuild rpm-spec

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

RPM % 以不同的用户身份发布

我需要在 RPM 的 %post 部分以不同的用户身份运行命令。

目前我正在通过 python 使用一些 hack 但它不是最好的方法(它确实感觉有点脏)......

%post -p /usr/bin/python
import os, pwd, subprocess
os.setuid(pwd.getpwnam('apache')[2])
subprocess.call(['/usr/bin/something', 'an arg'])
Run Code Online (Sandbox Code Playgroud)

有没有合适的方法来做到这一点?

bash rpm

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

如何在 RHEL 上为新的 Boost 版本构建/部署 RPM?

我在一个由 10 多名开发人员组成的团队中工作,我们将 RHEL 6.4 用于我们的开发机器和服务器(部署我们的软件)。

RHEL 6.4 带有 Boost 1.41,但我需要至少 1.47 的修复程序。我想升级到最新的(目前是 1.56)。

它不像下载源代码和构建/安装那么容易,因为:

  • 我希望我们团队中的每个人(包括未来的团队成员)都能轻松访问新的 Boost 版本。要求每个人都构建/安装很麻烦,并且可能会出现不一致的情况。
  • 我们的软件部署为 RPM,安装在数百台服务器上(这些服务器归其他团队所有,不受我们控制)。这些也运行 RHEL 6.4。我们的软件(大概)需要运行时链接到所有这些机器上的新 Boost 共享库。

更糟糕的是,RedHat 似乎有自己的专有方式将 Boost 软件/库捆绑/打包到 RPM 中。他们不是只有一个 RPM,而是一系列较小的 RPM:

$ yum list installed|grep boost
boost.x86_64                          1.41.0-11.el6_1.2           @Workstation  
boost-date-time.x86_64                1.41.0-11.el6_1.2           @Workstation  
boost-devel.x86_64                    1.41.0-11.el6_1.2           @Workstation  
boost-filesystem.x86_64               1.41.0-11.el6_1.2           @Workstation  
boost-graph.x86_64                    1.41.0-11.el6_1.2           @Workstation  
boost-iostreams.x86_64                1.41.0-11.el6_1.2           @Workstation  
boost-program-options.x86_64          1.41.0-11.el6_1.2           @Workstation  
boost-python.x86_64                   1.41.0-11.el6_1.2           @Workstation  
boost-regex.x86_64                    1.41.0-11.el6_1.2           @Workstation  
boost-serialization.x86_64            1.41.0-11.el6_1.2           @Workstation  
boost-signals.x86_64                  1.41.0-11.el6_1.2           @Workstation  
boost-system.x86_64                   1.41.0-11.el6_1.2           @Workstation  
boost-test.x86_64                     1.41.0-11.el6_1.2           @Workstation  
boost-thread.x86_64                   1.41.0-11.el6_1.2           @Workstation  
boost-wave.x86_64 …
Run Code Online (Sandbox Code Playgroud)

c++ linux boost rpm rhel

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

如何将 .tar.gz 文件打包成 rpm 包


我在 Redhat Linux 上工作过,我有一个 tar.gz 文件。我想把这个 tar.gz 文件打包成一个 rpm 包文件。
在rpm包阶段,我只是想解压tar.gz文件,把所有的人员打包到rpm包中,当我在linux服务器上安装rpm包时,它只会简单地将所有文件复制到目标文件夹中.
我已经尝试了很多。这是我的 SPEC 文件的一些代码,但它有问题:

%prep

%build
pwd

%install

rm -rf /usr/local/sample
mkdir /usr/local/sample
cd %{_sourcedir}
tar -xzvf sample.tar.gz -C /usr/local/sample

%clean
rm -rf %{buildroot}

%files
%defattr(-,root,root,-)
%doc

%changelog
Run Code Online (Sandbox Code Playgroud)

我可以成功打包rpm文件,但是rpm包中没有tar.gz文件的内容。
如果我在其他服务器上安装 rpm 文件,它将失败。
我该如何解决这个问题?

rpm rpmbuild rpm-spec

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

python bdist_rpm 不使用 install_requires?

我创建了一个新的 RPM 使用python bdist_rpm. 通常python setup.py install会安装 python 依赖项websocket-client或任何其他包。但是 RPM 只是拒绝安装任何东西。

显然,来自其他各种帖子的建议似乎只是要求在 setup.cfg 中将它们作为 rpm 包。这对我来说没有意义,因为大多数 rpm 包似乎都是旧版本,我不可能为我需要的所有 python 包创建 rpm。我需要一个更新的版本,yum 安装实际上没有安装软件包是没有意义的。

什么是正确的(干净和最简单的)方法?我相信如果 asetup.py有类似的东西

install_requires=[
    "validictory",
    "requests",
    "netlogger>=4.3.0",
    "netifaces",
    "pyzmq",
    "psutil",
    "docopt"
],
Run Code Online (Sandbox Code Playgroud)

然后它应该尝试将它们包含在 rpm 中或尝试安装它。我正在使用 vagrant 尝试一个干净的 centos vm,我一直在破坏它,然后安装 rpm。

python distutils rpm setuptools

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

Spring 启动 Maven rpm

我有一个弹簧启动应用程序。今天maven从项目中创建了jar。下面是我的 pom.xml 的构建部分

<build>
    <finalName>xsmartadapter</finalName>
    <plugins>
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-compiler-plugin</artifactId>
            <version>2.3.2</version>
            <configuration>
                <source>${java-version}</source>
                <target>${java-version}</target>
                <compilerArgument>-Xlint:all</compilerArgument>
                <showWarnings>true</showWarnings>
                <showDeprecation>true</showDeprecation>
            </configuration>
        </plugin>

        <plugin>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-maven-plugin</artifactId>
        </plugin>
    </plugins>
</build>
Run Code Online (Sandbox Code Playgroud)

通过在上面的构建部分添加以下内容,我可以生成 rpm。

<plugin>
  <groupId>org.codehaus.mojo</groupId>
  <artifactId>rpm-maven-plugin</artifactId>
  <version>2.1.5</version>
  <extensions>true</extensions>
  <executions>
      <execution>
          <id>generate-rpm</id>
              <goals>
                  <goal>rpm</goal>
              </goals>
          <phase>prepare-package</phase>
      </execution>
  </executions>
    <configuration>
      <group>Application</group>
      <packager>SWWDC</packager>
      <mappings>
          <mapping>
              <directory>${basedir}/target</directory>
              <sources>
                  <source>
                      <location>target/classes</location>
                  </source>
              </sources>
          </mapping>
      </mappings>
      <name>xsmartadapter</name>
      <executable>rpmbuild</executable>
      <workingDirectory>${basedir}</workingDirectory>
  </configuration>
</plugin>
Run Code Online (Sandbox Code Playgroud)

但是当我尝试安装并启动服务时sudo service 'name' start。说找不到服务。

但是当我创建一个tar.gz文件并生成一个rpmusing 时,rpmbuild -ba target/filename.spec我就可以启动该服务。

我的目标是生成一个rpm(来自 maven),安装它并启动服务。

请提供一些建议。

rpm maven spring-boot

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

如何在 rpm 中更改“构建主机”

我需要将“构建主机”名称更改为其他实际主机名,fqdn(从 /etc/hosts 中选取)

在 rpm 生成过程中,我们通过 .spec 文件设置 rpm 属性,但我知道无法通过 .spec 文件设置“构建主机”值。

有没有办法在 rpm 中更改“构建主机”值而不实际更改 linux 机器的主机名。

即 /etc/sysconfig/network 或

https://www.onyxpoint.com/spoofing-the-build-hostname-in-mock/

linux rpm

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

rpm:/lib64/liblzma.so.5:未找到版本“XZ_5.1.2alpha”(/lib/librpmio.so.3 需要)

我被这个错误困住了。无法安装任何 RPM。请帮忙

操作系统是 RHEL6.9 64 位

提前致谢。

rpm rhel

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

标签 统计

rpm ×10

linux ×3

rpmbuild ×3

rhel ×2

rpm-spec ×2

bash ×1

boost ×1

c++ ×1

distutils ×1

dynamic-linking ×1

maven ×1

python ×1

rhel5 ×1

setuptools ×1

spring-boot ×1

yum ×1