Configure
COVER STORY
Od kodu zródłowego do produktu finalnego:
komunikaty błędów skryptu configure
Perfekcyjna
konfiguracja
Nie ma lepszej okazji do oglÄ…dania
niezwykłych komunikatów błędów
niż kompilacja programu. Znany
użytkownikom Linuksa skrypt confi-
gure, ma tutaj swój istotny wkład.
Czy można w jakiś sposób uniknąć
problemów związanych z urucha-
mianiem kompilacji?
ANDREA MÜLLER
rędzej czy pózniej każdy użytkow- będą prowadzić do całej masy tajemniczych dów, które można napotkać uruchamiając
nik Linuksa doświadczy sytuacji, komunikatów błędów, a kompilacja zakoń- skrypt configure. Większość błędów można
Pgdy nie znajdzie dla swojej dystry- czy się niepowodzeniem. Potwierdzi to tyl- łatwo rozwiązać, o ile posiada się odpo-
bucji gotowej biblioteki, potrzebnej do uru- ko nieusprawiedliwioną opinię wielu osób, wiednią wiedzę.
chomienia jakiegoś nowego, wspaniałego że do kompilacji programu w Linuksie nie-
programu. Dla weterana Linuksa odpo- zbędne są umiejętności programistyczne. Podstawowe
wiedz jest oczywista: należy samodzielnie Oczywiście nie jest to prawdą. Proces wyposażenie
skompilować kod zródłowy. Niestety, jeśli kompilacji większości aplikacji jest Po pobraniu i rozpakowaniu kodu zródło-
kompilator jest dla Ciebie wciąż niezna- w znacznej części zautomatyzowany. Czy wego aplikacji musisz rozejrzeć się w kata-
nym terytorium, Twoje wysiłki na pewno chcesz więcej wiedzieć o tym procesie logu, w którym aplikacja została rozpako-
i o tym, co dokładnie się dzieje wana. Zanim zrobisz cokolwiek innego,
podczas wykonywania kolej- przejrzyj najpierw pliki README i IN-
nych poleceń: configure, make STALL. Dowiesz się z nich, czy przy kom-
i make install? pilacji programu wystarczy ograniczyć się
W tym artykule przyjrzymy do klasycznych trzech kroków, czy też może
się bliżej komunikatom błę- któryś z plików należy najpierw poddać
Listing 1: Komunikaty błędów związane
z brakujÄ…cymi pakietami programistycznymi
[andi@diabolos squaroid-0.60.3]./configure
[...]
checking for GTK version >= 1.2.0... yes
checking for imlib-config... no
checking for gdk_imlib... not found
Rysunek 1: Kategoria Development pakietów z narzę-
configure: error: Cannot find gdk_imlib: I NEED IT!
dzia SuSE YaST zawiera pakiety potrzebne do uruchamia-
nia kompilacji.
26 Lipiec 2004 www.linux-magazine.pl
www.PhotoCase.de
Configure COVER STORY
edycji. Wielu programistów wykorzystuje
plik INSTALL do informowania użytkow-
ników np. o dodatkowych wymaganiach
programu.
s
k
r
y
p
t
u
Pierwsza próba uruchomienia skryptu
powłoki ./configure może od razu zakoń-
p
o
w
Å‚
o
k
i
czyć się następującym błędem:
checking for gcc... no
checking for cc... no
checking for cc... no
checking for cl... no Rysunek 2: Narzędzie urpmf w dystrybucji Mandrake przeszukuje bazę danych zawierającą listę
configure: error: no acceptableU pakietów należących do dystrybucji.
C compiler found in $PATH
Zmienne są w Linuksie wskazywane przez muje ona narzędzia, takie jak kompilator
Skrypt sprawdza, czy wymagane do kompi- poprzedzający je znak dolara. Każda dys- czy program make, oraz pakiety programi-
lacji pliki i programy rzeczywiście istnieją. trybucja ma inny zestaw katalogów w ścież- styczne wymagane do kompilacji aplikacji
Linie zaczynające się od checking pokazu- ce powłoki. działających w trybie graficznym.
ją, co jest sprawdzane. Rezultaty przedsta- W naszym przykładzie skrypt nie znalazł Nie daj się zmylić opisom pakietów dla
wione są na końcu każdej linii, w tym przy- kompilatora języka C aplikacji generują- programistów. Sugerują one, że potrzebu-
padku jest to niepowodzenie (no). Innymi cej plik wykonywalny na podstawie progra- jesz ich wyłącznie przy pisaniu swoich wła-
słowy, skrypt przerywa działanie komuni- mu napisanego w języku programowania C. snych programów. To nieprawda są one
katem błędu, o ile nie uda mu się znalezć Linux standardowo wykorzystuje kompila- konieczne do kompilowania niektórych pa-
szukanego programu lub pliku. W naszym tor gcc. Niestety, obecnie wiele dystrybucji kietów ze zródeł.
przykładzie w systemie nie ma odpowied- nie instaluje domyślnie kompilatora i na- Do zainstalowania pakietów programi-
niego kompilatora dostępnego w ścieżce do- rzędzi programistycznych. stycznych wykorzystaj menedżer pakietów
stępu $PATH. Tabela 1 pokazuje listę pakietów nie- Twojej dystrybucji (patrz Rysunek 1). Jeśli
Polecenie echo $PATH wyświetla listę zbędnych do przygotowania systemu do sa- posiadasz SuSE Linux w wersji Personal
katalogów umieszczonych w ścieżce. modzielnej kompilacji programów. Obej- Edition, musisz niestety pobrać większość
z nich z serwera FTP SuSE, ponieważ pod-
stawowa wersja SuSE domyślnie nie zawie-
Tabela 1: Podstawowe pakiety i programy
ra wielu pakietów programistycznych.
niezbędne do kompilacji programów
Opisany powyżej podstawowy zestaw na-
Pakiet Zawiera
rzędzi usunie przyczynę większości komu-
gcc Kompilator języka C.
nikatów błędów. Jednak jeśli komunikaty
gcc-c++ Kompilator języka C++.
błędów będą się powtarzać, trzeba zabawić
libstdc++-devel Pliki bibliotek niezbędne do kompilacji programów napisanych w C++.
siÄ™ w detektywa.
make Program do automatycznej kompilacji kodu zródłowego w oparciu o reguły zapisane
w plikach Makefile.
Szukajcie, a znajdziecie
binutils Programy służące do manipulacji plikami binarnymi, m.in. narzędzie ar oraz strip (usuwający
Listing 1 pokazuje najczęściej spotykany
informacje diagnostyczne z programów i bibliotek).
typ błędów pojawiających się przy urucha-
glibc-devel Pliki bibliotek niezbędne do kompilacji programów napisanych w C.
mianiu configure.
gettext and gettext-devel Programy i pliki potrzebne do kompilacji oprogramowania wielojęzycznego. Niektóre dystrybucje
nie zawierają pakietu gettext-devel. Wówczas pakiet gettext zawiera wszystkie wymagane pliki. W tym przykładzie skrypt konfiguracyj-
XFree86-devel Pliki niezbędne do kompilacji programów dla X Window ny informuje o braku gdk_imlib. W linii,
(libxfree86-devel
w której napisane jest checking for imlib-
w niektórych dystrybucjach)
-config... no, zawarta jest informacja o tym,
libpng-devel Pliki nagłówkowe i pliki biblioteki odpowiedzialnej za wyświetlanie obrazów w formacie PNG.
czego szuka configure w tym przypadku
Prawie każda graficzna aplikacja potrzebuje tej biblioteki.
jest to skrypt imlib-config. Musimy naj-
libjpeg-devel Pakiet niezbędny do kompilacji programów korzystających z biblioteki JPEG.
pierw sprawdzić, czy programu tego rzeczy-
zlib-devel Pakiet niezbędny do kompilacji programów korzystających z biblioteki zlib
wiście nie ma w systemie.
gtk-devel Pakiet niezbędny do kompilacji programów korzystających z biblioteki gtk
l
o
-
Możesz w tym celu wpisać polecenie lo-
gtk2-devel Pakiet niezbędny do kompilacji programów korzystających z biblioteki gtk2. Wymagane
cate imlib-config, by sprawdzić, czy fak-
c
a
t
e
do kompilacji programów takich jak np. GIMP 2.0.
kdelibs-devel Pakiet niezbędny do kompilacji programów dla KDE. tycznie brakuje imlib-config. Mogło się tak
(kdelibs3-devel dla KDE 3.x)
zdarzyć, że skrypt configure sprawdzał
qt3-devel Biblioteka programistyczna dla QT. Dostarcza ona elementów GUI dla aplikacji GUI, podobnie
w złych miejscach. Alternatywnie użyj find.
(libqt3-devel w niektórych jak GTK. Wymagana do kompilacji środowiska i aplikacji KDE.
Działa ono dużo dłużej, gdyż nie przeszu-
dystrybucjach)
kuje bazy danych.
Niektóre dystrybucje (np. Debian) wykorzystują do identyfikacji pakietów programistycznych przyrostek dev.
Jeśli poszukiwanie zakończy się niepo-
www.linux-magazine.pl Lipiec 2004 27
Configure
COVER STORY
nych pakietów. Poszukiwanie pakietów dla
Listing 2: Program configure
programistów w SuSE Personal może nie
nie może znalezć biblioteki
przynieść efektu, ponieważ nie znajdują się
one normalnie na płytach CD.
[andi@diabolos ogle-0.9.1]$./configure
W obu przypadkach najlepiej jest wtedy
[...]
użyć wyszukiwarek pakietów RPM i DEB
checking for madvise... yes
pod adresem [1]. Formularze na stronach
checking for DVDDiscID in -ldvdread... no
WWW pomagajÄ… w przeszukiwaniu pakie-
checking for DVDOpen in -ldvdread... no
tów także pod kątem zawartości indywidu-
configure: error: Need libdvdread, install it or specify it's location
alnych plików (patrz Rysunek 3). Użytkow-
nicy Debiana mogą też korzystać z wyszu-
kiwarki pod adresem http://packages.de-
bian.org/.
Dobrze ukryte
Sprawa komplikuje się nieco, jeśli configure
nie znajdzie pliku, będącego faktycznie
w systemie. Może być to spowodowane tym,
że sam skompilowałeś wymaganą bibliotekę
lub wykorzystujesz dystrybucjÄ™ przechowu-
jącą pliki w nietypowym katalogu, do które-
go configure nie zaglÄ…da Listing 2 pokazu-
je taki przypadek.
W tym przykładzie configure nie może
odnalezć biblioteki ldvdread. Ale nie jest to
nazwa brakujÄ…cego pliku litera l na po-
czÄ…tku nazwy oznacza lib (biblioteka) i do-
piero po dodaniu na końcu do nazwy .so
otrzymujemy nazwÄ™ pliku brakujÄ…cej bi-
blioteki: libdvdread.so.
Przykładowa biblioteka ldvdread jest
częścią pakietu libdvdread. Jeśli skompilo-
Rysunek 3: Serwis rpmseek.com nie tylko wyszukuje pakiety, ale także przyjmuje nazwy plików jako waliśmy ten pakiet samodzielnie i zainsta-
wzorzec wyszukiwania. lowaliśmy w katalogu /usr/local/multime-
dia, to polecenie locate libdvdread.so wy-
wodzeniem, być może plik naprawdę nie pakietu o nazwie imlib-devel i że dla wyko- świetli informację, że biblioteka libdvdre-
istnieje. W tym przypadku musisz go zain- nania poprawnej kompilacji należy go zain- ad.so, obecnie poszukiwana przez configu-
stalować. Ale jak znalezć jeden plik pośród stalować w systemie. re, rzeczywiście znajduje się w katalogu
tysięcy pakietów, z których składa się dys- Wykonanie tego jest trudniejsze w SuSE /usr/local/multimedia/lib.
trybucja? Narzędzia dostarczane przez dys- Personal lub Red Hat Linux. Red Hat nie Jednak configure nie znajdzie pliku, po-
trybucje Mandrake i SuSE ułatwiają to za- zawiera narzędzia służącego do przeszuki- nieważ katalog /usr/local/multimedia nie
danie. Jeśli posiadasz Mandrake, wpisz wania listy dostępnych, ale nie zainstalowa- jest standardowym katalogiem przeznaczo-
urpmf imlib-config. To nakaże menadżero-
wi pakietów sprawdzić bazę danych i wy-
świetlić listę pakietów zawierających imlib-
-config (Rysunek 2). Polecenie urpmf
gdk_imlib podpowie nam, że poszukiwane
przez nas pliki znajdujÄ… siÄ™ w pakiecie li-
bimlib1-devel.
Użytkownicy SuSE mogą natomiast uru-
chomić program pin. Gdy po raz pierwszy
uruchamiasz to narzędzie, poprosi ono
o włożenie instalacyjnego medium, z które-
go skopiuje na Twój dysk opisy pakietów
(potrzebne sÄ… do tego uprawnienia admini-
stratora). Po zakończeniu tego kroku mo-
żesz uruchomić polecenie pin imlib-config.
Dzięki temu dowiesz się, że plik należy do Rysunek 4: Polecenie ./configure --help wyświetla listę parametrów skryptu konfiguracyjnego.
28 Lipiec 2004 www.linux-magazine.pl
Configure COVER STORY
SAOWNICZEK
./: Najczęściej katalog, w którym rozpako- SDL: Simple DirectMedia Layer jest prze- na C) czy zshell.
.
/
:
S
D
L
:
wałeś kod zródłowy, nie należy do ścieżki nośną biblioteką zawierającą funkcje ni-
Pliki nagłówkowe: Pliki (najczęściej z roz-
P
l
i
k
i
n
a
g
Å‚
ó
w
k
o
w
e
:
wyszukiwania powłoki. Nie możesz zatem skopoziomowego dostępu do kart dzwięko-
szerzeniem .h) opisujÄ…ce interfejsy bibliote-
wywołać skryptu configure wpisując tylko wych, urządzeń wejścia, joysticka, kart gra-
ki lub aplikacji. Dostarczają szczegółowych
jego nazwę. Do nazwy musisz dodać przed- fiki 3D oraz innych urządzeń.
informacji co do sposobu wywoływania
rostek./, który wskazuje na katalog bieżący.
Flagi kompilatora: Opcje, które informują określonych funkcji. Programiści chcący
F
l
a
g
i
k
o
m
p
i
l
a
t
o
r
a
:
locate: Program ten przeszukuje bazę da- kompilator, gdzie ma szukać bibliotek i pli- wykorzystywać te funkcje muszę włączyć
l
o
c
a
t
e
:
nych zawierającą lokalizacje plików na dys- ków nagłówkowych oraz w jaki sposób ma pliki nagłówkowe do kodu zródłowego. Pa-
ku. Baza danych jest tworzona poleceniem wykonywać kompilację. kiety programistyczne są złożone głównie
updatedb, które w większości dystrybucji z plików nagłówkowych potrzebnych do bu-
Bash: Interpreter poleceń (inaczej powło-
B
a
s
h
:
jest uruchamiane automatycznie jako co- dowy aplikacji.
ka), analogiczny do znanego niegdyÅ›
dzienne zadanie programu cron. W SuSE
S
k
r
y
p
t
p
o
w
Å‚
o
k
i
:
command.com z MS-DOS. Dystrybucje Skrypt powłoki: Plik tekstowy zawierający po-
Linux kombinacja updatedb/locate jest
Linuksa wykorzystujÄ… Bash jako standardo- lecenia sekwencyjnie przetwarzane przez in-
częścią pakietu findutils-locate. Nie jest on
wą powłokę. Istnieją liczne alternatywy Ba- terpreter poleceń (czyli powłokę w większo-
niestety domyślnie instalowany.
sha, takie jak tcsh (jego składnia przypomi- ści dystrybucji Linuksa jest to Bash).
nym do instalacji oprogramowania. Wyko- Mnóstwo opcji
rzystanie tego typu katalogów ma sens, o ile Niektóre skrypty configure dostar-
chcesz przetestować aplikację tylko po to, czają użytkownikom bardziej pre-
by ją za chwilę usunąć lub w przypadku, cyzyjnych wskazówek odnośnie ob-
gdy nie masz uprawnień do zapisu w całym sługi komunikatów błędów, np.
systemie plików. configure na Listingu 3 szczegóło-
Przedstawiony na Listingu 2 wynik pra- wo informuje, że nie może znalezć
cy configure wskazuje rozwiÄ…zanie: confi- programu sdl-config.
gure: error: Need libdvdread, install it or W takim wypadku najpierw
specify it's location. BrakujÄ…ca biblioteka sprawdz, czy aplikacja jest zainsta-
jest już zainstalowana. Pozostaje tylko lowana w systemie, np. w Mandra-
wskazać configure, gdzie ma dodatkowo szu- ke aplikacja jest częścią pakietu
kać tej biblioteki. libSDL1.2-devel.
Wywołanie configure z flagą --help wy- Jeżeli w systemie masz jednak
świetli listę obsługiwanych parametrów skompilowaną przez siebie wersję
wraz z krótkim objaśnieniem. Do wskazy- sdl-config, configure dostarcza kil-
wania określonej lokalizacji wykorzystuje- ku podpowiedzi w liniach zaczyna-
my parametr --prefix. Program configure jÄ…cych siÄ™ od gwiazdek. Tak na- Rysunek 5: Program pkg-config przetwarza plik
domyślnie wykorzystuje katalog /usr/local prawdę sdl-config jest skryptem gtk+.pc, aby zdobyć wszystkie dane o zainstalowa-
(Rysunek 4). Zatem rozwiÄ…zaniem naszego informujÄ…cym configure o tym, nej wersji biblioteki GTK.
S
D
L
problemu byłoby wywołanie configure gdzie znajdują się biblioteki SDL
f
l
a
g
i
k
o
m
p
i
l
a
t
o
r
a
w następujący sposób: oraz wskazującym, jakie flagi kompilatora stępu PATH. W przypadku, gdy sdl-config
należy przekazać do Makefile. Oczywiście, znajduje się w /usr/local/games/bin, wpro-
./configure -with-dvdread=/usrU żeby configure mógł znalezć ten skrypt, wadz następującą komendę:
/local/multimedia musi on zostać umieszczony w ścieżce do-
export PATH=$PATH:/usr/U
local/games/bin
Listing 3: Komunikat błędu
wraz z zintegrowanÄ… pomocÄ…
żeby dodać katalog do bieżącej ścieżki po-
[andi@diabolos lbreakout2-2.5beta-3]$./configure
włoki. Następujące po znaku = wyraże-
[...]
nie $PATH pozwala na uniknięcie nadpisa-
checking for main in -lpng... yes
nia istniejącej już definicji ścieżki. Nowa
checking for sdl-config... no
ścieżka powłoki zostanie utworzona przez
checking for SDL version >= 1.2.0... no
złączenie obecnej ścieżki z katalogiem
*** The sdl-config script installed by SDL could not be found
/usr/local/games/bin. Wprowadz powyższą
*** If SDL was installed in PREFIX, make sure PREFIX/bin is in
B
a
s
h
a
komendÄ™ do pliku startowego Basha,
*** your path, or set the SDL_CONFIG environment variable to the
.bash_profile znajdujÄ…cego siÄ™ w Twoim ka-
*** full path to sdl-config.
talogu domowym /home.
configure: error: lib SDL is needed
Alternatywnie możesz ustawić zmienną
środowiskową SDL_CONFIG, ponownie
www.linux-magazine.pl Lipiec 2004 29
Configure
COVER STORY
nie możesz w tym celu użyć polecenia
Listing 4: Komunikat błędu od pkg-config
export do zmodyfikowania ścieżki dostępu:
[andi@diabolos gphoto2-2.1.1]$./configure
export PKG_CONFIG_PATH=/usrU
[...]
/local/lib/pkgconfig:/usrU
checking for libgphoto2 >= 2.1.1... Package libgphoto2 was not
/lib/pkgconfig
found in the pkg-config search path.
Perhaps you should add the directory containing `libgphoto2.pc'
Powyższe polecenie utworzy ścieżkę wyszu-
to the PKG_CONFIG_PATH environment variable
kiwania pkg-config, wykorzystujÄ…c katalog
No package 'libgphoto2' found
/usr/local/lib/pkgconfig i ścieżkę domyślną
/usr/lib/pkgconfig. Jest to katalog, w któ-
configure: error: Library requirements (libgphoto2 >= 2.1.1) not
rym znajduje siÄ™ libgphoto2.pc. Tak na-
met; consider adjusting the PKG_CONFIG_PATH environment
prawdę ta druga ścieżka nie jest konieczna,
variable if your libraries are in a nonstandard prefix so
ponieważ pkg-config, tak czy inaczej, prze-
pkg-config can find them.
szuka swoją ścieżkę domyślną.
Jeśli często kompilujesz programy, warto
wykorzystując komendę export: W przypadku, gdy samemu skompilowa- dodać definicję PKG_CONFIG_PATH do
łeś bibliotekę np. libgphoto do obsługi apa- Twojego pliku ~/.bash_profile. Wtedy
export SDL_CONFIG=/usr/localU ratów cyfrowych, pliki zostaną zainstalowa- skrypt configure wywołujący pkg-config nie
/games/bin/sdl-config ne domyślnie w ścieżce /usr/local. Polece- powinien mieć kłopotu ze znalezieniem
nie make install skopiuje libgphoto2.pc do stosownej wersji libgphoto2 (Rysunek 6).
Musisz tutaj również wprowadzić pełną /usr/local/lib/pkgconfig. Jeżeli spróbujesz
ścieżkę (na Listingu 3: do pliku sdl-config) zbudować aplikację korzystającą z tej bi- Więcej pomocy
blioteki, ./configure wyświetli błąd przed- Przytoczone przykłady nie obejmują
Zmienne stawiony na Listingu 4. wszystkich błędów configure szczególnie
Ostatnio modne jest wykorzystywanie pkg- takich, gdy skrypt nie stosuje odpowiedniej
-config do wykonywania zadań zwykłe Na właściwej ścieżce opcji albo autor programu popełnił pomył-
przypisanych do skryptów konfiguracyj- Skrypt configure uważa, że zainstalowana kę. Jeśli tego dotyczy Twój problem, to za-
nych specyficznych dla danej biblioteki, ta- wersja libgphoto2 jest zbyt stara, ponieważ cznij od analizy pliku config.log, który jest
kich jak sdl-config. Skrypt pkg-config jest wymagania dotyczące obecności biblioteki tworzony w katalogu z kodem zródłowym.
programistycznym narzędziem służącym libgphoto2 w wersji 2.1.1 lub nowszej nie zo- To miejsce, gdzie configure rejestruje uru-
do wykrywania lokalizacji bibliotek i para- stały spełnione. Skrypt nie znalazł libgpho- chamianie komend i ich rezultaty oraz opi-
metrów bibliotek wymaganych do popraw- to2.pc w ścieżce poszukiwania pkg-config. sy błędów.
nej kompilacji programu. Na Listingu 4 configure podpowiada, że W przypadku gdy, to nie pomoże, możesz
Skrypt pkg-config przetwarza tekstowe możesz użyć zmiennej środowiskowej spróbować wprowadzić komunikat błędu do
pliki z rozszerzeniem .pc, które zazwyczaj PKG_CONFIG_PATH do poszerzenia wyszukiwarki internetowej, takiej jak Go-
umieszczone są w katalogu /usr/lib/pkcon- ścieżki wyszukiwania. Sugeruje także, któ- ogle. Istnieją także grupy dyskusyjne do-
fig. Dostarczają one informacji, takich jak ry z katalogów powinien zostać dołączony stępne pod adresem [2], zawierające pomoc-
wersje zainstalowanych bibliotek, ścieżki do ścieżki, tzn. katalog zawierający libg- ne informacje od innych użytkowników.
p
l
i
k
ó
w
n
a
g
Å‚
ó
w
k
o
w
y
c
h
do plików nagłówkowych i bibliotek (patrz photo2.pc. Możliwe, że ktoś inny miał już podobny pro-
Rysunek 5). Tak jak poprzednio wspomniano, ponow- blem i że znaleziono już rozwiązanie. Ostat-
nią deską ratunku jest zwrócenie się do
twórcy programu. Jego adres powinien być
zawarty w pliku AUTHORS. Pliki BUGS
i README często zawierają wymagany
przez autora aplikacji sposób opisu proble-
mu należy się stosować do zawartych tam
porad, ponieważ zwiększa to szansę na to, że
autor zainteresuje siÄ™ problemem. %
INFO
[1] Wyszukiwarka pakietów RPM i DEB:
http://www.rpmseek.com/
[2] Wyszukiwarka wiadomości w grupach
dyskusyjnych Google:
Rysunek 6: Po poprawnym zdefiniowaniu PKG_CONFIG_PATH pkg-config może dostarczyć
http://groups.google.com/
prawidłowe informacje skryptowi configure.
30 Lipiec 2004 www.linux-magazine.pl
Wyszukiwarka
Podobne podstrony:
ConfigurationExceptionconfiguration change management81A290Ethereal Config SniffingconfigFreeSWAN configurationconfigureconfigconfiguration management?FE6290configchange and?liver configuration items?304AC1create project configuration management cm environmentsAB92128configwizardtemplate?pendencieschange and?liver configuration items?C9175Dplan project configuration change control?F019DFwięcej podobnych podstron