C2110 Operační systém UNIX a základy programování 13. lekce -1C2110 Operační systém UNIX a základy programování Petr Kulhánek, Jakub Štěpán kulhanek@chemi.muni.cz Národní centrum pro výzkum biomolekul, Přírodovědecká fakulta Masarykova univerzita, Kotlářská 2, CZ-61137 Brno 13. lekce C2110 Operační systém UNIX a základy programování 13. lekce -2- Obsah  Komprese dat • Bezeztrátová versus ztrátová komprese  Archívy • typy, vytváření a rozbalování archívů  Kompilace programů ze zdrojových kódů • Rozbalení archívu • Konfigurace • Kompilace • Instalace  Nové příkazy • gzip, bunzip, bzip2, bunzip2, zip, unzip, tar C2110 Operační systém UNIX a základy programování 13. lekce -3- Komprese  Bezeztrátová  Ztrátová C2110 Operační systém UNIX a základy programování 13. lekce -4- Komprese Komprese (komprimace) je postup, kterým dochází k snížení velikosti dat (souborů). Dociluje se toho vyhledáváním redundantních nebo nepodstatných informací v datech, které jsou pak ukládány efektivněji. Podle typu kompresního algoritmu, lze kompresi dat rozdělit do dvou základních kategorií: • ztrátová komprese – dochází k nevratné ztrátě některých nepodstatných informací, což je většinou tolerováno při kompresi obrazových či zvukových dat • bezeztrátová komprese – nedochází k žádné ztrátě původní informace, komprimovaná data lze obnovit do původního stavu, míra komprese je několikanásobně nižší než u ztrátové komprese Obnova komprimovaných dat se nazývá dekomprese. Kompresní poměr udává kvalitu komprese. Udává se jako poměr velikosti původních dat (v bytech) vůči velikosti komprimovaných dat. C2110 Operační systém UNIX a základy programování 13. lekce -5Ztrátová komprese Programy pro ztrátovou kompresi a dekompresi: • mplayer • mencoder • convert (Image Magick) • a další ... Převod obrázku ve formátu PNG (Portable Network Graphics) do JPEG (Joint Photographic Experts Group): $ convert input.png -quality number output.jpeg využívá bezeztrátové komprese využívá ztrátovou kompresi míra kvality výsledného obrázku od 1 (nejhorší kvalita s největší kompresí) po 100 (nejlepší kvalita s nejhorší kompresí) C2110 Operační systém UNIX a základy programování 13. lekce -6- Cvičení 1. Z adresáře /home/kulhanek/Data/Komprese zkopírujte obrázek test.png do vašeho domovského adresáře. 2. Jakou velikost má soubor obrázku v bytech? 3. Proveďte ztrátovou kompresi obrázku do formátu jpeg. Ke kompresi použijte kvalitu 10, 50 a 90. Výsledné obrázky ukládejte každý zvlášť. 4. Porovnejte vizuální kvalitu komprimovaných obrázků (příkaz display). 5. Jaký je kompresní poměr pro kvalitu 10 a 90? C2110 Operační systém UNIX a základy programování 13. lekce -7Bezeztrátová komprese Programy pro bezeztrátovou kompresi a dekompresi: • gzip/gunzip • bzip2/bunzip2 • zip/unzip • a další ... Komprese textového souboru: $ gzip soubor.txt $ bzip2 soubor.txt výsledný soubor se bude jmenovat soubor.txt.bz2 výsledný soubor se bude jmenovat soubor.txt.gz Dekomprese komprimovaných dat: $ gunzip soubor.txt.gz $ bunzip2 soubor.txt.bz2 Kompresi či dekompresi lze uskutečnit tak, že výsledek je posílán do standardního výstupu (originální soubor pak zůstává nezměněn), např.: $ bunzip2 --stdout soubor.txt.bz2 | wc C2110 Operační systém UNIX a základy programování 13. lekce -8- Cvičení 1. Z adresáře /home/kulhanek/Data/Komprese zkopírujte textový soubor bu6_f.log do vašeho domovského adresáře. 2. Jakou velikost má soubor obrázku v bytech? 3. Proveďte bezeztrátovou kompresi souboru pomocí programů gzip a bzip2. Který z programů dosahuje vyššího kompresního poměru? 4. Který z programů komprimuje soubor rychleji? C2110 Operační systém UNIX a základy programování 13. lekce -9- Archívy  Typy  Vytváření a rozbalování archivů C2110 Operační systém UNIX a základy programování 13. lekce -10Archívy - tar tar (zkratka z anglického tape archiver neboli páskový archivovač) je souhrnný název jednak pro souborový formát sloužící k uložení mnoha jednotlivých souborů, jednak pro jednoúčelové programy, které s tímto formátem pracují. Formát samotný vznikl v počátcích Unixu a až později byl standardizován v rámci normy POSIX. Původně pomáhal při archivaci souborů na páskových jednotkách, ale později se jeho užívání rozšířilo a dnes je používán zkrátka tam, kde je vhodné pro účely distribuce či archivace sloučit více souborů do jednoho tak, aby se zachovaly informace o adresářové struktuře, přístupových právech a dalších atributech, které běžně souborový systém obsahuje. www.wikipedia.org Rozbalení archivu: $ tar xvf archiv.tar Vytvoření archivu: $ tar cvf archiv.tar adresar/ $ cd adresar $ tar cvf /cesta/k/archiv.tar * pokud jméno archivu obsahuje zakončení .gz nebo .bz2 tak je archiv automaticky dekomprimován nebo komprimován C2110 Operační systém UNIX a základy programování 13. lekce -11- Cvičení 1. Jaký význam mají volby cvf příkazu tar? 2. Jaký význam mají volby xvf příkazu tar? 3. Vytvořte archiv ze souborů uložených v adresáři: /home/kulhanek/Data/Archive 4. Jakou velikost má soubor obsahující archiv? 5. Proveďte kompresi archivu. Jaký je kompresní poměr? 6. Archiv rozbalte do adresáře /scratch/vas_login/archiv C2110 Operační systém UNIX a základy programování 13. lekce -12Kompilace aplikací  Aplikace Armagetron  Rozbalení archívu  Konfigurace  Kompilace  Instalace C2110 Operační systém UNIX a základy programování 13. lekce -13- Armagetron http://armagetronad.org/ Postup: 1) Stažení zdrojových kódů (source code) 2) Rozbalení archivu 3) Instrukce k instalaci (README, INSTALL, doc/README, doc/INSTALL) 4) Konfigurace 5) Kompilace 6) Instalace Svatá trojice $ ./configure $ make $ make install C2110 Operační systém UNIX a základy programování 13. lekce -14Armagetron, postup I Vše provádíme ve scratchi.1) Rozbalení archivu: $ tar xvf armagetronad-0.2.8.3.2.src.tar.gz 2) Vytvoření instalačního adresáře, tj. kam se bude program instalovat (nutné pokud nemáte oprávnění roota) $ mkdir armagetronad $ pwd /scratch/kulhanek/game/armagetronad 3) Změna pracovního adresáře do rozbaleného archívu: $ cd armagetronad-0.2.8.3.2 4) Konfigurace ke kompilaci a instalaci: $ ./configure --prefix=/scratch/kulhanek/game/armagetronad \ --disable-etc --disable-uninstall V této fázi se může stát, že budou chybět některé knihovny nebo aplikace. Ty je možné buď doinstalovat podobným postupem. Vhodnější (a rychlejší) je však požádat administrátora o jejich instalaci. Ke kompilaci je nutné instalovat vývojové balíčky jednotlivých knihoven. Např: # apt-get install libxml2-dev kam se program bude nainstalovat C2110 Operační systém UNIX a základy programování 13. lekce -15Armagetron, postup II 5) Kompilace $ make 6) Instalace $ make install 7) Spuštění programu $ cd /scratch/kulhanek/game/armagetronad $ bin/armagetronad kde je program nainstalován