Articles of rpmbuild

不会在第二次安装的rpm上创build符号链接

奇怪的是在这里倾覆。 我正在构build一个rpm包,这里是我的spec文件: [root@localhost rpmbuild]# cat SPECS/generated.spec # The name of your package Name: sotoolkit # A short summary of your package Summary: Toolkit # The version of your package Version: 1.5 # The release number of your package Release: 1 #URL URL: https://github.blah blah blah # Any license you wish to list License: GPLv2 # […]

rpmbuild:如何在不安装%install的情况下构build包?

我试图build立一个转速,但不幸的是在我的生成机器,我只有限制权限,这意味着%安装的操作不能在生成机器内完成。 如何在不运行%install部分的情况下构build包(.rpm文件)? 看起来没有可用于此目的的选项: http://www.rpm.org/max-rpm-snapshot/ch-rpm-b-command.html 我的bu.spec文件: Summary: xxxx Name: xx Version: 1.0 Release: 1 Group: Applications/Sound License: Share %description %prep echo "prep" %build %install echo "install" mkdir -p /opt/xcp_src/ cp scripts.tgz /opt/xcp_src/ %files /tmp/xcp_src/scripts.tgz %post cd /opt/xcp_src/ tar zxvf scripts.tgz

RPM中的variables和转义SPEC文件macros?

我想定义一个macros,用makefile和systemd单元文件中的一些占位符replaceRPMvariables(macros)的结果。 但是,我不知道扩张的方式是否会使以下行为正确: %define repl_vars() (sed -e "s:\${LIBEXECDIR}:%{_libexecdir}:g" -e "s:\${LOCALSTATEDIR}:%{_localstatedir}:g" -e "s:\${SYSCONFIGDIR}:%{_sysconfdir}:g" %{1} > %{1}.new && mv %{1}.new %{1}) 大写的${…}是用标准RPMvariables(macros)保存的实际pathreplace的占位符。 另外,用\工作在Bash和东西,我把放在SPEC文件的%install部分转义$占位符,但仍然有效的macros吗? 并且是%{1}有效,因为我从来没有见过一个例子 – 如果不是,我怎么连接。 .new %1 ? 如果这是错的,我该怎么做?

内核版本为CentOS 7:内核固件不生成

我正在为Cent OS 7重buildLinux内核以select不同的抢占级别。 我的步骤如下: sudo yum install rpm-build redhat-rpm-config asciidoc hmaccalc perl-ExtUtils-Embed pesign xmlto audit-libs-devel binutils-devel elfutils-devel elfutils-libelf-devel ncurses-devel newt-devel numactl-devel pciutils-devel python-devel zlib-devel gcc patchutils bison make gcc redhat-rpm-config mkdir -p ~/rpmbuild/{BUILD,BUILDROOT,RPMS,SOURCES,SPECS,SRPMS} echo '%_topdir %(echo $HOME)/rpmbuild' > ~/.rpmmacros wget http://vault.centos.org/7.2.1511/updates/Source/SPackages/kernel-3.10.0-327.4.4.el7.src.rpm rpm -i kernel-3.10.0-327.4.4.el7.src.rpm cd ~/rpmbuild/SPECS rpmbuild -bp –target=$(uname -m) kernel.spec 在BUILDconfiguration内核并在SOURCES文件中复制configuration文件 rpmbuild -bb –with […]

RPM打包一个专有的安装程序的tarball

我目前正试图从一个使用专有二进制安装程序的tarball中创build一个RPM来转储文件系统中的一堆文件。 这个安装程序不让我指定文件的位置(所以我不能把它们转储到一个build文件夹中)。 我想知道什么是可靠地打包文件的最佳方法?

如何知道系统正在安装ISO

我正在创build一个RPM。 该RPM将与CentOS ISO打包在一起,并在安装CentOs时安装。 这也可以使用正常的rpm安装方法进行安装。 但是,如果从ISO安装并使用rpm正常安装方法安装,rpm安装需要有不同的行为。 所以,问题是我怎么知道系统是否正在安装ISO。 提前致谢。

我如何重buildrpm包,排除一些依赖关系?

有下一种问题。 想要重build垃圾收集器(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) 需要我编辑我的规格文件,或更改并重build我的tar.gz档案?

在RPM spec文件中设置目标目录

我有一个非常简单的tar.gz文件,我想用RPM软件包安装Java文件。 我创build了这个spec文件: Name: test Version: 1.0 Release: 1%{?dist} Summary: test installation script Group: Utilities License: GPL URL: http://oracle-base.com/articles/linux/linux-build-simple-rpm-packages.php Source0: test-1.0.tar.gz BuildArch: x86_64 BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-root-%(%{__id_u} -n) #BuildRequires: #Requires: %description test installation script %prep %setup -c /opt/test %build #%%configure #make %{?_smp_mflags} %install rm -rf $RPM_BUILD_ROOT #make install DESTDIR=$RPM_BUILD_ROOT #install -d $RPM_BUILD_ROOT/opt/agent %clean rm -rf $RPM_BUILD_ROOT %files %defattr(-,root,root,-) […]

build立rpm,覆盖_topdir,但获得BuildRequires代表?

我有一个我可以创build的libfoo-devel rpm,使用技巧来覆盖_topdir 。 现在我想要构build一个包含BuildRequires'libfoo libfoo-devel '的包“ bar ”,我似乎无法find正确的方法来访问libfoo-devel的内容,而无需将其安装在构build主机上。我应该怎么做呢? 编辑: 我的构build和目标发行版都是SuSE。 我更喜欢不需要mock解决scheme,因为我相信SuSE不会将其包含在股票回购中。 后续编辑: 我相信我所寻求的答案是在build包中。 也许这是SuSE的mock答案? 或者它是oBS服务的分布式版本? 描述 build是一种以安全,清洁的方式构buildSuSE Linux RPM的工具。 编译时会将一个最小的SuSE Linux作为编译系统安装到某个目录中,并且会根据这个系统来编译这个包。 这样,即使程序包不使用BuildRoot,也不会冒险损坏工作系统(例如由于破坏的spec文件)。 构buildsearchspec文件的BuildRequires:行; 如果find这样的行,则安装所有指定的rpm。 否则,使用默认包的select。 请注意,构build不会自动解决缺less的依赖关系,因此指定的rpms必须足够构build。

如何绕过RPM大小限制?

我正在构build相当大的RPM(〜5Gb),并获得以下消息: `error: Package too large (> 2147483647 bytes)` 有没有办法忽略这个限制? 我正在使用RPM 4.4.2.3