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.
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
.
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.