plik


ÿþUniwersytet w BiaBymstoku WydziaB Matematyki i Informatyki Instytut Informatyki MateriaBy bazowe do zaj z przedmiotu: Systemy operacyjne Laboratorium nr 12 Temat: Pobieranie i zarzdzanie pakietami. Kompilacja zródeB. Programowanie z wykorzystaniem funkcji systemowych mgr Adam Bonda BiaBystok 2008 Cel laboratorium: Nabycie umiejtno[ci wprowadzania/usuwania pakietów do/z systemu Linux, kompilacja programów zródBowych. U|ycie funkcji systemowych w programowaniu zadaD w jzyku c/c++. wget program narzdziowy do pobierania plików z World Wide Web. ObsBuguje protokoBy HTTP, HTTPS i FTP, a tak|e pobieranie poprzez serwery proxy HTTP. Wget potrafi pod|a za odno[nikami zawartymi w stronach HMTL i tworzy lokalne wersje zdalnych witryn WWW, w peBni odtwarzajc struktur katalogów oryginalnego o[rodka. Jest to czasami nazywane "pobieraniem rekurencyjnym". Podczas takiego dziaBania wget respektuje ustalenia Standardu Robot Exclusion (/robots.txt). Mo|liwe jest poinstruowanie programu, by w pobieranych plikach HTML przeksztaBcaB odno[niki tak, aby wskazywaBy na lokalne kopie, do przegldania bez poBczenia. I. System pakietów System pakietów Slackware opiera si na prostych pakietach tgz, które nie zawieraj informacji o zale|no[ciach. Przyjmuje si, |e u|ytkownik sam bdzie troszczyB si o to, aby instalowany pakiet miaB dostp do odpowiednich bibliotek i niezbdnych programów. Brak zarzdzania zale|no[ciami jest czsto wymieniany jako jedna z gBównych wad systemu, niemniej jednak pozwala uwolni si od tzw. piekBa zale|no[ci (ang. dependency hell), co cenione jest przez zaawansowanych u|ytkowników, w[ród których dystrybucja jest niezwykle popularna. Nale|y pamita, |e systemy zarzdzania pakietami (takie jak: rpm czy deb) nie s doskonaBe i potrafi przysporzy wiele problemów, takich jak bBdne zale|no[ci, niespeBnione zale|no[ci, ptle (cykle) w zale|no[ciach, konflikty pakietów, ... Do zarzdzania pakietami sBu| nastpujce narzdzia dziaBajce w powBoce: ' installpkg (instalacja pakietu), ' removepkg (usunicie pakietu), ' upgradepkg (aktualizacja pakietu), ' makepkg (utworzenie pakietu tgz z zawarto[ci bie|cego katalogu), ' explodepkg (rozpakowanie zawarto[ci pakietu do bie|cego katalogu). W skBad oficjalnych pakietów Slackware wchodzi równie| menad|er rpm (slackware/ap). Nale|y pamita, |e o zale|no[ci bdziemy musieli zadba sami i u|y nastpujcej skBadni rpm -ivh --nodeps --force pakiet.rpm. Dziki temu mo|na zainstalowa m.in. komunikator Skype, posBugujc si pakietem rpm dla openSUSE. Za pomoc programu rpm2tgz mo|na konwertowa pakiety rpm do formatu tgz. UzupeBnieniem jest tekstowy menad|er pkgtool, sBu|cy do instalacji i usuwania pakietów (równie| nie sprawdza on zale|no[ci). slackpkg menad|er pakietów Slackware Manualna instalacja pakietów wi|e si z konieczno[ci zadbania o wprowadzenie do systemów równie| pakietów od których nasze oprogramowanie jest uzale|nione. Ró|ne dystrybucje oferuj ró|ne narzdzia apt-get (Debian), emergo (Gentoo), poldek (PLD) etc. Zadaniem tych programów jest automatyczne pobranie instalowanego programu i wszystkich zale|no[ci, a nastpnie ich instalacja. Slackware równie| posiada narzdzia tego typu, cho zale|no[ci dla |adnych z tych programów nie dziaBaj poprawnie. S to: SWareT, slapt-get, czy slackpkg. Instalacja pakietu slackpkg: pByta instalacyjna CD3: $ installpkg /mnt/cdrom/slackware/extra/slackpkg/slackpkg-*.tgz lub sie: $ wget -c ftp://ftp.slackware.com/pub/slackware/slackware-current/extra/slackpkg/slackpkg-*.tgz # installpkg slackpkg-*.tgz Konfiguracja: GBowny plik konfiguracyjny: /etc/slackpkg/slackpkg.conf lokalizacja pakietów, tryb pobierania Wybór serwerów lustrzanych (mirror): /etc/slackpkg/mirrors Blokada pakietów: /etc/slackpkg/blacklist U|ytkowanie: slackpkg update - aktualizacja bazy slackpkg install pakiet - instalacja pakietu slackpkg reinstall pakiet - reinstalacja pakietu slackpkg upgrade pakiet - aktualizacja pakietu slackpkg upgrade slackware - aktualizacja systemu slackpkg search plik - szukanie pliku w pakietach Kompilacja ze zródBem ./configure (z opcj --help wy[wietla wszystkie mo|liwe parametry) make clean (czy[ci zródBa) make (buduje program) make install (instaluje program) Narzdzie make sBu|y do zarzdzania kompilacj projektów skBadajcych si z wielu plików zródBowych. Aby u|ywa make nale|y napisa skrypt o nazwie Makefile lub makefile, w którym opisane s: à zale|no[ci pomidzy plikami zródBowymi i plikami wynikowymi, à sposób tworzenia plików wynikowych z plików zródBowych. Nastpnie przy pomocy polecenia make kompilujemy projekt. Make usprawnia kompilacj, gdy| samodzielnie decyduje, które z plików zródBowych maj by przekompilowane (sprawdzajc daty ostatniej modyfikacji). Budowa pliku Makefile Plik Makefile skBada si gBównie z reguB. ReguBa ma nastpujc budow: CEL: SKAADNIKI KOMENDA Gdzie CEL to nazwa pliku docelowego, który jest tworzony z plików wymienionych jako SKAADNIKI, za[ KOMENDA podaje komend, która tworzy plik docelowy CEL z plików skBadowych SKAADNIKI PrzykBad reguBy: hello: hello.c aux.c gcc hello.c aux.c -o hello Programowanie systemowe: ' Procesy: #include <stdio.h> #include <unistd.h> int main(void) { printf("hello ID %d\n", getpid()); } ' SygnaBy: /* ursig1.c */ #include <stdio.h> #include <signal.h> #include <unistd.h> static int count = 0; void handler(int signo) { signal(SIGINT,handler); /* Re-instate handler */ ++count; /* Increment count */ write(1,"Got SIGINT\n",11); /* Write message */ } int main(int argc,char **argv) { signal(SIGINT,handler); /* Register function */ while ( count < 2 ) { puts("Waiting for SIGINT.."); sleep(4); /* Snooze */ } puts("End."); return 0; } ' Katalogi: tworzenie, usuwanie, zmiana: Tworzenie nowego katalogu #include <sys/types.h> #include <sys/stat.h> int mkdir(const char *path, mode_t mode); PrzykBad: int z; z = mkdir("/tmp/my_dir",S_IRWXU|S_IRWXG|S_IROTH|S_IXOTH); /* 0775 */ if ( z == -1 ) /* report error */ Usuwanie katalogu #include <unistd.h> int rmdir(const char *path); PrzykBad: int z; z = rmdir("/tmp/my_dir"); if ( z == -1 ) /* Report error */ Zmiana katalogu #include <unistd.h> int chdir(const char *path); PrzykBad: if ( chdir("/home/student1") == -1 { fprintf(stderr,"%s: chdir(2)\n",strerrir(errno)); exit(13); } Zmiana uprawnieD: #include <sys/stat.h> int chmod(const char *path, mode_t mode); int fchmod(int fd, mode_t mode); int lchmod(const char *path, mode_t mode); PrzykBad: if ( chmod("./my_script",0550) == -1 ) /* Report error */ else /* Successful */ PrzykBad: if ( chmod("./my_script",S_IRUSR|S_IXUSR|S_IRGRP|S_IXGRP) == -1 ) /* Report error */ else /* Successful */ Zmiana wBa[ciciela: #include <sys/types.h> #include <unistd.h> int chown(const char *path, uid_t owner, gid_t group); int fchown(int fd, uid_t owner, gid_t group); int lchown(const char *path, uid_t owner, gid_t group); PrzykBad: if ( chown("/etc/hosts",0,-1) == -1 ) /* Report error */ else /* Successful */ Zadanie 1. Sprawdzi dostpno[ pakietu slackpkg w systemie. Je[li jest on niedostpny pobra pakiet z slackpkg.org i zainstalowa go manualnie. Zaktualizowa bazy pakietów slackpkg dla posiadanej! wersji Slackware'a (sprawdzi numer posiadanej wersji, dokona odpowiedniej modyfikacji pliku serwerów lustrzanych) Zadanie 2. Sprawdzi dostpno[ polecenia installpkg w systemie. Je[li jest ono niedostpne zlokalizowa je w pakiecie i zainstalowa go. Zadanie 3. Sprawdzi numer zainstalowanej wersji programu xmms i dostpnej w repozytoriach Slackware. U|ywajc menad|era pakietów odinstalowa pakiet xmms. Przeanalizowa, gdzie w drzewie katalogów znajduj si poszczególne cz[ci pakietu: manuala, dokumenty, program (binarka), pliki konfiguracyjne. U|ywajc programu slackpkg zainstalowa najnowsz wersje programu xmms. Zadanie 4. Jak lepiej rozwiza problem z zadania 3? Zadanie 5. Pobra i skompilowa najnowsze zródBo pakietu wget. Najpierw sprawdzi posiadan w systemie wersje. Zadanie 6. Korzystajc z funkcji systemowych, napisa program c/c++ wy[wietlajcy numer PID bie|cego procesu. Zadanie 7. Korzystajc z funkcji systemowych, napisa program c/c++ przechwytujcy sygnaB SIGINT i reagujcy zwróceniem komunikatu tekstowego i numeru bie|cego procesu. Zadanie 8. Korzystajc z funkcji systemowych, napisa program w c/c++ a) tworzcy katalog wg. zdefiniowanej konstrukcji w zródle b) tworzcy katalog podany jako argument programu. Program powinien wBa[ciwie reagowa, je[li u|ytkownik nie ma prawa dostpu, lub wystpiB inny bBd. Zadanie 9. Korzystajc z funkcji systemowych, napisa program w c/c++ a) usuwajcy katalog wg. zdefiniowanej konstrukcji w zródle b) usuwajcy katalog podany jako argument programu. Program powinien wBa[ciwie reagowa, je[li u|ytkownik nie ma prawa dostpu, katalog nie istnieje, lub wystpiB inny bBd. Zadanie 10. Korzystajc z funkcji systemowych, napisa program w c/c++ dokonujcy zmiany uprawnieD a) pliku/katalogu zdefiniowanego w zródle , oraz praw równie| tam zdefiniowanych b) pliku/katalogu podanego jako argument wywoBania i praw (drugi argument). Program powinien wBa[ciwie reagowa, je[li u|ytkownik nie ma prawa dostpu, katalog nie istnieje, lub wystpiB inny bBd. Zadanie 11. Korzystajc z funkcji systemowych, napisa program w c/c++ dokonujcy zmiany wBa[ciciela a) pliku/katalogu zdefiniowanego w zródle , na wBa[ciciela równie| tam zdefiniowanego b) pliku/katalogu podanego jako argument wywoBania i wBa[ciciela (drugi argument). Program powinien wBa[ciwie reagowa, je[li u|ytkownik nie ma prawa dostpu, katalog nie istnieje, lub wystpiB inny bBd. W.Richard Stevens, "Advanced UNIX Programming" W.Richard Stevens, "Advanced Programming in the UNIX Environment" http://wazniak.mimuw.edu.pl/index.php?title=SOP_lab_nr_6 http://wazniak.mimuw.edu.pl/index.php?title=SOP_lab_nr_7 http://wazniak.mimuw.edu.pl/index.php?title=SOP_lab_nr_8 http://wazniak.mimuw.edu.pl/index.php?title=SOP_lab_nr_9 http://jakilinux.org/linux/slackware/

Wyszukiwarka

Podobne podstrony:
sop 2009 lab04
sop 2009 lab05
sop 2009 lab10
sop 2009 lab03
sop 2009 lab08
sop 2009 lab01
sop 2009 lab11
sop 2009 lab02
sop 2009 lab06
sop 2009 lab07
sop 2009 lab09
2009 2010 rejon
2009 pytania testowe
[W] Badania Operacyjne Zagadnienia transportowe (2009 04 19)
Twilight Saga New Moon 2009 CAM XviD POISON

więcej podobnych podstron