Co to jest i jak to działa

Czy zastanawiałeś się kiedyś, jak Linux zarządza pakietami – pobieraniem, instalowaniem i usuwaniem? Cóż, wszystko podlega zarządzaniu pakietami Linuksa.

Ponieważ Linux jest oprogramowaniem typu open source, można znaleźć wielu menedżerów pakietów. A dzisiaj mamy okazję poznać szczegółowo menedżerów pakietów Linuksa.

W całym temacie poznamy podstawowe pojęcia związane z zarządzaniem pakietami w systemie Linux, w tym definicję menedżera pakietów w systemie Linux, jego podstawowe pojęcia i sposób działania.

Zacznijmy.

Co to jest Menedżer pakietów systemu Linux?

Menedżer pakietów w systemie Linux to zestaw oprogramowania lub narzędzi, które pozwalają użytkownikowi efektywnie zarządzać pakietami. Użytkownik może instalować, aktualizować, usuwać i konfigurować pakiety za pomocą obsługiwanego menedżera pakietów w systemie operacyjnym Linux.

Pod względem funkcjonalnym menedżer pakietów zajmuje się pakietami, plikiem archiwum zawierającym programy komputerowe i innymi plikami niezbędnymi do działania, takimi jak metadane pakietu. Metadane pakietu zawierają informacje o pakietach, w tym ich opis, wersję i zależności.

Brzmi mylące? Wyjaśnijmy to, poznając powiązane podstawowe koncepcje menedżera pakietów poniżej.

Poznanie podstawowych koncepcji zarządzania pakietami

W tej sekcji omówione zostaną podstawowe koncepcje zarządzania pakietami, w tym pakiety, zależności i repozytoria.

#1. Pakiety

Pakiet stanowi rdzeń systemu operacyjnego Linux. Technicznie rzecz biorąc, jest to plik archiwum zawierający wykonywalny plik binarny, powiązany plik konfiguracyjny oraz informacje o zależnościach wymaganych do jego prawidłowego działania.

Aby to uprościć, można pomyśleć o pakiecie jako o oprogramowaniu lub aplikacji, która może działać w systemie operacyjnym Linux. Pakiet może być zorientowany na wiersz poleceń lub aplikację z graficznym interfejsem użytkownika. Pakiet może również działać jako zależność do uruchamiania innych programów.

Kolejną ważną rzeczą dotyczącą pakietów jest to, że są one prekompilowane, co oznacza, że ​​menedżer pakietów nie musi kompilować kodu źródłowego. Jeśli spojrzymy w przeszłość, zobaczymy, że oprogramowanie należy skompilować ręcznie.

  • Użytkownik musi najpierw przejść do pliku README, znaleźć wszystkie zależności oraz pobrać je i zainstalować ręcznie.
  • Ogólnie rzecz biorąc, dołączony jest plik makefile lub skrypt, aby ułatwić cały proces. Było to żmudne i podatne na błędy.

Aby ułatwić proces zarządzania oprogramowaniem lub usługami, Linux wprowadził swój system zarządzania pakietami.

#2. Zależności

System operacyjny Linux jest złożony. Składa się z wielu programów, które są od siebie zależne. Aby jakiekolwiek oprogramowanie działało, wymagałoby innego oprogramowania lub pakietu.

Spróbujmy to zrozumieć z perspektywy rozwojowej. Jeśli wybierzesz dowolny projekt typu open source, zobaczysz, że wykorzystuje on biblioteki open source. W końcu nierozsądnie jest opracowywać wszystko od zera – wymyślanie koła na nowo nie jest konieczne.

Zatem za każdym razem, gdy instalujesz pakiet, będzie on miał wymienione zależności. Menedżer pakietów szuka listy zależności i instaluje wszystkie pakiety lub te, których brakuje.

#3. Repozytoria

Repozytoria lub repozytoria to wirtualne miejsca online, w których znajdują się wszystkie pakiety. Te repozytoria są dostępne przez Internet i pomagają użytkownikowi Linuksa uzyskać dostęp do pakietów wymaganych podczas instalacji oprogramowania.

Korzyści ze stosowania systemu zarządzania pakietami

