我只是想创造一个转文件分发的我的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目录。

同样,我需要创建一个转只是一些文件。由于这些文件都源的控制,因为它似乎愚蠢,我不想走过去皮他们只是为了转速解压他们。我想出了以下:

  1. 设立了您的环境:

    mkdir -p ~/rpm/{BUILD,RPMS}

    echo '%_topdir %(echo "$HOME")/rpm' > ~/.rpmmacros

  2. 创建你的规格文件,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
    
  3. 建立你的转: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构建环境。

处理生成转自源文件:

  1. 下载来源文件with.gz 延伸。
  2. 安装rpm-建立和rpmdevtools从善安装。(软件包的文件夹会产生...规格,源,RPM..文件夹会应该是内部生成的软件包文件夹)。
  3. 复制源code.gz 资料来源文件夹。(软件包来源)
  4. 解压的焦油球通过使用下述的命令。去来源文件夹:软件包来源那里的原油文件是存在的。命令:e.g tar-xvzf httpd-2.22.tar.gz httpd-2.22文件夹中的文件将会产生同样的道路。
  5. 去提取的文件夹和类型以下命令:./configure--prefix=/usr/local/apache2--with-包括月--enable-代理--enable-代理的平衡--with-mpm=worker--enable-mod静=所有 (.配置可以根据不同的来源为其中转已经建成的-我已经做了apache HTTPD需要apr和apr-率的依赖包)。
  6. 运行以下命令一旦配置是成功的:让
  7. 之后成功执行od使命运行:以便处 在塔同的文件夹。(如果你没有便处软件,请下载最新版本可从网站) 还以便处软件有错误,这是可以解决通过以下方式:::::找到checkinstallrc然后更换翻译=1翻译=0使用vim命令。此外,检查排除包装:排除="/如何"
  8. 以便处将请求选项(类型R如果你想要的tp建立转用的源文件)
  9. 完成。rpm文件将建立在RPM文件夹内部软件包RPM文件...所有。

的RPM通常由源,而不是二进制文件构建的。

您需要编写,讨论了如何配置和编译你的应用程序的规范文件;还,包括在您的RPM哪些文件。

在手动快速浏览显示,你最需要的是在第8章 - 也是,因为大多数基于RPM的发行有可用资源,有字面上的,你可以看不同的方法的例子数不胜数

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top