Разбор и корректировка Spec-файла

Материал из OSZone.net wiki.

Перейти к: навигация, поиск

Содержание

Редактирование Разбор и корректировка Spec-файла

Для примера рассмотрим два spec - файла пакета hello из дистрибутивов Suse и ALTLinux

Разберём основные макросы spec-файла

Name: - имя пакета
Version: - его версия
Release: - имя релиза
%define hello echo "hello world" -определение собственного макроса
Group: - группа, к которой отностся пакет
Provides: - общее имя для нескольких однофунциональных (взаимозаменяемых пакетов) - например tvtuner - для всех программ, выполняющих функции TV - тюнера.
Summary: - суммарное (краткое) описание пакета
BuildRoot: - место, где будет собираться пакет (в ALTLinux - определять не требуется, т.к. определено по-умолчанию).
%description - описание пакета, может определяться в разных локалях Дальше пошли секции spec-файла, определяющих действия на разных этапах построения и установки пакета.
%prep - начальная стадия установки пакета - распаковка сорцов и наложение патчей на исходный код
%build - секция построения пакета
(то, что обычно описывают при установке из тарболла, как
./configure
make
)
%install - секция по переносу необходимых файлов, полученных в результате построения из каталога, где строился пакет во временную папку, которая будет упакована в бинарный пакет (BuildRoot) (основывается на make install)
%files - непосредственная упаковка файлов в пакет
%post - действия, которые будут выполняться в момент установки
пакета
%preun - действия, которые будут выполняться в после удаления
пакета

Spec- файл для пакета hello из дистрибутива Suse выглядит так :


