drwxr-xr-x 5 xf0r3m xf0r3m 100 04-30 18:49 share
</pre>
<h3 id="15.3.2.installationviapackagestool">15.3.2. Instalacja za pomocą narzędzia do tworzenia pakietów</h3>
+ <p>
+ Istnieje możliwość instalacji kompilowanego oprogramowania w taki
+ sposób, aby można było je kontrolować za pomocą mendżera paketów
+ dystrybucji. Dystrybucjami, w których najprościej jest wykonać to
+ zadanie są te oparte na Debianie, ze względu na prostotę twowrzenia
+ pakietów <em>.deb</em>. W tym celu posłużymy się narzędziem
+ <strong>checkinstall</strong>.
+ Domyślnie może nie występować w naszym systemie, ale możliwe jest
+ ono do zainstalowania z repozytorium. Na chwilę obecną to program
+ zawiera błąd i aby móc zbudować pakiet należy podać opcję:
+ <strong>--fstrans=0</strong>. Jeśli nie chcemy aby pakiet
+ automatycznie instalował się w naszym systemie podajemy opcje:
+ <em>--install=no</em>. Podczas tworzenia pakietu wymagane będzie
+ podanie opisu naszęgo pakietu oraz sprawdzenie czy skrypt dobrze
+ odczytał takie informacje jak nazwa pakietu, jego wersja czy
+ docelowa architektura. Te informacje można poprawić. Po zatwierdzeniu
+ tych informacji pakiet zostaje zbudowany. Po zakończeniu budowania
+ będzie go można zainstalować za pomocą polecenia <em>dpkg</em>.
+ </p>
+<pre class="code-block">
+ xf0r3m@vm-83a53d4/ coreutils-9.5/ checkinstall --install=no --fstrans=0
+</pre>
+ <h3 id="15.3.3.configureoptions">15.3.3. Opcje skyptu configure</h3>
+ <p>
+ Po za zaprezentowaną opcją <em>--prefix</em>, która zmienia katalog
+ docelowy dla instalacji oprogramowania w systemie, skrypt
+ <em>configure</em> posiada wiele innych przydatnych opcji. Sam skrypt
+ posiada opcję <em>--help</em>, jednak informacji jest na tyle dużo,
+ że cięzko znaleźć tę jedną potrzebną, dlatego poniżej zamieszczam
+ kilka najważniejszych z nich:
+ </p>
+ <ul>
+ <li><strong>--bindir=<em>katalog</em></strong> - pliki wykonywalne
+ będą instalowane w podanym <em>katalogu</em>.</li>
+ <li><strong>--sbindir=<em>katalog</em></strong> - programy systemowe
+ będą instalowane w podanym <em>katalogu</em>.</li>
+ <li><strong>--libdir=<em>katalog</em></strong> - biblioteki
+ wykonywalne będą instalowane w podanym <em>katalogu</em>.</li>
+ <li><strong>--disable-shared</strong> - opcja ta zakazuje tworzenia
+ bibliotek współdzielonych. Ta opcja może pomóc w zapobiegnięciu
+ problemów z bibliorekami współdzielonymi.</li>
+ <li><strong>--with-<em>pakiet</em>=<em>katalog</em></strong> - ta
+ opcja służy do wskazania bibliotek zainstalowanych w
+ niestandardowej lokalizacji. Jednak nie wszystkie skrypty
+ rozpoznają te opcję.</li>
+ </ul>
+ <h3 id="15.3.4.configureenv">15.3.4. Zmienne środowiskowe</h3>
+ <p>
+ Za pomocą skryptu <em>configure</em> możemy przekazać do narzędzia
+ <em>make</em> makra dla kompilatora, konsolidatora czy preprocesora
+ języka C. Skonfigurowanie zmiennych środowiskowych przed
+ uruchomieniem skryptu daje nam możliwość dostosowywania kompilacji
+ do własnych potrzeb.
+ </p>
+ <p>
+ Zmienne środowiskowe możemy podawać przed w tym samy wierszu
+ polecenia przed uruchomieniem skryptu:
+ </p>
+<pre class="code-block">
+$ CPPFLAGS=-DDEBUG ./configure
+</pre>
+ <p>
+ Lub jako jego opcje:
+ </p>
+<pre class="code-block">
+$ ./configure CPPFLAGS=-DDEBUG
+</pre>
+ <p>
+ Na powyższych przykładach przedstawiłem zmienną środowiskową
+ preprocesora, ale również dostępna jest <em>LDFLAGS</em>
+ (zmienna środowiskowa konsolidatora) oraz <em>CFLAGS</em> (zmienna
+ środowiskowa kompilatora). Ich wartości są identyczne jak opcje,
+ które przekazywaliśmy do wyżej wymienionych programu - o czym warto
+ pamiętać.
+ </p>
+ <h3 id="15.3.5.gnuautoconfcreatedtargets">15.3.5. Cele tworzone przez GNU autoconf</h3>
+ <p>
+ Po za standardowymi celami takimi jak <em>all</em> czy <em>install</em>,
+ skrypt <em>configure</em> w pliku <em>Makefile</em> tworzy kilka
+ innych celów. Oto, niektóre z nich, część z nim została już opisana
+ w poprzednim rozdziale.
+ </p>
+ <ul>
+ <li><strong>make clean</strong></li>
+ <li><strong>make distclean</strong></li>
+ <li><strong>make check</strong></li>
+ <li><strong>make install-strip</strong> - ten cel działa podobnie
+ standardowego <em>make install</em>, jednak usuwa tablice symboli
+ oraz informacje dla debugera z utworzonych bibliotek oraz plików
+ wykonywalnych. Zainstalowany w ten sposób pakiet oprogramowania
+ zabiera mniej miejsca na dysku.</li>
+ </ul>
+ <h3 id="15.3.6.gnuautoconflogfile">15.3.6. Plik dziennika systemu GNU autoconf</h3>
+ <p>
+ Jeśli podczas pracy skryptu <em>configure</em> zdarzy się coś
+ nieprzewidzianego jakiś błąd lub problem, to wówczas możemy posłużyć
+ się plikiem dziennika tworzonym podczas pracy skryptu. Plik zowie się
+ <em>config.log</em> i zewzględu na to, że zawierać bedzie on wiele
+ danych to najlepiej jest go przeglądać od końca (po otwarciu pliku
+ za pomocą narzędzia <em>less</em> naciskamy <strong>G</strong>
+ (<em>Shift+g</em>), przeniesie nas to na koniec pliku.).
+ </p>
+ <h3 id="15.3.7.pkg-configtool">15.3.7. Narzędzie pkg-config</h3>
+ <p>
+ Narzędzie <strong>pkg-config</strong> zostało zaprojektowane w celach
+ rozprowadzania informacji o lokalizacji bibliotek, plików
+ nagłówkowych, a także opcji wymaganych do poprawnego skompilowania i
+ skonsolidowania programu. Składnia tego polecenie prezentuje się
+ w następujący sposób:
+ </p>
+<pre class="code-block">
+$ pkg-config opcje pakiet1 pakiet2 ... pakietN
+</pre>
+ <p>
+ Przykładowo jeśli do konsolidacji naszego programu potrzebujemy
+ dodać bibliotekę kompresującącą możemy wydać poniższe zapytanie.
+ W odpowiedzi otrzymamy opcję, którą należy dodać do argumentów
+ konsolidatora.
+ </p>
+<pre class="code-block">
+ xf0r3m@laptop-69924a2/ ~/ pkg-config --libs zlib
+-lz
+</pre>
+ <p>
+ Za pomocą opcji <em>--list-all</em> możemy wyświetlić informacje na
+ temat wszystkich bibliotek, o których informacje mogą być dostępne
+ przez <em>pkg-config</em>, co już może sugerować nam, że nie
+ wszystkie biblioteki są dostępne w jego zasobach.
+ </p>
+<pre class="code-block">
+ xf0r3m@laptop-69924a2/ ~/ pkg-config --list-all
+blkid blkid - Block device id library
+dbus-1 dbus - Free desktop message bus
+egl EGL - EGL library and headers
+expat expat - expat XML parser
+form form - ncurses 6.4 add-on library
+formw formw - ncurses 6.4 add-on library
+geoclue-2.0 Geoclue - The Geoinformation Service
+...
+</pre>
+ <p>
+ Działanie programu <em>pkg-config</em> opiera sie o pliki
+ <em>.pc</em>, które mogą być rozprowadzane w pakietach naszej
+ dystrybucji w momencie instalacji bibilioteki, oczywiście zarządca
+ pakietu musi utworzyć taki pliki. Polecenie przeszukuje katalog
+ <em>lib/pkg-config</em> swojego przedrostka instalacji (prefiksu),
+ jeśli np. jego prefiksem jest <em>/usr</em>, to będzie on
+ przeszukiwać katalog <em>/usr/lib/pkg-config</em>.
+ </p>
+ <p>
+ Jeśli chcemy dodać do zasobów <em>pkg-config</em> bibliotekę o
+ niestandardowym miejscu instalacji, to możemy wykorzystać do tego
+ dwie metody. Pierwsza z nich jest zwykłą kopią pliku <em>.pc</em>
+ do domyślnego katalogu narzędzia lub utworzenia dowiązania
+ symbolicznego. Drugą opcją jest uzupełnienie zmiennej
+ <em>PKG_CONFIG_PATH</em>, o dodatkowy katalog. Jednak to rozwiązanie
+ niesprawdza się w obrębie całego systemu.
+ </p>
+ <h2 id="15.4.manualinstallationprosandcons">15.4. Zalety i wady ręcznej instalacji</h2>
+ <p>
+ Na poziomie podstawowym osbsługi systemów Linuksowych, nikt nie
+ pownien od was wymagać umiejętności ręcznej instalacji oprogramowania
+ w systemie. Raczej będziemy polegać na tym co oferują nam repozytoria
+ dystrybucji. Obecnie dostawcy różnych programów często przygotowują
+ pakiety systemu zarządzania oprogramowaniem dla wielu wiodących
+ dystrybucji, dlatego też ręczna instalacja spada do rangi pewnego
+ rodzaju niszy. Budowanie może zająć naprawdę wiele czasu i nie
+ zawsze mozemy osiągnąć ządany skutek. Chcemy skompilować jakiś
+ program, okazuje się że brakuje nam bibliotek w takiej wersji, więc
+ musimy przeprowadzić kompilację bibliotek w takiej wersji w ten
+ sposób nasza praca związana tym zagadnieniem się nawarstawia.
+ Weźmy pod uwagę też sprzęt. Nie każdy dysponuje potężną maszyną,
+ która będzie wstanie kompilować duże programy w ciągu kilku minut.
+ Większość użytkowników dystrybucji Linuksa, do których adresowany
+ jest ten materiał, raczej korzysta z budżetowego laptopa z marketu.
+ Uciekła do MS Windows, w celu polepszenia swoich doświadczeń z
+ komputerem, bez reklam czy najważniejszej rzeczy w tym systemie czyli
+ aktualizacji. Tak więc kompilacja na takim sprzęcie może zająć
+ dłuższą chwilę, co sprawia, że budowanie od podstaw oprogramowania
+ traktowane jest raczej jako ostateczność.
+ </p>
+ <p>
+ Nie mniej jednak taka instalacja oprogramowania w systemie nie jest
+ bez zalet. Najważniejszymi z nich jest dostarczenie do naszych
+ systemów najnowszych wersji programów, dostosowania ich możliwości
+ oraz funkcjonalności przy użyciu opcjonalnych bibliotek czy samych
+ opcji kompilacji do naszych potrzeb. Nawet lepiej, istnieją całe
+ dystrybucje, które opierają się tylko i wyłącznie o ręczną instalację
+ lub zawierają takie programy do zarządzania oprogramowaniem, które i
+ tak koniec końców sprowadzania się do ręcznej instalacjacji
+ przeprowadzonej w nieco bardziej bezobsługowy sposób.
+ </p>
+ <p>
+ Oczywiście zachęcam do ręcznej instalacji, tylu programów ilu się da.
+ Dzięki temu uczymy się, poznajemy te programy. Domyślnym miejscem
+ przeznaczonym na ręczną instalację jest katalog <em>/usr/local</em>.
+ </p>
+ <h2 id="15.5.usingpatches">15.5. Stosowanie poprawek</h2>
+ <p>
+ Poprawki są nieodłącznym elementem życia oprogramowania. Poprawki
+ są dystrybułowane za pomocą takich narzędzi jak system kontroli
+ wersji <em>Git</em>. Mogą one wprowadzać szereg zmian do kodu
+ źródłowego, poprawiać błedy lub uzupełaniać oprogramowanie o nowa
+ funkcjonalność. Poprawki tworzone są zapomocą polecenia
+ <em>diff</em>. Poniżej znajduje się nagłówek pliku poprawki
+ wprowadzający zamiany, które obecnie czytasz do tego materiału.
+ </p>
+<pre class="code-block">
+diff --git a/articles/terminallog/Linux.Podstawy.html b/articles/terminallog/Linux.Podstawy.html
+index 464a32d..09c06a7 100644
+--- a/articles/terminallog/Linux.Podstawy.html
++++ b/articles/terminallog/Linux.Podstawy.html
+@@ -12597,6 +12597,212 @@
+</pre>
+ <p>
+ Wszysktie linie, które są dodatkowo wprowadzena oznaczne symbolem
+ plusa (<strong>+</strong>) najczęściej koloru zielonego. Jeśli nasz
+ terminal obsługuje kolory. Natomiast usunięcia oznaczane są za
+ pomocą symbolu minusa (<strong>-</strong>) najczęściej koloru
+ czerwonego. Linie z minusem (linie na czerwono) zawierają również
+ treść, która występowała w pliku przed wprowadzeniem zmian. Warto
+ mieć to na uwadze.
+ </p>
+ <p>
+ Pliki poprawek są tworzone za pomocą polecenia <em>diff</em>,
+ natomiast instalowane są za pomocą polecenia <strong>patch</strong>.
+ Przyczym podczas instalacji poprawek istotne jest dobre umieszczenie
+ poprawki w katalogu z kodem źródłowym. Załóżmy, że mamy plik
+ poprawki, który obejmuje plik <em>src/plik.c</em>. Wówczas taki
+ plik poprawki należy nałożyć w katalogu nadrzędnym katalogu
+ <em>src</em>, wydając poniższe polecenie:
+ </p>
+<pre class="code-block">
+$ patch -p0 < plik_poprawki
+</pre>
+ <p>
+ Opcja <code class="code-inline">-p0</code> usunie dokładnie 0
+ poprzedzających ukośników ze ścieżki odczytanej w poprawce aby
+ zlokalizować plik. Jest to tyle istotne, ponieważ mogą występować
+ różnice w lokalizacji instalacji na komputerze osoby tworzącej
+ taką poprawkę a jej stosującej. Rozważmy taki przykład, że pliku
+ poprawki widnieje taka ścieżka jak: <em>patches-3.42/src/plik.c</em>.
+ W naszej instalacji nie ma tego katalogu <em>patches-3.42</em>, to
+ aby zastosować poprawkę musimy przejść do katalogu zawierającego
+ katalog <em>src</em> i wydać następujące polecenie:
+ </p>
+<pre class="code-block">
+$ patch -p1 < plik_poprawki;
+</pre>
</div>
<p style="margin: 15px; padding: 0; outline: 0;">
2024; COPYLEFT; ALL RIGHTS REVERSED;