[ Pobierz całość w formacie PDF ]
.W naszym przypadku nie otrzymaliśmy żadnego komunikatu o błędzie.Wszystkie informacje o pakietach RPM przechowuje w katalogu /var/lib/rpm.Obsługa pakietów za pomocą MCMidnigh Commander posiada wbudowane funkcje obsługi pakietów RPM.Za pomocą MC możemy przeglądać, instalować oraz aktualizować pakiety:# cd /mnt/cdrom/RedHat/RPMS[root@crash RPMS]# mcPo uruchomieniu MC znajdziemy się w katalogu /mnt/cdrom/RedHat/RPMS z pakietami RPM.Teraz możemy podświetlić wybrany katalog i po naciśnięciu [Enter] uzyskamy w oknie MC pseudozawartość katalogu odpowiadającego wybranemu pakietowi:/./INFOHEADER*INSTALL*UPGRADEPlik HEADER zawiera informację (metkę) na temat pakietu.Możemy ją obejrzeć podświetlając HEADER i naciskając [F3].Pliki wykonywalne INSTALL i UPGRADE służą, jak łatwo się domyślić, do dokonania instalacji bądź aktualizacji pakietu.Przykładowo, w celu dokonania instalacji podświetlamy INSTALL i naciskamy [ENTER].Podkatalog /INFO zawiera pliki z danymi na temat pakietu.W wielu wypadkach jest to rozpisana na tematy informacja pochodząca z metki, ale nie tylko.Poszczególne pliki z /INFO przeglądamy za pomocą przeglądarki MC uruchamianej naciśnięciem klawisza [F3].Opuszczamy pakiet przez podświetlenie /.i naciśnięcie [Enter].Instalujemy z kompilacjąInstalacja tego rodzaju może być równie bezproblemowa jak w przypadku pakietu RPM, ale może sprawić nam jakieś kłopoty.Zależy to w dużym stopniu od staranności przygotowania pakietu instalacyjnego przez jego autora.Postępowanie jest tu podobne jak przy kompilacji jądra.Jak w przypadku jądra, tak w przypadku określonych aplikacji spotkać się możemy z również z łatami (patch), które instalujemy analogicznie jak w przypadku tekstu źródłowego jądra.Tekst źródłowy programy w języku C otrzymujemy zwykle w postaci archiwum zwykłego (.tar) lub skompresowanego (.tar.gz).Należy je rozpakować w określonym katalogu.Archiwum nie zawiera z reguły pojedynczego pliku lecz katalog z drzewem podkatalogów, tak jak w przypadku jądra.Po rozpakowaniu szukamy w nim plików tekstowych INSTALL, README (czy podobnych) i przeglądamy je.Pliki te powinny zawierać szczegółowy opis instalacji i należy postępować zgodnie z zawartą w nich instrukcją.Interesuje nas jeszcze plik o nazwie makefile (lub Makefile, czy też GNUmakefile).Jest to skrypt dla polecenia make automatyzujący proces kompilacji i instalacji.Występują w nim między innymi wywołania kompilatora.W przypadku istnienia pliku makefile instalacja aplikacji z reguły sprowadza się do wydania kolejno dwóch poleceń:# make# make installPolecenie make wydane bez żadnych parametrów poszukuje w bieżącym katalogu pliku o nazwie GNUmakefile, Makefile bądź makefile.Gdy go znajdzie - wykonuje.Gdy otrzymamy komunikat o błędach, zaczynają się trudności.Przyczyną może być błąd w skrypcie makefile lub częściej niekompletność bądź nieadekwatność naszego środowiska programistycznego.Kompilator gcc i samo make z reguły będzie zainstalowane, ale braki (nieadekwatność wersji) mogą wystąpić wśród plików nagłówkowych (.h) bądź bibliotek.Biblioteki znajdziemy w katalogu /lib.Natomiast pliki nagłówkowe znajdują się w katalogu /usr/include/asm i /usr/include/linux.Z reguły będą to odpowiednie łączniki symboliczne.lddProgramy w Linuksie korzystają na ogół z ładowanych dynamicznie dzielonych bibliotek (ang.shared librares).W Linuksie istnieją dwa formaty plików binarnych: obecnie obowiązuje ELF i starszy a.out.Są one wzajemnie niekompatybilne i wymagają innych bibliotek dzielonych.Aby móc zatem wykorzystywać programy zarówno w formacie ELF, jak i a.out, musimy posiadać dwa komplety bibliotek.W sytuacjach wątpliwych pomocny okazać się może skrypt ldd.Wypisuje on niezbędne dla wskazanego programu biblioteki.Operuje na programach w obu formatach binarnych.Zobaczymy teraz, jakich bibliotek wymagają make i bash:# which make/usr/bin/make[root@crash /root]# ldd /usr/bin/makelib.so.6 => /lib/libc.so.6 (0x40004000)/lib/ld-linux.so.2 => /lib/ld-linux.so.2 (0x00000000)[root@crash /root]# which bash/bin/bash[root@crash /root]# ldd /bin/bashlibtermcap.so.2 => /lib/libtermcap.so.2 (0x40004000)lib.so.6 => /lib/libc.so.6 (0x40008000)/lib/ld-linux.so.2 => /lib/ld-linux.so.2 (0x00000000)[root@crash /root]# which ldd/usr/bin/ldd[root@crash /root]# ldd /usr/bin/lddnot a dynamic executable[root@crash /root]# _6
[ Pobierz całość w formacie PDF ]