web-dev-qa-db-fra.com

Comment suivez-vous quels packages ont été installés sur Ubuntu (Linux)?

(Cette question est très similaire à 10458 . Il a été suggéré que Fedora et Ubuntu/Debian soient suffisamment différents pour garantir des réponses différentes.)

Comme j'utilise toute configuration Ubuntu, j'ai progressivement installé un certain nombre de packages sur l'installation de base et au-dessus de l'installation de base. Si je réinstalle, ou si j'ai besoin d'installer une nouvelle machine, je veux généralement réinstaller ces paquets spécifiques , et je veux le faire rapidement pour obtenir retour au travail avec un minimum de tracas. Autant que j'ai vu tous les gestionnaires de colis (apt-get, aptitude _ synaptic) peut me dire quels paquets sont installés et ils ont tous des journaux (même différents pour chaque outil, qui est un tracas). Mais aucun d'entre eux ne peut me dire quels packages j'ai installé, par opposition à leurs dépendances ou à des mises à jour du système. Même les bûches sont délicates dans ce que je ne suis pas tout à fait sûr de ce que je devrais extraire d'eux, ou comment les intégrer (dans le cas des différents outils familiaux apt). Cela signifie que chaque fois que je réinstalle, voire de sauvegarder, je ne sais pas comment recréer cette liste.

Je n'attends pas nécessairement que aucun des outils pour le faire pour moi, mais si elles ne cherchent pas de solution de contournement. Même des motifs au grep pour, de bonnes règles de pouce ou d'une idée claire de ce qui est enregistré exactement, serait utile. Il n'ya peut-être pas de "meilleure réponse" ici mais de bons seraient très utiles.


La plupart des réponses ci-dessous fournissent une approximation de ce que je recherche et sont utiles dans une certaine mesure. Le choisi est celui qui se rapproche de manière raisonnablement automatique de réinstaller mes outils sur un nouveau système, même avec toutes ses mises en garde.

38
quark

Sur n'importe quelle machine basée à Debian, il s'agit d'un moyen courant de dupliquer un ensemble de packages. Sur l'ancienne machine:

dpkg --get-selections "*" > my_favorite_packages

Copier le fichier my_favorite_packages À la nouvelle machine (une clé USB est une bonne option, mais scp fonctionne également bien). Ensuite, exécutez cette séquence (avec des privilèges root):

apt-get update
dpkg --set-selections < my_favorite_packages
apt-get -u dselect-upgrade

Cela ne vous obtient pas seulement Les paquets que vous avez installés. Il reçoit également leurs dépendances, etc. également, si les référentiels entre les deux machines sont différents, tous les paris sont éteints.

En ce qui concerne les journaux, apt-get garde un journal à /var/log/apt/history.log (Merci à Tshepang pour mettre à jour cela dans un commentaire); dpkg fait (à /var/log/dpkg.log), mais il est célèbre à analyser et ne peut être lu que avec des privilèges root; aptitude en a un à /var/log/aptitude Et vous pouvez utiliser une page avec des privilèges utilisateur réguliers.

Pour autant que je sache, vous avez raison qu'aucun de ces journaux ne suivent spécifiquement ce que vous avez installé, par opposition aux dépendances automatiquement installées. Vous pouvez toutefois obtenir cette information à partir d'une recherche aptitude. Recherchez tous les packages installés également installés automatiquement:

aptitude search '~i ~M'

Si vous voulez seulement Ceux que vous avez installés (pas les dépendances automatiques), nier le ~M:

aptitude search '~i !~M'

Si vous voulez cela formaté de manière à avoir seulement Les noms des packages et le mot "installer", aptitude peut le faire aussi. Cela vous donne une liste prête à nourrir à dpkg --get-selections:

aptitude search '~i !~M' -F "%p install"

(Je n'ai rien sur Redhat ou Redhat Systems. Désolé. Il n'y a vraiment personne de réponse pour Linux en soi Etant donné que la gestion de paquets est une grande partie de la distribution différente Différents.)

31
Telemachus

Utilisation dpkg -l '*' > jaunty.original Pour remonter tous les paquets installés sur un système fraîchement installé.

Après avoir installé tous vos paquets supplémentaires, do dpkg -l '*' > mysystem.2009017.

Les paquets supplémentaires sont juste la différence: diff jaunty.original mysystem.2009017

7
Ludwig Weinzierl

L'aptitude est en fait assez bonne à cela. Aptitude savent quand quelque chose a été installé à la main ou par dépendance et vous pouvez le dire de supprimer des objets qui ne sont plus nécessaires et qui n'étaient installés que parce que quelque chose d'autre dépendait de votre système aussi petit que possible.

Il y a une poignée de packages qui constituent une installation Ubuntu, Ubuntu-Minimal, Ubuntu-Desktop, Ubuntu-Server, etc. Si vous dites à l'aptitude de marquer ceux qui sont installés manuellement et de supprimer tout le reste, vous vous retrouvez avec la quantité minimale possible des packages.

