正如之前提到的,一般项目(程序)的目录包含pkg文件夹这个中应该编写与打包对应的例程,
例如我目录下结构为
[clouduser@blog /home/clouduser/ZK_Serviced]$ ls
AUTHORS bin data include libs logs Makefile pkg README scripts src
pkg目录下包含两个文件:
ls pkg/
Makefile ZK_Serviced.spec
这个Makefile其实就是遍历目录然后分别执行Makefile
cat Makefile
SUBDIRS := src
all:
@for d in $(SUBDIRS); do \
$(MAKE) -C $$d all; \
done
clean:
@for d in $(SUBDIRS); do \
$(MAKE) -C $$d clean; \
done
编写rpm打包程序关键在于写*.spec文件(如ZK_Serviced.spec),这个结构其实比较固定,例如我自己使用的结构内容如下示:
红色为描述性说明
绿色为生成目录与文件拷贝(打的包包含的内容)
蓝色为安装前,卸载前需要执行的脚本
cat ZK_Serviced.spec
%define debug_package %{nil}
%define __os_install_post %{nil}
%define _prefix /home/package/rpm/ZK_Serviced
%define srcname ZK_Serviced
summary: ZK_Serviced-daemon
name: ZK_Serviced
version: 1.0.0.1
release: 1%{?dist}
url: hao.360.cn
license: GPL
vendor: CloudUser<http://clouduser.cn>
group: Application/Internet
source: %{srcname}.tar.gz
#provides:
#requires:
#buildrequires:
buildroot: %{_tmppath}/%{name}-%{version}-%{release}-%(%{__id_u} -n)
%description
ZK_Serviced aim at supply a service which update sysinfo into zookeeper
if any question contact at clouduser@163.com
%prep
%setup -q -n %{srcname}
%build
# your package build steps
make
%install
rm -rf %{buildroot}
# your package install steps
# the compiled files dir: %{_builddir}/<package_source_dir> or $RPM_BUILD_DIR/<package_source_dir>
# the dest root dir: %{buildroot} or $RPM_BUILD_ROOT
mkdir -p %{buildroot}/%{_prefix}/
mkdir -p %{buildroot}/%{_prefix}/bin/
mkdir -p %{buildroot}/%{_prefix}/libs/
mkdir -p %{buildroot}/%{_prefix}/logs/
mkdir -p %{buildroot}/%{_sysconfdir}/
mkdir -p %{buildroot}/%{_sysconfdir}/cron.d/
pushd %{_builddir}/%{srcname}/
cp -rf bin %{buildroot}/%{_prefix}/
cp -rf libs %{buildroot}/%{_prefix}/
cp -rf scripts/ZK_Serviced_clean_crontab %{buildroot}/%{_sysconfdir}/cron.d/
popd
%files
#%defattr(-,search,search)
%defattr(-,root,root)
# list your package files here
# the list of the macros:
# _prefix /usr
# _exec_prefix %{_prefix}
# _bindir %{_exec_prefix}/bin
# _libdir %{_exec_prefix}/%{_lib}
# _libexecdir %{_exec_prefix}/libexec
# _sbindir %{_exec_prefix}/sbin
# _includedir %{_prefix}/include
# _datadir %{_prefix}/share
# _sharedstatedir %{_prefix}/com
# _sysconfdir /etc
# _initrddir %{_sysconfdir}/rc.d/init.d
# _var /var
%{_prefix}/bin
%{_prefix}/libs
%{_prefix}/logs
%defattr(-,root,root)
%{_sysconfdir}/cron.d/ZK_Serviced_clean_crontab
%pre
# pre-install scripts
%post
# post-install scripts
%preun
# pre-uninstall scripts
%{_prefix}/bin/stop.sh ZK_Serviced
%postun
# post-uninstall scripts
%clean
rm -rf %{buildroot}
# your package build clean up steps here
%changelog
# list your change log here
下面为百度百科对其的简单介绍,想具体了解学习的可以上网查一下各个字段是什么含义,如果只是使用的话,上面粘出来的这段完全够你小的应该测试使用