Clef USB de travail
Avertissement : Cet article peut être considéré comme plutôt technique. Le but n'est pas tellement d'expliquer pourquoi et comment j'utilise des outils informatiques, mais plutôt d'expliquer à celles et ceux qui les utilisent déjà comment les utiliser partout avec une clef USB.
Cela m'a pris pas mal de temps de mettre en place cette clef USB, donc je partage les informations utiles.
Préambule et Besoins
Je travaille exclusivement avec GNU/Linux (Debian pour être plus précis). J'utilise énormément la ligne de commande. À de rares exceptions près, tous les documents que je crée sont écrits en , et versionnés avec git. Je bidouille de temps en temps en Python (plutôt Python3) pour mes cours.
Mes besoins sont :
- pouvoir synchroniser automatiquement mes cours sur ma clef USB, et ceux sur mon ordinateur, pour ne rien perdre ;
- pouvoir, au lycée, corriger lesdits cours (en ), et pouvoir compiler ce document ;
- pouvoir utiliser git pour enregistrer les modifications.
Tout ceci se fait sur une clef USB de 4Go aux couleurs du lycée.
Cours
Mes cours sont versionnés avec git, et ma clef USB contient des clones des
dépôts de tous mes cours (je fais un dépôt par classe). La synchronisation est
donc évidente. Seuls les fichiers sont versionnés, pas les PDF. Pour
pouvoir synchroniser tous ces dépôts en une commande, j'utilise
myrepos, avec un fichier .mrconfig
placé
sur la clef USB.
Pour reconstruire automatiquement les PDF des fichiers modifiés, j'utilise Évariste (à l'heure où j'écris ces lignes, ce logiciel est encore en développement, et très peu documenté) ; ce logiciel n'a pas été écrit dans ce but, mais il se trouve qu'il remplit très bien cette tâche.
Logiciels
Framakey
L'association Framasoft réalise un très bon travail de rédaction et compilation d'applications portables, ainsi qu'un gestionnaire de paquet pour faciliter l'installation et la mise à jours desdits logiciels. Tout ceci est disponible dans un logiciel à installer sur clef USB.
Entre autres logiciels, on trouvera Firefox, gVim, un visionneur de PDF, etc.
Cygwin
À l'époque où la Framakey LaTeX n'était pas encore disponible (je n'ai pas testé cette dernière ; je ne sais pas ce qu'elle vaut, même si j'ai plutôt confiance en le travail de Framasoft), j'ai installé Cygwin pour pouvoir retrouver mes outils favoris en ligne de commande, dont LaTeX.
Téléchargement et Installation
Une version portable de Cygwin a été réalisée (téléchargement). Après installation sur la clef USB, il est possible d'installer de nouveaux logiciels.
Raccourci
Un problème avec cette méthode est qu'on ne sait pas à l'avance, avant de
brancher la clef, quelle lettre de lecteur va lui être attribué. Cela rend
difficile l'écriture de scripts, et l'ajout de chemins au PATH
(décrit dans
la partie MikTeX). Voici comment corriger cela.
Jeff Valore a écrit
un article détaillant comment rendre Cygwin portable. Je n'ai pas tout appliqué
(Cygwin portable en rend une bonne partie inutile), mais j'ai tout de même
extrait des choses intéressantes, notamment le lanceur suivant (fichier
.bat
).
REM Get current drive letter into WD. for /F %%A in ('cd') do set WD=%%~dA REM Start cygwin portable\cygwin\CygwinPortable.exe REM Open a terminal portable\cygwin\CygwinPortable.exe -path .
Lorsque j'exécute ce script, il lance cygwin et ouvre une console, et je peux
ensuite récupérer la lettre de lecteur dans la variable d'environnement WD
.
La commande suivante, dans le .bashrc
, permet d'affecter le chemin absolu
de la racine de la clef USB à la variable keydir
.
## Définition d'une variable vers le chemin absolu de la clef, et d'autres variables keydir="/cygdrive/$(echo ${WD,,} | cut -c1)"
Mise à jour
La version portable fournie est assez vieille, et beaucoup de paquets manquent. Pour pallier ce problème, j'ai installé la version setup-x86.exe fournie par Cygwin (donc pas prévue, à priori, pour être portable). Jusqu'ici, tout semble fonctionner…
L'équipe de MikTeX fournit une version portable, donc le gros du travail est fait. Il reste ensuite à l'intégrer à la clef.
La commande suivante dans le
.bashrc
permet d'ajouter le répertoire de MikTeX auPATH
, rendant les différentes commandes accessibles depuis la console cygwin.# Ajout de LaTeX (par miktex) au path export PATH="$PATH:$keydir/portable/miktex/miktex/bin"
Enfin, la commande suivante permet d'ajouter mes classes personnalisées à l'environnement . Ces classes sont dans leur propre dépôt git sur la clef USB ; reste à ajouter le répertoire à l'environnement , toujours dans le
.bashrc
.# Mes classes LaTeX export TEXINPUTS="$TEXINPUTS;$(echo $keydir | sed 's+.*/\([^/]*\)+\U\1+'):/prof/latex"
Notons que la syntaxe diffère de l'habitude unixienne (par l'utilisation d'un point virgule pour séparer les chemins), et qu'une petite manipulation est nécessaire pour récupérer la lettre du lecteur, en majuscule.
Python
J'ai essayé différentes manières d'installer Python, mais le fait que l'installation doive être à la fois portable et sur une clef USB m'a donné du fil à retordre. J'ai essayé :
- PythonPortable, qui était à mon avis la meilleure solution, mais n'est plus maintenu ;
- WinPython, mais il inclut par défaut beaucoup trop de paquets pour mon utilisation (même si la plupart peuvent être désinstallés par la suite), et il ne semble pas être conçu pour une utilisation conjointe des deux versions python2 et python3 : lors de mes tests, les scripts et binaires se mélangeaient les pinceaux entre les deux versions de WinPython installées, et la version fournie par Cygwin.
J'ai finalement opté pour l'installation des versions de Python 2 et 3 fournies
par Cygwin, mais pip
a posé problème.
Pip
Malheureusement, pip (gestionnaire de paquets pour Python, permettant l'installation de nouveaux paquets et programmes) n'est fourni par Cygwin ni pour python2 ni pour python3. Il a donc fallu l'installer en suivant les instructions officielles.
Le problème de pip
sur clef USB (à moins que ce ne soit pip
avec Cygwin) est
que l'obtention d'un verrou sur un fichier (avec le module
lockfile)
ne fonctionne pas, ou alors pas toujours, et l'installation bloquait à cet
endroit. Pour remédier à cela, j'ai, en utilisant
pdb, mis le programme en pause
une fois pip
téléchargé dans un répertoire temporaire, et modifié la fonction
load_selfcheck_statefile
pour utiliser VirtualenvSelfCheckState
plutôt que GlobalSelfCheckState
. Je
ne suis pas sûr des conséquences, mais cela a fonctionné.
Enfin, j'ai pu installer des paquets et programmes avec pip
. J'ai été
confronté au même problème avec lockfile
, donc j'ai à nouveau fait la même
manipulation que précédemment, mais dans le répertoire d'installation de pip
cette fois-ci, et j'ai enfin été capable d'installer
pdfautonup, et de l'utiliser.
Bilan
Pas évident, beaucoup de bidouilles, mais ça fonctionne…
Mathématiques
Quelques programmes mathématiques.
- Géogebra (détails)fournit une version portable du logiciel.
- xcas est portable par essence ; il n'y a donc rien de spécial à faire.
Sauvegardes
Cela me ferait de la peine de perdre tout ce travail, c'est pourquoi je fais régulièrement des sauvegardes.