J'explique comment faire tout cela dans deux messages sur mon blog: Nettoyant un debian GNU/Linux et Nettoyant un debian GNU/Linux (ou Ubuntu), repuise . En bref, la réponse que vous recherchez est la suivante:

aptitude search ~i | grep -v "i A"

La dernière fois que j'ai travaillé avec cela, si vous avez utilisé apt-get, alors cela n'a pas fonctionné. C'est pourquoi je vous recommande toujours d'aptitude et aussi loin que je sache, Debian est en désaccordant apt-get en faveur de l'aptitude.

Je ne sais pas comment le faire sur Fedora et vous devriez probablement séparer que dans une question différente. Fedora et Ubuntu sont des systèmes d'exploitation différents et doivent être traités comme tels (même s'ils partagent leur noyau et une autre autre chose).

3
pupeno

Sur Debian APT-Show-Versions Affiche les versions des packages installés.

2
seb

Lorsque vous utilisez simplement dpkg Vous ne savez pas si le package a été installé manuellement par l'utilisateur ou automatiquement (comme une dépendance ou lors de l'installation initiale du système d'exploitation). Si vous souhaitez conserver ces informations, vous devez obtenir une liste des packages uniquement installés manuellement.

Pour cela, vous pouvez utiliser l'un de ces deux doublures. Tous deux donnent exactement la même sortie sur ma machine et sont plus précis que toutes les solutions proposées jusqu'à présent dans cette question. Ils sont une combinaison des deux réponses (((1) et ((2) . Notez que j'ai initialement publié cette réponse ici .

en utilisant apt-mark:

comm -23 <(apt-mark showmanual | sort -u) <(gzip -dc /var/log/installer/initial-status.gz | sed -n 's/^Package: //p' | sort -u)

en utilisant aptitude:

comm -23 <(aptitude search '~i !~M' -F '%p' | sed "s/ *$//" | sort -u) <(gzip -dc /var/log/installer/initial-status.gz | sed -n 's/^Package: //p' | sort -u)

Très peu de forfaits tombent toujours à travers les fissures, bien que je soupçonne ces sont En fait installé par l'utilisateur, juste après l'installation via la configuration de localisation de la langue ou par E. à travers le programme d'installation du codec Totem. En outre, les versions de l'en-tête Linux semblent également accumuler, même si je n'ai installé que la métapackage non spécifique à la version. Exemples:

libreoffice-help-en-gb
openoffice.org-hyphenation
gstreamer0.10-fluendo-mp3
linux-headers-3.13.0-29    

Comment ça marche

  1. Obtenez la liste des packages installés manuellement. Pour aptitude, le supplément sed élimine les espaces restants à la fin de la ligne.
  2. Obtenez la liste des packages installés juste après une nouvelle installation.
  3. Comparez les fichiers, seule la sortie des lignes dans le fichier 1 qui ne sont pas présentes dans le fichier 2.

Autres possibilités ne fonctionnent pas aussi bien:

  • En utilisant le ubuntu-14.04-desktop-AMD64.manifest Fichier ( ICI pour Ubuntu 14.04) au lieu de /var/log/installer/initial-status.gz. Plus d'emballages sont indiqués manuellement, même s'ils ne le sont pas.
  • En utilisant apt-mark showauto à la place de /var/log/installer/initial-status.gz. apt-mark Par exemple, n'inclut pas le package XServer-Xorg, tandis que l'autre fichier le fait.

Les deux répertorient plus de packages que la solution ci-dessus.

1
jmiserez

Sur les systèmes à base d'apt, regardez /var/log/apt/term.log. Pour moi, il y a une ligne assez claire pour dessiner où l'installation s'est terminée et où mes installations ont commencé.

1
Wade

Je suis biaisé et la solution que je présente n'est pas toujours possible, mais j'en ai marre de cette situation. Le résultat est que je n'installez plus rien avec les outils de mise à jour/package Manager.

J'ai pris une route assez difficile si (j'avais des exigences strictes pour les versions). J'ai créé un énorme maquillage qui télécharge, compile et installer dans mon annuaire de domicile chaque paquet (programme, bibliothèque, peu importe). Je l'ai développé par étapes, pièce par pièce. Le maquillage télécharge et compile tout, même les compilateurs.

Lorsque je passe à un nouveau système ou réinstallez, je copie simplement le makefile (plus certains trucs de soutien), courez dans le monde et revenez le lendemain.

Pour certains programmes, je développe (j'ai donc le contrôle sur), j'utilise un outil que j'ai programmé, gestionnaire de paquets de châtaignes . Sorte de dossiers similaires sur macosx. Tout est dans l'emballage, alors je sais ce qui est installé à tout moment et je sais que c'est autonome et autonome (sauf pour les libs système)

0
Stefano Borini