首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >创建一个RPM文件至少需要做什么?

创建一个RPM文件至少需要做什么?
EN

Stack Overflow用户
提问于 2009-05-18 23:10:15
回答 5查看 107.2K关注 0票数 153

我只想创建一个RPM文件来分发我的Linux二进制文件"foobar",只有几个依赖项。它有一个配置文件/etc/foobar.conf,应该安装在/usr/bin/foobar中。

不幸的是,documentation for RPM有27章长,我真的没有一天时间坐下来读这篇文章,因为我还忙于为其他平台制作.deb和EXE安装程序。

要创建RPM,我至少需要做什么?假设foobar二进制文件和foobar.conf位于当前工作目录中。

EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2009-07-22 13:21:08

我经常在linux上对每个打包专有应用程序进行二进制rpm -也最常见的是websphere。所以我的经验对你也是有用的,除此之外,如果你可以的话,最好是做一个真正的RPM。但我离题了。

所以打包你的(二进制)程序的基本步骤如下--我假设这个程序是toybinprog版本1.0,在/etc/toybinprog/toybinPro.conf中安装一个conf,在/usr/bin中安装一个名为tobinprog的bin:

1.为rpm < 4.6,4.7创建您的RPM构建环境

代码语言:javascript
复制
mkdir -p ~/rpmbuild/{RPMS,SRPMS,BUILD,SOURCES,SPECS,tmp}

cat <<EOF >~/.rpmmacros
%_topdir   %(echo $HOME)/rpmbuild
%_tmppath  %{_topdir}/tmp
EOF

cd ~/rpmbuild

2.创建项目的tarball

代码语言:javascript
复制
mkdir toybinprog-1.0
mkdir -p toybinprog-1.0/usr/bin
mkdir -p toybinprog-1.0/etc/toybinprog
install -m 755 toybinprog toybinprog-1.0/usr/bin
install -m 644 toybinprog.conf toybinprog-1.0/etc/toybinprog/

tar -zcvf toybinprog-1.0.tar.gz toybinprog-1.0/

3.复制到源目录

代码语言:javascript
复制
cp toybinprog-1.0.tar.gz SOURCES/

cat <<EOF > SPECS/toybinprog.spec
# Don't try fancy stuff like debuginfo, which is useless on binary-only
# packages. Don't strip binary too
# Be sure buildpolicy set to do nothing
%define        __spec_install_post %{nil}
%define          debug_package %{nil}
%define        __os_install_post %{_dbpath}/brp-compress

Summary: A very simple toy bin rpm package
Name: toybinprog
Version: 1.0
Release: 1
License: GPL+
Group: Development/Tools
SOURCE0 : %{name}-%{version}.tar.gz
URL: http://toybinprog.company.com/

BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-root

%description
%{summary}

%prep
%setup -q

%build
# Empty section.

%install
rm -rf %{buildroot}
mkdir -p  %{buildroot}

# in builddir
cp -a * %{buildroot}


%clean
rm -rf %{buildroot}


%files
%defattr(-,root,root,-)
%config(noreplace) %{_sysconfdir}/%{name}/%{name}.conf
%{_bindir}/*

%changelog
* Thu Apr 24 2009  Elia Pinto <devzero2000@rpm5.org> 1.0-1
- First Build

EOF

4.构建源代码和二进制rpm。

代码语言:javascript
复制
rpmbuild -ba SPECS/toybinprog.spec

仅此而已。

希望这对你有所帮助

票数 179
EN

Stack Overflow用户

发布于 2012-06-26 22:19:24

作为应用程序分销商,fpm sounds perfect for your needs。有一个an example here,它展示了如何从源代码打包应用程序。FPM可以生成deb文件和RPM文件。

票数 21
EN

Stack Overflow用户

发布于 2013-09-17 10:54:56

要快速构建RPM,请查看Togo:

https://github.com/genereese/togo-rpm

这个项目有一个快速入门指南,我能够在不到3分钟的时间里创建一个基本的RPM。

使用原始问题中提供的数据的示例:

1)使用脚本创建工程目录:

代码语言:javascript
复制
$ togo project create foobar; cd foobar

2)在./root下创建所需的目录结构,并将文件复制到其中:

代码语言:javascript
复制
$ mkdir -p root/etc; cp /path/to/foobar.conf root/etc/
$ mkdir -p root/usr/bin; cp /path/to/foobar root/usr/bin/

3)从RPM的所有权中排除系统拥有的目录:

代码语言:javascript
复制
$ togo file exclude root/etc root/usr/bin

4) (可选)修改生成的规范,以更改您的包描述/依赖项/版本/其他内容,等等:

代码语言:javascript
复制
$ vi spec/header

5)构建RPM:

代码语言:javascript
复制
$ togo build package

-and您的RPM被输出到./rpms目录中。

票数 17
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/880227

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档