Contenu | Rechercher | Menus

Annonce

Si vous rencontrez des soucis à rester connecté sur le forum (ou si vous avez perdu votre mot de passe) déconnectez-vous et reconnectez-vous depuis cette page, en cochant la case "Me connecter automatiquement lors de mes prochaines visites".
Test de l'ISO d'Ubuntu francophone : nous avons besoin de testeurs pour la version francophone d'Ubuntu 14.04. Liens et informations ici.

Attention, une faille de sécurité dans bash a récemment été rapportée, il est recommandé de mettre à jour son système (plus de détails)

#1 Le 03/11/2012, à 12:32

Charles Martin

[Résolu]Apt-get history

Bonjour à tous.

Après chaque nouvelle installation, je dois réinstaller tous mes programmes, plus quelques commandes.
J'ai cherché une fonction d'historisation pour l'apt-get.
Il y a bien quelques méthodes, comme :

history | grep apt-get

Mais les logs sont temporaires.
J'ai fait un petit script très simple  :

trace.sh

$@
echo $@ | tee -a trace-history.txt

Il me suffit alors de faire "trace.sh ma_commande_a_tracer mes_paramètres"
Et le résultat est enregistré dans le fichier trace-history.txt

Suis-je le seul à avoir fait quelque chose comme ça ?
Des suggestions pour l'améliorer ou faire autrement ?

Dernière modification par Charles Martin (Le 03/11/2012, à 21:35)


Alienware M14x
Processor : Intel Core i7-3610QM (6MB Cache, up to 3.3GHz w/ Turbo Boost 2.0) - Graphics : 2GB GDDR5 NVIDIA GeForce GT 650M
Sound Card : Creative Sound Blaster Recon3Di with THX TruStudio Pro Software - Wireless : Killer Wireless-N 1202

Hors ligne

#2 Le 03/11/2012, à 12:41

cracolinux

Re : [Résolu]Apt-get history

Euh il y a pas un soucis dans ton script là ?


Pixup : postez vos images vite et bien
« Ne devenez jamais pessimiste. Un pessimiste a plus souvent raison qu'un optimiste, mais l'optimiste s'amuse plus — et aucun des deux ne peut arrêter la marche du monde. » R.Heinlein

Hors ligne

#3 Le 03/11/2012, à 12:43

serged

Re : [Résolu]Apt-get history

Je ne vois pas trop ce que fait ton script, sinon, reprendre la fonction "history".

Surtout que apt-get doit se faire avec sudo...

Pour avoir la liste des paquets installés (tu peux avoir fait tes installations, soit avec apt-get, soit aptitude, soit synaptic, soit la logithèque etc.), il te suffit de faire :

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

Et pour restaurer :

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

Linux-Mint Qiana 64 (Cinnamon) sur ASUS F2A55/AMD A8-5600K APU

Hors ligne

#4 Le 03/11/2012, à 12:47

cracolinux

Re : [Résolu]Apt-get history

Je crois qu'il veut logguer dans un fichier toutes les commandes d'un type contenues dans l'historique.
Exemple :

avoir un fichier trace-history.txt avec toutes les lignes contenant apt-get de son historique.
Je suppose que le but est de faire un pense bête ou simplement de sauvegarder la chronologie des commandes et pas seulement pour apt-get.
Mais je me trompe peut-etre.

Dans tout les cas, le script ne fonctionne pas.


Pixup : postez vos images vite et bien
« Ne devenez jamais pessimiste. Un pessimiste a plus souvent raison qu'un optimiste, mais l'optimiste s'amuse plus — et aucun des deux ne peut arrêter la marche du monde. » R.Heinlein

Hors ligne

#5 Le 03/11/2012, à 13:52

Bousky

Re : [Résolu]Apt-get history

