Zarządzanie Oprogramowaniem


meta: apt-get, apt-cache, pakiet, repozytorium


Ostatnim tematem związanym z systemem Kali Linux jest zarządzanie oprogramowaniem. Niezależnie od tego z jakiego systemu operacyjnego korzystamy instalujemy oprogramowanie nam potrzebne do pracy, nauki lub zabawy. W Kali Linux nie jest inaczej.

Nie będziemy posługiwać się graficznym interfejsem do instalacji oprogramowania tylko instalację przeprowadzać będziemy w konsoli przy pomocy polecenia. Nim nauczymy się jak to robić poznajmy strukturę pakietów w Kali Linux.

Pakiet

Pakiet jest to paczka, która ma określony zakres czynności. Jest czymś z wbudowanym zakresem działań jakie może wykonać. Dlatego pakiet można rozumieć jako program wykonujący jakieś działania. Dość często zdarza się, że pakiet ma określoną liczbę zadań jakie wykonuje i aby działał poprawnie potrzebować będzie innego pakietu. Takie powiązanie zależności jest wygodne ponieważ nie trzeba zawrzeć w kodzie jednego programu wszystkich niezbędnych elementów, tylko rozdzielić kod na mniejsze części. Daje nam to możliwość wykorzystania niektórych paczek w innych programach. Dzięki takiemu podziałowi zyskujemy również objętościowo mniejszą paczkę, mniejszy program.

Choć na pierwszy rzut oka można przypuszczać, że takie rozwiązanie bardzo utrudnia pracę z oprogramowaniem to jednak twórcy bardzo dobrze dopracowali hierarchię podziału paczek oraz zarządzania nimi.

Rodzaje Pakietów

W systemach Linuksowych mamy dwa rodzaje pakietów:

  1. Pakiety źródłowe;
  2. Pakiety binarne;

Pakiet źródłowy

Pakietem źródłowym nazywamy pakiet który posiada tylko i wyłącznie pliki z kodem. Aby można było z nich korzystać należy je najpierw skompilować do postaci pakietu binarnego.

Takie działanie ma swój spory plus, a mianowicie jeżeli jesteś programistą masz możliwość dostosowania pakietu do własnych potrzeb. Możesz w dowolny sposób ingerować w kod a następnie skompilować go do postaci programu.

Minusem takiego rozwiązania jest to, że jeżeli coś popsujemy w danym pakiecie możemy doprowadzić do sytuacji w której program lub system nie będzie funkcjonował należycie. Korzystając z systemu wirtualnego mamy taki plus, że dzięki migawkom w łatwy sposób jesteśmy w stanie wrócić do poprzedniej funkcjonalności. Dlatego jeżeli zamierzasz modyfikować jakiś pakiet pamiętaj by zawsze przed ingerencją w kod programu taką migawkę wykonać. Pisałem o tym w artykule pierwsze uruchomienie systemu Kali Linux dlatego jeżeli temat nie jest Ci znany zapraszam do zapoznania się z jego treścią.

Pakiet binarny

Pakietem binarnym nazywamy pakiet który jest już gotowy do instalacji. Jest to wygenerowany program z kodu. Tak naprawdę w ten sam sposób jest napisany każdy program niezależnie od systemu. Oczywiście są spore różnice między pisaniem oprogramowania na poszczególne systemy operacyjne ale idea taka sama.

Oprogramowanie

Instalacja oprogramowania jest jedną z kluczowych umiejętności w systemach niezależnie jakiego typu. Jeżeli autorzy stworzyliby system który w standardzie posiadałby zainstalowane wszystkie z możliwych narzędzi, zabierałby on niesamowicie dużo miejsca. Oczywiście zaspokojenie wszystkich jest niemożliwe dlatego najczęściej po instalacji systemu mamy zainstalowane tylko podstawowe oprogramowanie. W systemie Kali Linux nie jest inaczej. Różnica jest taka, że posiada on oprogramowanie głównie przeznaczone do testów penetracyjnych oraz podstawowe narzędzia do pracy z systemem.

