题
我只是想创造一个转文件分发的我的Linux二元"foobar",只有一对夫妇的依赖关系。它有一个配置文件,/etc/foobar.conf并应安装/usr/bin/foobar.
不幸的是的 文档转速 27章节长,我真的没有一天坐下来和读到这一点,因为我也忙于制作。deb和可执行软件安装适用于其他平台。
什么是绝对最低我必须做到创建一个转?假设foobar二和foobar.conf是在目前的工作目录。
解决方案
我经常做二进制转每包装专有的应用程序 - 也MOSTER如websphere的 - 在Linux上。 所以我的经验可能是有用的也是你,除了它会如果你能更好地做一个真正的RPM。但我离题。
因此,用于包装的(二进制)程序的基本步骤是如下 - 其中i的假设 程序与版本1.0 toybinprog,必须安装在一个/etc/toybinprog/toybinprog.conf CONF,并且必须安装在/ usr / bin中称为tobinprog仓:
1。创建RPM您RPM生成的env <4.6,4.7
mkdir -p ~/rpmbuild/{RPMS,SRPMS,BUILD,SOURCES,SPECS,tmp}
cat <<EOF >~/.rpmmacros
%_topdir %(echo $HOME)/rpmbuild
%_tmppath %{_topdir}/tmp
EOF
cd ~/rpmbuild
2。创建项目的压缩包
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。复制到源DIR
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。构建源和二进制转
rpmbuild -ba SPECS/toybinprog.spec
而这一切。
希望这有助于
其他提示
作为应用分销商, FPM听起来很完美满足您的需求的。有这里其中一个例子说明如何打包应用从源头。 FPM可以产生既DEB文件和RPM文件。
为了快速RPM建筑,检查出多哥:
https://github.com/genereese/togo-rpm
在项目具有快速启动引导,我能够在不到3分钟,以创建一个基本的RPM。
使用在原来的问题所提供的数据实施例:
1)使用脚本创建项目目录:
$ togo project create foobar; cd foobar
2)使下./root您想要的目录结构和文件复制到它:
$ 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的所有权制度,拥有的目录:
$ togo file exclude root/etc root/usr/bin
4)(可选)修改所生成的规格改变你的包描述/依赖性/版本/不管等:
$ vi spec/header
5)构建RPM:
$ togo build package
-and您的RPM被吐出到./rpms目录。
同样,我需要创建一个转只是一些文件。由于这些文件都源的控制,因为它似乎愚蠢,我不想走过去皮他们只是为了转速解压他们。我想出了以下:
设立了您的环境:
mkdir -p ~/rpm/{BUILD,RPMS}
echo '%_topdir %(echo "$HOME")/rpm' > ~/.rpmmacros
创建你的规格文件,foobar.规范,有如下内容:
Summary: Foo to the Bar Name: foobar Version: 0.1 Release: 1 Group: Foo/Bar License: FooBarPL Source: %{expand:%%(pwd)} BuildRoot: %{_topdir}/BUILD/%{name}-%{version}-%{release} %description %{summary} %prep rm -rf $RPM_BUILD_ROOT mkdir -p $RPM_BUILD_ROOT/usr/bin mkdir -p $RPM_BUILD_ROOT/etc cd $RPM_BUILD_ROOT cp %{SOURCEURL0}/foobar ./usr/bin/ cp %{SOURCEURL0}/foobar.conf ./etc/ %clean rm -r -f "$RPM_BUILD_ROOT" %files %defattr(644,root,root) %config(noreplace) %{_sysconfdir}/foobar.conf %defattr(755,root,root) %{_bindir}/foobar
建立你的转:
rpmbuild -bb foobar.spec
有个小车呀有指定的"来源"作为当前的目录,但它似乎更优雅那么替代方案,这是在我的情况下,编写一个单独的脚本以创建一个压缩文件,等等,等等。
注:在我的特别情况下,我的文件被安排在文件夹根据在那里他们需要去,像这样:
./etc/foobar.conf
./usr/bin/foobar
所以准备的部分成为:
%prep
rm -rf $RPM_BUILD_ROOT
mkdir -p $RPM_BUILD_ROOT
cd $RPM_BUILD_ROOT
tar -cC %{SOURCEURL0} --exclude 'foobar.spec' -f - ./ | tar xf -
这是一个小小的更清洁。
此外,我碰巧是在一个RHEL5.6转速版本4.4.2.3,因此您的里程可能会有所不同。
如果make config
适用于你的程序,或者你有一个shell脚本,你的两个文件复制到你可以使用的检查安装。只要到您的生成文件是目录,并与参数-R
调用它(为的 RPM 的)和任选的安装脚本。
简单的方法来建立转包的二进制(这些步骤进行了测试这是一个18):
1)首先,你必须安装rpmdevtools,所以执行这些命令(注意:运行作为普通用户)
$ sudo yum install rpmdevtools rpmlint
$ rpmdev-setuptree
2)在~/软件包的规格文件夹创建新的文件:安装的.规格
3)打开它有一个编辑(如点击)和编写这样的:
Name: package_name
Version: 1.0
Release: 1
Summary: Short description (first char has to be uppercase)
License: GPL
URL: www. your_website/
BuildRequires: package_required >= (or ==, or <=) 1.0.3 (for example)
%description
Description with almost 79 characters (first char has to be uppercase)
#This is a comment (just as example)
%files
/usr/bin/binary_file.bin
/usr/share/applications/package_name.desktop
/usr/share/pixmaps/package_name.png
%changelog
* date Packager's Name <packager's_email> version-revision
- Summary of changes
#For more details see: docs.fedoraproject.org/en-US/Fedora_Draft_Documentation/0.1/html/Packagers_Guide/sect-Packagers_Guide-Creating_a_Basic_Spec_File.html
4)让-/软件包BUILDROOT/安装的版本发布。i386和重现的路径,该文件将被置于 因此,在这种情况下,例如创建:
- ~/软件包BUILDROOT/安装的版本发布。i386/usr/bin/
- ~/软件包BUILDROOT/安装的版本发布。i386/usr/share/applications/
- ~/软件包BUILDROOT/安装的版本发布。i386/usr/share/映射/
5)把这些文件夹中的文件,你想要插入在包:
- ~/软件包BUILDROOT/安装的版本发布。i386/usr/bin/binary_file.站
- ~/软件包BUILDROOT/安装的版本发布。i386/usr/share/应用程序/安装的.桌面
- ~/软件包BUILDROOT/安装的版本发布。i386/usr/share/映射/安装的.png
usr/share/映射/安装的.png是二进制的 usr/share/应用程序/安装的.桌面上的规则插入节目的在菜单中的条目
6)包.桌面必须是这样的:
[Desktop Entry]
Encoding=UTF-8
Type=Application
Name=example
GenericName=Short description
Comment=Comment of the application
Exec=package_name
Icon=package_name
Terminal=false
Categories=System;
类别是:standards.freedesktop.org/menu-spec/latest/apa.html
7)运行 $ rpmbuild -bb ~/rpmbuild/SPECS/package_name.spec
8)您的包裹建成~/软件包RPM文件夹
如果你安装了这个包它的安装:
- /usr/bin/binary_file.站
- /usr/share/应用程序/安装的.桌面
- /usr/share/映射/安装的.png
感谢:losurs.org/docs/tips/redhat/binary-rpms
更多详细信息来建立转看看这个 链接.
GUI java软件,以建立转: https://sourceforge.net/projects/javarpmbuilder/
如果你熟悉Maven的存在也rpm-maven-plugin
从而简化了制作的RPM:你只写pom.xml
将被再用于构建RPM。由插件隐式创建RPM构建环境。
处理生成转自源文件:
- 下载来源文件with.gz 延伸。
- 安装rpm-建立和rpmdevtools从善安装。(软件包的文件夹会产生...规格,源,RPM..文件夹会应该是内部生成的软件包文件夹)。
- 复制源code.gz 资料来源文件夹。(软件包来源)
- 解压的焦油球通过使用下述的命令。去来源文件夹:软件包来源那里的原油文件是存在的。命令:e.g tar-xvzf httpd-2.22.tar.gz httpd-2.22文件夹中的文件将会产生同样的道路。
- 去提取的文件夹和类型以下命令:./configure--prefix=/usr/local/apache2--with-包括月--enable-代理--enable-代理的平衡--with-mpm=worker--enable-mod静=所有 (.配置可以根据不同的来源为其中转已经建成的-我已经做了apache HTTPD需要apr和apr-率的依赖包)。
- 运行以下命令一旦配置是成功的:让
- 之后成功执行od使命运行:以便处 在塔同的文件夹。(如果你没有便处软件,请下载最新版本可从网站) 还以便处软件有错误,这是可以解决通过以下方式:::::找到checkinstallrc然后更换翻译=1翻译=0使用vim命令。此外,检查排除包装:排除="/如何"
- 以便处将请求选项(类型R如果你想要的tp建立转用的源文件)
- 完成。rpm文件将建立在RPM文件夹内部软件包RPM文件...所有。
的RPM通常由源,而不是二进制文件构建的。
您需要编写,讨论了如何配置和编译你的应用程序的规范文件;还,包括在您的RPM哪些文件。
在手动快速浏览显示,你最需要的是在第8章 - 也是,因为大多数基于RPM的发行有可用资源,有字面上的,你可以看不同的方法的例子数不胜数