Korzystanie z systemu zarządzania pakietami ma wiele zalet. Obejmują one:

  • Pozwala łatwo instalować nowe pakiety.
  • Dzięki systemowi zarządzania pakietami możesz odpowiednio usunąć stare aplikacje.
  • Wykonaj czystą ponowną instalację pakietów. Ponowna instalacja pakietów jest powszechną praktyką wśród programistów, ponieważ gwarantuje, że uszkodzone konfiguracje lub pliki zostaną naprawione automatycznie, bez konieczności ręcznego debugowania. Dzięki odpowiedniemu systemowi zarządzania pakietami administrator może śmiało ponownie zainstalować oprogramowanie, ponieważ system zarządzania zajmuje się wszystkim.
  • Z łatwością aktualizuj już zainstalowane pakiety bez ręcznej interwencji. Możesz ustawić automatyczne uruchamianie aktualizacji codziennie, zapewniając ochronę systemu przed typowymi podatnościami i zagrożeniami (CVE) lub nowymi exploitami.

Następnie omówimy sposób działania menedżera pakietów.

Jak działa Menedżer pakietów?

Menedżer pakietów stanowi rdzeń systemu operacyjnego Linux. Jest jednak dostępny również na Linuksie.

Menedżerowie pakietów są wszędzie, łącznie z edytorami wizualnymi, takimi jak Atom i Visual Studio Code, którzy mają własne. Inne popularne menedżery pakietów to PIP, menedżer pakietów w języku Python; npm — menedżer pakietów JavaScript; i tak dalej.

Przeczytaj także: Co to jest Chocolatey i jak go zainstalować

Aby menedżer pakietów mógł działać, potrzebuje dostępu do działającego repozytorium. To repozytorium oprogramowania zawiera listę pakietów. Każdy pakiet zawiera informacje o metadanych, co ułatwia obsługę menedżerowi pakietów.

Zatem następnym razem, gdy użyjesz menedżera pakietów do wyszukania pakietu, użyje on metadanych repozytorium, aby dowiedzieć się o pakiecie, np. o jego nazwie, opisie i wersji.

Podczas początkowej interakcji menedżer pakietów systemu tworzy lokalną pamięć podręczną metadanych, która jest później wykorzystywana podczas wykonywania czynności takich jak „aktualizacja”. — uruchamiając polecenia takie jak apt update.

Podobnie, jeśli chcesz zainstalować pakiet, przeszuka on lokalną pamięć podręczną metadanych w poszukiwaniu informacji i na tej podstawie wykona polecenie.

Na przykład, jeśli znajdzie pakiet, którego szukasz, spróbuje go zainstalować, łącząc się z repozytorium i pobierając go do systemu.

Następnie wyszuka zależności potrzebne do zainstalowania pakietu. Jeśli pakiet zawiera zależności, zainstaluje je automatycznie bez interwencji użytkownika.

W ten sposób menedżer pakietów może wykonywać inne czynności, w tym ponowną instalację pakietów oraz ich usuwanie i aktualizację. Najlepsze w tym wszystkim jest to, że wszystko można konfigurować. Na przykład możesz skonfigurować pakiety o znaczeniu krytycznym dla swojego projektu, aby aktualizowały się, gdy robisz to samodzielnie.

W skrócie możemy podsumować funkcje menedżerów pakietów jak poniżej:

  • Upewnij się, że paczki są autentyczne. Upewnij się także, że integralność pakietu jest zachowana, wykonując odpowiednie uwierzytelnienie sumą kontrolną i certyfikatem cyfrowym.
  • Zautomatyzuj łączenie pakietów, aby ułatwić obsługę.
  • Pamiętaj, aby zainstalować wszelkie zależności, aby uniknąć „piekła zależności”.
  • Zarządzaj pakietami, w tym pobieraniem, wyszukiwaniem i instalowaniem nowego lub istniejącego oprogramowania.

Linux oferuje dostęp do wielu dobrych menedżerów pakietów, w tym APT, YUM, DNF, Pacman, Zypeer i Portage. Przejrzyjmy je poniżej.

#1. Zaawansowane narzędzie pakietowe (APT)

APT jest jednym z najpopularniejszych menedżerów pakietów Linuksa, dostępnym w Ubuntu i innych dystrybucjach opartych na Debianie.

Wykorzystuje narzędzie do zarządzania pakietami dkpg i plik pakietu w formacie .deb. Opiera się na dkpg i działa jako nakładka dla menedżera pakietów dkpg. Dzięki APT możesz instalować, wyszukiwać, usuwać i zarządzać pakietami .deb.

Niektóre polecenia APT obejmują apt, apt-cache i apt-get.

Zobaczmy niektóre z nich w akcji poniżej.

#install package

$ sudo apt install package_name
#remove package

$ sudo apt remove package_name
#completely purge the package

$ sudo apt purge package_name
# Remove leftover dependencies

$ sudo apt autoremove
#upgrade

$ sudo apt upgrade
# upgrade a single package

$ sudo apt upgrade package_name