Lors de l'appel de la commande, il faut mettre des guillemets doubles autour du « $@ », sinon il est absolument impossible d'utiliser un argument avec des espaces (même en mettant des guillemets). Sans, « commande "argument avec des espaces" » devient « 'commande' '"argument' 'avec' 'des' 'espaces"'. Ensuite je ne suis pas sûr qu'afficher la commande (qui est déjà affichée dans la ligne de commande tongue ) servent à autre chose qu'à polluer le terminal. Je mettrai l'enregistrement de la commande avant son exécution, on sait jamais si elle plante le PC… Et pour ce genre de petit utilitaire, je préfère utiliser une fonction déclarer dans le fichier « .bash_aliases » (ça marche aussi dans le .bashrc (.bash_aliases est inclus dedans), mais je trouve ça plus propre). Il est aussi possible d'activer l'auto-complétion en prenant exemple sur ce qui est fait pour « sudo ». Mettre une extension à ce genre de ficher, ça fait très « Windows » tongue Et à mon avis il vaut mieux en faire un fichier caché. Par contre il faut utiliser un chemin absolu pour le fichier, sinon ça va poser des problème si jamais tu utilises « cd ». Enfin, si tu veux que ce qui est écrit dans le fichier puisse toujours être ré-entré tel-quel dans le terminal, il faut ruser un peu.

En résumé :

function trace { 
    printf '%q ' "$@" >> ~/.trace
    echo >> ~/.trace
    "$@"
}
complete -o filenames -F _command trace

Linux qui plante complètement ? Plus rien ne répond ? On peut toujours le redémarrer proprement :
Alt + SysRq + REISUB (Retourne En Islande Sur Un Bateau !)

Hors ligne

#6 Le 03/11/2012, à 13:56

PengouinPdt

Re : [Résolu]Apt-get history

Euhhh, très simplement :

sudo apt-get xxx | tee apt-get.txt

Et, à améliorer absolument ;-)

Hors ligne

#7 Le 03/11/2012, à 15:23

Charles Martin

Re : [Résolu]Apt-get history

L'idée de base était tracer tout les apt-get.
J'ai ensuite rendu mon script un peu plus générique pour tracer toute commande que je veux garder dans l'objectif de les réexécuter lors d'une future install,
comme l'a fait remarquer cracolinux.

Par contre, je ne comprend pas pourquoi le script ne marche pas pour vous.
J'ai exécuté la commande suivante avec succès :

./trace.sh sudo apt-get install vlc

=> Et dans le fichier trace-history.txt, il a ajouté la ligne

sudo apt-get install vlc

--
Concernant le script trace.sh, je suggère de le modifier comme ceci, afin d'être plus standard:

#!/bin/sh

$@
echo $@ | tee -a trace-history.txt

Dernière modification par Charles Martin (Le 03/11/2012, à 15:27)


Alienware M14x
Processor : Intel Core i7-3610QM (6MB Cache, up to 3.3GHz w/ Turbo Boost 2.0) - Graphics : 2GB GDDR5 NVIDIA GeForce GT 650M
Sound Card : Creative Sound Blaster Recon3Di with THX TruStudio Pro Software - Wireless : Killer Wireless-N 1202

Hors ligne

#8 Le 03/11/2012, à 15:43

Charles Martin

Re : [Résolu]Apt-get history

PengouinPdt a écrit :

Euhhh, très simplement :

sudo apt-get xxx | tee apt-get.txt

Et, à améliorer absolument ;-)

Après execution de la commande (pour vlc), j'ai obtenu dans apt-get.txt le contenu ci-dessous.
Ce n'est pas ce que j'ai prévu de tracer. Je ne peux pas le réutiliser pour une installation ultérieure.

Lecture des listes de paquets...
Construction de l'arbre des dépendances...
Lecture des informations d'état...
Paquets suggérés :
  videolan-doc
Les NOUVEAUX paquets suivants seront installés :
  vlc