#
# spec file for package hello (Version 2.1.1)
#
# Copyright (c) 2002 SuSE Linux AG, Nuernberg, Germany.
# This file and all modifications and additions to the pristine
# package are under the same license as the package itself.
#
# please send bugfixes or comments to feedback@suse.de.
#
# neededforbuild  
# usedforbuild    aaa_base acl attr bash bind9-utils bison
# cpio cpp    cyrus-sasl db devs diffutils e2fsprogs file filesystem
# fileutils fillup findutils flex gawk gdbm-devel glibc glibc-devel
# glibc-locale gpm grep groff gzip kbd less libgcc libstdc++
# libxcrypt m4 make man mktemp modutils ncurses ncurses-devel
# net-tools netcfg pam pam-devel pam-modules patch permissions 
# ps rcs readline sed sendmail sh-utils shadow strace syslogd
# sysvinit tar texinfo textutils timezone unitedlinux-release unzip
# util-linux vim
# zlib-devel autoconf automake binutils bzip2 cracklib gcc gdbm
# gettext libtool perl rpm zlib
#
Name:         hello
License:      GPL
# How to define macros
%define hello echo "hello world"
Group:        Development/Tools/Other
Provides:     mailreader 
Autoreqprov:  on
Summary:      A friendly greeting program
Version:      2.1.1
Release:      43
Source0:      ftp://ftp.gnu.org/pub/gnu/hello/hello-%{version}.tar.gz
Patch0:       hello-1.3.dif
BuildRoot:    %{_tmppath}/%{name}-%{version}-build
#
%description
The GNU `hello' program produces a familiar, friendly greeting.  It
allows nonprogrammers to use a classic computer science tool which
would otherwise be unavailable to them.  Because it is protected
by  the GNU General Public License, users are free to share and
change it.
#
GNU hello supports many a lot native languages.
#
Authors:
--------
   The King  <elvis@graceland.gnu.ai.mit.edu>
   Charles Hannum  <mycroft@hill.gnu.ai.mit.edu>
   David J. MacKenzie  <djm@apple-gunkies.gnu.ai.mit.edu>
   Jan Brittenson  <bson@kropotkin.gnu.ai.mit.edu>
   Michael I Bushnell  <mib@geech.gnu.ai.mit.edu>
   Mike Haertel  <mike@churchy.gnu.ai.mit.edu>
   Noah Friedman  <friedman@nutrimat.gnu.ai.mit.edu>
   Roland McGrath  <roland@geech.gnu.ai.mit.edu>
#
%prep
# Use defined macro
%{hello}
%setup -q
%patch
#
%build
# Update config.{guess,sub}
%{?suse_update_config}
CFLAGS="$RPM_OPT_FLAGS" \
  ./configure --prefix=%{_prefix} \
  --infodir=%{_infodir} \
  --mandir=%{_mandir}
make
#
%install
[ "$RPM_BUILD_ROOT" != "/" ] && [ -d $RPM_BUILD_ROOT ] \
  && rm -rf $RPM_BUILD_ROOT
make install DESTDIR=$RPM_BUILD_ROOT
#
%clean
[ "$RPM_BUILD_ROOT" != "/" ] && [ -d $RPM_BUILD_ROOT ] \
 && rm -rf $RPM_BUILD_ROOT
#
%files
%defattr(-, root, root)
%doc COPYING TODO NEWS README THANKS ABOUT-NLS
%{_prefix}/bin/*
%{_infodir}/*.gz
%{_mandir}/*/*
%{_prefix}/share/locale/*/*/*
#
%changelog -n hello
* Tue Jun 11 2002 - schwab@suse.de
- Don't package %%{_infodir}/dir.
* Tue Jun 11 2002 - ke@suse.de
- Update to version 2.1.1; from NEWS:
* Automake support.
* Experimental NLS ("Native Language Support").
* Translations for ca, da, de, el, eo, es, et, fi, fr, gl,
  he, hr, hu, id, it, ja, ko, lv, nb, nl, nn, pl, pt, pt_BR, 
  ru, sk, sl, sv, tr, and  uk.
 * Test suite.
 * Add a contrib directory.
 * Manual page, produced with 'help2man'.
 * Create proper copyright statement for all output formats.
 * New greeting message ('-n', '--next-generation').
 * Bugfixes:
 *. GNU hello ('-m') does not loop forever if MAIL 
   environment variable is  not set.
- spec file: Use DESTDIR; use predefined RPM macros; add %%clean 
 section.
* Sun Feb 20 2000 - ke@suse.de
- General spec file cleanup:
- Add group tag.
- ./configure -> %%build.
- Use %%{version} and %%{_infodir} macros.
- Add `#neededforbuild automake' to use the suse_update_config macro.
* Mon Sep 13 1999 - bs@suse.de
- ran old prepare_spec on spec file to switch to new prepare_spec.
* Thu Jul 16 1998 - ke@suse.de
- Use the BuildRoot feature properly.
- Update home site (the Source: tag).
* Sun Sep 14 1997 - Karl Eichwalder <ke@suse.de>
- initial package: version 1.3
#

Spec- файл для аналогичного пакета из дистрибутива ALTLinux выглядит так :


Name: hello
Version: 2.1.1
Release: alt1
#
Summary: GNU hello, THE greeting printing program
Group: Development/C
License: GPL
#
Url: ftp://ftp.gnu.org/gnu/hello/
#
Source: %url/%name-%version.tar.gz
#
%description
The GNU `hello' program produces a familiar, friendly greeting.  It
allows nonprogrammers to use a classic computer science tool which
would otherwise be unavailable to them.  Because it is protected by
the GNU General Public License, users are free to share 
and change it.
#
%prep
%setup
#
%build
%configure
%make_build
#
%install
%makeinstall
%find_lang %name
#
%post
%install_info
#
%preun
%uninstall_info
#
%files -f %name.lang
%doc ABOUT-NLS AUTHORS BUGS COPYING ChangeLog ChangeLog.O INSTALL \
  NEWS README THANKS TODO contrib/ tests/
%_bindir/*
%_infodir/*
%_mandir/man?/*

Ссылки по теме

http://www.freesource.info/wiki/ALTLinux/Dokumentacija/Hasher

http://www.linux.org.ru/books/lor-faq/lorFAQ-19.html

http://wiki.sisyphus.ru/devel/spectips?v=13d6

http://docs.altlinux.ru/alt/devel/ch01.html

Личные инструменты