configure

skript

configure je obvyklým jménem konfiguračního skriptu, který se spouští jako jeden z příkazů používaných při instalaci softwarového balíčku ze zdrojových textů. Běžný uživatel počítače by měl k jeho použití přistoupit až v okamžiku, kdy požadovaný software není k dispozici v podobě nativního balíčku určeného pro jeho systém nebo distribuci, protože překlad ze zdrojových textů může být zdlouhavý, může vyžadovat detailní znalosti nainstalovaného softwaru, případně doinstalování dalších balíčků. V některých případech může být nezbytná i ruční úprava zdrojových textů. Protože používání balíčků určených pro konkrétní systém přináší další výhody (dobrý přehled o stavu softwaru nainstalovaného v počítači, možnost otestování neporušenosti softwaru, upgradu na vyšší verzi, případně odinstalace již nepotřebného softwaru), často se zdrojový balíček používá ne pro přímé nainstalování softwaru, ale pro vytvoření nativního balíčku, který se následně nainstaluje .

Účelem konfiguračního skriptu je přizpůsobit zdrojové texty a buildovací systém použité platformě a knihovnám, případně dalším programům dostupným na cílovém počítači, aby bylo možné provést překlad (přesněji sestavení) na co největším množství počítačových platforem. Skript porovnává knihovny na uživatelově počítači s knihovnami požadovanými softwarem před jeho překladem ze zdrojového kódu a vytváří případně upravuje soubory, které budou použity při vlastním překladu. Přestože obvyklé jméno konfiguračního skriptu je configure, v některých balíčcích může být jeho jméno jiné, například s velkým počátečním písmenem nebo s nějakou příponou. Obvykle se jedná o skript napsaný v Bournově shellu, ale může být napsán v jakémkoli skriptovacím jazyce.

Instalace softwaru ze zdrojových textůEditovat

Buildování softwaru ze zdrojových kódů byl obvyklý postup na většině starších unixových systémů. Po rozbalení distribučního archivu je třeba obvykle provést tři kroky:

  • přizpůsobení zdrojových textů pro požadovanou platformu,
  • překlad kódu, resp. jeho sestavení,
  • instalaci vytvořených programů a případných dalších souborů, aby je bylo možné používat

Skript configure provádí první z těchto kroků.

Typický postup pro instalaci softwaru ze zdrojových textů stažených z Internetu je následující:

$ tar zxvf balíček-verze.tar.gz
$ cd balíček-verze
$ ./configure
$ make
$ /bin/su
$ make install

Některé balíčky lze nainstalovat i bez práv správce, tj. bez použití příkazu su. Na některých systémech lze poslední dva příkazy nahradit příkazem sudo make install. Oproti starším návodům je třeba na mnoha systémech psát příkaz ./configure s tečkou a lomítkem na začátku, aby interpret příkazů spustil skript configure z aktuálního adresáře. Na starších systémech interpret příkazů hledal programy a skripty i v aktuálním adresáři, což je nyní považováno za bezpečnostní riziko.[1]

PoužitíEditovat

V balíčku bývá často soubor s popisem, jak balíček přeložit a nainstalovat. Obvykle se jmenuje INSTALL, případně mohou být informace obsaženy v souboru Readme.

Příkaz ./configure zkusíme nejprve spustit bez parametrů; pokud se spuštěný skript dotazuje na informace o systému, které neznáme, odpovídáme stisknutím klávesy ↵ Enter - skript obvykle doplní implicitní hodnoty nebo hodnoty, které určí otestováním systému.

Příkaz ./configure může doplněn parametry; jejich seznam se vypíše zadáním

$ ./configure --help

Mezi důležité parametry patří --prefix=PREFIX, udávající, v jakém stromě adresářů budou umístěny soubory potřebné pro provozování programů z balíčku a --exec-prefix=EPREFIX, udávající, v jakém stromě adresářů budou umístěny binární programy. Konkrétní jména adresářů lze zadat pomocí parametrů—bindir=DIR user executables [EPREFIX/bin]

 --sbindir=DIR          system admin executables [EPREFIX/sbin]
 --libexecdir=DIR       program executables [EPREFIX/libexec]
 --datadir=DIR          read-only architecture-independent data [PREFIX/share]
 --sysconfdir=DIR       read-only single-machine data [PREFIX/etc]
 --sharedstatedir=DIR   modifiable architecture-independent data [PREFIX/com]
 --localstatedir=DIR    modifiable single-machine data [PREFIX/var]
 --libdir=DIR           object code libraries [EPREFIX/lib]
 --includedir=DIR       C header files [PREFIX/include]
 --oldincludedir=DIR    C header files for non-gcc [/usr/include]
 --infodir=DIR          info documentation [PREFIX/info]
 --mandir=DIR           man documentation [PREFIX/man]

