102.5 Lecke 1
Tanúsítvány: |
LPIC-1 |
---|---|
Verzió: |
5.0 |
Témakör: |
102 A Linux telepítése és a csomagkezelés |
Fejezet: |
102.5 Az RPM és a YUM csomagkezelő használata |
Lecke: |
1/1 |
Bevezetés
Réges-régen, amikor a Linux még gyerekcipőben járt, a szoftverek terjesztésének legelterjedtebb módja egy tömörített fájl (általában egy .tar.gz
archívum) volt a forráskóddal, amelyet az ember saját maga csomagolt ki és fordított le.
A szoftverek mennyiségének és összetettségének növekedésével azonban egyértelművé vált az előre lefordított szoftverek terjesztésének szükségessége. Végülis nem mindenki rendelkezett az idő és a számítási teljesítmény tekintetében elegendő erőforrással ahhoz, hogy olyan nagy projekteket fordítson le, mint a Linux kernel vagy az X Server.
Hamarosan egyre nagyobb erőfeszítéseket tettek arra, hogy szabványosítsák a “package”-k (szoftvercsomagok) terjesztésének módját, és megszülettek az első csomagkezelők. Ezek az eszközök nagyban megkönnyítették a szoftverek telepítését, konfigurálását vagy eltávolítását a rendszerből.
Ezek egyike a Red Hat által kifejlesztett RPM Package Manager és a hozzá tartozó eszköz (rpm
). Ma már nemcsak a Red Hat Enterprise Linuxon (RHEL), hanem annak leszármazottain, mint a Fedora, CentOS és Oracle Linux, más disztribúciókon, mint az openSUSE, sőt más operációs rendszereken, például az IBM AIX-jén is széles körben használják.
A Red Hat kompatibilis disztribúciókban népszerű csomagkezelő eszközök a yum
(YellowDog Updater Modified), a dnf
(Dandified YUM) és a zypper
, amelyek a csomagok telepítésének, karbantartásának és eltávolításának számos aspektusát leegyszerűsítik, így a csomagkezelés sokkal egyszerűbbé válik.
Ebben a leckében megtanuljuk, hogyan használjuk az rpm
, yum
, dnf
és zypper
csomagkezelőket a szoftverek beszerzésére, telepítésére, kezelésére és eltávolítására egy Linux rendszerben.
Note
|
Annak ellenére, hogy ugyanazt a csomagformátumot használják, a disztribúciók között belső különbségek vannak, így egy kifejezetten openSUSE-hez készült csomag nem biztos, hogy működik egy RHEL-rendszeren, és fordítva. Amikor csomagokat keresünk, mindig ellenőrizzük a kompatibilitást, és ha lehetséges, próbáljunk meg az adott disztribúcióra szabott csomagot találni. |
Az RPM csomagkezelő (rpm)
Az RPM csomagkezelő (rpm
) a szoftvercsomagok kezelésének alapvető eszköze a Red Hat-alapú (vagy a belőle származtatott) rendszereken.
Csomagok telepítése, frissítése és eltávolítása
A legalapvetőbb művelet egy csomag telepítése, amit a következő módon lehet elvégezni:
# rpm -i PACKAGENAME
Ahol a PACKAGENAME
a telepíteni kívánt .rpm
csomag neve.
Ha egy csomag korábbi verziója van a rendszeren, akkor a -U
paraméter segítségével frissíthetünk egy újabb verzióra:
# rpm -U PACKAGENAME
Ha nincs telepítve a PACKAGENAME
korábbi verziója, akkor egy új példány kerül telepítésre. Ha ezt el akarjuk kerülni, és csak egy telepített csomagot szeretnénk frissíteni, használjuk a -F
opciót.
Mindkét művelethez hozzáadhatjuk a -v
paramétert, hogy részletes (verbose) kimenetet kapjunk (több információ jelenik meg a telepítés során), és a -h
paramétert, hogy a telepítés előrehaladásának követéséhez vizuális segédeszközként kettőskeresztek (#
) jelenjenek meg. Több paraméter kombinálható egybe, így az rpm -i -v -h
ugyanaz, mint az rpm -ivh
.
Egy telepített csomag eltávolításához adjuk meg az -e
paramétert (mint a “erase”, azaz törlés) az rpm
-nek, majd az eltávolítani kívánt csomag nevét:
# rpm -e wget
Ha egy telepített csomag függ az eltávolítandó csomagtól, hibaüzenetet kapunk:
# rpm -e unzip error: Failed dependencies: /usr/bin/unzip is needed by (installed) file-roller-3.28.1-2.el7.x86_64
A művelet elvégzéséhez először el kell távolítanunk azokat a csomagokat, amelyek az eltávolítandó csomagtól függenek (a fenti példában a file-roller
). Több csomag nevét is megadhatjuk az rpm -e
parancsnak, ha egyszerre több csomagot szeretnénk eltávolítani.
A függőségek kezelése
Gyakran előfordul, hogy egy csomag rendeltetésszerű működése másoktól függ. Egy képszerkesztőnek például szüksége lehet könyvtárakra a JPEG-fájlok megnyitásához, vagy egy másik segédprogram felhasználói felületének szüksége lehet egy olyan widget eszköztárra, mint a Qt vagy a GTK.s
Az rpm
ellenőrzi, hogy ezek a függőségek telepítve vannak-e a rendszerre, és ha nem, akkor nem telepíti a csomagot. Ebben az esetben az rpm
felsorolja, hogy mi hiányzik. A függőségeket azonban magától nem tudja feloldani.
Az alábbi példában a felhasználó megpróbált telepíteni egy csomagot a GIMP képszerkesztőhöz, de néhány függőség hiányzott:
# rpm -i gimp-2.8.22-1.el7.x86_64.rpm error: Failed dependencies: babl(x86-64) >= 0.1.10 is needed by gimp-2:2.8.22-1.el7.x86_64 gegl(x86-64) >= 0.2.0 is needed by gimp-2:2.8.22-1.el7.x86_64 gimp-libs(x86-64) = 2:2.8.22-1.el7 is needed by gimp-2:2.8.22-1.el7.x86_64 libbabl-0.1.so.0()(64bit) is needed by gimp-2:2.8.22-1.el7.x86_64 libgegl-0.2.so.0()(64bit) is needed by gimp-2:2.8.22-1.el7.x86_64 libgimp-2.0.so.0()(64bit) is needed by gimp-2:2.8.22-1.el7.x86_64 libgimpbase-2.0.so.0()(64bit) is needed by gimp-2:2.8.22-1.el7.x86_64 libgimpcolor-2.0.so.0()(64bit) is needed by gimp-2:2.8.22-1.el7.x86_64 libgimpconfig-2.0.so.0()(64bit) is needed by gimp-2:2.8.22-1.el7.x86_64 libgimpmath-2.0.so.0()(64bit) is needed by gimp-2:2.8.22-1.el7.x86_64 libgimpmodule-2.0.so.0()(64bit) is needed by gimp-2:2.8.22-1.el7.x86_64 libgimpthumb-2.0.so.0()(64bit) is needed by gimp-2:2.8.22-1.el7.x86_64 libgimpui-2.0.so.0()(64bit) is needed by gimp-2:2.8.22-1.el7.x86_64 libgimpwidgets-2.0.so.0()(64bit) is needed by gimp-2:2.8.22-1.el7.x86_64 libmng.so.1()(64bit) is needed by gimp-2:2.8.22-1.el7.x86_64 libwmf-0.2.so.7()(64bit) is needed by gimp-2:2.8.22-1.el7.x86_64 libwmflite-0.2.so.7()(64bit) is needed by gimp-2:2.8.22-1.el7.x86_64
A felhasználó feladata, hogy megkeresse a megfelelő függőségeket tartalmazó .rpm
csomagokat és telepítse őket. Az olyan csomagkezelők, mint a yum
, a zypper
és a dnf
rendelkeznek olyan eszközökkel, amelyek meg tudják mondani, hogy egy adott fájlt melyik csomag biztosít. Ezeket a lecke későbbi részében tárgyaljuk.
Telepített csomagok listázása
A rendszeren lévő összes telepített csomag listájának megtekintéséhez használjuk az rpm -qa
parancsot (query all
).
# rpm -qa selinux-policy-3.13.1-229.el7.noarch pciutils-libs-3.5.1-3.el7.x86_64 redhat-menus-12.0.2-8.el7.noarch grubby-8.28-25.el7.x86_64 hunspell-en-0.20121024-6.el7.noarch dejavu-fonts-common-2.33-6.el7.noarch xorg-x11-drv-dummy-0.3.7-1.el7.1.x86_64 libevdev-1.5.6-1.el7.x86_64 [...]
Csomaginformációk megszerzése
Ha olyan információkat szeretnénk kapni egy telepített csomagról, mint például a verziószám, architektúra, telepítési dátum, a csomag készítője (packager), összefoglaló stb., használjuk az rpm
-t a -qi
(“query info”) paraméterekkel, amelyet a csomag neve követ. Például:
# rpm -qi unzip Name : unzip Version : 6.0 Release : 19.el7 Architecture: x86_64 Install Date: Sun 25 Aug 2019 05:14:39 PM EDT Group : Applications/Archiving Size : 373986 License : BSD Signature : RSA/SHA256, Wed 25 Apr 2018 07:50:02 AM EDT, Key ID 24c6a8a7f4a80eb5 Source RPM : unzip-6.0-19.el7.src.rpm Build Date : Wed 11 Apr 2018 01:24:53 AM EDT Build Host : x86-01.bsys.centos.org Relocations : (not relocatable) Packager : CentOS BuildSystem <http://bugs.centos.org> Vendor : CentOS URL : http://www.info-zip.org/UnZip.html Summary : A utility for unpacking zip files Description : The unzip utility is used to list, test, or extract files from a zip archive. Zip archives are commonly found on MS-DOS systems. The zip utility, included in the zip package, creates zip archives. Zip and unzip are both compatible with archives created by PKWARE(R)'s PKZIP for MS-DOS, but the programs' options and default behaviors do differ in some respects. Telepítsük az unzip csomagot, ha fájlokat kell listázni, tesztelni vagy kicsomagolni egy zip-archívumból.
Ha egy telepített csomagban található fájlok listáját szeretnénk megkapni, használjuk a -ql
paramétereket (“query list”), amelyet a csomag neve követ:
# rpm -ql unzip /usr/bin/funzip /usr/bin/unzip /usr/bin/unzipsfx /usr/bin/zipgrep /usr/bin/zipinfo /usr/share/doc/unzip-6.0 /usr/share/doc/unzip-6.0/BUGS /usr/share/doc/unzip-6.0/LICENSE /usr/share/doc/unzip-6.0/README /usr/share/man/man1/funzip.1.gz /usr/share/man/man1/unzip.1.gz /usr/share/man/man1/unzipsfx.1.gz /usr/share/man/man1/zipgrep.1.gz /usr/share/man/man1/zipinfo.1.gz
Ha olyan csomagról szeretnénk információt vagy fájllistát kapni, amely nem lett telepítve, csak adjuk hozzá a fenti parancsokhoz a -p
paramétert, majd az RPM fájl nevét (FILENAME
). Így az rpm -qi PACKAGENAME
-ből rpm -qip FILENAME
lesz, az rpm -ql PACKAGENAME
-ből pedig rpm -qlp FILENAME
, ahogy az alábbiakban látható.
# rpm -qip atom.x86_64.rpm Name : atom Version : 1.40.0 Release : 0.1 Architecture: x86_64 Install Date: (not installed) Group : Unspecified Size : 570783704 License : MIT Signature : (none) Source RPM : atom-1.40.0-0.1.src.rpm Build Date : sex 09 ago 2019 12:36:31 -03 Build Host : b01bbeaf3a88 Relocations : /usr URL : https://atom.io/ Summary : A hackable text editor for the 21st Century. Description : A hackable text editor for the 21st Century.
# rpm -qlp atom.x86_64.rpm /usr/bin/apm /usr/bin/atom /usr/share/applications/atom.desktop /usr/share/atom /usr/share/atom/LICENSE /usr/share/atom/LICENSES.chromium.html /usr/share/atom/atom /usr/share/atom/atom.png /usr/share/atom/blink_image_resources_200_percent.pak /usr/share/atom/content_resources_200_percent.pak /usr/share/atom/content_shell.pak (a listázás folytatódik)
Annak megállapítása, hogy melyik csomagban található egy adott fájl
Ha meg akarjuk tudni, hogy egy fájl melyik telepített csomag tulajdonában van, használjuk a -qf
(“query file”) paramétert, amelyet a fájl teljes elérési útvonala követ:
# rpm -qf /usr/bin/unzip unzip-6.0-19.el7.x86_64
A fenti példában a /usr/bin/unzip
fájl az unzip-6.0-19.el7.x86_64
csomaghoz tartozik.
YellowDog Updater Modified (YUM)
A yum
eredetileg Yellow Dog Updater (YUP) néven készült, a Yellow Dog Linux disztribúció csomagkezelője. Idővel más RPM-alapú rendszerek, például a Fedora, CentOS, Red Hat Enterprise Linux és Oracle Linux csomagjainak kezelésére is továbbfejlesztették.
Funkcionálisan hasonló a Debian-alapú rendszerek apt
segédprogramjához, képes csomagok keresésére, telepítésére, frissítésére és eltávolítására, valamint a függőségek automatikus kezelésére. A yum
használható egyetlen csomag telepítésére, vagy egy egész rendszer egyszerre történő frissítésére.
Csomagok keresése
Ahhoz, hogy telepíteni tudjunk egy csomagot, tudnunk kell a nevét. Ehhez kereshetünk a yum search PATTERN
paranccsal, ahol a PATTERN
a keresett csomag neve. Az eredmény azon csomagok listája, amelyek neve vagy összefoglalója tartalmazza a megadott keresési mintát. Ha például szükségünk van egy segédprogramra a 7Zip tömörített fájlok (.7z
kiterjesztéssel) kezelésére, akkor használhatjuk a következőt:
# yum search 7zip Loaded plugins: fastestmirror, langpacks Loading mirror speeds from cached hostfile * base: mirror.ufscar.br * epel: mirror.globo.com * extras: mirror.ufscar.br * updates: mirror.ufscar.br =========================== N/S matchyutr54ed: 7zip ============================ p7zip-plugins.x86_64 : Additional plugins for p7zip p7zip.x86_64 : Very high compression ratio file archiver p7zip-doc.noarch : Manual documentation and contrib directory p7zip-gui.x86_64 : 7zG - 7-Zip GUI version Csak a nevek és az összefoglalók egyezését nézi, minden máshoz használjuk a "search all"-t.
Csomagok telepítése, frissítése és eltávolítása
Egy csomag telepítéséhez a yum
használatával használjuk a yum install PACKAGENAME
parancsot, ahol a PACKAGENAME
a csomag neve. A yum
lekérdezi a csomagot és a hozzá tartozó függőségeket egy online repositoryból és mindent telepít a rendszerre.
# yum install p7zip Loaded plugins: fastestmirror, langpacks Loading mirror speeds from cached hostfile * base: mirror.ufscar.br * epel: mirror.globo.com * extras: mirror.ufscar.br * updates: mirror.ufscar.br Resolving Dependencies --> Running transaction check ---> Package p7zip.x86_64 0:16.02-10.el7 will be installed --> Finished Dependency Resolution Dependencies Resolved ========================================================================== Package Arch Version Repository Size ========================================================================== Installing: p7zip x86_64 16.02-10.el7 epel 604 k Transaction Summary ========================================================================== Install 1 Package Total download size: 604 k Installed size: 1.7 M Is this ok [y/d/N]:
Egy telepített csomag frissítéséhez használjuk a yum update PACKAGENAME
parancsot, ahol a PACKAGENAME
a frissíteni kívánt csomag neve. Például:
# yum update wget Loaded plugins: fastestmirror, langpacks Loading mirror speeds from cached hostfile * base: mirror.ufscar.br * epel: mirror.globo.com * extras: mirror.ufscar.br * updates: mirror.ufscar.br Resolving Dependencies --> Running transaction check ---> Package wget.x86_64 0:1.14-18.el7 will be updated ---> Package wget.x86_64 0:1.14-18.el7_6.1 will be an update --> Finished Dependency Resolution Dependencies Resolved ========================================================================== Package Arch Version Repository Size ========================================================================== Updating: wget x86_64 1.14-18.el7_6.1 updates 547 k Transaction Summary ========================================================================== Upgrade 1 Package Total download size: 547 k Is this ok [y/d/N]:
Ha nem adunk meg csomagnevet, akkor minden olyan csomagot frissíthetünk, amelyhez van elérhető frissítés.
Ha ellenőrizni szeretnénk, hogy elérhető-e frissítés egy adott csomaghoz, használjuk a yum check-update PACKAGENAME
parancsot. A korábbiakhoz hasonlóan, ha elhagyjuk a csomag nevét, a yum
a rendszerben lévő összes telepített csomag frissítését ellenőrizni fogja.
Egy telepített csomag eltávolításához használjuk a yum remove PACKAGENAME
parancsot, ahol a PACKAGENAME
az eltávolítani kívánt csomag neve.
Annak megtalálása, hogy melyik csomag biztosít egy adott fájlt
Az előző példában bemutattunk egy kísérletet a gimp
képszerkesztő telepítésére, ami nem teljesült függőségek miatt nem sikerült. Az rpm
azonban megmutatja, hogy mely fájlok hiányoznak, de nem sorolja fel az azokat biztosító csomagok nevét.
Például az egyik hiányzó függőség a libgimpui-2.0.so.0
volt. Ha meg akarjuk nézni, hogy melyik csomag biztosítja, használhatjuk a yum whatprovides
parancsot a keresett fájl nevével:
# yum whatprovides libgimpui-2.0.so.0 Loaded plugins: fastestmirror, langpacks Loading mirror speeds from cached hostfile * base: mirror.ufscar.br * epel: mirror.globo.com * extras: mirror.ufscar.br * updates: mirror.ufscar.br 2:gimp-libs-2.8.22-1.el7.i686 : GIMP libraries Repo : base Matched from: Provides : libgimpui-2.0.so.0
A válasz a gimp-libs-2.8.22-1.el7.i686
. Ezután a csomagot a yum install gimp-libs
paranccsal telepíthetjük.
Ez a rendszerben már meglévő fájlok esetében is működik. Ha például tudni szeretnénk, hogy honnan származik az /etc/hosts
fájl, használhatjuk a következőt:
# yum whatprovides /etc/hosts Loaded plugins: fastestmirror, langpacks Loading mirror speeds from cached hostfile * base: mirror.ufscar.br * epel: mirror.globo.com * extras: mirror.ufscar.br * updates: mirror.ufscar.br setup-2.8.71-10.el7.noarch : A set of system configuration and setup files Repo : base Matched from: Filename : /etc/hosts
A válasz: setup-2.8.71-10.el7.noarch
.
Információk megszerzése egy csomagról
Ha információt szeretnénk kapni egy csomagról, például a verziójáról, architektúrájáról, leírásáról, méretéről és egyebekről, használjuk a yum info PACKAGENAME
parancsot, ahol a PACKAGENAME
a csomag neve, amelyről információt szeretnénk kapni:
# yum info firefox Last metadata expiration check: 0:24:16 ago on Sat 21 Sep 2019 02:39:43 PM -03. Installed Packages Name : firefox Version : 69.0.1 Release : 3.fc30 Architecture : x86_64 Size : 268 M Source : firefox-69.0.1-3.fc30.src.rpm Repository : @System From repo : updates Summary : Mozilla Firefox Web browser URL : https://www.mozilla.org/firefox/ License : MPLv1.1 or GPLv2+ or LGPLv2+ Description : Mozilla Firefox is an open-source web browser, designed : for standards compliance, performance and portability.
A repositoryk menedzselése
A yum
esetében a repositoryk (“repos”) az /etc/yum.repos.d/
mappában találhatók. Minden egyes repositoryt egy .repo
fájl képvisel, például a CentOS-Base.repo
.
További, extra repositorykat a felhasználó adhat hozzá egy .repo
fájl hozzáadásával a fent említett mappában, vagy az /etc/yum.conf
fájl végén. A repositoryk hozzáadásának vagy kezelésének ajánlott módja azonban a yum-config-manager
eszköz használata.
Repoistory hozzáadásához használjuk a --add-repo
paramétert, amelyet a .repo
fájl URL-je követ.
# yum-config-manager --add-repo https://rpms.remirepo.net/enterprise/remi.repo Loaded plugins: fastestmirror, langpacks adding repo from: https://rpms.remirepo.net/enterprise/remi.repo grabbing file https://rpms.remirepo.net/enterprise/remi.repo to /etc/yum.repos.d/remi.repo repo saved to /etc/yum.repos.d/remi.repo
Az összes elérhető repository listájának lekérdezéséhez használjuk a yum repolist all
parancsot. Egy ehhez hasonló kimenetet fogunk kapni:
# yum repolist all Loaded plugins: fastestmirror, langpacks Loading mirror speeds from cached hostfile * base: mirror.ufscar.br * epel: mirror.globo.com * extras: mirror.ufscar.br * updates: mirror.ufscar.br repo id repo name status updates/7/x86_64 CentOS-7 - Updates enabled: 2,500 updates-source/7 CentOS-7 - Updates Sources disabled
A disabled
repositoryk figyelmen kívül maradnak a szoftver telepítésekor vagy frissítésekor. Egy repository engedélyezéséhez vagy letiltásához használjauk a yum-config-manager
segédprogramot, majd a repository azonosítóját.
A fenti kimeneten a repository azonosítója minden sor első oszlopában (repo id
) szerepel. Csak az első /
előtti részt használjuk, így a CentOS-7 - Updates
repo azonosítója updates
, és nem updates/7/x86_64
.
# yum-config-manager --disable updates
A fenti parancs kikapcsolja az updates
repot. Újra bekapcsolásához használjuk a következőt:
# yum-config-manager --enable updates
Note
|
A Yum a letöltött csomagokat és a hozzájuk tartozó metaadatokat egy gyorsítótárban (általában |
DNF
A dnf
a Fedora által használt csomagkezelő eszköz, és a yum
egy forkja. Mint ilyen, sok parancsa és paramétere hasonló. Ez a szakasz csak egy gyors áttekintést ad a dnf
-ről.
- Csomagok keresése
-
dnf search PATTERN
, ahol aPATTERN
az, amit keresünk. Például adnf search unzip
megjelenít minden olyan csomagot, amik tartalmazzák azunzip
-et a nevükben vagy a leírásukban. - Információk megszerzése egy csomagról
-
dnf info PACKAGENAME
- Csomagok telepítése
-
dnf install PACKAGENAME
, ahol aPACKAGENAME
a telepíteni kívánt csomag neve. A nevet kereséssel megtalálhatjuk. - Csomagok eltávolítása
-
dnf remove PACKAGENAME
- Csomagok frissítése
-
dnf upgrade PACKAGENAME
egy csomag frissítéséhez. A csomagnév kihagyásával az összes csomagot frissíthetjük. - Annak megtalálása, hogy melyik csomag biztosít egy adott fájlt
-
dnf provides FILENAME
- A rendszerben telepített összes csomag listájának lekérdezése
-
dnf list --installed
- Egy csomag tartalmának kilistázása
-
dnf repoquery -l PACKAGENAME
Note
|
A |
Repositoryk menedzselése
A yum
-hoz és zypper
-hez hasonlóan a dnf
is repositorykkal (repok) dolgozik. Minden disztribúció rendelkezik az alapértelmezett repositoryk listájával, és a rendszergazdák szükség szerint hozzáadhatnak vagy eltávolíthatnak repositorykat.
Az összes elérhető repository listájának lekérdezéséhez használjuk a dnf repolist
parancsot. Csak az engedélyezett repositoryk listázásához adjuk hozzá az --enabled
opciót, csak a letiltott tárolók listázásához adjuk hozzá a --disabled
opciót.
# dnf repolist Last metadata expiration check: 0:20:09 ago on Sat 21 Sep 2019 02:39:43 PM -03. repo id repo name status *fedora Fedora 30 - x86_64 56,582 *fedora-modular Fedora Modular 30 - x86_64 135 *updates Fedora 30 - x86_64 - Updates 12,774 *updates-modular Fedora Modular 30 - x86_64 - Updates 145
Egy repository hozzáadásához használjuk a dnf config-manager --add_repo URL
parancsot, ahol az URL
a repository teljes URL címe. A repository engedélyezéséhez használjuk a dnf config-manager --set-enabled REPO_ID
parancsot.
Hasonlóképpen, egy repository letiltásához használjuk a dnf config-manager --set-disabled REPO_ID
parancsot. Mindkét esetben a REPO_ID
a repository egyedi azonosítója, amelyet a dnf repolist
segítségével kaphatunk meg. A hozzáadott repositoryk alapértelmezés szerint engedélyezve vannak.
A repositoryk a .repo
fájlokban tárolódnak az /etc/yum.repos.d/
mappában, pontosan ugyanazzal a szintaxissal, mint a yum
esetében.
Zypper
A zypper
a SUSE Linux és az OpenSUSE rendszeren használt csomagkezelő eszköz. Funkcióit tekintve hasonló az apt
és a yum
rendszerekhez, képes telepíteni, frissíteni és eltávolítani csomagokat a rendszerből, automatikus függőség-feloldással.
A csomagindex frissítése
Más csomagkezelő eszközökhöz hasonlóan a zypper
is csomagokat és metaadatokat tartalmazó repositorykkal dolgozik. Ezeket a metaadatokat időről időre frissíteni kell, hogy a segédprogram tudjon a legújabb elérhető csomagokról. A frissítéshez egyszerűen írjuk be a következőt:
# zypper refresh Repository 'Non-OSS Repository' is up to date. Repository 'Main Repository' is up to date. Repository 'Main Update Repository' is up to date. Repository 'Update Repository (Non-Oss)' is up to date. All repositories have been refreshed.
A zypper
rendelkezik egy automatikus frissítési funkcióval, amely repositorynként engedélyezhető, ami azt jelenti, hogy egyes repositoryk automatikusan frissülnek egy lekérdezés vagy csomagtelepítés előtt, míg másokat kézzel kell frissíteni. Ennek a funkciónak a vezérlését hamarosan megtanuljuk.
Csomagok keresése
Egy csomag kereséséhez használjuk a search
(vagy se
) operátort a csomag nevével:
# zypper se gnumeric Loading repository data... Reading installed packages... S | Name | Summary | Type --+----------------+-----------------------------------+-------- | gnumeric | Spreadsheet Application | package | gnumeric-devel | Spreadsheet Application | package | gnumeric-doc | Documentation files for Gnumeric | package | gnumeric-lang | Translations for package gnumeric | package
A keresés operátorral a rendszerben lévő összes telepített csomag listáját is lekérdezhetjük. Ehhez használjuk a -i
paramétert csomagnév nélkül, mint zypper se -i
.
Ha látni szeretnénk, hogy egy adott csomag telepítve van-e, adjuk hozzá a csomag nevét a fenti parancshoz. Például a következő parancs a telepített csomagok között keres olyanokat, amelyek nevében szerepel a “firefox”:
# zypper se -i firefox Loading repository data... Reading installed packages... S | Name | Summary | Type --+------------------------------------+-------------------------+-------- i | MozillaFirefox | Mozilla Firefox Web B-> | package i | MozillaFirefox-branding-openSUSE | openSUSE branding of -> | package i | MozillaFirefox-translations-common | Common translations f-> | package
Ha csak a nem telepített csomagok között szeretnénk keresni, adjuk hozzá a -u
paramétert a se
operátorhoz.
Csomagok telepítése, frissítése és eltávolítása
Egy szoftvercsomag telepítéséhez használjuk az install
(vagy in
) operátort, amelyet a csomag neve követ. Például így:
# zypper in unrar zypper in unrar Loading repository data... Reading installed packages... Resolving package dependencies... The following NEW package is going to be installed: unrar 1 new package to install. Overall download size: 141.2 KiB. Already cached: 0 B. After the operation, additional 301.6 KiB will be used. Continue? [y/n/v/...? shows all options] (y): y Retrieving package unrar-5.7.5-lp151.1.1.x86_64 (1/1), 141.2 KiB (301.6 KiB unpacked) Retrieving: unrar-5.7.5-lp151.1.1.x86_64.rpm .......................[done] Checking for file conflicts: .......................................[done] (1/1) Installing: unrar-5.7.5-lp151.1.1.x86_64 .....................[done]
A zypper
arra is használható, hogy egy RPM csomagot telepítsen a lemezre, miközben megpróbálja a függőségeit a repositorykból származó csomagok segítségével kielégíteni. Ehhez a csomag neve helyett csak a csomag teljes elérési útját kell megadni, például zypper in /home/john/newpackage.rpm
.
A rendszerre telepített csomagok frissítéséhez használjuk a zypper update
parancsot. A telepítési folyamathoz hasonlóan ez is megjeleníti a telepítendő/frissítendő csomagok listáját, mielőtt megkérdezné, hogy folytatni akarjuk-e a telepítést.
Ha csak az elérhető frissítéseket szeretnénk listázni, anélkül, hogy bármit is telepítenénk, használhatjuk a zypper list-updates
parancsot.
Egy csomag eltávolításához használjuk a remove
(vagy rm
) operátort, amelyet a csomag neve követ:
# zypper rm unrar Loading repository data... Reading installed packages... Resolving package dependencies... The following package is going to be REMOVED: unrar 1 package to remove. After the operation, 301.6 KiB will be freed. Continue? [y/n/v/...? shows all options] (y): y (1/1) Removing unrar-5.7.5-lp151.1.1.x86_64 ........................[done]
Ne feledjük, hogy egy csomag eltávolítása minden más, tőle függő csomagot is eltávolít. Például:
# zypper rm libgimp-2_0-0 Loading repository data... Warning: No repositories defined. Operating only with the installed resolvables. Nothing can be installed. Reading installed packages... Resolving package dependencies... The following 6 packages are going to be REMOVED: gimp gimp-help gimp-lang gimp-plugins-python libgimp-2_0-0 libgimpui-2_0-0 6 packages to remove. After the operation, 98.0 MiB will be freed. Continue? [y/n/v/...? shows all options] (y):
Annak megtalálása, hogy melyik csomag tartalmaz egy adott fájlt
Ha meg szeretnénk nézni, hogy mely csomagok tartalmaznak egy adott fájlt, használjuk a keresés operátort, amelyet a --provides
paraméter és a fájl neve (vagy a teljes elérési útvonal) követ. Ha például tudni akarjuk, hogy mely csomagok tartalmazzák a /usr/lib64/'-ben található `libgimpmodule-2.0.so.0
fájlt, akkor a következőt használjuk:
# zypper se --provides /usr/lib64/libgimpmodule-2.0.so.0 Loading repository data... Reading installed packages... S | Name | Summary | Type --+---------------+----------------------------------------------+-------- i | libgimp-2_0-0 | The GNU Image Manipulation Program - Libra-> | package
Csomaginformációk megszerzése
A csomaghoz tartozó metaadatok megtekintéséhez használjuk az info
operátort, amelyet a csomag neve követ. Ez megadja az eredeti repositoryt, a csomag nevét, verzióját, architektúráját, gyártóját, telepített méretét, azt, hogy telepítve van-e vagy sem, állapotát (ha naprakész), a forráscsomagot és egy leírást.
# zypper info gimp Loading repository data... Reading installed packages... Information for package gimp: ----------------------------- Repository : Main Repository Name : gimp Version : 2.8.22-lp151.4.6 Arch : x86_64 Vendor : openSUSE Installed Size : 29.1 MiB Installed : Yes (automatically) Status : up-to-date Source package : gimp-2.8.22-lp151.4.6.src Summary : The GNU Image Manipulation Program Description : The GIMP is an image composition and editing program, which can be used for creating logos and other graphics for Web pages. The GIMP offers many tools and filters, and provides a large image manipulation toolbox, including channel operations and layers, effects, subpixel imaging and antialiasing, and conversions, together with multilevel undo. The GIMP offers a scripting facility, but many of the included scripts rely on fonts that we cannot distribute.
Repositoryk menedzselése
A zypper
használható a repositoryk menedzselésére is. A rendszerben jelenleg regisztrált összes repository listájának megtekintéséhez használjuk a zypper repos
parancsot:
# zypper repos Repository priorities are without effect. All enabled repositories share the same priority. # | Alias | Name | Enabled | GPG Check | Refresh ---+---------------------------+------------------------------------+---------+-----------+-------- 1 | openSUSE-Leap-15.1-1 | openSUSE-Leap-15.1-1 | No | ---- | ---- 2 | repo-debug | Debug Repository | No | ---- | ---- 3 | repo-debug-non-oss | Debug Repository (Non-OSS) | No | ---- | ---- 4 | repo-debug-update | Update Repository (Debug) | No | ---- | ---- 5 | repo-debug-update-non-oss | Update Repository (Debug, Non-OSS) | No | ---- | ---- 6 | repo-non-oss | Non-OSS Repository | Yes | (r ) Yes | Yes 7 | repo-oss | Main Repository | Yes | (r ) Yes | Yes 8 | repo-source | Source Repository | No | ---- | ---- 9 | repo-source-non-oss | Source Repository (Non-OSS) | No | ---- | ---- 10 | repo-update | Main Update Repository | Yes | (r ) Yes | Yes 11 | repo-update-non-oss | Update Repository (Non-Oss) | Yes | (r ) Yes | Yes
Az Enabled
oszlopban láthatjuk, hogy egyes tárolók engedélyezve vannak, míg mások nem. Ezt megváltoztathatjuk a modifyrepo
operátorral, amelyet az -e
(enable - engedélyezés) vagy -d
(disable - letiltás) paraméter és a repository alias (a fenti kimenet második oszlopa) követ.
# zypper modifyrepo -d repo-non-oss Repository 'repo-non-oss' has been successfully disabled. # zypper modifyrepo -e repo-non-oss Repository 'repo-non-oss' has been successfully enabled.
Korábban említettük, hogy a zypper
rendelkezik egy auto refresh képességgel, amely repositorynként engedélyezhető. Ha engedélyezve van, ez a flag a zypper
-t egy frissítési művelet futtatására készteti (ugyanúgy, mint a zypper refresh
futtatása), mielőtt a megadott repoval dolgozna. Ez a modifyrepo
operátor -f
és -F
paramétereivel szabályozható:
# zypper modifyrepo -F repo-non-oss Autorefresh has been disabled for repository 'repo-non-oss'. # zypper modifyrepo -f repo-non-oss Autorefresh has been enabled for repository 'repo-non-oss'.
Repositoryk hozzáadása és eltávolítása
Új repository zypper
-hez való hozzáadásához használjuk az addrepo
operátort, amelyet a repository URL-címe és neve követ, az alábbiak szerint:
# zypper addrepo http://packman.inode.at/suse/openSUSE_Leap_15.1/ packman Adding repository 'packman' ........................................[done] Repository 'packman' successfully added URI : http://packman.inode.at/suse/openSUSE_Leap_15.1/ Enabled : Yes GPG Check : Yes Autorefresh : No Priority : 99 (default priority) Repository priorities are without effect. All enabled repositories share the same priority.
Repository hozzáadásakor az automatikus frissítéseket az -f
paraméterrel engedélyezhetjük. A hozzáadott repositoryk alapértelmezés szerint engedélyezve vannak, de hozzáadáskor letilthatjuk a -d
paraméterrel.
Egy repository eltávolításához használjuk a removerepo
operátort, amelyet a repository neve (Alias) követ. A fenti példában hozzáadott repository eltávolításához a parancs a következő:
# zypper removerepo packman Removing repository 'packman' ......................................[done] Repository 'packman' has been removed.
Gyakorló feladatok
-
Hogyan telepíthetjük az
rpm
segítségével egy Red Hat Enterprise Linux rendszeren afile-roller-3.28.1-2.el7.x86_64.rpm
csomagot, amely a telepítés során megjelenít egy progress bart? -
Az
rpm
segítségével derítsük ki, hogy melyik csomag tartalmazza a/etc/redhat-release
fájlt! -
Hogyan használnánk a
yum
-ot a rendszerben lévő összes csomag frissítésének ellenőrzésére? -
A
zypper
használatával hogyan tudnánk letiltani a repo-extras nevű repositoryt? -
Ha van egy
.repo
fájl, amely leír egy új repositoryt, hova kell ezt a fájlt tenni, hogy a DNF felismerje?
Gondolkodtató feladatok
-
Hogyan tudnánk a
zypper
segítségével kideríteni, hogy melyik csomagban van a/usr/sbin/swapon
fájl? -
Hogyan kaphatunk egy listát a rendszerben lévő összes telepített csomagról a
dnf
segítségével? -
A
dnf
használatával milyen paranccsal adhatunk hozzá egyhttps://www.example.url/home:reponame.repo
címen található repositoryt a rendszerhez? -
Hogyan lehet a
zypper
segítségével ellenőrizni, hogy azunzip
csomag telepítve van-e? -
A
yum
segítségével derítsük ki, hogy melyik csomagban van a/bin/wget
fájl!
Összefoglalás
Ebben a leckében megtanultuk:
-
Hogyan használjuk az
rpm
-et csomagok telepítésére, frissítésére és eltávolítására. -
Hogyan használjuk a
yum
, azypper
és adnf
eszközöket. -
Hogyan szerezhetünk információkat egy csomagról.
-
Hogyan kaphatunk listát a csomagok tartalmáról.
-
Hogyan lehet megtudni, hogy egy fájl melyik csomagból származik.
-
Hogyan lehet repositorykat listázni, hozzáadni, eltávolítani, engedélyezni vagy letiltani.
A következő parancsokról volt szó:
-
rpm
-
yum
-
dnf
-
zypper
Válaszok a gyakorló feladatokra
-
Hogyan telepíthetjük az
rpm
segítségével egy Red Hat Enterprise Linux rendszeren afile-roller-3.28.1-2.el7.x86_64.rpm
csomagot, amely a telepítés során megjelenít egy progress bart?Használjuk a
-i
paramétert a csomag telepítéséhez és a-h
kapcsolót a “kettőskeresztek (hash mark)” megjelenítéséhez a telepítés során. Tehát a válasz:rpm -ih file-roller-3.28.1-2.el7.x86_64.rpm
. -
Az
rpm
segítségével derítsük ki, hogy melyik csomag tartalmazza a/etc/redhat-release
fájlt!Egy fájlról kérdezünk le információkat, ezért használjuk a
-qf
paramétert:rpm -qf /etc/redhat-release
. -
Hogyan használnánk a
yum
-ot a rendszerben lévő összes csomag frissítésének ellenőrzésére?Használjuk a
check-update
műveletet csomagnév nélkül:yum check-update
. -
A
zypper
használatával hogyan tudnánk letiltani a repo-extras nevű repositoryt?Használjuk a
modifyrepo
műveletet a repo paramétereinek megváltoztatásához és a-d
paramétert a letiltásához:zypper modifyrepo -d repo-extras
. -
Ha van egy
.repo
fájl, amely leír egy új repositoryt, hova kell ezt a fájlt tenni, hogy a DNF felismerje?A DNF
.repo
fájljait ugyanarra a helyre kell tenni, ahova a YUM is teszi, az/etc/yum.repos.d/
-be.
Válaszok a gondolkodtató feladatokra
-
Hogyan tudnánk a
zypper
segítségével kideríteni, hogy melyik csomagban van a/usr/sbin/swapon
fájl?Használjuk a
se
(search - keresés) operátort és a--provides
paramétert:zypper se --provides /usr/sbin/swapon
. -
Hogyan kaphatunk egy listát a rendszerben lévő összes telepített csomagról a
dnf
segítségével?Használjuk a
list
operátort, majd az--installed
paramétert:dnf list --installed
. -
A
dnf
használatával milyen paranccsal adhatunk hozzá egyhttps://www.example.url/home:reponame.repo
címen található repositoryt a rendszerhez?A repositorykkal való munka “konfigurációváltás”, ezért használjuk a
config-manager
és az--add_repo
paramétert:dnf config-manager --add_repo https://www.example.url/home:reponame.repo
. -
Hogyan lehet a
zypper
segítségével ellenőrizni, hogy azunzip
csomag telepítve van-e?Végre kell hajtanunk egy keresést (
se
) a telepített (-i
) csomagokon:zypper se -i unzip
. -
A
yum
segítségével derítsük ki, hogy melyik csomagban van a/bin/wget
fájl!Ahhoz, hogy kitaláljuk, mi biztosít egy fájlt, használjuk a
whatprovides
-t és a fájlnevet:yum whatprovides /bin/wget
.