sejishikong 发表于 2008-1-28 10:23:59

Magic Linux的打包规范

1、分包方式:magic的原则是尽量少分包,除非是为兼容,不然尽量简化依赖关系。减少包的数量。一般的程序只分主包和开发包即可,小程序的也可以只打主包。不过特殊情况,包括已经形成的分包方式不用更改。
2、打包环境:必须和magic当然的主要开发环境一致,这是必须的。
3、spec文件的规范:
   spec文件应当使用gb18030的编码,并有中文的信息描述。具体的以llk的spec为例,详细说明:%define ver 2.3    <-----------自定义宏要写在spec的开头

Summary: Lian Lian Kan for Linux
Summary(zh_CN): Linux下的连连看 <------ 中文描述,也可以写成zh_CN.GB18030,下同。
Name: llk
Version: %{ver}
Release: 0.beta1.2mgc <------ release号一般写1mgc/2mgc这种,如果是beta/alpha/rc等测试版,尽量不要把beta等字样写在包名里,而是在realease号上写成0.betax.xmgc这种
License: GPL <------ 这里注意,有部分老的spec或其它发行版本也可以写成CopyRight,但Mgc统一为License
URL: http://llk-linux.sourceforge.net
Group: Amusements/Games
Group(zh_CN): 娱乐/游戏 <------分组的中文描述,具体规范见后
BuildRoot: %{_tmppath}/%{name}-%{ver}-%{release}-buildroot
Source0:%{name}_linux-%{ver}beta1.tar.gz
Source1:llk_linux.desktop
Prefix: %{_prefix}
Requires: glib2,gtk2
Packager: KanKer<[email protected]>

%description
Lian Lian Kan for Linux. It is an arcade game.

%description -l zh_CN
Linux下的连连看。它是一个街机游戏。 <----中文描述,加上上面的一共是三处,如果一个spec对应多个包,每个包都有三处。

%prep
%setup -q -n %{name}_linux-%{version}


%Build
%configure
%{__make} %{?_smp_mflags} <-----如果不支持smp编译,可以将去掉%{?_smp_mflags}

%install
make DESTDIR=$RPM_BUILD_ROOT install
mkdir -p $RPM_BUILD_ROOT/usr/share/applications
install -m 644 %{SOURCE1} $RPM_BUILD_ROOT/usr/share/applications/

magic_rpm_clean.sh <-----请在%install段里加上这名,如果有%find_lang,加在%find_lang之前

%clean
rm -rf $RPM_BUILD_ROOT <------ 这里也可以采用下面nihui的写法,另外,最好先判断下是不是根目录。

