Zarządzanie oprogramowaniem

Wiele lat temu instalacja dodatkowego oprogramowania w systemie oznaczała konieczność pobrania przez administratora plików źródłowych (zwykle w postaci archiwum tar lub tgz), ich kompilację, łączenie, a następnie instalację w systemie.

Współczesne wersje systemu Linux wykorzystują zaawansowane metody paczkowania oprogramowania (w postaci plików z rozszerzeniem .deb lub .rpm), zarządania tymi paczkami (pakietami), w tym rozpoznawania zależności między nimi.

System zarządzania pakietami RPM (Red Hat Package Manager) jest stosowany w wielu dystrybucjach (RedHat/CentOS, Fedora, Madriva Linux, openSUSE). W dystrybucjach z rodziny Debian i pochodnych (Ubuntu, Knoppix, Linux Mint, Skolelinux, Vyatta) stosowany jest inny niż RPM format przechowywania pakietów, ale w obu przypadkach stosowane są narzędzia o analogicznym przeznaczeniu.

DISTRIBUTION

LOW-LEVEL TOOL

HIGH-LEVEL TOOL

HIGH-LEVEL TOOL + GUI

Debian and derivatives

dpkg

apt-get/aptitude/tasksel

synaptic

CentOS

rpm

yum

yumex

Fedora >= 26

rpm

dnf/PackageKit

PackageKit/dnfdragora

openSUSE

rpm

zypper

Zob. także Linux Package Management with Yum, RPM, Apt, Dpkg, Aptitude and Zypper.

SYSTEM PAKIETOWANIA RPM

Działania programu yum są rejestrowane w dzienniku zdarzeń /var/log/yum.log.

Przykłady użycia komendy yum:

  • instalacja i usuwanie pakietu:

    # yum [-y] install htop [sysstat [strace]]
    # yum reinstall sysstat
    # yum [-y] remove htop [sysstat [strace]]
    
  • pobieranie pakietu (także w postaci źródłowej):

    # yumdownloader [--source] sysstat
    
  • z uwagi na cykl życia pakietów trzeba je odświeżać:

    # yum check-update
    # yum [-y] update [htop]
    # yum update [--exclude=kernel]
    # yum update [--disablerepo=epel]
    

    Czym się różni yum update od yum upgrade?

  • wyświetlanie informacji o wszystkich, zainstalowanych lub wybranych pakietach:

    # yum list [openssh]
    # yum list [installed|available|updates]
    
  • wyszukiwanie pakietów, które w nazwie lub opisie mają podany łańcuch lub łańcuchy znaków:

    # yum search [all] vim [editor]
    # yum search 'other IO' iostat
    # yum search spell checker
    # yum search 'spell checker'
    # yum search htop
    # yum search top
    # yum search [all] top
    
  • wyświetlanie informacji o pakiecie:

    # yum info htop
    # rpm -qi htop
    
  • wyszukiwanie pakietu, który zawiera określony plik:

    # yum provides /etc/httpd/conf/httpd.conf
    # yum whatprovides /usr/sbin/sshd
    # yum provides|whatprovides "/usr/bin/top"
    # yum provides|whatprovides top
    # yum provides|whatprovides "*/top"
    # yum provides /usr/lib/libblas.so.3
    
  • wyświetlanie, instalacja i usuwanie całych grup pakietów:

    # yum grouplist
    # yum groupinstall 'GNOME Desktop'
    # yum groupremove 'GNOME Desktop'
    
  • pakiety mogą być pobierane z różnych (zdefiniowanych) repozytoriów (por. z /etc/yum.conf i /etc/yum.repos.d/); wyświetlanie listy aktywnych i zdefiniowanych repozytoriów:

    # yum [-v] repolist [all|enabled|disabled]
    # yum --disablerepo=epel repolist enabled
    # yum --enablerepo=epel install phpmyadmin
    
  • uruchomienie powłoki dla programu yum:

    # yum shell
    
  • czyszczenie pamięci podręcznej programu yum:

    # yum clean all
    
  • wyświetlanie historii zmian:

    # yum history
    

