J'ai installé un Ubuntu 10.10 standard sur mon ordinateur et quelques logiciels via apt-get. La semaine dernière, j’ai réussi à tout casser, à repartir de zéro et je dois réinstaller mon logiciel. Est-il possible de créer une liste avec tous les paquets que j'ai installés manuellement?
Pour qu'il me donne une liste comme texlive, ...
et non texlive, texlive-dep1, textlive-dep2, ...
et que tous les paquets standard soient supprimés?
Si je pouvais en quelque sorte déterminer quels programmes de l'installation standard que j'ai supprimés, ce serait génial aussi!
Mise à jour 2015-05-23: J'utilise maintenant Ansible comme gestion de la configuration sur mes systèmes. Là je spécifie les paquets à installer. Cela sert l'objectif, en installant tous les programmes sur un nouveau système, même mieux. Donc, cette question pourrait être l'entrée dans une gestion de configuration légère.
something
et passomething-common
aussi bien.Ce fil de superuser.com donne cette solution:
la source
apt-get
, ainsi que leurs dépendances. Ainsi, par exemple, si vous avez installéaptitude
, il sera également répertoriéapt-xapian-index aptitude-common libboost-iostreams1.54.0 libclass-accessor-perl libcwidget3 libept1.4.12 libio-string-perl libparse-debianchangelog-perl libsigc++-2.0-0c2a libsub-name-perl libtimedate-perl libxapian22 python-chardet python-debian python-six python-xapian
Si vos journaux apt sont dans / var / log / apt, quelque chose comme ceci devrait fonctionner:
Ou si vous souhaitez vous débarrasser de certaines des ordures répétitives de la sortie:
la source
Vous pouvez utiliser apt-mark , mais je recommande debfoster :
Cela va inspecter tous les paquets installés et déterminer quels sont ceux qui gardent les autres installés:
Au fur et à mesure que vous répondez "y" à chaque question (appuyez simplement sur la touche Entrée pour passer rapidement), debfoster collectera la liste des paquets et les écrira ligne par ligne dans un fichier. Par défaut c'est à
/var/lib/debfoster/keepers
. Cela ressemble à ceci:Je configure debfoster via
/etc/debfoster.conf
pour mettre cette liste sur/etc/debfoster-keepers
et suivre le fichier avec etckeeper pour conserver l’historique et les sauvegardes. La réponse ci - dessous montre comment installer une liste de paquets à partir d'un fichier texte délimité par une nouvelle ligne:Notez une limitation ici, les paquets que vous avez purgés ont un '-' devant eux. Donc, vous voulez supprimer ces lignes avant d'appeler apt-mark.
Bien que le site Web de debfoster indique que debfoster est déconseillé au profit d'aptitude, je préfère la configuration rapide et simple de debfoster. Il vous place au milieu de votre base de données de paquets et vous permet de tout nettoyer, rendant les paquets automatiques et manuels plus évidents.
Tapez "h" à l'invite de debfoster pour expliquer vos options. Tapez "?" pour voir la description du paquet. La marche à suivre ici pourrait être utile.
la source
Donne tous les paquets installés manuellement (pas les paquets système, pas les dépendances). Par exemple, cela montre
build-essential
mais pasgcc
.la source
Pour ceux qui préfèrent utiliser apt- * tools, un utilitaire apt-mark permet d'interroger et de modifier l'état manuel / automatique.
Vous pouvez également spécifier un modèle pour les paquets qui vous intéressent:
la source
Je l'ai enfin compris maintenant:
la source
/var/log/apt/history.log(.N.gz)
.zgrep
au lieu degunzip
ouzcat
canalisé àgrep
. Je crois que c’est un script qui accompagne gzip. Il accepte également les fichiers non compressés, vous pouvez donc simplifier votre script pourzgrep -E '(\[INSTALLIEREN\]|\[INSTALL\])' /var/log/aptitude* | awk '{ print $2 }'
Je peux tout extraire en ouvrant les fichiers journaux dans / var / log / apt /
Je vais ensuite filtrer manuellement les paquets apt-get install. Il y a peut-être un moyen de faire cela par programmation mais je ne le sais pas.
la source
De cette façon, vous voyez la liste des commandes exécutées dans le passé.
Supprimez le code grep si vous avez besoin de plus d'informations:
si le journal est compressé (finissez avec gz)
pour le compresser à nouveau lorsque vous avez terminé, vous pouvez faire:
la source
zcat
? C'est aussi simple quezcat filename.gz
. On peut simplement l'utiliser sur des fichiers compressés gzip à la place decat
.grep
Peut également être remplacé parzgrep
, par exemplezgrep Commandline history.log.1.gz
.(grep "Commandline" history.log ; zgrep "Commandline" history.log.*.gz ) | grep " install " | grep -v -- "--yes" | sed -r "s/^.*install //"
. Il comporte des failles, car les packages supprimés sont également répertoriés, et si un package a été installé plusieurs fois, il apparaît plusieurs fois.Je ne voyais aucune solution ici fonctionner, j’ai installé pas mal de paquets deb avec dpkg et quelques-uns des éléments que je recherchais particulièrement manquaient.
Une ligne assez longue, mais pratique pour copier et coller serait:
La commande ci-dessus enregistre une liste de packages dans un fichier de votre répertoire de travail actuel, nommé
my-packages
.Explication
J'ai d'abord construit une liste de paquets qui composaient la ligne de base des paquets sélectionnés lors de l'installation.
Suivie d'une longue liste d'éléments installés en général.
J'ai ensuite comparé les deux fichiers
initial
etinstalled
ne répertorier que les éléments uniques à installer.À partir de là, je voulais filtrer les dépendances. C’est ici que cette méthode peut manquer certains paquets souhaités, elle n’ignore pas les dépendances qui sont également installées explicitement.
J'ai écrit une fonction rapide bash pour raccourcir cette étape du traitement de ces éléments.
Après cela, j'ai passé chaque ligne de mon fichier
custom
dans cette fonction avecxargs
.Une fois que j'ai eu la longue liste de toutes les dépendances possibles (je ne suis pas sûr de toutes les déclarations possibles), j'ai à nouveau obtenu les lignes qui étaient uniques à un seul fichier.
Et ma liste finie de paquets est maintenant dans un fichier nommé
manual
que je peux consulter.la source
Quelqu'un lié à https://unix.stackexchange.com/questions/3595/ubuntu-list-explicitly-installed-packages/3624#3624 qui offre une bonne solution, mais ne se comporte pas correctement comme le résultat d'aptitude a changé. Voici une version mise à jour, basée sur les packages actuellement installés comparés à 12.04 LTS. Vous aurez besoin d'
aptitude
installer, c'est la seule exigence.Pour décomposer la commande ci-dessus en plusieurs parties, ce bit génère un paquet par ligne de tout ce qui est installé sur le système.
Et cela télécharge la liste de paquets par défaut et recadre les informations redondantes.
et
comm
compare les deux fichiers et affiche les paquets qui ne figurent pas dans la liste par défaut.la source
Utilisez un fichier manifeste de distribution comme jeu de packages de base. Triez les résultats manuellement installés en groupes de paquets par architecture et section, afin de vous concentrer plus facilement sur des groupes de paquets (peut-être que vous ne vous souciez pas de certaines sections).
https://gist.github.com/darrenleeweber/8cc570ff402f19af7fa4
la source
apt-get install -y
et que le fichier soit un script bash. Ensuite, tous les fichiers de package pourraient être inclus dans une boucle de fourniture de vagabond.la source
Je n'en ai trouvé aucun qui me convienne, alors j'ai écrit un script. En analysant les contenus de /var/log/apt/history.log* et de / var / log / aptitude, puis triez par date-heure, ce qui donne deux listes, l’une est manuellement installée, une autre pkgs, mais elle est supprimée. Script avec vérification 'apt list'. un petit écart, car l'utilisation de dpkg installé et modifié 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 d'avoir besoin de modifier du code, car mes fichiers journaux sont mélangés en chinois et en anglais (spécialement au format date / heure RFC2822), j'ai besoin de m'en occuper.
la source
Je pense que vous voulez utiliser
/var/log/apt/history.log
et ses amis pour donner les modifications qui ont été apportées:(Modifié à partir de la source )
Vous donnera tous les paquets qui ont été installés sur la ligne de commande en utilisant une variante de
apt-get install
.Il récupère les fichiers compressés dans l'ancien. Il
history.log
les ajoute au couranthistory.log
et passe par grep, en extrayant les lignes avec apt [-get] install [et / ou réinstaller] et en affichant le reste de la ligne (indicateur -o), ce qui revient à nom du paquet.Cela nécessitera un peu de modding (par exemple avec
sed
) si vous voulez juste les noms de paquets sur des lignes séparées; un exercice pour le lecteur!Il est à noter que le gestionnaire de paquets synaptic (
gksu synaptic
oukdesudo synaptic
) dans la section "statut" a une liste "installé (manuellement)". Si vous marquez toute la liste pour suppression [ne l'appliquez pas !!], vous devriez pouvoir sauvegarder les modifications marquées et obtenir une liste des paquets de cette façon. Attention: ceci est bloquésynaptic
pour moi (en calculant les suppressions de dépendance).la source