Csomagkezelő

Illusztráció egy csomagkezelőről, amelyet új szoftverek letöltésére használnak. A manuális műveletek közé tartozhat a licencszerződés elfogadása vagy néhány csomagspecifikus konfigurációs opció kiválasztása.

A szoftvercsomag egy olyan archív fájl, amely egy számítógépes programot, valamint a telepítéséhez szükséges metaadatokat tartalmazza. A számítógépes program lehet forráskódban, amelyet először le kell fordítani és meg kell építeni. A csomag metaadatai közé tartozik a csomag leírása, a csomag verziója és a függőségek (más csomagok, amelyeket előzetesen telepíteni kell).

A csomagkezelők feladata a szoftvercsomagok megtalálása, telepítése, karbantartása vagy eltávolítása a felhasználó parancsára. A csomagkezelő rendszer tipikus funkciói a következők:

  • A fájlarchiválókkal való együttműködés a csomagarchívumok kinyerése érdekében
  • A csomagok integritásának és hitelességének biztosítása az ellenőrző összegek, illetve a digitális tanúsítványok ellenőrzésével
  • A meglévő szoftverek keresése, letöltése, telepítése vagy frissítése egy szoftvertárból vagy alkalmazásboltból
  • A csomagok funkció szerinti csoportosítása a felhasználói zavarok csökkentése érdekében
  • A függőségek kezelése, hogy egy csomagot az összes szükséges csomaggal együtt telepítsenek, így elkerülhető a “függőségi pokol”

A megosztott könyvtárakkal kapcsolatos kihívásokSzerkesztés

A statikus könyvtárkapcsolás helyett dinamikus könyvtárkapcsolásra épülő számítógépes rendszerek a gépi utasítások futtatható könyvtárait megosztják a csomagok és alkalmazások között. Ezekben a rendszerekben a könyvtárak különböző verzióit igénylő különböző csomagok közötti összetett kapcsolatok a köznyelvben “függőségi pokolként” ismert kihívást eredményeznek. A Microsoft Windows rendszereken ezt “DLL-pokolnak” is nevezik, ha dinamikusan kapcsolt könyvtárakkal dolgozunk. A jó csomagkezelés létfontosságú ezeken a rendszereken. Az OPENSTEP Framework rendszere kísérletet tett ennek a problémának a megoldására azzal, hogy lehetővé tette a könyvtárak több verziójának egyidejű telepítését, és azt, hogy a szoftvercsomagok megadhassák, hogy melyik verzióhoz kapcsolódnak.

Front-endek a helyileg lefordított csomagokhozSzerkesztés

A rendszergazdák a csomagkezelő szoftvereken kívül más eszközökkel is telepíthetnek és karbantarthatnak szoftvereket. A helyi rendszergazda például letölthet csomagolatlan forráskódot, lefordíthatja és telepítheti azt. Ez azt okozhatja, hogy a helyi rendszer állapota nem lesz szinkronban a csomagkezelő adatbázisának állapotával. A helyi rendszergazdának további intézkedéseket kell tennie, például kézzel kell kezelnie egyes függőségeket, vagy a módosításokat integrálnia kell a csomagkezelőbe.

A helyben lefordított csomagok csomagkezelésbe való integrálásának biztosítására rendelkezésre állnak eszközök. A .deb és .rpm fájlokon alapuló disztribúciókhoz, valamint a Slackware Linuxhoz létezik a CheckInstall, a recept alapú rendszerekhez, például a Gentoo Linuxhoz és a hibrid rendszerekhez, például az Arch Linuxhoz pedig először receptet lehet írni, amely biztosítja, hogy a csomag illeszkedjen a helyi csomagadatbázisba.

A konfiguráció karbantartásaEdit

A szoftverfrissítéseknél különösen nagy gondot okoznak a konfigurációs fájlok frissítései. Mivel a csomagkezelők, legalábbis a Unix rendszereken, a fájlarchiváló segédprogramok kiterjesztéseként jöttek létre, általában csak a konfigurációs fájlokat tudják vagy felülírni, vagy megtartani, ahelyett, hogy szabályokat alkalmaznának rájuk. Ez alól vannak kivételek, amelyek általában a kernel konfigurációjára vonatkoznak (amely, ha elromlik, újraindítás után használhatatlanná teszi a számítógépet). Problémákat okozhat, ha a konfigurációs fájlok formátuma megváltozik; például ha a régi konfigurációs fájl nem tiltja le kifejezetten az új, letiltandó opciókat. Néhány csomagkezelő, például a Debian dpkg-ja lehetővé teszi a telepítés közbeni konfigurálást. Más helyzetekben kívánatos a csomagokat az alapértelmezett konfigurációval telepíteni, majd ezt a konfigurációt felülírni, például nagyszámú számítógépre történő fej nélküli telepítés esetén. Ezt a fajta előre konfigurált telepítést a dpkg is támogatja.