%files
%defattr(-,root,root)
%{_bindir}
%{_datadir}
%exclude /usr/*/debug*<-----尽量避免这样的写法,尤其是复杂的包。简单的包可以使用。

%changelog
* Mon Jan 28 2008 Liu Di <[email protected]> - 2.3-0.beta1.2mgc <----changlog的格式应该如左,每个changlog之间应该有一空行,可以使用中文的更新描述,也可以用英文
- 更新spec

* Tue Feb 9 2006 KanKer <[email protected]>
- update 2.3beta1

* Sun Dec 11 2005 KanKer <[email protected]>
- first spec
4、分组规范:前面是英文,后面是对应的中文。
Amusements/Games   娱乐/游戏
Applications/Internet 应用程序/互联网
Applications/Publishing 应用程序/出版
Applications/Multimedia 应用程序/多媒体
Applications/Tools 应用程序/工具
Applications/Engineering 应用程序/工程
Applications/Archiving 应用程序/归档
Applications/Databases 应用程序/数据库
Applications/File 应用程序/文件
Applications/Text 应用程序/文本
Applications/Emulators 应用程序/模拟器
Applications/Productivity 应用程序/生产力
Applications/System 应用程序/系统
Applications/Editors 应用程序/编辑器
Applications/Communications 应用程序/通讯
Development/Tools 开发/工具
Development/Libraries 开发/库
Development/System 开发/系统
Development/Languages 开发/语言
Development/Debuggers 开发/调试器
Documentation 文档
User Interface/X 用户界面/X
User Interface/Desktops 用户界面/桌面
System Environment/Kernel 系统环境/内核
System Environment/Base 系统环境/基本
System Environment/Shells 系统环境/外壳
System Environment/Libraries 系统环境/库
System Environment/Daemons 系统环境/服务


以上是我想到的一些东西,可能还有不完善的地方,请大家讨论,另外,分组如果可以属于多个组的,可以任选一个。如果目前的不够,可以提出来,再加上。

npcomet 发表于 2008-1-28 13:26:20

再加上包分类规范吧

nihui 发表于 2008-1-28 18:34:23

BuildRoot
%clean
这两个部分有一点不同。
个人觉得 clean 的时候把 buildroot 和 builddir 一起删掉比较好,不然很占用空间的......

这个是我的一个典型:jasper


# NOTE: packages that can use jasper:
# ImageMagick
# kdelibs
# netpbm

Name: jasper
Summary: Implementation of the JPEG-2000 standard, Part 1
Summary(zh_CN): JPEG-2000 标准,第 1 部分的实现
Group: System Environment/Libraries
Group(zh_CN): 系统环境/库
Version: 1.900.1
Release: 0.3mgc
License: JasPer License Version 2.0
URL: http://www.ece.uvic.ca/~mdadams/jasper/
Source0: http://www.ece.uvic.ca/~mdadams/jasper/software/%{name}-%{version}.zip
BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-root-%(%{__id_u} -n)

BuildRequires: automake
BuildRequires: libjpeg-devel
# "freeglut-devel: Requires: libGL-devel libGLU-devel" (#179464)
BuildRequires: freeglut-devel libGL-devel libGLU-devel

%description
This package contains an implementation of the image compression
standard JPEG-2000, Part 1. It consists of tools for conversion to and
from the JP2 and JPC formats.

%description -l zh_CN
本软件包包含了 JPEG-2000 图像压缩标准,第 1 部分的实现。它包含了双向转换 JP2 和 JPC 格式的工具。

%package devel
Summary: JPEG-2000 library developer files
Summary(zh_CN): JPEG-2000 库开发文件
Group: Development/Libraries
Group(zh_CN): 开发/库
Requires: %{name} = %{version}-%{release}
Requires: libjpeg-devel

%description devel
JPEG-2000 library developer files.

%description devel -l zh_CN
JPEG-2000 库开发文件。

%prep
%setup -q -n %{name}-%{version}

%build

%configure \
--enable-shared \
--enable-static

%{__make} %{?_smp_mflags}

%install
%{__rm} -rf %{buildroot}
%{__make} DESTDIR=%{buildroot} install

# Unpackaged files
%{__rm} -f doc/README
%{__rm} -f %{buildroot}%{_libdir}/lib*.la

%check
%{__make} check

%clean
%{__rm} -rf %{buildroot} %{_builddir}/%{buildsubdir}

%post -p /sbin/ldconfig

%postun -p /sbin/ldconfig

%files
%defattr(-,root,root,-)
%doc COPYRIGHT LICENSE NEWS README
%{_bindir}/imgcmp
%{_bindir}/jiv
%{_bindir}/imginfo
%{_bindir}/*jasper*
%{_bindir}/tmrdemo
%{_libdir}/lib*.so.*
%{_mandir}/man1/*

%files devel
%defattr(-,root,root,-)
%doc doc/*
%{_includedir}/jasper/
%{_libdir}/lib*.so
%{_libdir}/*.a

%changelog
* Fri Nov 23 2007 Ni Hui <> - 1.900.1-0.3mgc
- rebuilt
- 恢复 /usr/bin/jiv

* Sat Oct 20 2007 Ni Hui <> - 1.900.1-0.2mgc
- rebuilt
- 丢失文件 jiv (无用)

* Wed Oct 3 2007 Ni Hui <> - 1.900.1-0.1mgc
- first spec file for MagicLinux-2.1
- 去除 GEO jasper 部分以及过时的相关 GL 补丁

[ 本帖最后由 nihui 于 2008-1-28 18:36 编辑 ]
页: [1]
查看完整版本: Magic Linux的打包规范