apt et yum

APT et YUM sont les deux principaux gestionnaires de paquets des deux grandes familles de distributions Linux que sont les Red Hat (RHEL, CentOS, Fedora,…) et les Debian (Ubuntu,…). Ils traitent respectivement les packages au format DPKG et RPM.


commandes


# update local database
$ apt update
$ yum makecache 

# clear database
$ apt clean
$ yum clean all

# update package
$ apt upgrade
$ yum check-update
$ yum update

# upgrade distribution
$ apt full-upgrade # apt dist-upgrade
$ yum upgarde

# make searchs
$ apt search xxxxx # apt-cache search xxxxx
$ yum search xxxxx

# install package
$ apt install xxxxx
$ yum install xxxxx

# info on package
$ apt-cache showpkg php
$ yum info php  # ou rpm -i php

# download package
$ apt download xxxxx
$ yumdownloader xxxxx # via yum-utils

# delete package
$ apt remove xxxxx
$ yum remove xxxxx

# list all available packages
$ apt list
$ yum list available [nginx-*]
$ yum list all

# list all installed packages
$ apt list --installed
$ yum list installed

# list all upgradable packages
$ apt list --upgradable
$ yum list updates

# obsoletes packages
$ yum obsoletes

# last packages added
$ yum recent

# repo list
$ yum repolist

apt


  • gestionnaire de paquets
  • Debian based (Ubuntu,…)
  • format .deb
  • gestion des dépendances
# repository config
$ cat /etc/apt/sources.list

# example
$ cat /etc/apt/sources.list
...
deb http://ftp.fr.debian.org/debian/ stretch main
deb-src http://ftp.fr.debian.org/debian/ stretch main

deb http://security.debian.org/debian-security stretch/updates main
deb-src http://security.debian.org/debian-security stretch/updates main
...

format dpkg


DPKG (Debian Package) est un gestionnaire de package pour les distributions de type Debian. Il utilise une base de données locale qui se trouve dans /var/lib/dpkg. Il ne s’occupe pas des dépendances entre paquets.

nomenclature

nom_version–édition_archi.deb

  • nom du paquet
  • version de celui-ci
  • edition du paquet spécifique à la distribution
  • architecture

Ex: tmux_2.3-4_amd64.deb

  • nom=tmux
  • version=2.3
  • edition=4
  • archi=amd64

quelques commandes

# install package
$ dpkg -i tmux_2.3-4_amd64.deb

# update packages only if they are already installed
$ dpkg -l tmux | grep ^ii >/dev/null && dpkg -l tmux_2.3-4_amd64.deb

# install all folder packages
$ dpkg -R dossier/

# delete package, but keep config files
$ dpkg -r tmux

# delete package, with this config files
$ dpkg -P tmux

# list all knowed packages
$ dpkg -l # ii means installed

# make search
$ dpkg -l "apt*"

# list all installed packages
$ dpkg --get-selection

# what is the package of this file
$ dpkg -S /usr/sbin/vim

# list all packages files
$ dpkg -L tmux

# info on package
$ dpkg -I vim

# delete all non installed packages
$ dpkg -r -a # ou --pending

# reconfigure (post installation scrip)
$ dpkg-reconfigure nginx

yum


  • gestionnaire de paquets
  • Red Hat based (RHEL, CentOS, Fedora, …)
  • format .rpm
  • gestion des dépendances
  • sera remplacé par DNF (prochainement)
# global conf
$ cat /etc/yum.conf

# repositories config
$ cat /etc/yum.repo.d/*

# example
$ cat /etc/yum.repo.d/epel.repo
...
[epel]
name=Extra Packages for Enterprise Linux 7 - $basearch
#baseurl=http://download.fedoraproject.org/pub/epel/7/$basearch
metalink=https://mirrors.fedoraproject.org/metalink?repo=epel-7&arch=$basearch
failovermethod=priority
enabled=1
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL-7
...

Directives de la configuration du dépôt:

  • [epel] : nom court du dépôt
  • name : nom long
  • baseurl : lien qui pointe sur la base de paquets
  • mirorlist : lien qui pointe vers une liste de liens
  • metalink : même chose que mirorlist
  • gpgcheck : faut-il demander une signature (0 ou 1)
  • enabled : le dépôt est-il activé (0 ou 1)
  • gpgkey : emplacement des clés GPG locales

format rpm


RPM (Red Hat Package Manager) est un gestionnaire de package pour les distributions de type Red Hat. RPM a été inventé par ces derniers. Il utilise une base de données locale qui se trouve dans /var/lib/rpm. Il ne s’occupe pas des dépendances entre paquets.

nomenclature

nom–version–edition.archi.rpm

  • nom du paquet
  • version de celui-ci
  • edition du paquet spécifique à la distribution
  • architecture

    Ex: php-5.4.16-43.el7_4.x86_64.rpm

    • nom=php
    • version=5.4.16
    • edition=43.el7_4
    • archi=x86_64

quelques commandes

# install package
$ rpm -i php-5.4.16-43.el7_4.x86_64.rpm

# install or update
$ rpm -Uvh php-5.4.16-43.el7_4.x86_64.rpm # verbose mode + progress bar

# update only if package is already installed
$ rpm -Fvh php-5.4.16-43.el7_4.x86_64.rpm # verbose mode + progress bar

# after update, old config files are keeped as *.rpmave

# delete package
$ rpm -e php
# Options :
#	--force
#	--nodeps

# list all installed packages
$ rpm -qa

# info on package
$ rpm -qi nginx

# package files
$ rpm -ql php

# what is the package of this file
$ rpm -qf /usr/sbin/vim

# search inside the package
$ rpm -qp php-5.4.16-43.el7_4.x86_64.rpm

# package dependances
$ rpm -q --requires nginx

# what provides the package
$ rpm -q --provides nginx

# scripts executed on install and on deletation
$ rpm -q --scripts nginx

# changelog
$ rpm -q --changelog nginx

# info on package evolution
$ rpm -V php
# S : size changed
# 5 : md5 sum changed
# T : modif. date has changed
# U : owner has changed
# G : goup has changed
# L : symb. link has changed
# M : permissions or file type has changed
# D : device has been changed
# c : it is a config. file

# extract package content (cpio archive)
$ rpm2cpio php-5.4.16-43.el7_4.x86_64.rpm | cpio -diun

# install new kernel
# with -i option
# restart + test
# delete old kernels (-e)
# grub1: edit /boot/grub/grub.conf with Default on new noyau
# grub2: cmd grub2-mkconfig