Apt függőség­feloldás ellenőrzése

A Zabbix monitorozó rendszert szerettem volna feltelepíteni az Ubuntu tárolóból. Az apt-get install parancsnál feltűnt, hogy az apache2 webszervert is hozná magával, amit semmiképpen sem szerettem volna, mert az nginx van használatban. A helyzet megoldásához látnom kellett, hogy az apt milyen okból döntötte el, hogy az apache2 telepítése lesz a helyzet megoldása.

Az apt.conf kézikönyvben fel vannak sorolva a különböző Debug beállítások. Ebben a listában hamar megtaláljuk az automatikus telepítéshez vezető döntés kiíratását:

Debug::pkgDepCache::AutoInstall
     Generate debug messages describing which packages are being
     automatically installed to resolve dependencies. This corresponds
     to the initial auto-install pass performed in, e.g., apt-get
     install, and not to the full apt dependency resolver; see
     Debug::pkgProblemResolver for that.

Az apt beállításokat nem muszáj beleírnunk az /etc/apt/apt.conf fájlba, megadhatjuk az apt-get parancs után a -o kapcsolóval:

sudo apt-get -o Debug::pkgDepCache::AutoInstall=true install zabbix-frontend-php

Ezután pedig látni fogjuk a kimenetben, hogy melyik telepítésre jelölt csomagot miért választotta ki az apt:

Reading package lists...
Building dependency tree...
Reading state information...
  Installing php5 as Depends of zabbix-frontend-php
    Installing libapache2-mod-php5 as Depends of php5
      Installing apache2-bin as Depends of libapache2-mod-php5
        Installing libaprutil1-dbd-sqlite3 as Depends of apache2-bin
        Installing libaprutil1-ldap as Depends of apache2-bin
      Installing apache2 as Depends of libapache2-mod-php5
        Installing apache2-data as Depends of apache2
      Installing php5-common as Depends of libapache2-mod-php5
  Installing ttf-dejavu-core as Depends of zabbix-frontend-php
  Installing php5-ldap as Recommends of zabbix-frontend-php
The following extra packages will be installed:
  apache2 apache2-bin apache2-data libapache2-mod-php5 libaprutil1-dbd-sqlite3
  libaprutil1-ldap php5 php5-cli php5-common php5-curl php5-fpm php5-gd
  php5-ldap php5-mysql php5-readline ttf-dejavu-core

A fentiekből ki tudjuk olvasni, hogy az apache2 csomaghoz a libapache2-mod-php5 és a php5 csomag vezetett. A php5 egy meta-csomag, amit én nem telepítettem a php5-fpm mellé, enélkül viszont a php5re hivatkozó csomagok nem tudják, hogy igenis van működő php5 a rendszeren. Ezt a hibát gyorsan orvosoltam, majd újra lefuttattam a fenti parancsot, és rögtön rövidebb lett a telepítésre kijelölt csomagok listája:

Reading package lists...
Building dependency tree...
Reading state information...
  Installing ttf-dejavu-core as Depends of zabbix-frontend-php
  Installing php5-ldap as Recommends of zabbix-frontend-php
The following extra packages will be installed:
  php5-ldap ttf-dejavu-core

Az apt debug beállításai nagyon jól jönnek az ilyen helyzetekben. Hamar sikerült megoldani, hogy a lehető legkevesebb csomaggal telepítsem fel a Zabbixot.