CoverStory configure


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:
ConfigurationException
configuration change management81A290
Ethereal Config Sniffing
config
FreeSWAN configuration
configure
config
configuration management?FE6290
config
change and?liver configuration items?304AC1
create project configuration management cm environmentsAB92128
configwizardtemplate?pendencies
change and?liver configuration items?C9175D
plan project configuration change control?F019DF

więcej podobnych podstron