HOME > RSS > BLOGS France > Gastero Prod

R S S : Gastero Prod


PageRank : 1 %

VoteRank :
(0 - 0 vote)





tagsTags: , , , , , , , , , ,


Français - French

RSS FEED READER



Automatiser l'installation des applications sur un nouveau Mac

2 May[ —]

Voici un script qui automatise complètement l’installation de vos applications préférées sur un Mac avec un macOS vierge, et récupère la plupart de vos paramétrages issus d’une installation précédente ou d’un autre Mac.

La migration d’un ancien à un nouveau Mac est extrêmement simple, presque magique, mais elle signifie que tout ce qui n’allait pas sur l’ancien se retrouve sur le nouveau. Je préfère donc depuis quelques années toujours repartir d’une base saine lorsque je commence à utiliser un nouveau Mac.

Au delà de cette installation initiale d’un nouveau Mac, il est aussi parfois utile de remettre à zéro un Mac déjà un peu ancien, afin d’optimiser ses ressources, et se débarasser de toutes sortes de choses que l’on a installé en test, puis mal désinstallé. Le faire lors de chaque mise à jour majeure de macOS, par exemple, est une bonne idée.

Mais cela peut prendre pas mal de temps et donner des migraines, si l’on a peur d’oublier certaines applications ou paramétrages, d’où l’automatisation nécessaire.

Comment ce script fonctionne-t-il ?

Ce script était initialement très largement inspiré de celui de Nicolas Furno1, mais est ensuite passé à l’utilisation de Homebrew Bundle grâce à la suggestion de Thomas Parisot. Il permet d’installer presque tous les logiciels que j’utilise, et de configurer quelques paramètres automatiquement après l’installation de macOS.

Ce script exploite exclusivement des lignes de commande Shell et il n’a ainsi aucune dépendance. Quelques pré-requis toutefois :

  • Il faut être administrateur du Mac pour l’utiliser (il exploite la commande sudo) ;
  • Il faut s’être connecté au préalable dans le Mac App Store ;
  • Les apps à installer depuis la boutique d’Apple doivent déjà être associées à votre compte iTunes Store, donc avoir déjà été achetées, ou téléchargées au moins une fois si elles sont gratuites.

Le script utilise 4 applications pour automatiser cela :

  • Homebrew permet d’installer automatiquement des applications système ;
  • Homebrew Cask permet d’installer des applications macOS qui sont disponibles hors du Mac App Store ;
  • mas permet d’installer des applications du Mac App Store, à condition qu’elles aient déjà été achetées ou téléchargées au moins une fois si elles sont gratuites ;
  • Mackup enfin permet de restaurer les préférences d’applications depuis une installation précédente ou un autre Mac.

Comment l’utiliser ?

Voici comment utiliser les deux scripts :

Installation initiale de l’OS vierge

  1. Installez macOS
  2. Lancez le Mac App Store et connectez-vous à votre compte

Première étape

  1. Téléchargez la dernière version du projet (lien direct) ;
  2. Ouvrez les fichiers post-install.sh et Brewfile, et modifiez ce qui est installé par défaut ;
  3. Pensez à changer la ligne open -a Dropbox de post-install.sh en fonction du service Cloud utilisé, ou alors à la supprimer si vous ne voulez pas en utilisez ;
  4. À partir de la ligne ## *** CONFIGURATION ***, le script configure quelques réglages par défaut, à modifier selon vos besoins ;
  5. Ouvrez ensuite le Terminal de macOS, glissez le fichier post-install.sh depuis le Finder vers le Terminal, et appuyez sur la touche Entrée et accrochez votre ceinture ;

Le script fonctionnera largement sans votre intervention, sauf :

  • pour valider l’installation de Homebrew ;
  • pour saisir le mot de passe administrateur pour Homebrew ;
  • pour le mot de passe administrateur nécessaire pour Cask ;
  • pour certains logiciels qui nécessitent un accès admin ;

Si tout va bien, il se terminera normalement sans erreur, mais en cas d’erreur, vous pourrez relancer le script et seul ce qui n’a pas déjà été installé, sera installé ;

Seconde étape

Quand le premier script est terminé, et quand vos données sont synchronisées depuis le cloud :

  1. Ouvrez le fichier post-cloud.sh et modifiez la ligne 8 en fonction du service de Cloud choisi, ou laissez-la en commentaire si vous utilisez Dropbox (choix par défaut) ;
  2. Glissez le fichier post-cloud.sh du Finder vers le Terminal, et appuyez sur la touche Entrée pour finir l’installation.

Voilà, c’est opérationnel.

Mises à jour ultérieures

  1. Lancez le script update.sh pour mettre à jour toutes les applications qui le nécessitent.

L’automatisation ultime

Je me suis encore plus facilité la tâche avec une automatisation supplémentaire qui lance directement l’installation de ma propre sélection d’applications, sans avoir à passer par toutes les autres étapes ci-dessus :

$ curl -sfL https://nhoizey.github.io/macOS-init/run.sh | sh

Bien entendu, ne lancez pas cette commande directement si vous ne souhaitez pas installer les mêmes applications que moi, ce qui est probable.

Pour conclure et achever de vous convaincre de l’intérêt de ce script, sachez que je me suis « amusé » à installer complètement trois fois un même Mac en une après-midi, alors qu’il me fallait avant bien deux jours pour arriver au même résultat manuellement.


99 Red Balloons played with red balloons

3 February[ —]

Vous connaissez certainement la chanson « 99 Luftballons » du groupe allemand Nena1 qui dénonçait la guerre froide, et fût un hit en Europe au milieu des années 80. Mais vous ne saviez pas encore, sans doute, qu’un doux dingue a joué ce morceau avec des ballons de baudruche rouges…

