<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom"><title>Marin Lagacé - Système d'opération</title><link href="https://www.marinlagace.ca/" rel="alternate"></link><link href="https://www.marinlagace.ca/feeds/systeme-doperation.atom.xml" rel="self"></link><id>https://www.marinlagace.ca/</id><updated>2020-06-12T21:20:00-04:00</updated><entry><title>Cygwin Portable</title><link href="https://www.marinlagace.ca/2020/cygwin-portable.html" rel="alternate"></link><published>2020-06-12T21:20:00-04:00</published><updated>2020-06-12T21:20:00-04:00</updated><author><name>Marin</name></author><id>tag:www.marinlagace.ca,2020-06-12:/2020/cygwin-portable.html</id><summary type="html">&lt;p class="first last"&gt;Les modifications que j'ai faites pour pouvoir exécuter Cygwin à
partir d'une clef USB.&lt;/p&gt;
</summary><content type="html">&lt;p&gt;Je développe principalement sous &lt;span class=os&gt;Linux&lt;/span&gt;. Comme mon employeur ne supporte
officiellement que les applications &lt;span class=os&gt;Windows&lt;/span&gt;, la plupart de mes application
doivent rouler sous &lt;span class=os&gt;Windows&lt;/span&gt;. Puisque j'utilise des librairies
multiplateformes (tel que &lt;a href="https://www.boost.org" class="reference external"&gt;Boost&lt;/a&gt; ou &lt;a href="https://www.qt.io" class="reference external"&gt;Qt&lt;/a&gt;), je peux tout de même développer mes applications sous
&lt;span class=os&gt;Linux&lt;/span&gt;. Malheureusement, je dois éventuellement passer à &lt;span class=os&gt;Windows&lt;/span&gt; pour
compiler et tester mon code.&lt;/p&gt;
&lt;p&gt;Sous &lt;span class=os&gt;Linux&lt;/span&gt;, j'utilise principalement &lt;a href="https://www.vim.org" class="reference external"&gt;Vim&lt;/a&gt; et &lt;a href="https://github.com/tmux/tmux/wiki" class="reference external"&gt;tmux&lt;/a&gt;. Je suis très familier avec ces outils.
J'ai une configuration de sessions, fenêtres et panneaux &lt;span class=app&gt;tmux&lt;/span&gt; que j'aime
bien. J'ai également une configuration de &lt;span class=app&gt;Vim&lt;/span&gt; avec des extensions et des
raccourcis clavier qui me conviennent. J'aimerais vraiment conserver ces outils
et leur configuration lorsque je travaille sous &lt;span class=os&gt;Windows&lt;/span&gt;. Et je le peux
grâce à &lt;a href="https://www.cygwin.com" class="reference external"&gt;Cygwin&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;D'après &lt;span class=app&gt;Wikipedia&lt;/span&gt;:&lt;/p&gt;
&lt;blockquote&gt;
Cygwin est une collection de logiciels libres à l'origine développés par
Cygnus Solutions permettant à différentes versions de Windows de Microsoft
d'émuler un système Unix. Il vise principalement l'adaptation à Windows de
logiciels qui fonctionnent sur des systèmes POSIX (tels que les systèmes
GNU/Linux, BSD, et Unix). Cygwin simule un environnement Unix sous Windows,
rendant possible l'exécution de ces logiciels après une simple compilation.
&lt;sup id=sf-portable-cygwin-1-back&gt;&lt;a href=#sf-portable-cygwin-1 title=" https://fr.wikipedia.org/wiki/Cygwin " class=simple-footnote&gt;1&lt;/a&gt;&lt;/sup&gt;&lt;/blockquote&gt;
&lt;p&gt;&lt;span class=app&gt;Cygwin&lt;/span&gt; est une outil incroyable. On peut utiliser &lt;span class=app&gt;Vim&lt;/span&gt; et
&lt;span class=app&gt;tmux&lt;/span&gt; sans problème. Toutes les extensions ainsi que les fichiers de
configuration que j'utilise sous &lt;span class=os&gt;Linux&lt;/span&gt; fonctionne à la perfection sous
&lt;span class=app&gt;Cygwin&lt;/span&gt;.&lt;/p&gt;
&lt;p&gt;À mon travail, j'ai accès à plusieurs ordinateurs différents. Je voudrais
utiliser &lt;span class=app&gt;Cygwin&lt;/span&gt; sur chacun d'entre eux afin d'avoir accès à tous mes
outils de développement. Le problème est que &lt;span class=app&gt;Cygwin&lt;/span&gt; peut être long et
fastidieux à installer et configurer. J'aimerais avoir une version que puisse
rouler à partir d'une clef USB.&lt;/p&gt;
&lt;p&gt;Il existe plusieurs projets sur &lt;a href="https://github.com/search?q=cygwin-portable&amp;amp;type=Repositories&amp;amp;ref=searchresults" class="reference external"&gt;GitHub&lt;/a&gt;
qui modifie une installation locale de &lt;span class=app&gt;Cygwin&lt;/span&gt; pour la rendre portable.
Certains de ces projets sont plutôt vieux et semblent abandonnés. D'autres me
semblent trop complexes pour mes besoins. Voici donc les modifications que j'ai
faites pour rendre &lt;span class=app&gt;Cygwin&lt;/span&gt; portable.&lt;/p&gt;
&lt;p&gt;Installez &lt;span class=app&gt;Cygwin&lt;/span&gt; sur votre disque dur. Peu importe dans quel répertoire
vous décidez de l'installer. J'ai choisi de l'installer dans
&lt;span class=path&gt;c:CygwinX86&lt;/span&gt;.&lt;/p&gt;
&lt;img src="https://www.marinlagace.ca/images/Cygwin_Root_Install_Dir.png" alt="Cygwin Root Install Dir" class=align-center&gt;
&lt;p&gt;Fixez le répertoire des paquets téléchargés comme un sous-répertoire de votre
répertoire d'installation. Ici, j'utilise le sous-répertoire &lt;span class=path&gt;packages&lt;/span&gt;.&lt;/p&gt;
&lt;img src="https://www.marinlagace.ca/images/Cygwin_Packages_Install_Dir.png" alt="Cygwin Packages Install Dir" class=align-center&gt;
&lt;p&gt;Suivez la procédure d'installation jusqu'à la fin. Il n'y a rien de spécial à
effectuer d'ici la fin de la procédure d'installation.&lt;/p&gt;
&lt;p&gt;Une fois la procédure d'installation terminée, ajoutez un fichier nommé
&lt;span class=path&gt;PortableCygwin.bat&lt;/span&gt;
&lt;sup id=sf-portable-cygwin-2-back&gt;&lt;a href=#sf-portable-cygwin-2 title=" Vous pouvez le nommer comme vous le voulez. " class=simple-footnote&gt;2&lt;/a&gt;&lt;/sup&gt;
au répertoire d'installation de &lt;span class=app&gt;Cygwin&lt;/span&gt;.&lt;/p&gt;
&lt;img src="https://www.marinlagace.ca/images/Cygwin_Portable_Batch_File.png" alt="Cygwin Portable Batch File" class=align-center&gt;
&lt;p&gt;Le fichier devrait contenir les lignes suivantes:&lt;/p&gt;
&lt;div class=highlight&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;span class=p&gt;@&lt;/span&gt;&lt;span class=k&gt;echo&lt;/span&gt; off
&lt;span class=s2&gt;"&lt;/span&gt;&lt;span class=nv&gt;%~dp0&lt;/span&gt;&lt;span class=s2&gt;\bin\mintty.exe"&lt;/span&gt; -i /Cygwin-Terminal.ico -
&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;Ce fichier va démarrer la console de &lt;span class=app&gt;Cygwin&lt;/span&gt; à partir du répertoire dans
laquelle elle se retrouve.&lt;/p&gt;
&lt;p&gt;&lt;span class=app&gt;Cygwin&lt;/span&gt; va créer une dossier d'accueil utilisant votre nom d'usager
&lt;span class=os&gt;Windows&lt;/span&gt;. Mon nom d'usager change d'ordinateur à ordinateur. Ceci signifie
que mon dossier d'accueil change également d'ordinateur à ordinateur. Nous
devons donc fixer le nom du dossier d'accueil afin de rendre notre installation
portable. Ceci peut être facilement accompli en modifiant le fichier
&lt;span class=path&gt;/etc/nsswitch.conf&lt;/span&gt;. Il suffit de modifier la ligne contenant &lt;tt class="docutils literal"&gt;&lt;span class=pre&gt;db-home&lt;/span&gt;&lt;/tt&gt;
pour y écrire le nom du dossier d'accueil désiré:&lt;/p&gt;
&lt;div class=highlight&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;# /etc/nsswitch.conf
#
#    This file is read once by the first process in a Cygwin process tree.
#    To pick up changes, restart all Cygwin processes.  For a description
#    see https://cygwin.com/cygwin-ug-net/ntsec.html#ntsec-mapping-nsswitch
#
# Defaults:
# passwd:   files db
# group:    files db
# db_enum:  cache builtin
db_home:  /home/foo
# db_shell: /bin/bash
# db_gecos: &amp;lt;empty&amp;gt;
&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;Dans l'exemple ci-haut, &lt;span class=app&gt;Cygwin&lt;/span&gt; fixera toujours son dossier d'accueil à
&lt;span class=path&gt;/home/foo&lt;/span&gt;. Redémarrez la console et vérifiez que le dossier d'accueil
est bien celui désiré.&lt;/p&gt;
&lt;div class=highlight&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;$ cygpath -w ~
c:\CygwinX86\home\foo
&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;Maintenant, nous devons modifier le chemin du répertoire de sauvegarde des
paquets. Ce chemin se retrouve dans le fichier &lt;span class=path&gt;/etc/setup/setup.rc&lt;/span&gt;.&lt;/p&gt;
&lt;div class=highlight&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;last-cache
        c:\CygwinX86\packages