Repozytorium

W systemie Windows w większej mierze musimy przeszukiwać zasoby stron internetowych by odnaleźć jakiś program. Następnie ściągnąć go i zainstalować. W Linuksie jest inaczej. Oczywiście wyżej przedstawiona opcja jest również dostępna, ale w większości przypadków zbędna.

Każda dystrybucja Linuksa posiada swoje repozytorium czyli bibliotekę pakietów. W naszej konsoli posłużmy się wcześniej poznanym poleceniem grep jak na przykładzie poniżej.

kali@kali:~$ grep -v '#' /etc/apt/sources.list
deb http://http.kali.org/kali kali-rolling main contrib non-free

kali@kali:~$ 

Odbiegając delikatnie od tematu polecenie możemy przetłumaczyć jako: wyświetl wszystkie linijki z pliku souces.list które nie posiadają znaku #


Wyświetliliśmy dokładny adres repozytorium z którego korzysta Kali Linux. W tym repozytorium znajduje się całe oprogramowanie które weszło w skład systemu. Jest to ważna uwaga ponieważ nadal znaleźć w internecie możemy oprogramowanie które zadziała w systemie, ale znajduje się na liście repozytorium. Więcej repozytoriów odnajdziemy w dokumentacji systemowej https://www.kali.org/docs/general-use/kali-linux-sources-list-repositories/ .

Szukanie pakietu, programu.


meta: apt-get, apt-cache, pakiet, repozytorium


Nim zajmiemy się instalowaniem programów nauczmy się przeszukiwać nasz zbiór. Posłuży do tego polecenie apt-cache.

Bardzo popularnym programem graficznym i darmowym jest Gimp. Możliwe, że spotkałeś się z nim już wcześniej i wiesz, że na stronie https://www.gimp.org/ znaleźć możemy wersje na Windowsa, Linuksa i MacOs. Nas interesować będzie wersja na Linuksa i wystarczyłoby kliknąć w odpowiedni odnośnik i już mamy go na dysku. My tak nie zrobimy. Skorzystajmy z polecenia apt-cache w konsoli jak w przykładzie poniżej:

kali@kali:~$ apt-cache search gimp
…
gimp - GNU Image Manipulation Program
gimp-data - Data files for GIMP
gimp-data-extras - Extra brushes and patterns for GIMP
gimp-dcraw - GIMP plug-in for loading RAW digital photos
gimp-dds - DDS (DirectDraw Surface) plugin for GIMP
gimp-gap - animation package for the GIMP
gimp-gluas - Lua environment plug-in for GIMP
gimp-gmic - GREYC's Magic for Image Computing - GIMP Plugin
gimp-gutenprint - print plugin for the GIMP
…

Lista jest bardzo długa dlatego pozwoliłem sobie ją skrócić. To co nas interesuje znajduje się w powyższym przykładzie. W repozytorium odnajdujemy paczkę z oprogramowaniem gimp dlatego możemy ją zainstalować bez konieczności ściągania ze strony producenta.

Wyświetlanie informacji o pakiecie

Zanim przejdziemy do samej instalacji poznajmy jeszcze w jaki sposób jesteśmy w stanie dowiedzieć się czegoś więcej o interesującej nas paczce. Spójrzmy na przykład poniżej.

