139 votes

Comment obtenir l'historique de "apt-get install" sur Ubuntu ?

Je suis sur le point de déplacer un serveur d'une boîte Ubuntu à une autre. Je ne clone pas l'ancienne boîte vers la nouvelle ; je crée un nouveau système et je déplacerai les données si nécessaire. Je veux installer tous les logiciels que j'ai sur l'ancienne boîte sur la nouvelle.

Existe-t-il un moyen simple de retrouver l'historique de toutes les commandes "sudo apt-get install" que j'ai données au fil du temps ? En effet, dpkg -l me montre tous les paquets qui ont été installés, mais pas quel paquet de premier niveau les a installés. S'il existe un moyen pour dpkg de me donner le paquet d'installation, je peux y trouver les paquets uniques ; sinon, je veux quelque chose d'autre pour dire "vous avez installé ces 24 paquets".

1 votes

Pouvez-vous accepter une réponse ci-dessous ? Pour être reconnaissant aux personnes qui ont répondu.

0 votes

3voto

Prent Rodgers Points 39
grep -i "Commandline" /var/log/apt/history.log

Montre tous les paquets que vous avez installés en utilisant : sudo apt-get install xxxxx

0 votes

Cela ne diffère pas suffisamment de la réponse de @aphink et devrait être un commentaire de celle-ci.

0voto

TooTone Points 103

Les autres réponses m'ont aidé mais m'ont donné trop de résultats. Pour réduire le nombre de résultats, j'ai commencé avec apt-mark showmanual dans le cas de cette réponse et a ensuite filtré les paquets installés à l'origine (cf. cette réponse pour savoir comment obtenir une liste des paquets installés à l'origine ; j'utilise ubuntu 18.04.2 d'où le lien ci-dessous).

BASE_PACKAGES_MANIFEST=http://releases.ubuntu.com/18.04.2/ubuntu-18.04.2-desktop-amd64.manifest
REMOVE_VERSIONS_REGEX='[0-9][.-][0-9][.-][0-9]|[0-9][.-][0-9]|[0-9]'
paste  <( apt-mark showmanual ) <( apt-mark showmanual | sed -r "s/$REMOVE_VERSIONS_REGEX//g" ) |
    grep -vf <( curl $BASE_PACKAGES_MANIFEST | cut -f1 | sed -r "s/$REMOVE_VERSIONS_REGEX|:amd//g" ) |
    cut -f1 |
    sort |
    uniq

Le script filtre les paquets qui étaient dans le manifeste d'origine en effectuant une comparaison indépendante de la version, de sorte que les paquets mis à niveau n'apparaissent pas dans la liste. Je me suis retrouvé avec une liste d'environ 60 paquets.

L'autre façon que j'aime est cette réponse qui recherche tous les journaux d'apt .

0voto

hashchange Points 276

Obtenir une liste épurée s'est avéré être un peu plus compliqué que je ne l'imaginais. En fin de compte, je l'ai emballé dans un bash script ( export-custom-packages ). Jetez-y un coup d'œil et utilisez-le si vous le souhaitez. Il s'agit de

  • analyse l'historique.log d'Apt ainsi que les logs archivés
  • liste uniquement les paquets qui ont été installés manuellement
  • exclut les paquets qui ont été installés, puis désinstallés
  • crée et met à jour un fichier journal séparé pour ces paquets, ce qui les empêche de disparaître du radar une fois que les journaux archivés d'Apt sont purgés.

"Setup" :

sudo curl -o /usr/local/bin/export-custom-packages https://gist.githubusercontent.com/hashchange/7ec8185b2fce93b5ac490f4ae0809bda/raw/21b0646475da7cfeb5b7c7703b2238b336dfa3d7/export-custom-packages
sudo chmod +x /usr/local/bin/export-custom-packages

Utilisation : Voir export-custom-packages --help .

El Le code annoté est sur Github .

-1voto

Hartmut Pfarr Points 157

Pour obtenir la liste des paquets installés les plus récents par ordre décroissant, j'aime utiliser (par exemple 25 lignes) :

tac /var/log/apt/history.log |head --lines=25

2 votes

Plus efficace (et allitératif) serait : tail -25 /var/log/apt/history.log | tac

0 votes

Cela ne diffère pas suffisamment de la réponse de @aphink et devrait être un commentaire de celle-ci.

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