#2. DPKG

DPKG oznacza system zarządzania pakietami oparty na Debainie. Menedżer pakietów używa rozszerzenia .deb. W przeciwieństwie do APT nie może automatycznie instalować pakietów i ich zależności.

Aby zainstalować pakiet za pomocą dpkg, musisz użyć następującego polecenia.

$ dkpg -i package_name.deb

Podobnie możesz usunąć pakiet, uruchamiając następujące polecenie.

$ dkpg -r package_name

#3. Mniam

YUM oznacza „Yellow Dog Updater, zmodyfikowany”. YUM ma format pliku pakietu .rpm i jest dostępny w dystrybucjach takich jak Red Hat Enterprise Linux, CentOS i Fedora 21.

Podobnie jak APT, YUM jest menedżerem pakietów wysokiego poziomu, ale używa RPM (Menedżer pakietów RPM) jako podstawowego narzędzia do zarządzania pakietami. Oferuje łatwy w obsłudze interfejs.

Aby zainstalować pakiet w YUM, musisz uruchomić:

$ yum install package_name

Podobnie możesz usunąć pakiet, uruchamiając.

$ yum remove package_name

Aby zaktualizować pakiet, uruchom:

$ yum update package_name

YUM jest w stanie rozwiązać wszelkie zależności i pobrać aktualizacje podczas instalacji.

#4. DNF

DNF oznacza Dandified YUM. Jest następcą YUM i w większości przypadków go zastępuje. Podobnie jak YUM, DNF wykorzystuje pakiet RPM jako podstawowe narzędzie do zarządzania pakietami. Zapewnia jednak ulepszenie lepszej dokumentacji, szybsze rozwiązywanie zależności, lepszą wydajność i tak dalej.

#5. obr./min

Menedżer pakietów Red Hat (RPM) jest używany w systemach operacyjnych Linux opartych na Red Hat. Na przykład możesz znaleźć RPM w CentOS i Fedorze. RPM używa rozszerzenia .rpm.

Aby zainstalować przy użyciu RPM, musisz uruchomić:

$ rpm -i package_name_rpm

Aby usunąć pakiet, uruchom:

$ rpm -e package_name.rpm

Aby zaktualizować pakiet, uruchom:

$ rpm -e package_name

#6. Pacmana

Pacman to menedżer pakietów dla systemów operacyjnych Linux opartych na Arch, takich jak Arch i Manjaro. Używa formatu pliku .tar.xz.

Tutaj pakiety są przechowywane i dystrybuowane w skompresowanych plikach tar. Dzięki temu pakiety są małe, a co za tym idzie łatwe w dystrybucji i instalacji. Pacman wykorzystuje system Arch Build System (ABS) do instalowania pakietów.

W Pacmanie możesz go zainstalować za pomocą następującego polecenia:

$ pacman -S package_name

Podobnie możesz zaktualizować wszystkie pakiety w systemie za pomocą następującego polecenia.

$ pacman -Syu

Następnie, aby usunąć pakiet w Pacmanie, użyj następującego polecenia:

$ pacman -Rs package_name

#7. Zamek błyskawiczny

Zypper jest menedżerem pakietów dla openSUSE. Jest to narzędzie CLI, które obsługuje pakiety w dystrybucji openSUSE Linux.

Używa formatu pliku pakietu .rpm, podobnego do YUM i DNF. Jednakże będziesz polegać tutaj na interfejsie Zyppera, który korzysta z biblioteki ZYpp libzypp. Dzięki temu Zypper jest szybszy w porównaniu do innych menedżerów pakietów.

#8. Przewóz

Portage jest menedżerem pakietów dla dystrybucji Gentoo. Format pliku pakietu w Portage to .tbz2 — skompresowane archiwum tar lub skrypt powłoki e-build.

Portage działa inaczej niż inne menedżery pakietów z naszej listy. W tym przypadku Portage używa wstępnie skompilowanych pakietów binarnych. Pakiety są dystrybuowane poprzez e-buildy – typowy skrypt powłoki. Tutaj znajdziesz także narzędzie Emerge CLI, które obsługuje wszystkie skrypty powłoki służące do instalowania, aktualizowania lub usuwania pakietów.

Którego menedżera pakietów Linux wybrać?

Większość menedżerów pakietów jest samowystarczalna. W większości przypadków utkniesz przy używanej dystrybucji Linuksa. Jeśli zaczynasz, najprawdopodobniej będziesz musiał użyć APT.

