From 22ed3dcc0e1ae5bfcd952688879cdf89d2ad229b Mon Sep 17 00:00:00 2001 From: xf0r3m Date: Wed, 1 May 2024 12:22:20 +0200 Subject: [PATCH] =?utf8?q?Zako=C5=84czenie=20tworzenia=2015=20rozdzia?= =?utf8?q?=C5=82u.=20Do=20przeredagowania.?= MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit --- articles/terminallog/Linux.Podstawy.html | 249 +++++++++++++++++++++++ 1 file changed, 249 insertions(+) diff --git a/articles/terminallog/Linux.Podstawy.html b/articles/terminallog/Linux.Podstawy.html index 464a32d..5fa2448 100644 --- a/articles/terminallog/Linux.Podstawy.html +++ b/articles/terminallog/Linux.Podstawy.html @@ -12597,6 +12597,255 @@ drwxr-xr-x 3 xf0r3m xf0r3m 60 04-30 18:49 libexec drwxr-xr-x 5 xf0r3m xf0r3m 100 04-30 18:49 share

15.3.2. Instalacja za pomocą narzędzia do tworzenia pakietów

+

+ 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 .deb. W tym celu posłużymy się narzędziem + checkinstall. + 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ę: + --fstrans=0. Jeśli nie chcemy aby pakiet + automatycznie instalował się w naszym systemie podajemy opcje: + --install=no. 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 dpkg. +

+
+󱩊 xf0r3m@vm-83a53d4/ coreutils-9.5/󰯆 checkinstall --install=no --fstrans=0
+
+

15.3.3. Opcje skyptu configure

+

+ Po za zaprezentowaną opcją --prefix, która zmienia katalog + docelowy dla instalacji oprogramowania w systemie, skrypt + configure posiada wiele innych przydatnych opcji. Sam skrypt + posiada opcję --help, jednak informacji jest na tyle dużo, + że cięzko znaleźć tę jedną potrzebną, dlatego poniżej zamieszczam + kilka najważniejszych z nich: +

+ +

15.3.4. Zmienne środowiskowe

+

+ Za pomocą skryptu configure możemy przekazać do narzędzia + make 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. +

+

+ Zmienne środowiskowe możemy podawać przed w tym samy wierszu + polecenia przed uruchomieniem skryptu: +

+
+$ CPPFLAGS=-DDEBUG ./configure
+
+

+ Lub jako jego opcje: +

+
+$ ./configure CPPFLAGS=-DDEBUG
+
+

+ Na powyższych przykładach przedstawiłem zmienną środowiskową + preprocesora, ale również dostępna jest LDFLAGS + (zmienna środowiskowa konsolidatora) oraz CFLAGS (zmienna + środowiskowa kompilatora). Ich wartości są identyczne jak opcje, + które przekazywaliśmy do wyżej wymienionych programu - o czym warto + pamiętać. +

+

15.3.5. Cele tworzone przez GNU autoconf

+

+ Po za standardowymi celami takimi jak all czy install, + skrypt configure w pliku Makefile tworzy kilka + innych celów. Oto, niektóre z nich, część z nim została już opisana + w poprzednim rozdziale. +

+ +

15.3.6. Plik dziennika systemu GNU autoconf

+

+ Jeśli podczas pracy skryptu configure 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ę + config.log 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 less naciskamy G + (Shift+g), przeniesie nas to na koniec pliku.). +

+

15.3.7. Narzędzie pkg-config

+

+ Narzędzie pkg-config 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: +

+
+$ pkg-config opcje pakiet1 pakiet2 ... pakietN
+
+

+ 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. +

+
+󱩊 xf0r3m@laptop-69924a2/ ~/󰯆 pkg-config --libs zlib
+-lz 
+
+

+ Za pomocą opcji --list-all możemy wyświetlić informacje na + temat wszystkich bibliotek, o których informacje mogą być dostępne + przez pkg-config, co już może sugerować nam, że nie + wszystkie biblioteki są dostępne w jego zasobach. +

+
+󱩊 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
+...
+
+

+ Działanie programu pkg-config opiera sie o pliki + .pc, 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 + lib/pkg-config swojego przedrostka instalacji (prefiksu), + jeśli np. jego prefiksem jest /usr, to będzie on + przeszukiwać katalog /usr/lib/pkg-config. +

+

+ Jeśli chcemy dodać do zasobów pkg-config bibliotekę o + niestandardowym miejscu instalacji, to możemy wykorzystać do tego + dwie metody. Pierwsza z nich jest zwykłą kopią pliku .pc + do domyślnego katalogu narzędzia lub utworzenia dowiązania + symbolicznego. Drugą opcją jest uzupełnienie zmiennej + PKG_CONFIG_PATH, o dodatkowy katalog. Jednak to rozwiązanie + niesprawdza się w obrębie całego systemu. +

+

15.4. Zalety i wady ręcznej instalacji

+

+ 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ść. +

+

+ 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. +

+

+ 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 /usr/local. +

+

15.5. Stosowanie poprawek

+

+ Poprawki są nieodłącznym elementem życia oprogramowania. Poprawki + są dystrybułowane za pomocą takich narzędzi jak system kontroli + wersji Git. 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 + diff. Poniżej znajduje się nagłówek pliku poprawki + wprowadzający zamiany, które obecnie czytasz do tego materiału. +

+
+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 @@ 
+
+

+ Wszysktie linie, które są dodatkowo wprowadzena oznaczne symbolem + plusa (+) najczęściej koloru zielonego. Jeśli nasz + terminal obsługuje kolory. Natomiast usunięcia oznaczane są za + pomocą symbolu minusa (-) 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. +

+

+ Pliki poprawek są tworzone za pomocą polecenia diff, + natomiast instalowane są za pomocą polecenia patch. + 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 src/plik.c. Wówczas taki + plik poprawki należy nałożyć w katalogu nadrzędnym katalogu + src, wydając poniższe polecenie: +

+
+$ patch -p0 < plik_poprawki
+
+

+ Opcja -p0 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: patches-3.42/src/plik.c. + W naszej instalacji nie ma tego katalogu patches-3.42, to + aby zastosować poprawkę musimy przejść do katalogu zawierającego + katalog src i wydać następujące polecenie: +

+
+$ patch -p1 < plik_poprawki;
+

2024; COPYLEFT; ALL RIGHTS REVERSED; -- 2.39.5