Od verze 1.3 automake navíc umožňuje zadáním

$ DESTDIR=kořen make install

při instalaci předřadit před PREFIX a EPREFIX jméno adresáře, do kterého má být celá struktura souborů instalována (což je vhodné při vytváření RPM balíčků nebo instalaci na disk jiného počítače zpřístupněný pomocí například NFS jako adresář kořen).

Pokud balíček umožňuje vytvářet varianty s různou funkčností nebo předpokládající přítomnost určitého balíku na cílovém systém, lze tyto varianty vybírat pomocí—enable-VLASTNOST—enable-VLASTNOST=hodnota—disable-VLASTNOST—with-BALÍK—without-BALÍK

Další parametry je možné skriptu configure dodat pomocí parametrů tvaru jméno=hodnota - například

CC příkaz volající překladač jazyka C
CFLAGS příznaky (řádkové parametry) pro překladač jazyka C
LDFLAGS příznaky (řádkové parametry) pro linker (např. -Ladresář, pokud se má program linkovat s knihovnami umístěnými v nestandardním adresáři)
CPPFLAGS příznaky (řádkové parametry) pro preprocesor jazyka C (např. -Iadresář, pokud program používá hlavičkové soubory umístěné v nestandardním adresáři)
CPP příkaz fungující jako C preprocesor

Pro zadání architektury lze použít parametry --build=ARCHITEKTURA, při křížovém překladu --host=ARCHITEKTURA nebo --target=ARCHITEKTURA.

Na konci svého běhu vypíše configure zprávu do config.log. Příkaz ./configure --help vypíše seznam parametrů, které je možné použít v příkazovém řádku pro povolení nebo zakázání volitelných vlastnosti, například:

$ ./configure --libs="-lmpfr -lgmp"
$ ./configure --prefix=/home/myname/apps

První řádek vyžaduje použití knihoven mpfr a gmp. Druhý řádek požaduje, aby výsledný balíček byl nainstalován do adresáře /home/myname/apps. Soubor INSTALL by měl obsahovat návod, co dělat, když build balíčku selže.

Generování configureEditovat

Pro zjednodušení multiplatformního vývoje softwaru vytvořili vývojáři softwaru GNU's Autotools[2], což je sada skriptů, které otestují systém, na kterém jsou spuštěny, pro nastavení prostředí, architekturu platformy a existenci a umístění souborů požadovaných pro build a běh softwaru. Získané informace se ukládají do souboru configure.ac (dříve do configure.in), odkud je skript configure čte v průběhu buildu.

Kontrola závislostíEditovat

Kontrolu závislostí lze na novějších systémech provést pomocí pkg-config, který využívá makra PKG_CHECK_MODULES v m4. Před nástupem pkg-config byla často vytvářena zvláštní makra v m4 pro hledání souborů potřebných pro vyhledání knihoven, na kterých software závisí.

HistorieEditovat

Prvním programem, který používal skript configure byl Usenet klient rn, který napsal Larry Wall v roce 1984. Skript byl napsaný ručně a při svém běhu vypisoval žertovné komentáře. Stále přežívá jako součást buildovacího systému programu trn.

Ekosystém programů pro automatizaci vytváření configure skriptů se od té doby značně rozšířil; k nejpoužívanějším patří systém GNU Autoconf.

OdkazyEditovat

ReferenceEditovat

V tomto článku byl použit překlad textu z článku configure script na anglické Wikipedii.

  1. Compiling Linux Software from Source Code [online]. Control-Escape's Linux Help Engine [cit. 2010-11-20]. Dostupné online. 
  2. Autoconf - GNU Projekt - Free Software Foundation (FSF) [online]. GNU Operating System [cit. 2010-11-20]. Dostupné online. 

Související článkyEditovat