Zaawansowani użytkownicy mogą chcieć skorzystać z innych menedżerów pakietów. Jednak ostatecznym celem jest zawsze lepsze zarządzanie oprogramowaniem. Możesz więc wybrać dowolnego menedżera pakietów, w zależności od wymagań.

Wskazówki dotyczące wydajnego zarządzania oprogramowaniem przy użyciu menedżerów pakietów

Jako programista musisz używać menedżerów pakietów do wydajnego zarządzania oprogramowaniem. Przyniesie to korzyści procesowi tworzenia oprogramowania, poprawiając produktywność i przepływ pracy.

Najbardziej znaczącą korzyścią jest to, że nie musisz się martwić „piekłem zależności” — sytuacją, w której oprogramowanie nie ma dostępu do pakietów wymaganych do działania.

Najlepsze praktyki w zakresie zarządzania pakietami obejmują:

  • Utwórz i zarządzaj odpowiednim plikiem konfiguracyjnym zawierającym listę wszystkich wymaganych pakietów. Oprócz pakietów podaj wersję pakietu, aby mieć pewność, że podczas wdrażania nie wystąpią żadne konflikty. Samo przechowywanie pliku konfiguracyjnego może uchronić Cię przed niespójnymi środowiskami.
  • Użyj menedżerów pakietów, aby aktualizować pakiety do najnowszej wersji. Dzięki temu nie będziesz cierpieć z powodu exploitów dnia zerowego, ponieważ najnowsza wersja zawiera poprawki zabezpieczeń. Otrzymasz także dostęp do nowych funkcji i poprawek błędów. Jednak przed aktualizacją pakietów uruchom środowisko testowe, aby sprawdzić, czy nowe pakiety coś psują. Najlepszym sposobem na rozwiązanie tego problemu jest automatyzacja procesu.
  • Twórz środowiska wirtualne, aby jeszcze bardziej usprawnić zarządzanie pakietami i ich zależnościami.
  • Usuń pakiety, aby poprawić zależności. Zależność od pakietu Lean zwiększy bezpieczeństwo i usprawni Twój projekt.
  • Utwórz odpowiednią dokumentację dotyczącą zależności. W ten sposób oszczędzasz wiele godzin pracy przy obsłudze paczek. Zawsze wspominaj o wersji i podawaj ją tak szczegółowo, jak to możliwe. Pomoże to nowym programistom w wejściu na pokład, a także usprawni konserwację.

Następnie omówimy, jak korzystać z menedżera pakietów.

Jak korzystać z menedżera pakietów?

W tej sekcji przyjrzymy się przykładom użycia menedżera pakietów. Aby uprościć sprawę, użyjemy narzędzia Advance Package Tool (APT). Prawdopodobnie będziesz także używać APT jako swojego pierwszego menedżera pakietów.

Instalowanie pakietów

Aby zainstalować pakiet, musisz użyć następującego polecenia.

$ Sudo apt install nazwa-pakietu

Zainstalujmy gimp za pomocą polecenia.

$ sudo apt zainstaluj gimp

Wyszukiwanie pakietów

Jeśli nie masz pewności co do dostępności pakietu, możesz wyszukać go w repozytorium online.

Na przykład, jeśli szukasz oprogramowania do edycji wideo, musisz go wyszukać jak poniżej.

$ sudo apt search “video image”
#output

Sorting... Done

Full Text Search... Done

libgavl-dev/jammy 2.0.0~svn6298-1 amd64

  low level audio and video library - development files

libgavl-doc/jammy 2.0.0~svn6298-1 all

  low level audio and video library - documentation files

libgavl-ocaml/jammy 0.1.6-1build3 amd64

  OCaml interface to the gavl library

libgavl-ocaml-dev/jammy 0.1.6-1build3 amd64

  OCaml interface to the gavl library

libgavl2/jammy 2.0.0~svn6298-1 amd64

  low level audio and video library - runtime files

The syntax for it as below.

$ sudo apt search “search-term‘

Finding Package Dependencies

You can also use package manager to find dependencies for a package that you wantto install. To list the package dependencies, simply run the following command.

$ sudo apt depends package-name

Let’s see what packages does gimp software depends upon.

$ sudo apt depends gimp

#output