Oto lista przydatnych komend do manipulowania pojedynczymi pakietami, które zostały pobrane i są dostępne lokalnie.

  • sprawdzenie autentyczności i integralności pakietu

    # rpm --checksig htop-2.0.2-1.el7.x86_64.rpm
      htop-2.0.2-1.el7.x86_64.rpm: rsa sha1 (md5) pgp md5 OK
    
  • instalacja i usuwanie pakietu:

    # rpm -ivh htop-2.0.2-1.el7.x86_64.rpm
    # rpm -Uvh htop-2.0.2-1.el7.x86_64.rpm
    # rpm -e htop
    # rpm -e [--nodeps] grub2-tools
    
  • sprawdzanie stanu pakietu, informacji o pakiecie oraz wyświetlanie listy plików wchodzących w skład pakietu, plików konfiguracyjnych:

    # rpm -q [-i] htop
    # rpm -ql htop
    # rpm -qip htop-2.2.0-3.el7.x86_64.rpm
    # rpm -qlp htop-2.2.0-3.el7.x86_64.rpm
    # rpm -qcf /bin/bash
    # rpm -qc  bash
    
  • wyświetlanie listy pakietów i bibliotek, od których zależy poprawne działanie danego pakietu:

    # rpm -qR htop
    # rpm -q --requires htop
    # rpm -qRp htop-2.0.2-1.el7.x86_64.rpm
    
  • wyświetlanie listy zainstalowanych pakietów:

    # rpm -qa [--last]
    
  • znajdowanie pakietu, do którego należy dany plik:

    # rpm -qf /usr/bin/htpasswd
    # rpm -qf `which mail`
    
  • znajdowanie dokumentacji związanej z danym pakietem:

    # rpm -qd passwd
    # rpm -qdf /usr/bin/passwd
    
  • wyświetlanie pakietów w określonym formacie:

    # rpm -qa --queryformat '%{name}-%{version}-%{release}-%{size}\n'
    
  • sprawdzanie integralności pakietów:

    # rpm -Va
    # rpm -V[v] procps-ng
    # touch /usr/bin/top; cp /etc/hosts /usr/bin/w; chown labul:labul /usr/bin/w
    # rpm -V procps-ng
    
  • z uwagi na konieczność sprawdzania źródła pochodzenia i integralności pakietów są one podpisywane. Na stronie https://www.centos.org/keys/ można znaleźć odpowiednie klucze publiczne, np. CentOS 7 Signing Key:

    # wget https://www.centos.org/keys/RPM-GPG-KEY-CentOS-7
    # diff  /etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7 RPM-GPG-KEY-CentOS-7
    # rpm --import RPM-GPG-KEY-CentOS-7
    # rpm -qa gpg-pubkey
    # rpm -qi gpg-pubkey-...``
    # yumdowloader sysstat; rpm -K sysstat-10.1.5-17.el7.x86_64.rpm
    

Warto porównać instalację i usuwanie pakietu przy użyciu komend rpm i yum:

# yumdownloader lapack
# rpm -i [-vh] lapack-3.4.2-5.el7.x86_64.rpm
# yum install lapack
# rpm -e [--test] procps-ng
# yum remove procps-ng

Jeśli występują problemy w użyciu komendy rpm z uwagi na dostęp do bazy danych, to należy wykonać następujące komendy:

# cd /var/lib/rpm
# rm __db*
# rpm --rebuilddb
# rpmdb_verify Packages

Program yumex jest graficzną nakładką do programu yum.

SYSTEM PAKIETOWANIA DEB

Przykłady zastosowania komendy aptitude do zarządzania pakietami:

# aptitude search '~i'
# aptitude search '~i' edit
# aptitude search emacs|vim
# aptitude search htop
# aptitude search '~nhtop'
# aptitude search '~nemacs24'
# aptitude search '~i ~nemacs24'
# aptitude search '~i ~nvim'
# aptitude search '~i ~deditor'
# aptitude search '~M'
# aptitude search '~i ~nemacs'
# aptitude search '~T'|wc -l
# aptitude search '~U|E'
# aptitude search '?provides(httpd)'
# aptitude [-y] install htop
# aptitude [-y] download htop
# aptitude show htop
# aptitude update
# aptitude full-upgrade
# aptitude [-y] install dpkg-dev
# aptitude [-y] remove|purge htop
# aptitude download htop
# apt-get  source htop

Zob. także Aptitude reference guide.

Najważniejsze zastosowania komendy dpkg do zarządzania poszczególnymi pakietami:

# dpkg -l [htop]
# dpkg -i htop_1.0.3-1_amd64.deb
# dpkg -r|P htop
# dpkg -c htop_1.0.3-1_amd64.deb
# dpkg -s htop
# dpkg -S /usr/bin/htop
# dpkg -S /bin/ls
# dpkg -L htop
# dpkg -R --install debpackages
# dpkg --unpack htop_1.0.3-1_amd64.deb
# dpkg --configure htop
# dpkg --help

Pracując w trybie graficznym można użyć programu synaptic do zarządzania pakietami. Wygodnie jest skorzystać także z programu tasksel, który pozwala na zarządzanie grupami pakietów.