kali@kali:~$ apt-cache show gimp
Package: gimp
Source: gimp (2.10.18-1)
Version: 2.10.18-1+b1
Installed-Size: 22040
Maintainer: Debian GNOME Maintainers <pkg-gnome-maintainers@lists.alioth.debian.org>
Architecture: amd64
Replaces: gimp-plugin-registry (<< 7.20140602+nmu1~)
Depends: libgimp2.0 (>= 2.10.18), libgimp2.0 (<= 2.10.18-z), gimp-data (>= 2.10.18), gimp-data (<= 2.10.18-z), libgdk-pixbuf2.0-0 (>= 2.30.8), xdg-utils, libaa1 (>= 1.4p5), libbabl-0.1-0 (>= 0.1.10), libbz2-1.0, libc6 (>= 2.29), libcairo2 (>= 1.12.2), libfontconfig1 (>= 2.12.6), libfreetype6 (>= 2.2.1), libgcc-s1 (>= 3.0), libgegl-0.4-0 (>= 0.4.22), libgexiv2-2 (>= 0.10.6), libglib2.0-0 (>= 2.55.1), libgs9 (>= 8.61.dfsg.1), libgtk2.0-0 (>= 2.24.32), libgudev-1.0-0 (>= 167), libharfbuzz0b (>= 0.6.0), libheif1 (>= 1.4.0), libilmbase25 (>= 2.5.3), libjpeg62-turbo (>= 1.3.1), libjson-glib-1.0-0 (>= 0.13.4), liblcms2-2 (>= 2.9), liblzma5 (>= 5.1.1alpha+20120614), libmng1 (>= 1.0.10), libmypaint-1.5-1 (>= 1.5.0), libopenexr25 (>= 2.5.3), libopenjp2-7 (>= 2.0.0), libpango-1.0-0 (>= 1.29.4), libpangocairo-1.0-0 (>= 1.29.4), libpangoft2-1.0-0 (>= 1.29.4), libpng16-16 (>= 1.6.2-1), libpoppler-glib8 (>= 0.44.0), librsvg2-2 (>= 2.32.0), libstdc++6 (>= 5.2), libtiff5 (>= 4.0.3), libwebp6 (>= 0.5.1), libwebpdemux2 (>= 0.5.1), libwebpmux3 (>= 0.6.1-2+b1), libwmf0.2-7 (>= 0.2.8.4), libx11-6, libxcursor1 (>> 1.1.2), libxext6, libxfixes3, libxmu6, libxpm4, zlib1g (>= 1:1.1.4)
Recommends: ghostscript
Suggests: gimp-help-en | gimp-help, gimp-data-extras, gvfs-backends, libasound2
Breaks: gimp-plugin-registry (<< 7.20140602+nmu1~)
Size: 7039320
SHA256: 8215abbcceebdf810e4da54feda40488663f15fd378edf51888eff2beeedf883
SHA1: e7a4e1b2ce06dff9c3584f2ffe84317a4147c869
MD5sum: d5a292e6fc5d8f9cbc4664e38ad82479
Description: GNU Image Manipulation Program
 GIMP is an advanced picture editor. You can use it to edit, enhance, and
 retouch photos and scans, create drawings, and make your own images.
 It has a large collection of professional-level editing tools and
 filters, similar to the ones you might find in Photoshop. Numerous
 fine-control settings and features like layers, paths, masks, and
 scripting give you total control over your images.
 .
 Many image file formats are supported, including JPEG, Photoshop (.psd),
 and Paint Shop Pro (.psp) files. It can also be used to scan and print
 photos.
 .
 To open files remotely (like over HTTP), install the gvfs-backends
 package.
 .
 To use a MIDI device (like a musical keyboard) as an input controller in GIMP,
 install libasound2 and read the how-to at /usr/share/doc/gimp/README.MIDI
Description-md5: 0c13253910a0a1bd77c64d38c07351a0
Homepage: https://www.gimp.org/
Tag: culture::TODO, field::arts, implemented-in::c, interface::graphical,
 interface::x11, role::program, scope::application, suite::gimp,
 suite::gnu, uitoolkit::gtk, use::editing, use::learning,
 works-with-format::gif, works-with-format::jpg, works-with-format::pdf,
 works-with-format::png, works-with-format::tiff, works-with::image,
 works-with::image:raster, works-with::text, x11::application