0 mis à jour, 1 nouvellement installés, 0 à enlever et 56 non mis à jour.
Il est nécessaire de prendre 1 048 ko dans les archives.
Après cette opération, 3 527 ko d'espace disque supplémentaires seront utilisés.
Réception de :1 http://fr.archive.ubuntu.com/ubuntu/ quantal/universe vlc amd64 2.0.4-0ubuntu1 [1 048 kB]
1 048 ko réceptionnés en 3s (286 ko/s)
Sélection du paquet vlc précédemment désélectionné.
(Lecture de la base de données... 
(Lecture de la base de données... 5%
(Lecture de la base de données... 10%
(Lecture de la base de données... 15%
(Lecture de la base de données... 20%
(Lecture de la base de données... 25%
(Lecture de la base de données... 30%
(Lecture de la base de données... 35%
(Lecture de la base de données... 40%
(Lecture de la base de données... 45%
(Lecture de la base de données... 50%
(Lecture de la base de données... 55%
(Lecture de la base de données... 60%
(Lecture de la base de données... 65%
(Lecture de la base de données... 70%
(Lecture de la base de données... 75%
(Lecture de la base de données... 80%
(Lecture de la base de données... 85%
(Lecture de la base de données... 90%
(Lecture de la base de données... 95%
(Lecture de la base de données... 100%
(Lecture de la base de données... 184021 fichiers et répertoires déjà installés.)
Dépaquetage de vlc (à partir de .../vlc_2.0.4-0ubuntu1_amd64.deb) ...
Traitement des actions différées (« triggers ») pour « mime-support »...
Traitement des actions différées (« triggers ») pour « vlc-nox »...
Traitement des actions différées (« triggers ») pour « man-db »...
Traitement des actions différées (« triggers ») pour « desktop-file-utils »...
Traitement des actions différées (« triggers ») pour « bamfdaemon »...
Rebuilding /usr/share/applications/bamf.index...
Traitement des actions différées (« triggers ») pour « gnome-menus »...
Paramétrage de vlc (2.0.4-0ubuntu1) ...

Alienware M14x
Processor : Intel Core i7-3610QM (6MB Cache, up to 3.3GHz w/ Turbo Boost 2.0) - Graphics : 2GB GDDR5 NVIDIA GeForce GT 650M
Sound Card : Creative Sound Blaster Recon3Di with THX TruStudio Pro Software - Wireless : Killer Wireless-N 1202

Hors ligne

#9 Le 03/11/2012, à 15:53

Charles Martin

Re : [Résolu]Apt-get history

Et concernant la réponse de Bousky, l'ajout de l'autosuggestion, les chemins complets, les quotes, ce sont de très bonnes idées.
Mais je n'ai pas réussi à exécuter le script :

function trace { 
    printf '%q ' "$@" >> ~/.trace
    echo >> ~/.trace
    "$@"
}
complete -o filenames -F _command trace

Il faut metter ça dans un fichier sh executable ? Ou je n'ai pas tout saisi ?


Alienware M14x
Processor : Intel Core i7-3610QM (6MB Cache, up to 3.3GHz w/ Turbo Boost 2.0) - Graphics : 2GB GDDR5 NVIDIA GeForce GT 650M
Sound Card : Creative Sound Blaster Recon3Di with THX TruStudio Pro Software - Wireless : Killer Wireless-N 1202

Hors ligne

#10 Le 03/11/2012, à 19:27

Bousky

Re : [Résolu]Apt-get history

Comme je l'ai dit quelque part au milieu du pavé, c'est à copier dans le fichier .bashrc ou, plus propre, dans le fichier .bash_aliases (s'il n'existe pas, il suffit de le créer). Et ensuite tu l'appelles sous la forme :

trace commande

Linux qui plante complètement ? Plus rien ne répond ? On peut toujours le redémarrer proprement :
Alt + SysRq + REISUB (Retourne En Islande Sur Un Bateau !)

Hors ligne

#11 Le 03/11/2012, à 21:35

Charles Martin

Re : [Résolu]Apt-get history

Merci Bousky !

Je vais rester la dessus.
Ca marche nikel.

Ca m'a permit d'apprendre les alias, c'est pratique.


Alienware M14x
Processor : Intel Core i7-3610QM (6MB Cache, up to 3.3GHz w/ Turbo Boost 2.0) - Graphics : 2GB GDDR5 NVIDIA GeForce GT 650M
Sound Card : Creative Sound Blaster Recon3Di with THX TruStudio Pro Software - Wireless : Killer Wireless-N 1202

Hors ligne

Haut de page ↑