Разбор и корректировка 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
Категории: UNIX | Linux | Форматы файлов