gimp

  Depends: libgimp2.0 (>= 2.10.30)

  Depends: libgimp2.0 (<= 2.10.30-z)

  Depends: gimp-data (>= 2.10.30)

  Depends: gimp-data (<= 2.10.30-z)

  Depends: graphviz

  Depends: xdg-utils

  Depends: libaa1 (>= 1.4p5)

  Depends: libbabl-0.1-0 (>= 1:0.1.78)

  Depends: libbz2-1.0

  Depends: libc6 (>= 2.34)

  Depends: libcairo2 (>= 1.12.2)

  Depends: libfontconfig1 (>= 2.12.6)

  Depends: libfreetype6 (>= 2.2.1)

  Depends: libgcc-s1 (>= 3.3.1)

  Depends: libgdk-pixbuf-2.0-0 (>= 2.30.8)

  Depends: libgegl-0.4-0 (>= 1:0.4.34)

  Depends: libgexiv2-2 (>= 0.10.6)

  Depends: libglib2.0-0 (>= 2.56.2)

  Depends: libgs9 (>= 9.10~dfsg)

  Depends: libgtk2.0-0 (>= 2.24.10)

  Depends: libgudev-1.0-0 (>= 167)

  Depends: libharfbuzz0b (>= 0.6.0)

  Depends: libheif1 (>= 1.8.0)

  Depends: libilmbase25 (>= 2.5.7)

  Depends: libjpeg8 (>= 8c)

  Depends: libjson-glib-1.0-0 (>= 1.5.2)

  Depends: liblcms2-2 (>= 2.9)

  Depends: liblzma5 (>= 5.1.1alpha+20120614)

  Depends: libmng2 (>= 2.0.2)

  Depends: libmypaint-1.5-1 (>= 1.5.0)

  Depends: libopenexr25 (>= 2.5.7)

  Depends: libopenjp2-7 (>= 2.0.0)

  Depends: libpango-1.0-0 (>= 1.29.4)

  Depends: libpangocairo-1.0-0 (>= 1.29.4)

  Depends: libpangoft2-1.0-0 (>= 1.29.4)

  Depends: libpng16-16 (>= 1.6.2-1)

  Depends: libpoppler-glib8 (>= 0.44.0)

  Depends: librsvg2-2 (>= 2.32.0)

  Depends: libstdc++6 (>= 5.2)

  Depends: libtiff5 (>= 4.0.3)

  Depends: libwebp7

  Depends: libwebpdemux2

  Depends: libwebpmux3

  Depends: libwmf0.2-7 (>= 0.2.8.4)

  Depends: libx11-6

  Depends: libxcursor1 (>> 1.1.2)

  Depends: libxext6

  Depends: libxfixes3

  Depends: libxmu6

  Depends: libxpm4

  Depends: zlib1g (>= 1:1.1.4)

  Breaks: gimp-plugin-registry (<< 7.20140602+nmu1~)

  Recommends: ghostscript

 |Suggests: gimp-help-en

  Suggests: <gimp-help>

    gimp-help-ca

    gimp-help-de

    gimp-help-el

    gimp-help-en

    gimp-help-es

    gimp-help-fr

    gimp-help-it

    gimp-help-ja

    gimp-help-ko

    gimp-help-nl

    gimp-help-nn

    gimp-help-pt

    gimp-help-ru

    gimp-help-sl

    gimp-help-sv

  Suggests: gimp-data-extras

  Suggests: gvfs-backends

  Suggests: libasound2

    liboss4-salsa-asound2

  Replaces: gimp-plugin-registry (<< 7.20140602+nmu1~)

Usuwanie pakietów

Jeśli chcesz, możesz także usunąć pakiety. Aby usunąć pakiet, musisz użyć następującego polecenia.

$ sudo apt usuń nazwę pakietu

Jeśli więc chcesz usunąć pakiet gimp, musisz uruchomić następujące polecenie.

$ sudo apt usuń gimp

Nie usuwa to jednak żadnych zależności ani konfiguracji pakietu. Aby go całkowicie usunąć, musisz użyć opcji –purge.

$ sudo apt usuń nazwę pakietu –purge

$ sudo apt usuń gimp –purge

Aktualizacja pakietów systemowych

Aby zaktualizować pakiety systemowe, możesz uruchomić następujące polecenie.

$ Sudo apt update && Sudo apt upgrade -y

Ostatnie słowa

Menedżerowie pakietów stanowią rdzeń każdej dystrybucji Linuksa. Jest to kluczowa część, która określa sposób zarządzania pakietami w systemie Linux. Dzięki menedżerowi pakietów nie musisz martwić się zależnościami ani ręcznie wyszukiwać pakietów do zainstalowania.

Menedżery pakietów, takie jak APT, oferują łatwość użycia i wykonują większość podstawowej pracy, pozwalając ci skupić się na tym, co najważniejsze — tj. lepszym tworzeniu oprogramowania i usprawnionym przepływie pracy.

Następnie sprawdź, jak zainstalować Docker na Ubuntu, CentOS, Debianie i Windows.