[[oktatas:linux:csomagkezelés|< Csomagkezelés]] ====== Debian GNU/Linux csomagkezelés ====== * **Szerző:** Sallai András * Copyright (c) 2011, Sallai András * Szerkesztve: 2011-2021 * Licenc: [[https://creativecommons.org/licenses/by-sa/4.0/|CC BY-SA 4.0]] * Web: https://szit.hu ===== Bevezetés ===== A csomagkezelés a **dpkg** programmal valósítható meg. Ennek a csomagnak több burkoló programja is van, ami megkönnyíti a használatát. Ilyen burkolóprogram az **apt** rendszer, vagy az **aptitude**. Az aptitude rendelkezik curses alapú felületel is. Grafikus felületen a **Synaptic** csomagkezelő használható. dpkg burkoló programok: * dselect * tasksel * apt-get * aptitude * apt * Synaptic (GUI) Az RPM alapú rendszerek (RedHat, CentOS, Fedora, SUSE) csomagkezelője az **rpm** parancs. Ennek egyik burkolóprogramja a **yum**. Az alábbi leírásban az apt rendszer parancsait vesszük sorra. Ha RPM alapú rendszered van, akkor nézz utána a yum használatának. SUSE alap rendszereknél yast vagy yast2 paranccsal telepíthetsz. A Debian GNU/Linux egyik előtétprogramja az apt csomagban található. A telepítéshez kezdetben az apt-get parancsot használhattuk. A csomagban azóta megjelent egy apt parancs is, amely az apt-get parancs egy továbbfejlesztett verziója. Az apt a **Advanced Packaging Tool** rövidítése. ===== apt ===== ==== Telepítés ==== Frissítsük a csomaginformációkat, majd telepítsünk: apt update apt install mc Telepítés előtt azonban érdemes frissíteni a csomaginformációkat a következő paranccsal: apt update A frissítést elég egyszer elvégezni egy nap. Csomagok telepítése. Például: apt install mc ==== Keresés ==== Csomagok keresése egy bizonyos témában: apt search email ==== Csomag törlése ==== apt remove csomagnév apt remove [--purge] Ha --purge kapcsolót is használjuk, akkor függőségként telepített csomagokat leszedhetjük a következő paranccsal: apt autoremove ==== Archív törlése ==== A letöltött csomagok törlése: apt-get clean Ez valójában a /var/cache/apt/archives könyvtár tartalmát törli. ==== Leírás ==== Csomag leírás mutatása: apt show ==== Letöltés telepítés nélkül ==== Ha szeretnénk belenézi egy csomagba telepítés nélkül akkor jól jön a -d vagy --dowload-only kapcsoló. Ha csomag már telepítve van, akkor ez nem fog működni vagyis nem tölti le a kért csomagot. A --reinstall kapcsolóval kombinálva azonban a kívánt eredményt kapjuk. A csomag mindenképen letöltődik, de nem lesz újratelepítve: apt-get install --download-only --reinstall csomagnév A --download-only helyett lehet -d kapcsoló is. ==== Telepítettség lekérdezése ==== Szintaxis: apt list csomagnév A futtatáshoz nem szükséges rendszergazdai jog. $ apt list mc Felsorolás... Kész mc/stable,now 3:4.8.18-1 amd64 [telepítve] ===== apt-cache ===== ==== Függőségek ==== apt depends apache2 ==== Keresés ==== apt search ascii Szűréssel megmondhatjuk, hogy szeretnénk látni azokat a sorokat, amelyek tartalmazzák az "ascii" szöveget. A leírás azonban egy sorral lejjebb van, ezért a találati előtti és utáni sorokat is szeretnénk látni: apt search ascii | grep -B 1 -A 1 ascii Keresés az apt-get parancshoz tartozó apt-cache paranccsal: apt-cache search apache ==== Csomaginformációk ==== Csomaginformációk lekérdezése: apt-cache policy Például: user1@gep1:~$ apt-cache policy mc mc: Telepítve: 3:4.8.18-1 Jelölt: 3:4.8.18-1 Verziótáblázat: *** 3:4.8.18-1 500 500 http://ftp.bme.hu/debian stretch/main amd64 Packages 100 /var/lib/dpkg/status user1@gep1:~$ ===== apt-file ===== ==== Az apt-file parancsról ==== Az apt-file parancs, a csomagok keresését könnyíti meg, amikor tudjuk, hogy létezik egy parancs, de nem tudjuk melyik csomagban van. ==== Telepítés ==== Alapból nincs telepítve, de feltehetjük egy apt-file csomagból: apt install apt-file ==== Csoamginformációk ==== A használathoz le kell tölteni a csomaginformációkat, hasonlóan az apt-get parancshoz: apt-file update A kimenet ehhez hasonló lesz: Downloading complete file http://ftp.uk.debian.org/debian/dists/wheezy/Contents-i386.gz % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 100 17.6M 100 17.6M 0 0 507k 0 0:00:35 0:00:35 --:--:-- 514k Ezek után tudunk keresni. ==== Keresés példa1 ==== Legyen például az mcrypt parancs, amit nem tudjuk milyen csomagban van. Keresünk: apt-file search mcrypt A kimenet általában nagyon hosszú, ezért érdemes egy lapozóprogramra átirányítani, vagy grep-el megszűrni. Lapozófájlnak adjuk át: apt-file search mcrypt | less Szűrés a grep paranccsal: apt-file search mcrypt | grep "bin/mcrypt" Utóbbi esetben például csak az egyetlen releváns sort kapjuk: mcrypt: /usr/bin/mcrypt A kettőspont előtti rész a csomagnév, az után rész pedig, hogy telepítés után hova kerül az adott fájl. A kimenetből tehát megtudtuk, hogy az mcrypt nevű csomagban van. ==== Keresés példa2 ==== Van amikor így is több találatot kaphatunk. Nézzük például a ping parancs milyen csomagban van. apt-file search ping | grep "bin/ping" ctdb: /usr/bin/ping_pong ctdb-dbg: /usr/lib/debug/usr/bin/ping_pong echolot: /usr/bin/pingd inetutils-ping: /bin/ping inetutils-ping: /bin/ping6 iputils-ping: /bin/ping iputils-ping: /bin/ping6 ltp-network-test: /usr/lib/ltp/testcases/bin/ping01 ltp-network-test: /usr/lib/ltp/testcases/bin/pingpong ltp-network-test: /usr/lib/ltp/testcases/bin/pingpong6 A kimenetből kiderül, hogy két csomga is van, az egyik a inetutils-ping, a másik iputils-ping. A dpkg -s paranccsal ki is deríthetjük melyik van telepítve: dpkg -s inetutils-ping Ennek kimenete például: Az alábbi csomag: `inetutils-ping' nincs telepítve és nincs információ róla. A dpkg --info (= dpkg-deb --info) kiírja az archívum fájlokat, a dpkg --contents (= dpkg-deb --contents) a tartalmukat. Másik csomag: dpkg -s iputils-ping Eredmény: Package: iputils-ping Status: install ok installed Priority: important Section: net Installed-Size: 128 Maintainer: Noah Meyerhans Architecture: i386 Source: iputils Version: 3:20100418-3 Replaces: netbase (<< 4.00) Provides: ping Depends: libc6 (>= 2.3), libssl0.9.8 (>= 0.9.8m-1) Conflicts: ping, suidmanager (<< 0.50) Description: Tools to test the reachability of network hosts The ping command sends ICMP ECHO_REQUEST packets to a host in order to test if the host is reachable via the network. . This package includes a ping6 utility which supports IPv6 network connections. Az eredményből látható, hogy az iputils-ping csomag van telepítve. ==== Csomag tartalma ==== Milyen állományok telepszenek egy csomagból? # apt-file list apache2 Ugyanezt az információt adja a dpkg -L prancs is, de sok felesleges sort is megjelenít: # dpkg -L apache2 ===== Telepítés DVD-ről ===== apt-cdrom add # apt-cdrom add /media/cdrom/ CD-ROM csatolási pont használata CD-ROM leválasztása... Várakozás a lemezre... Helyezzen be egy lemezet a meghajtóba, és nyomja meg az Entert ===== dpkg-reconfigure ===== Egy csomag újrakonfigurálása dpkg-reconfigure pure-ftpd-common ===== dpkg ===== ==== Telepített csomagról információ ==== dpkg -s Csomag státusza: dpkg -s samba| grep Status ==== Törlés ==== dpkg -r ==== Telepítés ==== dpkg -i csomagnév_verzió.deb A dpkg a függőségeket nem telepíti fel, de ezt megtehetjük a következő paranccsal: apt-get -f install A dpkg mivel nem képes az Internetről telepíteni, ezért más segéd programmal kell letölteni .deb csomagot. Csomagokat kereshetünk, például itt: * http://ftp.debian.org/debian/pool/ Legyen például az adminer nevű csomag, amely itt található: * http://ftp.debian.org/debian/pool/main/a/adminer/adminer_4.7.7-1_all.deb Ennek letöltése 2020-ban: wget http://ftp.debian.org/debian/pool/main/a/adminer/adminer_4.7.7-1_all.deb ==== Kibontás ==== dpkg -x csomag.deb /tmp/out ar x csomag.deb ===== A telepített csomagok ===== ==== dpkg-query ==== dpkg-query -l dpkg-query --list ==== dpkg ==== dpkg --list dpkg --get-selections További lehetőségek: * https://wiki.debian.org/AptCLI#List_installed_packages Utoljára telepített csomagok listázása: grep " install " /var/log/dpkg.log Még korábbi telepítések is: grep " install " /var/log/dpkg.log.1 /var/log/dpkg.log Ugyanez apt naplójában: grep " install " /var/log/apt/history.log ===== Tükörszerverek ===== Ha nem írtuk fel a tükörszervereket magunknak akkor ki kell derítenünk hol vannak ezek. A következő csomagokban megtaláljuk a tükörszerverek listáját. apt-get install apt-cacher-ng cat /usr/lib/apt-cacher-ng/deb_mirrors.gz | gunzip | less Vagy nézzük a Debian weblapján: * https://www.debian.org/mirror/list A /etc/apt/sources.list állomány szintaktikáját pedig nézzük meg itt: man sources.list De lássunk itt néhány példát: deb http://ftp.hu.debian.org/debian/ wheezy main deb http://ftp.at.debian.org/debian/ wheezy main deb http://ftp.au.debian.org/debian/ wheezy main deb http://ftp.be.debian.org/debian/ wheezy main deb http://ftp.bg.debian.org/debian/ wheezy main deb http://ftp.fr.debian.org/debian/ wheezy main deb http://ftp2.fr.debian.org/debian/ wheezy main deb http://ftp.us.debian.org/debian/ wheezy main deb http://ftp.uk.debian.org/debian/ wheezy main deb http://ftp.kfki.hu/pub/linux/debian/ wheezy main deb http://ftp.bme.hu/OS/Linux/dist/debian/ ===== A leggyorsabb tükörszerver felderítése ===== Régebben rendelkezésünkre állt az apt-spy csomag és parancs, a 8-as Debian azonban nem tartalmazza. Van azonban egy olyan csomag, aminek a neve: * netselect-apt Telepítsük: apt install netselect-apt Válasszuk ki a -c vagy a --country kapcsolóval a területi beállítást: netselect-apt --country hu A program megmondja a három leggyorsabb szervert az adott területen. ===== Egyéb nem tárgyalt csomagkezelő parancsok ===== * apt-offline * aptitude ===== A csomagok forrása ===== Telepítés után a csomagok forrása a következő helyen van megadva /etc/apt/sources.list Ha telepítéskor van Internet és tükörszervernek a http://ftp.hu.debian.org/debian/ címet választjuk, akkor a következő sorok lesznek a sources.list fájlban: deb http://ftp.hu.debian.org/debian/ wheezy main deb-src http://ftp.hu.debian.org/debian/ wheezy main deb http://security.debian.org/ wheezy/update main deb-src http://security.debian.org/ wheezy/updates main deb http://ftp.hu.debian.org/debian/ wheezy-updates main deb-src http://ftp.hu.debian.org/debian/ wheezy-updates main A deb kezdetű sorok a csomagok letöltési útvonalát tartalmazza. A deb-src kezdetű sorok ugyanazon csomagok forrás állományainak letöltési lehetőségét mutatja. Ha forrásfájlokkal nem dolgozunk, akár megjegyzésbe is tehetjük őket. Az útvonalak három részre oszthatók. Az első két útvonalról a szimpla csomagok és azok forrásai töltődnek le. Példánkban: deb http://ftp.hu.debian.org/debian/ wheezy main A következő két útvonal a biztonsági frissítéseket tartalmazza: deb http://security.debian.org/ wheezy/update main Az utolsó két sor pedig gyorsan frissülő stabil csomagokat tartalmazza. Ezeket a csomagokat a volatile projekten belül készítik, az olyan gyorsan frissülő csomagok esetén mint a vírusírtók, spam szűrök, stb. ===== Proxy beállítása ===== ==== Proxy beállítása az apt rendszerben ==== Ha csomagokat csak proxyn keresztül tudjuk leszedni akkor be kell azokat állítanunk. Proxy beállításokhoz készítenünk kell állományt a következő könyvtárban: /etc/apt/apt.conf.d/ A könyvtár alapesetben a következő fájlokat tartalmazza: * 00CDMountPoint * 00trustcdrom * 01autoremove * 20listchanges * 70debconf A fájlok nevei előtt a számok prioritás jelentenek. Az apt rendszer ebben a sorrendben értelmezi azokat. A proxybeállítások prioritása számunkra mindegy, esetleg legyen a szám 80. A fájl neve a 80 után pedig "proxy", azaz a teljes fájlnév: 80proxy Hozzuk létre az állományt: mcedit /etc/apt/apt.conf.d/80proxy Tartalma a következő: Acquire::http::Proxy "http://192.168.1.30:80"; Ha FTP hozzáférést kell beállítani Acquire::ftp { Proxy "http://172.16.64.218:80/"; ProxyLogin { "USER $(SITE_USER)@$(SITE)"; "PASS $(SITE_PASS)"; } } További információkat a következő kézikönyv ad: man apt.conf Mintákat a következő helyen találunk: /usr/share/doc/apt/examples/ Ha @ karakter van a például a felhasználónévben: APT::Get::AllowUnauthenticated 1; Acquire::http::proxy "http://user%40cegnev:titok@proxy_ip_cim:8080/"; Acquire::https::proxy "https://user%40cegnev:titok@proxy_ip_cim:8080/"; Acquire::ftp::proxy "ftp://user%40cegnev:titok@proxy_ip_cim:8080/"; A kód az [[http://szit.hu/doku.php?id=oktatas:sz%C3%A1m%C3%ADt%C3%A1stechnika:ascii_t%C3%A1bla|ASCII táblából]] hexadecimális kód: Esetleg: export http_proxy="http://user%40cegnev:titok@proxy_ip_cim:8080/"; ==== Proxy beállítása környezeti változóként ==== Az apt rendszer olvassa a következő két környezeti változót: * http_proxy * ftp_proxy Legyen a proxy a példában 192.168.30.1, amelyet a 3128-as porton érhetjük el. A környezeti változót ekkor így hozzuk létre: export http:proxy=http://192.168.30.1:3128 Ez a beállítás azonban újraindítás után elvész. A /root/.bashrc fájlban véglegesíthetjük a beállítást. Írjuk a fájl végére a fenti beállítást. Ha proxyhoz jelszó is tartozik akkor így állíthatjuk be: export http_proxy=http://user:pass@192.168.1.1:8080 A példának megfelelőne a felhasználónevet és a jelszót az IP cím előtt adjuk meg attól egy "@" karakterrel elválasztva. Az IP címek helyett persze használhatunk tartománynevet is, bármely beállításnál: export http_proxy=http://user:pass@proxy.zold.and:8080 ===== A rendszer frissítése ===== ==== Biztonsági és hibafrissítések ==== Először frissíteni kell a csomaginformációkat, az után jöhet maga a frissítés. Néhány kritikus csomag nem frissül így sem, harmadik lépésben ezeket is frissíthetjük: apt-get update apt-get upgrade apt-get dist-upgrade ==== Verzió frissítés ==== Amikor újabb stabil verzió jelenik meg kedvenc Linuxunkból, akkor át kell gondolnunk a verziófrissítést. A verziófrissítés előtt feltétlenül készítsünk mentést a rendszerről. A jelenleg stabil verzió neve Wheezy. Ha ezt használjuk a csomagforrásokban a következőket látjuk: deb http://ftp.hu.debian.org/debian/ wheezy main A Wheezy verziót a Jessie verzió követi. Ha szeretnénk a Jessie verzióra váltani, akkor csak a /etc/apt/sources.list fájlban kell Jessie szót megváltoztatni jessie szóra. deb http://ftp.hu.debian.org/debian/ jessie main Ezek után frissítenünk kell a csomaginformációkat: apt-get update Majd jöhet a frissítés: apt-get upgrade Néhány kritikus csomag így sem frissül. A teljes frissítést a következő paranccsal lehet megtenni: apt-get dist-upgrade ==== Egyetlen csomag frissítése ==== apt update apt --only-upgrade install csomagnév ===== Törött csomagok ===== Néha előfordul, hogy egy-egy csomagot nem tudunk feltelepíteni, például a függőségi problémák miatt. Telepített, de nem konfigurált csomagok maradhatnak. Ilyenkor megpróbálhatjuk a konfigurálást, ha nem lehet kiírja mely csomagok vannak törve. dpkg --configure -a A következő parancsot direkt azért hozták létre, hogy a függőségi gondokat kezeljük: apt-get -f install Tulajdonképpen egy -f kapcsolóval futtatom a install akcióval az apt-get parancsot. Csomagot ilyenkor nem kell megadni. ===== Apt proxy ===== Apt proxy-cache az apt-cacher vagy az apt-cacher-ng csomaggal valósítható meg. Telepítsük fel például az apt-cacher-ng csomagot: # apt install apt-cacher-ng Telepítés után a következő fontosabb állományok jönnek létre: * /etc/apt-cacher-ng/acng.conf * /etc/apt-cacher-ng/security.conf * /etc/default/apt-cacher-ng A proxy-cache szerverek már futnia kell a 3142-es porton. Ellenőrizzük: ss -lt | grep 3142 Böngészőben is megnézhetjük, ahol a segítséget kapunk a további lépésekhez. Ha a proxy-cache server IP címe 192.168.10.2, akkor a következőt írjuk a böngészőbe: * http://192.168.10.2:3142/ A weblapon is látszik, hogy ehhez hasonlóan kell szerkesztenünk a /etc/apt/sourcest.list fájlt: deb http://192.168.10.2:3142/ftp.debian.org/debian stable main Vagy beállíthatjuk proxynak is: cat > /etc/apt/apt.conf.d/02proxy < Ha az egyiket beállítottuk, kliens oldalon mehet a csomaginformációk frissíétse és a telepítés: apt update Riportot tekinthetünk meg a következő helyen: * http://192.168.10.2:3142/acng-report.html A riport felületen a kiüríthető a cache, vagy parancssorból így: # systemctl stop apt-cacher-ng # rm -rf /var/cache/apt-cacher-ng/ # systemctl start apt-cacher-ng ===== Backport ===== A backport tárolóból újabb csomagok érhetők el, szemben a stabil kiadással. Szerkesszük a forrásfájlokat: nano /etc/apt/sources.list.d/backports.list A következő sort vegyük fel az állományban: deb http://deb.debian.org/debian buster-backports main Csomaginformációk frissítése: apt update Telepítése backportból: apt -t stretch-backports install csomagnév ===== aptitude ===== Keresés a csomagok között: aptitude search ~iceweasel i A iceweasel - Web browser based on Firefox i A iceweasel-l10n-hu - Hungarian language package for Iceweasel ===== Alapvető build eszközök ===== apt-get install build-essential A következőket teszi fel: * build-essential * dpkg-dev * g++ * g++-4.9 * libalgorithm-diff-perl * libalgorithm-diff-xs-perl * libalgorithm-merge-perl * libstdc++-4.9-dev ===== apt ===== Az apt-get parancs mellett újabban megjelent egy apt parancs is. Ugyanazt tudja mint az apt-get, de ennek ellenére nem csak egy alias. Az apt parancs egy külön program. Az apt-get parancs az "apt" csomagban található, ahol az apt parancs is helyet kapott. A példa kedvéért, az mc csomag telepítése: apt install mc A parancs karakterekből összeállított folyamatsávot is biztosít számunkra. Ha szeretnénk levelezéssel kapcsolat csomagokat keresni, használjuk a search parancsot: apt search email Egy csomag törlése: apt remove Törlés a konfigurációs fájlokkal együtt: apt purge Egy csomagról információ: apt list Az apt list parancs tájékoztat arról, hogy telepítve van-e a csomag. Például: apt list mc Részletek egy csomagról: apt show A csomag leírását, függőségei, stb. Például: apt show mc ===== debsums ===== A debsums a telepített csomagok MD5 összegének ellenőrzésére való. Telepítés: apt install debsums Az összes telepített csomag ellenőrzése: debsums Csak a hibák megjelenítése: debsums -s vagy: debsums --silent Az mc csomag ellenőrzése: debsums mc vagy: debsums -s mc Ha nem ad vissza semmit, akkor nem volt eltérés. Több információ: man debsums. ===== A szekciók ===== Háromféle szekció van: * main - szabad szoftverek * contrib - nem szabad szoftver * non-free - zárt forráskód A szekciókat a sources.list fájlban kell megadni: deb http://ftp.debian.org/debian stable main contrib non-free Néhány példa: * main: mc, apache2 * contrib * non-free: niktor ===== Tasksel ===== A Tasksel ha nincs telepítve: # apt install aptitude tasksel A tasksel segítségével komplett környezetek telepíthetők. Csak indítsuk el: tasksel A program egy menüs felületet biztosít, amit értelemszerűen használhatunk. Csomag konfiguráció ┌─────────────────────────┤ Szoftver választás ├──────────────────────────┐ │ A következő, előre összeválogatott szoftver gyűjtemények telepíthetők. │ │ │ │ Telepíthető szoftverek: │ │ │ │ [*] Debian desktop environment │ │ [ ] ... GNOME │ │ [ ] ... Xfce │ │ [ ] ... KDE │ │ [ ] ... Cinnamon │ │ [*] ... MATE │ │ [*] ... LXDE │ │ [ ] web server │ │ [ ] print server │ │ [*] SSH server │ │ [ ] laptop │ │ │ │ │ │ │ │ │ └─────────────────────────────────────────────────────────────────────────┘ Ügyeljünk arra, hogy ahol itt kiszedjük (*) jelölést, azt szoftvert leszedi a tasksel. Ha szeretnénk kilépni, használjuk a következő billentyűkombinációt: * + Paraméterezve is használható: tasksel install gnome-desktop --new-install Forrás: * https://wiki.debian.org/tasksel ===== Tároló kezelés ===== Szükségünk van a software-properties-common csomagra. apt install software-properties-common Kapunk egy /usr/bin/add-apt-repository parancsot. Például VirtualBox tároló felvétel stretch esetén: add-apt-repository 'deb https://download.virtualbox.org/virtualbox/debian stretch contrib' A tárolóhoz tartozó kulcs letöltése: wget https://www.virtualbox.org/download/oracle_vbox_2016.asc A kulcs telepítése apt-key add oracle_vbox_2016.asc A legújabb tároló és kulcs útvonalát a https://www.virtualbox.org/wiki/Linux_Downloads webhelyről szerezhetjük be. Mivel a tároló HTTPS felett érhető el, ezért szükségünk van a apt-transport-https csomagra: apt install apt-transport-https Ezek után a tároló használata: apt update apt install virtualbox-6.0 ===== Információ debianos rendszerről ===== $ lsb_release -a ===== apt-mark ===== Csomag visszatartása (nincs például frissítés): apt-mark hold ruby Visszavonás: apt-mark unhold ruby ===== Hasznos dolgok ===== ==== Segítség ==== Ha a szokásos eszközöket nem telepítjük, akkor hiányozhatnak számunkra a kézikönyves és a less parancs. Telepítésük: apt install man manpages-hu less ==== Linkek ==== * https://wiki.debian.org/SourcesList (2019)