Section: graphics
Priority: optional
Filename: pool/main/g/gimp/gimp_2.10.18-1+b1_amd64.deb

kali@kali:~$ 

Mam nadzieję, że nikt z was się nie oburzy na to że wkleiłem cały wynik polecenia. Jest to zamierzone.

Dzięki tej opcji jesteśmy w stanie dowiedzieć się wszystkiego o programie. Jego wersji, co będzie oprócz niego zainstalowane począwszy od bibliotek skończywszy na dodatkowym oprogramowaniu.

Przy każdym z pakietów warto zwrócić szczególną uwagę na suggests. Tłumacząc na polski słowo to oznacza sugestie. W wielu wypadkach dobrze jest zainstalować to co jest tam proponowane. Oczywiście nie brakuje szczegółowego opisu, dlatego jeżeli znalazłeś jakiś program a nie jesteś pewny co robi to właśnie tutaj znajdziesz niezbędne informacje.

Instalacja oprogramowania przy pomocy apt-get


meta: apt-get, apt-cache, pakiet, repozytorium


Po zapoznaniu się z tematem moglibyśmy zainstalować gimpa, ale jest on niepotrzebny. Dlatego zainstalujemy sobie inny program z którego w dalszej części kursu będziemy korzystać. Ale nim to nastąpi poznajmy jeszcze…

Aktualizowanie listy oprogramowania.

Większość oprogramowania ulega aktualizacjom. Jeżeli mamy repozytorium to listę oprogramowania też. Każdy program na tej liście ma zapisaną swoją wersję którą możemy zainstalować. Jeżeli program został zaktualizowany do nowej wersji i dołączony do repozytorium to możemy z niego skorzystać, ale musimy najpierw zaktualizować repozytorium. Robimy to w bardzo prosty sposób tak jak na przykładzie.

kali@kali:~$ sudo apt-get update
[sudo] password for kali: 
Get:1 http://kali.koyanet.lv/kali kali-rolling InRelease [30.5 kB]
Get:2 http://kali.koyanet.lv/kali kali-rolling/main amd64 Packages [16.6 MB]
Get:3 http://kali.koyanet.lv/kali kali-rolling/contrib amd64 Packages [100 kB]
Get:4 http://kali.koyanet.lv/kali kali-rolling/non-free amd64 Packages [200 kB]
Fetched 17.0 MB in 12s (1,409 kB/s)                                                                      
Reading package lists... Done
kali@kali:~$ 

Właśnie zaktualizowaliśmy naszą listę oprogramowania do najnowszej wersji dostępnej w Kali Linux. Aktualizacja może usuwać jakieś oprogramowanie, zastępować jak i dodawać nowe którego nie było wcześniej. Wspomnę jeszcze, że standardowo instalowana jest zawsze najnowsza paczka oprogramowania. Jeżeli z jakiegoś powodu będziemy chcieli wrócić do wersji wcześniejszej bez problemu jesteśmy w stanie to zrobić.

Wracając do instalacji…

Terminator

Jak już wspomniałem nie będziemy instalować gimpa tylko program który nazywa się terminator. Oprogramowanie to jest emulatorem już poznanego terminala. Różni się tym, że możemy podzielić okno.

Instalacja terminatora

Do zainstalowania paczki posłużymy się poleceniem apt-get. Spójrzmy na przykład:

kali@kali:~$ sudo apt-get install terminator
[sudo] password for kali: 
Reading package lists... Done
Building dependency tree       
Reading state information... Done
The following additional packages will be installed:
  gir1.2-notify-0.7
The following NEW packages will be installed:
  gir1.2-notify-0.7 terminator
