102.4 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.4 A Debian 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 Debian csomagformátum (.deb
) és a hozzá tartozó csomagkezelő eszköz (dpkg
) volt. Ma már széles körben használják őket nemcsak magán a Debianon, hanem az abból leszármazottakon is, mint például az Ubuntu és a belőle kialakultak.
Egy másik, Debian-alapú rendszereken népszerű csomagkezelő eszköz a Advanced Package Tool (apt
), amely a csomagok telepítésének, karbantartásának és eltávolításának számos aspektusának egyszerűsítésével könnyíti meg a munkát.
Ebben a leckében meg fogjuk tanulni, hogyan használjuk az dpkg
és az apt
programokat a szoftverek beszerzésére, telepítésére, karbantartására és eltávolítására egy Debian-alapú Linux rendszeren.
A Debian Package Tool (dpkg)
The Debian Package (dpkg
) tool is the essential utility to install, configure, maintain and remove software packages on Debian-based systems. The most basic operation is to install a .deb
package, which can be done with:
# dpkg -i PACKAGENAME
Where PACKAGENAME
is the name of the .deb
file you want to install.
A csomagok frissítéseit ugyanígy kezeljük. Egy csomag telepítése előtt a dpkg
ellenőrzi, hogy létezik-e már egy korábbi verzió a rendszerben. Ha igen, akkor a csomagot frissíti az új verzióra. Ha nem, akkor egy friss példány kerül telepítésre.
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.
A dpkg
ellenőrizni fogja, hogy ezek a függőségek telepítve vannak-e a rendszerünkön, és ha nem, akkor nem telepíti a csomagot. Ebben az esetben a dpkg
felsorolja, hogy mely csomagok hiányoznak. A függőségeket azonban önmagában nem tudja megoldani. A felhasználó feladata, hogy megkeresse a megfelelő függőségeket tartalmazó .deb
csomagokat és telepítse azokat.
Az alábbi példában a felhasználó megpróbálja telepíteni az OpenShot videószerkesztő csomagot, de néhány függőség hiányzik:
# dpkg -i openshot-qt_2.4.3+dfsg1-1_all.deb (Reading database ... 269630 files and directories currently installed.) Preparing to unpack openshot-qt_2.4.3+dfsg1-1_all.deb ... Unpacking openshot-qt (2.4.3+dfsg1-1) over (2.4.3+dfsg1-1) ... dpkg: dependency problems prevent configuration of openshot-qt: openshot-qt depends on fonts-cantarell; however: Package fonts-cantarell is not installed. openshot-qt depends on python3-openshot; however: Package python3-openshot is not installed. openshot-qt depends on python3-pyqt5; however: Package python3-pyqt5 is not installed. openshot-qt depends on python3-pyqt5.qtsvg; however: Package python3-pyqt5.qtsvg is not installed. openshot-qt depends on python3-pyqt5.qtwebkit; however: Package python3-pyqt5.qtwebkit is not installed. openshot-qt depends on python3-zmq; however: Package python3-zmq is not installed. dpkg: error processing package openshot-qt (--install): dependency problems - leaving unconfigured Processing triggers for mime-support (3.60ubuntu1) ... Processing triggers for gnome-menus (3.32.0-1ubuntu1) ... Processing triggers for desktop-file-utils (0.23-4ubuntu1) ... Processing triggers for hicolor-icon-theme (0.17-2) ... Processing triggers for man-db (2.8.5-2) ... Errors were encountered while processing: openshot-qt
Mint fentebb látható, az OpenShot függ a fonts-cantarell
, python3-openshot
, python3-pyqt5
, python3-pyqt5.qtsvg
, python3-pyqt5.qtwebkit
és python3-zmq
csomagoktól. Ezek mindegyikét telepíteni kell az OpenShot sikeres telepítéséhez.
Csomagok eltávolítása
Egy csomag eltávolításához adjuk át a -r
paramétert a dpkg
-nak, utána pedig a csomag nevét. Például a következő parancs eltávolítja a rendszerből az unrar
csomagot:
# dpkg -r unrar (Reading database ... 269630 files and directories currently installed.) Removing unrar (1:5.6.6-2) ... Processing triggers for man-db (2.8.5-2) ...
Az eltávolítási művelet függőségi ellenőrzést is végez, és egy csomag csak akkor távolítható el, ha minden más, tőle függő csomag is eltávolításra kerül. Ha ezt megpróbáljuk, az alábbi hibaüzenethez hasonlót kapunk:
# dpkg -r p7zip dpkg: dependency problems prevent removal of p7zip: winetricks depends on p7zip; however: Package p7zip is to be removed. p7zip-full depends on p7zip (= 16.02+dfsg-6). dpkg: error processing package p7zip (--remove): dependency problems - not removing Errors were encountered while processing: p7zip
Több csomag nevét is megadhatjuk a dpkg -r
parancsnak, így az összes csomag egyszerre lesz eltávolítva.
Amikor egy csomagot eltávolítanak, a megfelelő konfigurációs fájlok a rendszerben maradnak. Ha mindent el akarunk távolítani, ami a csomaghoz tartozik, használjuk a -P
(purge) opciót az -r
helyett.
Note
|
A |
Csomaginformációk megszerzése
Ha információt szeretnénk kapni egy .deb
csomagról, például a verziójáról, architektúrájáról, karbantartójáról, függőségeiről és így tovább, használjuk a dpkg
parancsot a -I
paraméterrel, amelyet a vizsgálni kívánt csomag fájlneve követ:
# dpkg -I google-chrome-stable_current_amd64.deb new Debian package, version 2.0. size 59477810 bytes: control archive=10394 bytes. 1222 bytes, 13 lines control 16906 bytes, 457 lines * postinst #!/bin/sh 12983 bytes, 344 lines * postrm #!/bin/sh 1385 bytes, 42 lines * prerm #!/bin/sh Package: google-chrome-stable Version: 76.0.3809.100-1 Architecture: amd64 Maintainer: Chrome Linux Team <chromium-dev@chromium.org> Installed-Size: 205436 Pre-Depends: dpkg (>= 1.14.0) Depends: ca-certificates, fonts-liberation, libappindicator3-1, libasound2 (>= 1.0.16), libatk-bridge2.0-0 (>= 2.5.3), libatk1.0-0 (>= 2.2.0), libatspi2.0-0 (>= 2.9.90), libc6 (>= 2.16), libcairo2 (>= 1.6.0), libcups2 (>= 1.4.0), libdbus-1-3 (>= 1.5.12), libexpat1 (>= 2.0.1), libgcc1 (>= 1:3.0), libgdk-pixbuf2.0-0 (>= 2.22.0), libglib2.0-0 (>= 2.31.8), libgtk-3-0 (>= 3.9.10), libnspr4 (>= 2:4.9-2~), libnss3 (>= 2:3.22), libpango-1.0-0 (>= 1.14.0), libpangocairo-1.0-0 (>= 1.14.0), libuuid1 (>= 2.16), libx11-6 (>= 2:1.4.99.1), libx11-xcb1, libxcb1 (>= 1.6), libxcomposite1 (>= 1:0.3-1), libxcursor1 (>> 1.1.2), libxdamage1 (>= 1:1.1), libxext6, libxfixes3, libxi6 (>= 2:1.2.99.4), libxrandr2 (>= 2:1.2.99.3), libxrender1, libxss1, libxtst6, lsb-release, wget, xdg-utils (>= 1.0.2) Recommends: libu2f-udev Provides: www-browser Section: web Priority: optional Description: The web browser from Google Google Chrome is a browser that combines a minimal design with sophisticated technology to make the web faster, safer, and easier.
Telepített csomagok és csomagtartalmak listázása
A rendszerünkre telepített összes csomag listáját a --get-selections
opcióval kaphatjuk meg, mint a dpkg --get-selections
parancsban. Egy adott csomag által telepített összes fájl listáját is megkaphatjuk, ha a -L PACKAGENAME
paramétert adjuk meg a dpkg
-nak, ahogy ezt alább láthatjuk:
# dpkg -L unrar /. /usr /usr/bin /usr/bin/unrar-nonfree /usr/share /usr/share/doc /usr/share/doc/unrar /usr/share/doc/unrar/changelog.Debian.gz /usr/share/doc/unrar/copyright /usr/share/man /usr/share/man/man1 /usr/share/man/man1/unrar-nonfree.1.gz
Annak megállapítása, hogy melyik csomagban van egy adott fájl
Néha szükség lehet arra, hogy megtudjuk, melyik csomag tartalmaz egy adott fájlt a rendszerben. Ezt a dpkg-query
segédprogrammal nézhetjük meg, amelyet az -S
paraméter és a kérdéses fájl elérési útvonala követ:
# dpkg-query -S /usr/bin/unrar-nonfree unrar: /usr/bin/unrar-nonfree
Telepített csomagok átkonfigurálása
Amikor egy csomag telepítése megtörténik, van egy konfigurációs lépés, az úgynevezett post-install, ahol egy szkript fut le, amely beállít mindent, ami a szoftver futtatásához szükséges, például a jogosultságokat, a konfigurációs fájlok elhelyezését stb. Ez néhány kérdést is feltehet a felhasználónak, hogy beállítsa a szoftver futtatásával kapcsolatos preferenciákat.
Néha egy sérült vagy rosszul formázott konfigurációs fájl miatt előfordulhat, hogy vissza szeretnénk állítani egy csomag beállításait a “friss” állapotba, vagy meg szeretnénk változtatni a kezdeti konfigurációs kérdésekre adott válaszokat. Ehhez futtassuk a dpkg-reconfigure
segédprogramot a csomag nevével.
Ez a program biztonsági mentést készít a régi konfigurációs fájlokról, kicsomagolja az újakat a megfelelő mappákba, és lefuttatja a csomag által biztosított post-install szkriptet, mintha a csomagot először telepítettük volna. Próbáljuk meg a tzdata
csomag újrakonfigurálását a következő példával:
# dpkg-reconfigure tzdata
Advanced Package Tool (apt)
Az Advanced Package Tool (APT) egy olyan csomagkezelő rendszer, amely egy eszközkészletet tartalmaz, és jelentősen leegyszerűsíti a csomagok telepítését, frissítését, eltávolítását és kezelését. Az APT olyan funkciókat biztosít, mint a fejlett keresési lehetőségek és az automatikus függőség-feloldás.
Az APT nem “helyettesíti” a dpkg
-t. Gondolhatunk rá úgy, mint egy “front end”-re, amely leegyszerűsíti a műveleteket és kitölti a dpkg
funkcionalitásbeli hiányosságait, mint például a függőségek feloldása.
Az APT a telepíthető csomagokat tartalmazó szoftver repositorykkal együttműködve működik. Ilyen repository lehet egy helyi vagy távoli szerver, vagy (ritkábban) akár egy CD-ROM lemez is.
A Linux disztribúciók, mint például a Debian és az Ubuntu, saját repositorykat üzemeltetnek, de fejlesztők vagy felhasználói csoportok egyéb repository-kat tarthatnak fent, hogy a disztribúció fő repositoryjában nem elérhető szoftvereket biztosítsanak.
Számos segédprogram működik együtt az APT-vel, a legfontosabbak a következők:
apt-get
-
csomagok letöltésére, telepítésére, frissítésére vagy eltávolítására szolgál a rendszerből.
apt-cache
-
a csomagindexben történő műveletek, például keresések elvégzésére szolgál.
apt-file
-
a csomagokon belüli fájlok keresésére szolgál.
Létezik egy “barátságosabb” segédprogram is, amelynek neve egyszerűen apt
, és amely az apt-get
és az apt-cache
leggyakrabban használt opcióit egyesíti egy segédprogramban. Az apt
sok parancsa megegyezik az apt-get
parancsaival, így sok esetben felcserélhetők. Mivel azonban előfordulhat, hogy az apt
nincs telepítve a rendszerre, ajánlott megtanulni az apt-get
és az apt-cache
használatát.
Note
|
Az |
A csomagindex frissítése
A szoftverek APT-vel történő telepítése vagy frissítése előtt ajánlott először frissíteni a csomagindexet, hogy az új és frissített csomagokra vonatkozó információkhoz hozzájussunk. Ezt az apt-get
paranccsal, majd az update
paraméterrel lehet megtenni:
# apt-get update Ign:1 http://dl.google.com/linux/chrome/deb stable InRelease Hit:2 https://repo.skype.com/deb stable InRelease Hit:3 http://us.archive.ubuntu.com/ubuntu disco InRelease Hit:4 http://repository.spotify.com stable InRelease Hit:5 http://dl.google.com/linux/chrome/deb stable Release Hit:6 http://apt.pop-os.org/proprietary disco InRelease Hit:7 http://ppa.launchpad.net/system76/pop/ubuntu disco InRelease Hit:8 http://us.archive.ubuntu.com/ubuntu disco-security InRelease Hit:9 http://us.archive.ubuntu.com/ubuntu disco-updates InRelease Hit:10 http://us.archive.ubuntu.com/ubuntu disco-backports InRelease Reading package lists... Done
Tip
|
Az |
Csomagok telepítése és törlése
A csomagindex frissítése után most már telepíthetünk egy csomagot. Ezt az apt-get install
paranccsal lehet megtenni, amelyet a telepíteni kívánt csomag neve követ:
# apt-get install xournal Reading package lists... Done Building dependency tree Reading state information... Done The following NEW packages will be installed: xournal 0 upgraded, 1 newly installed, 0 to remove and 75 not upgraded. Need to get 285 kB of archives. After this operation, 1041 kB of additional disk space will be used.
Egy csomag eltávolításához pedig használjuk az apt-get remove
parancsot, amelyet a csomag neve követ:
# apt-get remove xournal Reading package lists... Done Building dependency tree Reading state information... Done The following packages will be REMOVED: xournal 0 upgraded, 0 newly installed, 1 to remove and 75 not upgraded. After this operation, 1041 kB disk space will be freed. Do you want to continue? [Y/n]
Jegyezzük meg, hogy a csomagok telepítésekor vagy eltávolításakor az APT automatikusan feloldja a függőségeket. Ez azt jelenti, hogy a telepítendő csomaghoz szükséges további csomagok is telepítésre kerülnek, és az eltávolítandó csomagtól függő csomagok is eltávolításra kerülnek. Az APT mindig megmutatja, hogy mi lesz telepítve vagy eltávolítva, mielőtt megkérdezné, hogy folytatni szeretnénk-e:
# apt-get remove p7zip Reading package lists... Done Building dependency tree The following packages will be REMOVED: android-libbacktrace android-libunwind android-libutils android-libziparchive android-sdk-platform-tools fastboot p7zip p7zip-full 0 upgraded, 0 newly installed, 8 to remove and 75 not upgraded. After this operation, 6545 kB disk space will be freed. Do you want to continue? [Y/n]
Vegyük figyelembe, hogy amikor egy csomagot eltávolítunk, a megfelelő konfigurációs fájlok a rendszerben maradnak. A csomag és a konfigurációs fájlok eltávolításához a remove
helyett használjuk a purge
paramétert, vagy a remove
paramétert a --purge
kapcsolóval:
# apt-get purge p7zip
vagy
# apt-get remove --purge p7zip
Tip
|
Használható az |
Törött függőségek javítása
Lehetséges, hogy egy rendszeren “törött függőségek” (broken dependencies) vannak. Ez azt jelenti, hogy egy vagy több telepített csomag más csomagoktól függ, amelyek nem lettek telepítve, vagy már nincsenek jelen. Ez történhet egy APT hiba, vagy egy manuálisan telepített csomag miatt.
Ennek megoldásához használjuk az apt-get install -f
parancsot. Ez megpróbálja javítani
a hibás csomagokat a hiányzó függőségek telepítésével, biztosítva, hogy az összes csomag ismét konzisztens legyen.
Tip
|
Használható az |
Csomag upgrade-elése
Az APT segítségével a telepített csomagokat automatikusan upgrade-elhetjük a repositorykból elérhető legújabb verziókra. Ez az apt-get upgrade
paranccsal történik. A parancs futtatása előtt először frissítsük a csomagindexet az apt-get update
paranccsal:
# apt-get update Hit:1 http://us.archive.ubuntu.com/ubuntu disco InRelease Hit:2 http://us.archive.ubuntu.com/ubuntu disco-security InRelease Hit:3 http://us.archive.ubuntu.com/ubuntu disco-updates InRelease Hit:4 http://us.archive.ubuntu.com/ubuntu disco-backports InRelease Reading package lists... Done # apt-get upgrade Reading package lists... Done Building dependency tree Reading state information... Done Calculating upgrade... Done The following packages have been kept back: gnome-control-center The following packages will be upgraded: cups cups-bsd cups-client cups-common cups-core-drivers cups-daemon cups-ipp-utils cups-ppdc cups-server-common firefox-locale-ar (...) 74 upgraded, 0 newly installed, 0 to remove and 1 not upgraded. Need to get 243 MB of archives. After this operation, 30.7 kB of additional disk space will be used. Do you want to continue? [Y/n]
A kimenet alján található összefoglaló megmutatja, hogy hány csomag kerül frissítésre, telepítésre, eltávolításra vagy visszatartásra, valamint kiírja a teljes letöltési méretet és azt, hogy mennyi extra lemezterületre lesz szükség a művelet elvégzéséhez. A frissítés befejezéséhez lenyomjuk az Y
-t, majd megvárjuk, amíg az apt-get
befejezi a műveletet.
Egyetlen csomag upgrade-eléséhez csak futtassuk az apt-get upgrade
parancsot, amelyet a csomag neve követ. A dpkg
-hoz hasonlóan az apt-get
először azt ellenőrzi, hogy a csomagnak van-e telepítve egy korábbi verziója. Ha igen, a csomagot a repositoryban elérhető legújabb verzióra upgrade-eli. Ha nem, akkor egy friss példány kerül telepítésre.
Tip
|
Használható az |
A lokális gyorsítótár
Amikor telepítünk vagy frissítünk egy csomagot, a csomag telepítése előtt a megfelelő .deb
fájl letöltődik egy helyi gyorsítótárba (local cache). Alapértelmezés szerint ez a mappa a /var/cache/apt/archives
. A részben letöltött fájlok a /var/cache/apt/archives/partial/
mappába másolódnak.
A csomagok telepítése és frissítése során a gyorsítótár elég nagyra nőhet. A hely visszaszerzéséhez kiüríthetjük a gyorsítótárat az apt-get clean
paranccsal. Ez eltávolítja a /var/cache/apt/archives
és a /var/cache/apt/archives/partial/
mappák tartalmát.
Tip
|
Használható az |
Csomagok keresése
Az apt-cache
segédprogrammal műveleteket végezhetünk a csomagindexen, például megkereshetünk egy adott csomagot, vagy listázhatjuk, hogy mely csomagok tartalmaznak egy adott fájlt.
A kereséshez használjuk az apt-cache search
parancsot, amelyet egy keresési minta követ. A kimenet minden olyan csomag listája lesz, amely tartalmazza a mintát, akár a csomag nevében, akár a leírásában, akár a fájlokban.
# apt-cache search p7zip liblzma-dev - XZ-format compression library - development files liblzma5 - XZ-format compression library forensics-extra - Forensics Environment - extra console components (metapackage) p7zip - 7zr file archiver with high compression ratio p7zip-full - 7z and 7za file archivers with high compression ratio p7zip-rar - non-free rar module for p7zip
A fenti példában a liblzma5 - XZ-format compression library
bejegyzés nem felel meg a mintának. Ha azonban a show
paraméterrel megjelenítjük a csomag teljes információját, beleértve a leírást is, akkor ott megtaláljuk a mintát:
# apt-cache show liblzma5 Package: liblzma5 Architecture: amd64 Version: 5.2.4-1 Multi-Arch: same Priority: required Section: libs Source: xz-utils Origin: Ubuntu Maintainer: Ubuntu Developers <ubuntu-devel-discuss@lists.ubuntu.com> Original-Maintainer: Jonathan Nieder <jrnieder@gmail.com> Bugs: https://bugs.launchpad.net/ubuntu/+filebug Installed-Size: 259 Depends: libc6 (>= 2.17) Breaks: liblzma2 (<< 5.1.1alpha+20110809-3~) Filename: pool/main/x/xz-utils/liblzma5_5.2.4-1_amd64.deb Size: 92352 MD5sum: 223533a347dc76a8cc9445cfc6146ec3 SHA1: 8ed14092fb1caecfebc556fda0745e1e74ba5a67 SHA256: 01020b5a0515dbc9a7c00b464a65450f788b0258c3fbb733ecad0438f5124800 Homepage: https://tukaani.org/xz/ Description-en: XZ-format compression library XZ is the successor to the Lempel-Ziv/Markov-chain Algorithm compression format, which provides memory-hungry but powerful compression (often better than bzip2) and fast, easy decompression. . The native format of liblzma is XZ; it also supports raw (headerless) streams and the older LZMA format used by lzma. (For 7-Zip's related format, use the p7zip package instead.)
A keresési mintában használhatunk reguláris kifejezéseket is, amik nagyon összetett (és pontos) kereséseket tesznek lehetővé. Ez a téma azonban nem tartozik ennek a leckének a témakörébe.
Tip
|
Használható az |
A források listája
Az APT egy forráslistát használ ahhoz, hogy tudja, honnan szerezzen be csomagokat. Ezt a listát a sources.list
fájlban tárolja, ami az /etc/apt
könyvtárban található. Ez a fájl szerkeszthető közvetlenül egy szövegszerkesztővel, mint például vi
, pico
vagy nano
, vagy grafikus segédprogramokkal, mint például az aptitude
vagy a synaptic
.
Egy tipikus sor a sources.list
fájlban így néz ki:
deb http://us.archive.ubuntu.com/ubuntu/ disco main restricted universe multiverse
A szintaxis az is archívum típusa, az URL, a disztribúció és egy vagy több komponens, ahol:
- Archívum típusa
-
A repository tartalmazhat kész szoftvereket tartalmazó csomagokat (bináris csomagok,
deb
típus) vagy a szoftver forráskódját tartalmazó csomagokat (forráscsomagok,deb-src
típus). A fenti példa bináris csomagokat biztosít. - URL
-
A repository URL-je.
- Disztribúció
-
Annak a disztribúciónak a neve (vagy kódneve), amelyhez a csomagok rendelkezésre állnak. Egy repository több disztribúcióhoz is tartalmazhat csomagokat. A fenti példában a
disco
az Ubuntu 19.04 Disco Dingo kódneve. - Komponensek
-
Minden komponens csomagok halmazát jelenti. Ezek a komponensek különböző Linux disztribúciókban eltérőek lehetnek. Például az Ubuntu és leszármazottai esetében ezek a következők:
main
-
hivatalosan támogatott, nyílt forráskódú csomagokat tartalmaz.
restricted
-
hivatalosan támogatott, zárt forráskódú szoftvereket tartalmaz, mint például a grafikus kártyák eszközmeghajtóit.
universe
-
közösség által karbantartott nyílt forráskódú szoftvereket tartalmaz.
multiverse
-
nem támogatott, zárt forráskódú vagy szabadalommal terhelt szoftvereket tartalmaz.
Debian esetén a fő komponensek:
main
-
a Debian Free Software Guidelines (DFSG) szabványnak megfelelő csomagokból áll, amelyek a működéshez nem támaszkodnak ezen a területen kívüli szoftverekre. Az itt szereplő csomagok a Debian disztribúció részének tekintendők.
contrib
-
DFSG-kompatibilis csomagokat tartalmaz, amelyek azonban más csomagoktól függenek, amelyek nem a
main
-ben vannak. non-free
-
olyan csomagokat tartalmaz, amelyek nem felelnek meg a DFSG-nek.
security
-
biztonsági frissítéseket tartalmaz.
backports
-
a
main
csomagok újabb verzióit tartalmazza. A Debian stabil verzióinak fejlesztési ciklusa elég hosszú (kb. két év), és ez biztosítja, hogy a felhasználók a legfrissebb csomagokat kapják meg anélkül, hogy amain
core repositoryt kellene módosítaniuk.
Note
|
A Debian Free Software Guidelines-ról többet ezen a linken tudhatunk meg: https://www.debian.org/social_contract#guidelines |
Egy olyan, új repository hozzáadásához, ahonnan csomagokat szerezhetünk be, egyszerűen adjuk hozzá a megfelelő sort (általában a repository fenntartója adja meg) a sources.list
végéhez, mentsük el a fájlt, és töltsük be újra a csomagindexet az apt-get update
segítségével. Ezután az új repository-ban lévő csomagok telepíthetővé válnak az apt-get install
segítségével.
Ne felejtsük el, hogy a #
karakterrel kezdődő sorok kommentnek számítanak, és figyelmen kívül maradnak.
Az /etc/apt/sources.list.d
mappa
Az /etc/apt/sources.list.d
mappán belül további, az APT által használt repositorykat tartalmazó fájlokat adhatunk hozzá anélkül, hogy a fő /etc/apt/sources.list
fájlt módosítani kellene. Ezek egyszerű szöveges fájlok, a fent leírt szintaxissal és a .list
kiterjesztéssel.
Az alábbiakban az /etc/apt/sources.list.d/buster-backports.list
nevű fájl tartalma látható:
deb http://deb.debian.org/debian buster-backports main contrib non-free deb-src http://deb.debian.org/debian buster-backports main contrib non-free
A csomag tartalmának kilistázása és fájlok megtalálása
Az apt-file
nevű segédprogrammal több műveletet is végezhetünk a csomagindexben, például listázhatjuk egy csomag tartalmát, vagy megkereshetjük azt a csomagot, amely egy adott fájlt tartalmaz. Ez a segédprogram nem biztos, hogy alapértelmezés szerint telepítve van a rendszeren. Ebben az esetben általában az apt-get
segítségével telepíthetjük:
# apt-get install apt-file
A telepítés után frissítenünk kell az apt-file
gyorsítótárát:
# apt-file update
Ez általában csak néhány másodpercet vesz igénybe. Ezután az apt-file
kész a használatra.
Egy csomag tartalmának listázásához használjuk a list
paramétert, amelyet a csomag neve követ:
# apt-file list unrar unrar: /usr/bin/unrar-nonfree unrar: /usr/share/doc/unrar/changelog.Debian.gz unrar: /usr/share/doc/unrar/copyright unrar: /usr/share/man/man1/unrar-nonfree.1.gz
Tip
|
Használható az |
Az összes csomagban kereshetünk egy fájlt a search
paraméterrel, amelyet a fájl neve követ. Ha például tudni szeretnénk, hogy melyik csomagban található a libSDL2.so
nevű fájl, akkor a következő módon kereshetjük meg:
# apt-file search libSDL2.so libsdl2-dev: /usr/lib/x86_64-linux-gnu/libSDL2.so
A válasz a libsdl2-dev
csomag, amely az /usr/lib/x86_64-linux-gnu/libSDL2.so
fájlt tartalmazza.
A különbség az apt-file search
és a dpkg-query
között az, hogy az apt-file search
a nem telepített csomagok között is keres, míg a dpkg-query
csak a telepített csomaghoz tartozó fájlokat tudja megjeleníteni.
Gyakorló feladatok
-
Milyen paranccsal telepíthetjük a
package.deb
nevű csomagot adpkg
használatával? -
A
dpkg-query
segítségével keressük meg, hogy melyik csomag tartalmaz egy7zr.1.gz
nevű fájlt! -
El lehet távolítani az
unzip
nevű csomagot a rendszerből adpkg -r unzip
segítségével, ha afile-roller
csomag függ tőle? Ha nem, akkor mi lenne a helyes módszer? -
Az
apt-file
használatával hogyan lehet megtudni, hogy melyik csomag tartalmazza azunrar
fájlt? -
Az
apt-cache
használatának esetén mi a parancs agimp
csomag információinak megjelenítésére?
Gondolkodtató feladatok
-
Vegyünk egy repositoryt a
xenial
disztribúció Debian forráscsomagjaival, amelyet ahttp://us.archive.ubuntu.com/ubuntu/
címen tárolunk, valamint egyet auniverse
komponens csomagjaival. Mi lenne a megfelelő sor, amelyet hozzá kellene adni az/etc/apt/sources.list
-hez? -
Egy program fordítása közben egy hibaüzenettel találkozunk, amely arról szól, hogy a
zzip-io.h
fejlécfájl nincs jelen a rendszerben. Hogyan tudjuk kideríteni, hogy melyik csomag biztosítja ezt a fájlt? -
Hogyan lehet figyelmen kívül hagyni egy függőségi figyelmeztetést és eltávolítani egy csomagot a
dpkg
segítségével, még akkor is, ha vannak olyan csomagok a rendszerben, amelyek függnek tőle? -
Hogyan kaphatunk több információt a
midori
nevű csomagról azapt
segítségével? -
A csomagok telepítése vagy frissítése előtt melyik parancsot kell használni annak biztosítására, hogy a csomagindex naprakész legyen?
Összefoglalás
Ebben a leckében megtanultuk:
-
Hogyan használjuk a
dpkg
-t a csomagok telepítésére és eltávolítására. -
Hogyan listázzuk a telepített csomagokat és a csomagok tartalmát.
-
Hogyan lehet egy telepített csomagot újrakonfigurálni.
-
Mi az az
apt
, és hogyan lehet vele csomagokat telepíteni, upgrade-elni és eltávolítani. -
Hogyan használjuk az
apt-cache
-t a csomagok keresésére. -
Hogyan működik az
/etc/apt/sources.list
fájl. -
Hogyan használjuk az
apt-file
-t egy csomag tartalmának megjelenítésére, vagy hogyan találjuk meg, hogy melyik csomag tartalmaz egy adott fájlt.
A következő parancsokról volt szó:
dpkg -i
-
Egy csomag vagy szóközökkel elválasztott csomaglista telepítése.
dpkg -r
-
Egy csomag vagy szóközökkel elválasztott csomaglista eltávolítása.
dpkg -I
-
Megvizsgál egy csomagot, részleteket szolgáltat a telepített szoftverekről és a szükséges függőségekről.
dpkg --get-selections
-
Minden olyan csomagot felsorol, amelyet az
dpkg
telepített a rendszerre. dpkg -L
-
Megjelenít egy listát minden olyan fájlról, amelyet egy adott csomag telepít.
dpkg-query
-
A megadott fájlnévvel ez a parancs kiírja a fájlt telepítő csomagot.
dpkg-reconfigure
-
Ez a parancs újra lefuttatja a csomagok post-install szkriptjét, hogy a rendszergazda elvégezhesse a csomag telepítésének konfigurációs módosításait.
apt-get update
-
Ez a parancs frissíti a helyi csomagindexet, hogy az megfeleljen a
/etc/apt/
mappában található konfigurált repositorykban elérhető csomagoknak. apt-get install
-
Ez a parancs letölti a csomagot egy távoli repositoryból és telepíti azt a függőségekkel együtt; használható egy már letöltött Debian csomag telepítésére is.
apt-get remove
-
Ez a parancs eltávolítja a megadott csomag(ok)at a rendszerből.
apt-cache show
-
A
dpkg -I
parancshoz hasonlóan ez a parancs is használható egy adott csomag részleteinek megjelenítésére. apt-cache search
-
Ez a parancs a helyi APT gyorsítótár adatbázisában keres egy adott csomagot.
apt-file update
-
Ez a parancs frissíti a csomagok gyorsítótárát, hogy az
apt-file
parancs lekérdezhesse annak tartalmát. apt-file search
-
Ez a parancs megkeresi, hogy egy adott fájl melyik csomagban található. A parancs a mintát tartalmazó összes csomag listáját adja vissza.
apt-file list
-
Ez a parancs egy csomag tartalmának listázására szolgál, akárcsak az
dpkg -L
parancs.
Válaszok a gyakorló feladatokra
-
Milyen paranccsal telepíthetjük a
package.deb
nevű csomagot adpkg
segítségével?Adjuk át a
-i
paramétert adpkg
-nak:# dpkg -i package.deb
-
A
dpkg-query
segítségével keressük meg, hogy melyik csomag tartalmaz egy7zr.1.gz
nevű fájlt!Adjuk át a
-S
paramétert adpkg-query
-nek:# dpkg-query -S 7zr.1.gz
-
El lehet távolítani az
unzip
nevű csomagot a rendszerből adpkg -r unzip
segítségével, ha afile-roller
csomag függ tőle? Ha nem, akkor mi lenne a helyes módszer?Nem. A
dpkg
nem oldja fel a függőségeket és nem engedi a csomag eltávolítását, ha egy másik csomag függ tőle. Ebben a példában először eltávolítjuk afile-roller
-t (feltételezve, hogy semmi nem függ tőle) és utána azunzip
-et, vagy mindkettőt egyszerre az alábbi módon:# dpkg -r unzip file-roller
-
Az
apt-file
használatával hogyan lehet megtudni, hogy melyik csomag tartalmazza azunrar
fájlt?Használjuk a
search
paramétert az útvonallal (vagy fájlnévvel):# apt-file search /usr/bin/unrar
-
Az
apt-cache
használatának esetén mi a parancs agimp
csomag információinak megjelenítésére?Használjuk a
show
paramétert és a csomag nevét:# apt-cache show gimp
Válaszok a gondolkodtató feladatokra
-
Vegyünk egy repositoryt a
xenial
disztribúció Debian forráscsomagjaival, amelyet ahttp://us.archive.ubuntu.com/ubuntu/
címen tárolunk, valamint egyet auniverse
komponens csomagjaival. Mi lenne a megfelelő sor, amelyet hozzá kellene adni az/etc/apt/sources.list
-hez?A forráscsomagok
deb-src
típusúak, így a sornak a következőnek kell lennie:deb-src http://us.archive.ubuntu.com/ubuntu/ xenial universe
Ezt a sort a
.list
fájlban is beilleszthetjük a/etc/apt/sources.list.d/
állományba. A neve rajtunk múlik, de legyen leíró, példáulxenial_sources.list
. -
Egy program fordítása közben egy hibaüzenettel találkozunk, amely arról szól, hogy a
zzip-io.h
fejlécfájl nincs jelen a rendszerben. Hogyan tudjuk kideríteni, hogy melyik csomag biztosítja ezt a fájlt?Az
apt-file search
segítségével megkereshetjük, hogy melyik csomag tartalmaz olyan fájlt, amely nincs meg a rendszerben:# apt-file search zzip-io.h
-
Hogyan lehet figyelmen kívül hagyni egy függőségi figyelmeztetést és eltávolítani egy csomagot a
dpkg
segítségével, még akkor is, ha vannak olyan csomagok a rendszerben, amelyek függnek tőle?A
--force
paraméter használható, de ezt soha nem szabad megtenni, hacsak nem tudjuk pontosan, mit csinálunk, mivel nagy a kockázata annak, hogy a rendszer inkonzisztens vagy “broken” állapotban marad. -
Hogyan kaphatunk több információt a
midori
nevű csomagról azapt
segítségével?Használjuk az
apt-cache show
-t a csomag nevével:# apt-cache show midori
-
A csomagok telepítése vagy frissítése előtt melyik parancsot kell használni annak biztosítására, hogy a csomagindex naprakész legyen?
Az
apt-get update
-t kell használnunk. Ez letölti a legújabb csomagindexeket a/etc/apt/sources.list
fájlban vagy az/etc/apt/sources.list.d/
könyvtárban leírt repositorykból.