mirrors-lst
        http://cygwin.mirror.constant.com/;cygwin.mirror.constant.com;United States;New Jersey
        http://cygwin.mirror.hoobly.com/;cygwin.mirror.hoobly.com;United States;Pennsylvania
        http://mirrors.koehn.com/cygwin/;mirrors.koehn.com;United States;Missouri
        http://mirrors.metapeer.com/cygwin/;mirrors.metapeer.com;United States;Washington
        ...
&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;Nous devons remplacer la seconde ligne avec le chemin du répertoire de
sauvegarde des paquets sur notre clef USB. L'ajout de la ligne suivante à notre
fichier &lt;span class=path&gt;.profile&lt;/span&gt; fera l'affaire.&lt;/p&gt;
&lt;div class=highlight&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;sed -i &lt;span class=s1&gt;'2s|.*|\t'&lt;/span&gt;&lt;span class=k&gt;$(&lt;/span&gt;cygpath -m /&lt;span class=k&gt;)&lt;/span&gt;&lt;span class=s1&gt;'/packages|'&lt;/span&gt; /etc/setup/setup.rc
&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;Il est important de bien spécifier le bon sous-répertoire dans cette commande.
Ici, nous spécifions &lt;span class=path&gt;packages&lt;/span&gt; puisqu'il s'agit du sous-répertoire que
nous avons utilisé lors de la procédure d'installation effectuée plus tôt. À
partir de maintenant, à chaque fois que nous démarrerons &lt;span class=app&gt;Cygwin&lt;/span&gt;, le
fichier &lt;span class=path&gt;.profile&lt;/span&gt; sera exécuté et le fichier &lt;span class=path&gt;setup.rc&lt;/span&gt; sera mis à
jour avec le chemin actuel du répertoire de sauvegarde des paquets.&lt;/p&gt;
&lt;p&gt;Les modifications sont terminées. Copiez le répertoire d'installation au complet
sur votre clef USB. Utilisez &lt;span class=path&gt;PortableCygwin.bat&lt;/span&gt; pour démarrer
&lt;span class=app&gt;Cygwin&lt;/span&gt; et apprécier votre environnement POSIX portable.&lt;/p&gt;
&lt;!-- vim: ft=pelican.rst --&gt;
&lt;ol class=simple-footnotes&gt;&lt;li id=sf-portable-cygwin-1&gt; &lt;a href="https://fr.wikipedia.org/wiki/Cygwin" class="reference external"&gt;https://fr.wikipedia.org/wiki/Cygwin&lt;/a&gt;  &lt;a href=#sf-portable-cygwin-1-back class=simple-footnote-back&gt;↩&lt;/a&gt;&lt;/li&gt;&lt;li id=sf-portable-cygwin-2&gt; Vous pouvez le nommer comme vous le voulez.  &lt;a href=#sf-portable-cygwin-2-back class=simple-footnote-back&gt;↩&lt;/a&gt;&lt;/li&gt;&lt;/ol&gt;</content><category term="cygwin"></category></entry></feed>