0 upgraded, 2 newly installed, 0 to remove and 845 not upgraded.
Need to get 361 kB of archives.
After this operation, 2,308 kB of additional disk space will be used.
Do you want to continue? [Y/n] Y
Get:1 http://kali.koyanet.lv/kali kali-rolling/main amd64 gir1.2-notify-0.7 amd64 0.7.9-1 [10.4 kB]
Get:2 http://kali.koyanet.lv/kali kali-rolling/main amd64 terminator all 1.92-2 [351 kB]
Fetched 361 kB in 11s (32.5 kB/s)   
Selecting previously unselected package gir1.2-notify-0.7:amd64.
(Reading database ... 289204 files and directories currently installed.)
Preparing to unpack .../gir1.2-notify-0.7_0.7.9-1_amd64.deb ...
Unpacking gir1.2-notify-0.7:amd64 (0.7.9-1) ...
Selecting previously unselected package terminator.
Preparing to unpack .../terminator_1.92-2_all.deb ...
Unpacking terminator (1.92-2) ...
Setting up gir1.2-notify-0.7:amd64 (0.7.9-1) ...
Setting up terminator (1.92-2) ...
update-alternatives: using /usr/bin/terminator to provide /usr/bin/x-terminal-emulator (x-terminal-emulator) in auto mode
Processing triggers for desktop-file-utils (0.26-1) ...
Processing triggers for mime-support (3.64) ...
Processing triggers for hicolor-icon-theme (0.17-2) ...
Processing triggers for man-db (2.9.3-2) ...
Processing triggers for kali-menu (2020.3.2) ...
kali@kali:~$ 

Gdy program apt-get odnajdzie naszą paczkę, oraz wszelkie niezbędne inne pliki do instalacji zapyta nas czy na pewno chcemy przystąpić do instalacji. Wpisujemy Y, a następnie przyciskamy Enter po czym następuje instalacja.

Po instalacji dobrze jest przeciągnąć ikonę na pasek tak aby mieć swobodny dostęp do programu. Z programu będziemy korzystać prawie, że w każdej chwili dlatego warto wyciągnąć skrót do niego na pasek lub pulpit. Jak zapoznasz się z dobrodziejstwami tego programu nie wrócisz do konsoli.

W jaki sposób wyciągnąć ikonę programu pisałem tutaj, dlatego zapraszam do przeczytania jeżeli nie wiesz jak.

Po uruchomieniu programu powinieneś mieć podobną konsolę jak ja poniżej.

Zarządzanie Oprogramowaniem apt-get apt-cache pakiet repozytorium
Zarządzanie Oprogramowaniem

Nie zajmę się teraz funkcjonalnością programu. Temat dokładnie omówimy kiedy będziemy korzystać z niego.

Opcje polecenia apt-get

Poznajmy kilka istotnych opcji polecenia apt-get

update – aktualizuje repozytorium pakietów

upgrade – aktualizuje już zainstalowane oprogramowanie do najnowszej wersji

install – instaluje nową paczkę, program

reinstall – reinstaluje paczkę, program

remove – usuwa paczkę

purge – usuwa paczkę oraz pliki konfiguracyjne

dist-upgrade – aktualizuje całą dystrybucję do najnowszej wersji

W przypadku upgrade i dist-upgrade nie polecam korzystać z tych opcji, chyba że robimy częste migawki systemu. Niestety mogą bardziej zaszkodzić niż pomóc dlatego zawsze ostrożnie podchodźcie do aktualizacji. Jeżeli wykonuję aktualizację to zawsze przed robię migawkę by móc wrócić do pierwotnego stanu.

Podsumowanie

Instalowanie oprogramowania jest ostatnim działem o systemie Kali Linux jaki chcę napisać. Oczywiście z czasem może się to zmienić, ale teraz chciałbym zająć się już oprogramowaniem służącym testom penetracyjnym. Myślę, że wiedza jaką uzyskałeś poprzez czytanie wszystkich artykułów jest wystarczająca by móc w miarę swobodnie poruszać się po systemie. Dlatego bez zbędnego przedłużenia zapraszam dalej.


meta: apt-get, apt-cache, pakiet, repozytorium