RepositoriesEdit

Azért, hogy a felhasználók jobban ellenőrizhessék, hogy milyen szoftvereket engednek telepíteni a rendszerükre (és néha a forgalmazók oldalán jogi vagy kényelmi okokból), a szoftvereket gyakran több szoftvertárból töltik le.

Frissítés elnyomásaSzerkesztés

Amikor a felhasználó kapcsolatba lép a csomagkezelő szoftverrel, hogy frissítést hajtson végre, szokás, hogy a felhasználó elé tárják a végrehajtandó műveletek listáját (általában a frissítendő csomagok listáját, és esetleg megadják a régi és az új verziószámot), és lehetővé teszik a felhasználó számára, hogy vagy tömegesen elfogadja a frissítést, vagy egyes csomagokat válasszon ki a frissítéshez. Sok csomagkezelő úgy konfigurálható, hogy bizonyos csomagokat soha ne frissítsen, vagy csak akkor frissítsen, ha a szoftver csomagolója által meghatározott kritikus sebezhetőségeket vagy instabilitást találnak a korábbi verzióban. Ezt a folyamatot néha verziószögezésnek nevezik.

Például:

  • a yum támogatja ezt az exclude=openoffice* szintaxissal
  • a pacman az IgnorePkg= openoffice-szal (az openoffice frissítésének elnyomása mindkét esetben)
  • a dpkg és a dselect részben a hold flag segítségével támogatja ezt. a csomagválasztásban
  • az APT kiterjeszti a hold flag-et a komplex “pinning” mechanizmuson keresztül (a felhasználók feketelistára is tehetnek egy csomagot)
  • az aptitude rendelkezik “hold” és “forbid” flag-ekkel
  • a portage támogatja ezt a csomagon keresztül.mask configuration file

Cascading package removalEdit

Néhány fejlettebb csomagkezelő funkció kínál “cascading package removal”-t, amelyben minden olyan csomagot, amely a célcsomagtól függ, és minden olyan csomagot, amelytől csak a célcsomag függ, szintén eltávolít.

Parancsok összehasonlításaEdit

Bár a parancsok minden egyes csomagkezelőre specifikusak, nagyrészt lefordíthatóak, mivel a legtöbb csomagkezelő hasonló funkciókat kínál.

Action zypper pacman apt dnf (yum) portage
install package zypper a PKG pacman -ban.S PACKAGE apt install PACKAGE dnf install PACKAGE emerge PACKAGE
remove package zypper rm - -RU PKG pacman -R PACKAGE apt remove PACKAGE dnf remove --nodeps PACKAGE emerge -C PACKAGE vagy
emerge --unmerge PACKAGE
remove package+orphans zypper rm -u --force-resolution PKG pacman -Rs PACKAGE apt autoremove PACKAGE dnf remove PACKAGE emerge -c PACKAGE vagy
emerge --depclean PACKAGE
update software database zypper ref pacman- -Sy apt update dnf check-update emerge --sync
show updatable packages zypper lu pacman -Qu apt list --upgradable dnf check-update emerge -avtuDN --with-bdeps=y @world vagy
emerge --update --pretend @world
delete orphans+config zypper rm -u pacman -Rsn $(pacman -Qdtq) apt autoremove dnf erase PKG emerge --depclean
show orphans zypper pa- --orphaned --unneededed pacman -Qdt package-cleanup --quiet --leaves --exclude-bin emerge -caD vagy
emerge --depclean --pretend
update all zypper up pacman -.Syu apt upgrade dnf update emerge --update --deep --with-bdeps=y @world

Az Arch Linux Pacman/Rosetta wiki átfogó áttekintést nyújt.

Vélemény, hozzászólás?

Az e-mail-címet nem tesszük közzé.