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:
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.
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
Csomagok keresése egy bizonyos témában:
apt search email
apt remove csomagnév
apt remove [--purge] <csomagnév>
Ha --purge kapcsolót is használjuk, akkor függőségként telepített csomagokat leszedhetjük a következő paranccsal:
apt autoremove
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.
Csomag leírás mutatása:
apt show <csomag>
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.
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 depends apache2
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 lekérdezése:
apt-cache policy <csomagok>
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:~$
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.
Alapból nincs telepítve, de feltehetjük egy apt-file csomagból:
apt install apt-file
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.
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.
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 <noahm@debian.org> 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.
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
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
Egy csomag újrakonfigurálása
dpkg-reconfigure pure-ftpd-common
dpkg -s <package>
Csomag státusza:
dpkg -s samba| grep Status
dpkg -r <package>
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:
Legyen például az adminer nevű csomag, amely itt található:
Ennek letöltése 2020-ban:
wget http://ftp.debian.org/debian/pool/main/a/adminer/adminer_4.7.7-1_all.deb
dpkg -x csomag.deb /tmp/out
ar x csomag.deb
dpkg-query -l
dpkg-query --list
dpkg --list
dpkg --get-selections
További lehetőségek:
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
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:
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/
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:
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.
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.
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:
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 ASCII táblából hexadecimális kód:
Esetleg:
export http_proxy="http://user%40cegnev:titok@proxy_ip_cim:8080/";
Az apt rendszer olvassa a következő két környezeti változót:
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
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
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
apt update apt --only-upgrade install csomagnév
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-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:
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:
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 <<EOT Acquire::http { Proxy "http://192.168.0.125:3142"; }; EOT
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:
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
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
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
apt-get install build-essential
A következőket teszi fel:
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 <csomagnév>
Törlés a konfigurációs fájlokkal együtt:
apt purge <csomagnév>
Egy csomagról információ:
apt list <csomagnév>
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 <csomagnév>
A csomag leírását, függőségei, stb.
Például:
apt show mc
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.
Háromféle szekció van:
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:
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 │ │ │ │ │ │ <Ok> │ │ │ └─────────────────────────────────────────────────────────────────────────┘
Ü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:
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
$ lsb_release -a
Csomag visszatartása (nincs például frissítés):
apt-mark hold ruby
Visszavonás:
apt-mark unhold ruby
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