打印

老大们帮我看看,这个SPEC

老大们帮我看看,这个SPEC

我打算为 fvwm 打包,这是在别人的 SPEC 的基础上修改的,这样写对吗?

#%define prefix %{_prefix}
%define prefix /usr

%define ver 2.4.19  %define old_ver 2.4.19
%define rel 1mgc  %define old_rel 1
%define c_p --without-gnome --without-rplay-library --sysconfdir=/etc  %define old_c_p --disable-multibyte --sysconfdir=/etc
%define m_p CFLAGS="-O2"  %define old_m_p CFLAGS="-O2"

# Different distributions expect sources to be in different places;
# the following solves this problem, but makes it harder to reuse .src.rpm
%define _sourcedir /tmp

Summary:   F(?) Virtual Window Manager
Name:      fvwm
Version:   %{ver}
Release:   %{rel}
Copyright: GPL
Group:     X11/Window Managers
Source:    %{name}-%{version}.tar.gz
URL:       http://www.fvwm.org/
BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-buildroot
Packager:  heyuqi<my e-mail>
Autoreq:   1

Distribution: Magic Linux

Requires:  libXpm.so.4
#Requires:  xpm >= 3.4g
Requires:  perl >= 5.002

# GTK, Imlib, stroke

# RedHat should stop using name "fvwm" to refer to fvwm1 package.
Provides:  fvwm, fvwm2

Docdir:    %{prefix}/share/doc

%description
FVWM is a powerful ICCCM-compliant multiple virtual desktop window manager
for the X Window System.

This 2.4 version includes new features like colorsets, ICCCM2 and GNOME
compliance, session management, improvements in all modules, several
new modules, revised menu code, stroke support and much more.

%description -l fr
FVWM est un gestionnaire de fen阾res puissant et extr阭ement configurable
pour le syst鑝e X Window.

La version 2.4 contient un grand nombre de nouvelles fonctionnalit閟.
Voici quelques exemples:
gestion des ensembles de couleurs (colorset),
respect de l'ICCCM2 et du protocole GNOME,
support pour les gestionnaires de sessions,
am閘ioration des modules ainsi que de nouveaux modules,
le code pour les menus a 閠

TOP

为 libstroke打了包,老大们帮我看看这样做行不行

spec 如下:

%define prefix /usr

Name:                libstroke
Version:        0.5.1
Release:        1

Summary:        A Stroke Translation Library
Copyright:        GPL
Group:                System Environment/Libraries
URL:                http://www.etla.net/libstroke
Packager:        heyuqi <my email>

Source:                %{name}-%{version}.tar.gz

BuildRoot:        %{_tmppath}/%{name}-%{version}-%{release}-root
BuildRequires:        gtk+-devel

%description
LibStroke is a stroke interface library.  Strokes are motions of the
mouse that can be interpreted by a program as a command.  Strokes are
used extensively in CAD programs.

%package devel
Summary:        Development environment for %{name}
Group:                Development/Libraries
Requires:        %{name}-devel = %{version}-%{release}

%description devel
This package contains development files required to build
%name-based software.

%prep
%setup

%configure
CFLAGS="$RPM_OPT_FLAGS" \
CXXFLAGS="$RPM_OPT_FLAGS" \
./configure --prefix=%{prefix}

%build
make

%install
rm -rf $RPM_BUILD_ROOT
make prefix=%{prefix} PREFIX=%{prefix} DESTDIR=$RPM_BUILD_ROOT install

%clean
rm -rf $RPM_BUILD_ROOT
rm -rf $RPM_BUILD_DIR/%{name}-%{version}

%files
%{_libdir}/*.so.*
%doc AUTHORS ChangeLog COPYRIGHT CREDITS NEWS README* TODO doc/standard_strokes.*

%files devel
%_libdir/*.so
%_includedir/*
%_datadir/aclocal/*


%defattr(-,root,root)
%{prefix}/*

%changelog
* Wed Dec 07 2005 heyuqi <my email>
- Initial revision.
附件: 您所在的用户组无法下载或查看附件

TOP

建议楼主先了解一下基本的宏定义,比如通常用标准的 %{_prefix} 宏,它代表 /usr,你就不用改掉了
#%define prefix %{_prefix}
%define prefix /usr
另外
%{prefix}/bin/*
%{prefix}/libexec/*
%{prefix}/man/*/*
%{prefix}/share/*
这些位置都有宏定义的,尽量不要这样写,第二个spec这里会好点,另外ml的mandir 定义在/usr/share/man 而不是 /usr/man,这个挺奇怪的呵呵
引用:
%configure
CFLAGS="$RPM_OPT_FLAGS" \
CXXFLAGS="$RPM_OPT_FLAGS" \
./configure --prefix=%{prefix}
%configure是标准宏定义
下面那些是非标准的写法,其实意义是相同的,也就是你重复了,
其他地方我没仔细看,如果你真想学习打包,你好好研究一下/usr/lib/rpm/macros
还有一般打包的spec 中还有 %post 和 %postun 是你安装和解载后执行的,
多看看别人的spec
easy come, easy go 天道本无常, 人生如大梦!

TOP

好的,我好好看看。

还有 %post  和 %postun 里面一般应该写些什么,我一直很疑惑,不知道怎么写才算满足要求。我现在试着参照别的发行版已有的 spec


人欲盡淨,觀萬物,各復歸其根,精之至也。
  • 不要重复自己(Don't Repeat Yourself )。
  • 约定优于配置(Convention Over Configuration )。

TOP

引用:
%post 和 %postun
不一定的,很多,比如你想软链接东西,或者ldconfig,又比如gnome中修改添加gconf的信息,升级scrollkeeper信息,这是不一定的,有些不需要写的
easy come, easy go 天道本无常, 人生如大梦!

TOP

这是我第一次制做rpm包,编译的是mysql5的,问题是如果我在编译包里加入群或用户,如useradd mysql,如果系统中该用户或组存在,该spec文档%install段加入useradd mysql进行编译打包会出错中断,在制做rpm包时会何该编译过程相当于进行了一次正常打包编译和安装么。

%define debug_package %{nil}
Name:         mysql
Version:        5.0.16
Release:        25
Summary:        database
Group:          Applications/Multimedia
License:        GPL
URL:            http://www.mysql.com/
Source:        mysql-5.0.16.tar.gz
%description
install mysql 5 encode gbk
%prep
%setup -q
%Build
./configure --with-charset=gbk --with-collation=gbk_chinese_ci --with-extra-charsets=gb2312,big5,utf8,binary,ascii --prefix=/usr/local/mysql
make
%install
make install
cp support-files/my-medium.cnf /etc/my.cnf
cd /usr/local/mysql
bin/mysql_install_db --user=mysql
chown -R root  .
chown -R mysql var
chgrp -R mysql .
echo "/usr/local/mysql/bin/mysqld_safe --user=mysql &">>/etc/rc.d/rc.local
%clean
%post
%files
%defattr(-,root,root)
/usr

%changelog
http://haulm.clanmark.com
自古多情空余恨,几人独潇洒。
问君相伴何所思,唯叹红叶飞。
凭栏窗外一皓月,冷风抚面,寒星如冰。
回想前事独伤感,难分难离,倒是山峦草芥,依旧青。

TOP