Ce titre de chanson ne vous dit rien ? Rappel :

Il en existe une version en anglais, intitulée « 99 Red Balloons » :

J’ai découvert l’existence de Andrew Huang grâce à ce tweet de Hubert Sablonnière :

C’est ainsi que j’ai découvert cette version de « 99 Red Balloons » jouée par Andrew avec des ballons de baudruche rouge :

Bon vendredi ! ;-)

  1. Nena étant aussi le nom de la chanteuse, pour faire simple. ⬆︎


Mettre à jour les plugins Jekyll sans danger

1 February[ —]

Si vous n’utilisez pas Bundler pour installer vos plugins Jekyll, c’est à dire la troisième option de la documentation officielle des plugins Jekyll1, vous pouvez passer votre chemin. Ou vous y mettre, vous ne le regretterez pas ! Une fois l’installation gérée avec Bundler, voilà comment je vous conseille de gérer vos mises à jour.

Connaître la liste des mises à jour disponibles

D’abord, lancez la commande suivante :

$ bundle outdated

Voilà un exemple de résultat, listant les plugins, ou leurs dépendances, pour lesquels des mises à jour sont disponibles :

*[master]
Fetching https://github.com/pattex/jekyll-tagging.git
Fetching gem metadata from https://rubygems.org/
Fetching version metadata from https://rubygems.org/
Fetching dependency metadata from https://rubygems.org/
Resolving dependencies.....

Outdated gems included in the bundle:
  * addressable (newest 2.5.0, installed 2.4.0)
  * concurrent-ruby (newest 1.0.4, installed 1.0.2)
  * i18n (newest 0.8.0, installed 0.7.0)
  * json (newest 2.0.3, installed 1.8.3)
  * liquid (newest 4.0.0, installed 3.0.6)
  * listen (newest 3.1.5, installed 3.0.8)
  * nokogiri (newest 1.7.0.1, installed 1.7.0)
  * nuggets (newest 1.5.0, installed 1.0.0)
  * rack (newest 2.0.1, installed 1.6.5)
  * rouge (newest 2.0.7, installed 1.11.1)
  * sprockets (newest 3.7.1, installed 3.6.3)

Mettre tout à jour d’un coup (ATTENTION, DANGER !)

Pour prendre en compte toutes ces nouvelles versions, vous pouvez lancer une commande simple :

$ bundle update

Mais cela risque logiquement de mettre à jour plusieurs plugins en même temps, voire Jekyll lui-même, et de rendre complexe l’identification du coupable si cette mise à jour casse le fonctionnement du site.

Mettre à jour progressivement

Afin de mettre à jour à moindre risque, il faut donc y aller étape par étape, c’est à dire plugin par plugin, et tester le résultat à chaque fois, avec au moins un build ou un serve.

Mettons par exemple à jour nokogiri.

Tout d’abord, faisons une copie de la liste des versions actuellement installées :

$ cp Gemfile.lock Gemfile.lock.old

Cela nous permettra de revenir en arrière si quelque chose ne fonctionne pas après mise à jour du plugin.

Mettons ensuite à jour nokogiri avec la commande suivante, utilisant l’option --source :

$ bundle update --source nokogiri

Voici un extrait du résultat :

Fetching gem metadata from https://rubygems.org/
Fetching version metadata from https://rubygems.org/
Fetching dependency metadata from https://rubygems.org/
Resolving dependencies...
[…]
Using nokogiri 1.7.0.1 (was 1.7.0)
[…]
Bundle updated!

La mise à jour s’est bien déroulée, il ne reste plus qu’à tester, et si tout se passe bien, on passe à la mise à jour suivante.

Que faire si la mise à jour n’est pas satisfaisante ?

S’il y a un soucis, on peut revenir à la situation précédente en reprenant le Gemfile.lock précédent et en relançant l’installation :

$ cp -f Gemfile.lock.old Gemfile.lock
$ bundle install

Il arrive que la commande update ne déclenche pas la mise à jour

Attention, ce n’est pas une erreur, certains plugins ne peuvent pas être mis à jour à cause de dépendances venant d’autres plugins.

Si par exemple je tente de mettre à jour sprockets avec bundle update --source sprockets, voici ce que j’obtiens :

*[master]
Fetching gem metadata from https://rubygems.org/..........
Fetching version metadata from https://rubygems.org/..
Fetching dependency metadata from https://rubygems.org/.
Resolving dependencies...
[…]
Using sprockets 3.6.3
[…]
Bundle updated!

sprockets est disponible en version 3.7.1 d’après bundle outdated, mais jekyll-assets dépend encore de la version 3.6.3, et bundle update --source respecte cette contrainte.

Une nouvelle option à explorer ?

Une option --conservative apparue avec Bundler 1.14 semble produire le même résultat, mais la documentation n’est pas très claire, je n’ai pas encore compris son intérêt par rapport à --source. Des explications sont bienvenues en commentaire, si vous les avez… ;-)

Mais ces précautions ne suffisent pas toujours

Un problème plus important serait d’avoir deux plugins avec une dépendance commune, mais avec des versions requises non compatibles.

Je n’ai heureusement pas encore eu ce cas à traiter.

  1. Je préférerai d’ailleurs voir cette option en premier, tellement elle simplifie les choses. ⬆︎











mirPod.com is the best way to tune in to the Web.

Search, discover, enjoy, news, english podcast, radios, webtv, videos. You can find content from the World & USA & UK. Make your own content and share it with your friends.


HOME add podcastADD PODCAST FORUM By Jordi Mir & mirPod since April 2005....
ABOUT US SUPPORT MIRPOD TERMS OF USE BLOG OnlyFamousPeople MIRTWITTER