50 votes

Comment trouver les paquets installés manuellement ?

J'ai installé une Ubuntu 10.10 sur mon ordinateur et j'ai installé quelques logiciels via apt-get. La semaine dernière, j'ai réussi à tout casser et à repartir de zéro, et je dois réinstaller mes logiciels. Y a-t-il un moyen de créer une liste avec tous les paquets que j'ai installés manuellement ?

Ainsi, j'obtiendrais une liste du type texlive, ... et non texlive, texlive-dep1, textlive-dep2, ... et tous les paquets standard ont été supprimés ?

Si je pouvais savoir quels sont les programmes que j'ai supprimés de l'installation normale, ce serait génial aussi !


Mise à jour 2015-05-23 : J'utilise maintenant Ansible comme gestion de configuration sur mes systèmes. J'y spécifie les paquets à installer. Cela sert l'objectif, installer tous les programmes sur un système frais, encore mieux. Donc cette question pourrait être l'entrée dans une gestion de configuration légère.

0voto

johndrinkwater Points 515

Quelqu'un a fait un lien vers https://unix.stackexchange.com/questions/3595/ubuntu-list-explicitly-installed-packages/3624#3624 qui propose une bonne solution, mais qui ne se comporte pas correctement car la sortie d'aptitude a changé. Voici une version mise à jour, basée sur la comparaison des paquets actuellement installés par rapport à la version 12.04 LTS. Vous aurez besoin de aptitude installée, c'est la seule exigence.

aptitude search '~i !~M' -F '%p' | sort -u | tr -d ' ' > currentlyinstalled && wget -qO - http://mirror.pnl.gov/releases/precise/ubuntu-12.04.3-desktop-amd64.manifest | cut -f 1 | sort -u > defaultinstalled && comm -23 currentlyinstalled defaultinstalled

Pour décomposer la commande ci-dessus en plusieurs parties, cette partie produit un paquet par ligne de tout ce qui est installé sur le système

aptitude search '~i !~M' -F '%p' | sort -u | tr -d ' ' > currentlyinstalled

Cela permet de télécharger la liste des paquets par défaut et de supprimer les informations redondantes.

wget -qO - http://mirror.pnl.gov/releases/precise/ubuntu-12.04.3-desktop-amd64.manifest | cut -f 1 | sort -u > defaultinstalled

et comm compare les deux fichiers et affiche les paquets qui ne figurent pas dans la liste par défaut.

comm -23 currentlyinstalled defaultinstalled

0voto

Cameron Johnson Points 49
#! /bin/sh
DEFAULT=`tempfile`
CURRENT=`tempfile`
cat /var/log/installer/initial-status.gz | gzip -d | grep '^Package:' | awk '{ print $2}' | sort -u > $DEFAULT
aptitude search '~i !~M' -F '%p' | sort -u | tr -d ' ' | awk '{ print $1}' > $CURRENT
comm -23 $CURRENT $DEFAULT
rm $DEFAULT
rm $CURRENT

0voto

Darren Weber Points 113

Utiliser un fichier manifeste de distribution comme ensemble de paquets de base. Trier les résultats des installations manuelles en groupes de paquets par architecture et par section, afin de se concentrer plus facilement sur des groupes de paquets (il se peut que certaines sections ne vous intéressent pas).

https://gist.github.com/darrenleeweber/8cc570ff402f19af7fa4

#!/bin/bash

manifest_url='http://releases.ubuntu.com/releases/trusty/ubuntu-14.04.3-desktop-amd64.manifest'
manifest_file=$(echo $manifest_url | sed -e 's#.*/##g')
if [ ! -e $manifest_file ]; then
    wget -q $manifest_url
fi
cat $manifest_file | cut -f1 | sort -u > default_installed.txt

aptitude search '~i !~M' -F '%p' --disable-columns | sort -u > currently_installed.txt

comm -23 currently_installed.txt default_installed.txt > manually_installed.txt

# sort the 'mannually_installed.txt' packages by architecture and section
mkdir -p package_files
while read p; do
    apt-cache show $p > info.txt
    arch=$(grep -m1 'Architecture: ' info.txt | sed -e 's/Architecture: //')
    section=$(grep -m1 'Section: ' info.txt | sed -e 's/Section: //' -e 's/\//_/g')
    file="${arch}_${section}_packages.txt"
    echo $p >> "package_files/$file"
done <manually_installed.txt

rm info.txt

0voto

eexpress Points 251

Je n'en ai pas trouvé qui me convienne, alors j'ai écrit un script. En analysant le contenu de /var/log/apt/history.log* et /var/log/aptitude, puis en triant par date, il en résulte deux listes, l'une contient les pkgs installés manuellement, l'autre les pkgs installés mais supprimés. script avec la vérification 'apt list'. une petite déviation, car l'utilisation de dpkg installé et modifié la source PPA.

Je mets ici, https://github.com/eexpress/eexp-bin/blob/master/self-installed-pkg.pl .

si quelqu'un a besoin de le tester, peut-être qu'il faut modifier certains codes, car mes fichiers de logs sont mélangés en chinois et en anglais (notamment le format datetime RFC2822), il faut que je m'en occupe. enter image description here

0voto

pbhj Points 2878

Je pense que vous voulez utiliser /var/log/apt/history.log et ses amis pour leur faire part des changements intervenus :

zcat /var/log/apt/history.log.*.gz | cat - /var/log/apt/history.log | grep -Po '^Commandline: apt(?:-get)? install (?!.*--reinstall)\K.*'

(Modifié à partir de source )

Vous donnera tous les paquets qui ont été installés à la ligne de commande en utilisant une variante de apt-get install .

Il récupère les fichiers zippés dans l'ancien history.log les ajoute à la liste actuelle des history.log et passe par grep, en extrayant les lignes avec apt[-get] install [et/ou reinstall] et en affichant le reste de la ligne (drapeau -o) qui correspond au(x) nom(s) du paquet.

Cela nécessitera un peu d'adaptation (par exemple avec sed ) si vous ne voulez que les noms des paquets sur des lignes séparées ; un exercice pour le lecteur !

Il convient de noter que le gestionnaire de paquets synaptique ( gksu synaptic ou kdesudo synaptic ) dans la section "status" contient une liste "installed(manually)". Si vous marquez toute la liste pour suppression [ne l'appliquez pas !], vous devriez pouvoir enregistrer les modifications marquées et obtenir une liste de paquets de cette manière. Attention : ce qui est enfermé synaptic pour moi (en calculant vraisemblablement les suppressions de dépendances).

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X