Chez JL

Joliciel Libre

Accueil > Informatique > GNU/Linux > Debian > Gestion des paquets : apt apt-get dpkg

Gestion des paquets : apt apt-get dpkg

mercredi 1er août 2012, par JL

 Sources.list

Le fichier sources.list

Générateur de fichier sources.list N’est pas parfait car à ce jour (07/04/2015) la version "squeeze" doit utiliser "squeeze-lts" et n’a plus de "security", mais le site n’en fait pas état.

 Divers

rmadison

 apt dpkg

apt a évolué, voir ici : http://kaocode.fr/apt-debut-de-simplification/

Divers

Depuis Debian 9 :

apt autoremove

peut être utilisé au lieu de

apt-get autoremove

Voir les paquets recommandés :

aptitude search '!~v!~i~RBrecommends:~i'

Pour les installer, remplacer "search" par "install"

Voir le mirroir le plus rapide

aptitude install apt-spy
apt-spy -d stable -a europe

Voir pourquoi un paquet a été installé (automatiquement)

aptitude why mysql-common

Télécharger un paquet sans l’installer

apt install -d nompaquet

Il est alors télécharger dans /var/cache/apt/archives/

Pour extraire un paquet deb, utiliser la commande ar (/usr/bin/ar) du paquet binutils. (ou graphique avec engrampa par exemple)

Télécharger les sources

apt-get source nompaquet

purger massivement

purger tous les paquets qui ne le sont pas :

dpkg -l | grep ^rc | cut -d ' ' -f 3 > /root/paquet ; apt purge `cat /root/paquet` ; rm -f /root/paquet

Déployer

Pour déployer les mêmes paquets sur différentes machines (ou pour réinstaller la même machine)
* Récupérer la liste des paquets installés sur le pc de référence :

sudo dpkg --get-selections > liste-des-paquets

* Déployer les mêmes paquets sur une autre machine :
Il faut avoir le même /etc/apt/sources.list :

sudo dpkg --set-selections < liste-des-paquets
sudo apt-get update
sudo apt-get dselect-upgrade

Installation avec dpkg

dpkg --force-all -i paquet.deb

Recherche

Voir la liste des paquets installés :

dpkg -l | grep "^ii" | more

Pour voir les fichiers installer par un paquet

dpkg -L paquet

Pour voir quel paquet à installer un fichier :

dpkg -S /chemin/du/fichier

En cas d’erreur, s’assurer que le fichier n’est pas un lien symbolique.

Recherche un paquet d’après un nom de fichier qu’il contient, même si ce paquet n’est pas installé :

aptitude install apt-file
apt-file update
apt-file search greeter.gsettings
gdm3: /etc/gdm3/greeter.gsettings

Si lors d’un "aptitude update", il y a le message d’erreur :
W : GPG error : http://security.debian.org testing/updates Release : Les signatures suivantes n’ont pas pu être vérifiées car la clé publique n’est pas disponible : NO_PUBKEY numéro-de-clé

# aptitude install debian-archive-keyring
# aptitude

Si ça ne suffit pas voir :

$ gpg --keyserver pgpkeys.mit.edu --recv-key numéro-de-clé
gpg: requesting key numéro-de-clé from hkp server pgpkeys.mit.edu
gpg: key numéro-de-clé: public key "Debian Archive Automatic Signing Key (2006) <ftpmaster@debian.org>" imported
gpg: Total number processed: 1
gpg:               imported: 1

$ gpg -a --export numéro-de-clé | sudo apt-key add -
gpg: no ultimately trusted keys found
OK

Installer depuis backport (n’est plus d’actualité) :
- sources.list :

deb http://www.backports.org/debian/ lenny-backports main contrib non-free


- commande :

aptitude install nom_du_paquet -t lenny-backports

 

Sur une Debian comment lister des paquets installés depuis une archive particulière, par exemple sur une testing quels sont les paquets installés depuis unstable :

aptitude search “ S i Aunstable”

Quels sont les paquets ajoutés depuis Experimental et afficher la version installée :

aptitude search -F ‘%p %V’ “ S i Aexperimental”

 Mise à jour automatique

D’après : http://linuxfr.org/news/un-peu-plus-de-securite-sous-linux#mises-%C3%A0-jour--cron-apt

aptitude install cron-apt

vi /etc/cron-apt/config
APTCOMMAND=/usr/bin/apt-get
MAILTO="mail@exemple.org"
MAILON="changes"

Pour la doc voir /usr/share/doc/cron-apt/README.gz

Par défaut, cron-apt est lancé chaque jour à 4 heure du matin. Pour modifier ce comportement voir le fichier /etc/cron.d/cron-apt.

Pour installer automatiquement les mises à jour disponibles :

vi  /etc/cron-apt/action.d/5-install
dist-upgrade -y -o APT::Get::Show-Upgraded=true

Pour limiter le process aux mises à jour de sécurité, créer un fichier nommé /etc/apt/security.list pour y mettre ceci :

deb http://security.debian.org/ wheezy/updates main contrib non-free
deb-src http://security.debian.org/ wheezy/updates main contrib non-free

Et décommenter dans le fichier /etc/cron-apt/config la ligne suivante :

OPTIONS="-o quiet=1 -o Dir::Etc::SourceList=/etc/apt/security.list"

Dorénavant cron-apt utilisera uniquement le fichier security.list pour vérifier la présence de mises à jour, et ignorera donc les mises à jour autres que celles de sécurité.

Les logs de l’application cron-apt sont dans /var/log/syslog

Commande pour faire une mise à jour automatique silencieuse (à utiliser avec précaution) :

aptitude update ; export DEBIAN_FRONTEND=noninteractive ; yes '' | apt-get -y -o Dpkg::Options::="--force-confdef" -o Dpkg::Options::="--force-confold" dist-upgrade

 apt-cacher-ng

Infos
Suite à des problème avec apt-cacher (Warning : libcurl failed), j’utilise apt-cacher-ng

Sources :
- https://www.isalo.org/wiki.debian-fr/Apt-cacher-ng

Installation, configuration
Sur le serveur :

aptitude install apt-cacher-ng

vi  /etc/apt/apt.conf.d/02proxy
Acquire::http { Proxy "http://127.0.0.1:3142"; };

Pour changer le répertoire de destination, par exemple /mnt/apt-cacher-ng

service apt-cacher-ng stop

vi /etc/apt-cacher-ng/acng.conf
#CacheDir: /var/cache/apt-cacher-ng
CacheDir: /mnt/apt-cacher-ng/

chown apt-cacher-ng:apt-cacher-ng /mnt/apt-cacher-ng/ -R

service apt-cacher-ng start

Sur les clients :

vi  /etc/apt/apt.conf
Acquire::http { Proxy "http://192.168.0.1:3142"; };

aptitude update

On peut voir que l’appel au serveur est bien fait avec :

serveurapt# tcpdump host ipclient and port 3142

Vider le cache

http://www.onlyubuntu.com/2014/01/deleting-the-apt-cacher-ng-cached-files.html

Dans le cas ou la partition sature, pour vider le cache, je n’ai pas trouvé autre chose que de vider complètement le cache :
- arrêter le service

service apt-cacher-ng start


- déplacer les fichiers
- recréer les fichiers de base avec les bon droits

cd /chemin/aptcacherng/
mkdir -p ./{headers,import,packages,private,temp}
chown -R apt-cacher-ng:apt-cacher-ng headers/ import/ packages/ private/ temp/


- redémarrer le service

service apt-cacher-ng start


- faire un test

aptitude update


- supprimer les fichiers,

 Alerte de mise à jour graphique

apt install -t jessie-backports pk-update-icon --no-install-recommends

La commande "pk-update-icon" doit se lancer automatiquement au démarrage. Dans mate, elle s’ajoute au démarrage avec le nom "Applet de mise à jour PackageKit". Pour avoir des infos sur le paramétrage "man pk-update-icon". Par défaut, elle attend 5 minutes avec de faire un check après démarrage, puis 1 jour pour le check suivant. Elle lance par défaut l’utilitaire gpk-update-viewer.