Homebrew, le gestionnaire de paquets oublié de Mac OS

Je suis tombé ce matin sur cet article via un tweet de @nixcraft (que je vous conseille chaudement de suivre).

Il met en lumière que la version de git présente sur El Capitan, dernière version en date du système d’exploitation des ordinateurs de la marque Apple, n’est pas à jour et permet d’exécuter du code arbitraire, ce qui n’est pas top du point de vue de la sécurité.

Il dénonce également le système de protection ajouté dans El Capitan (nommé SIP) qui empêche l’utilisateur, même avec les pouvoirs du super utilisateur (root), de modifier les fichiers systèmes, notamment le binaire git défaillant.

Cependant, ce qu’il oublie de dire, c’est qu’il y a un moyen d’avoir son binaire git à jour, même avec SIP, sans avoir à faire de manipulations compliquées et sans mettre le système en danger en désactivant SIP.

Ce moyen, c’est Homebrew, et il fait bien plus que ça.

1. Installer et utiliser Homebrew

Homebrew est un gestionnaire de paquets, comme aptitude sur Debian, et, comme son homologue, s’utilise et s’installe en ligne de commande.

Avant toute chose, il requiert la présence d’XCode pour fonctionner. Il est téléchargeable gratuitement depuis l’Apple Store.

Rien de compliqué dans l’installation, exécutez cette ligne de commande et laissez-vous guider :
/usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
Pour installer un paquet :
brew install
Pour supprimer un paquet :
brew remove
Pour mettre à jour les paquets installés :
brew upgrade
Pour connaitre les infos d’un paquet et ses dépendances :
brew info
Pour chercher un paquet dans la base de données :
brew search
Dans notre cas, un simple « brew install git » suffit à avoir git dans sa dernière version. CQFD.

2. Comment fonctionne-t-il ?

Malgré le fait qu’OSX ne soit pas un système d’exploitation Linux, le fait qu’il repose sur une base Unix lui permet de partager certains mécanismes communs avec Linux.

Le principe qui nous intéresse ici est le dossier /usr/local/. Ce dossier a pour but de surcharger les commandes, bibliothèques, sources, configurations, etc … présentes dans le dossier /usr/.

Dans notre exemple, si je place un exécutable git dans /usr/local/bin/, il sera lu à la place de son équivalent système dans /usr/bin/. Même chose pour les programmes que vous installerez via « brew install », ils seront tous placés ici.

Un problème avec Homebrew ? Le seul dossier que vous aurez à vous préoccuper sera celui-ci et aucun autre. 😉

3. Uniquement pour git ?

Bien sûr que non ! Un gros catalogue est disponible et une vaste majorité des logiciels que vous avez l’habitude de côtoyer sous Linux seront disponible dans Homebrew. Une vraie caverne l’Ali Baba 🙂

Par exemple, je m’en sers entre autres pour me faire un « MAMP » local (serveur web Apache + PHP + MySQL). Par besoin d’installer ce truc pas pratique pour un sou qu’est MAMP justement, surtout qu’OSX embarque déjà nativement un serveur Apache totalement fonctionnel.

Un petit « brew install php56 mariadb », ajouter la ligne de configuration dans le fichier /etc/apache2/httpd.conf comme demandé par Homebrew à la fin de l’installation, un petit « sudo apachectl restart » et c’est fini 😀

Homebrew peut même servir pour installer des applications graphiques comme VLC ou Chrome via une extension appelée Cask. J’avoue que je ne m’en sers pas personnellement, mais cela existe et cela fonctionne plutôt bien.

4. Rien de plus ?

Vous avez peut-être remarqué qu’à aucun moment je n’ai utilisé la commande « sudo » (hormis peut-être pour redémarrer Apache, mais cela n’a rien à voir avec Homebrew) ; c’est pour une bonne raison.

Homebrew fonctionne via votre utilisateur, À AUCUN MOMENT VOUS NE DEVREZ ÊTRE EN ROOT, sous peine de malfonctions ou de problèmes de droits qui pourraient survenir. Si vous respectez cela, vous n’avez rien à craindre.

Happy brew ! \o/

Supprimer récursivement tous les BOM de vos fichiers UTF-8 en un script

Travaillant sur un vieux projet PHP, j’ai été confronté à de vieux fichiers cradingues encodés en UTF-8 AVEC BOM, posant des problèmes d’affichages et de redirections.

Le BOM, si vous ne savez pas ce que c’est, c’est un caractère se situant généralement en début de fichier servant à déterminer en quel type d’UTF est encodé un fichier (UTF-8, 16, 32, autres ?). Ce marqueur n’étant pas nécessaire en UTF-8, il nous pose plus de problèmes qu’autre chose et l’on a pour habitude de l’omettre.

Après quelques recherches, je suis tombé sur des bouts de scripts sur le forum d’Ubuntu, mais ils modifient tous les fichiers présents. J’ai des fichiers encodés en latin9 parmi ceux à corriger, mon but n’est pas de les changer :-/

Du coup, je me suis créé un script bash qui cherche et corrige seulement les fichiers présentant cette particularité, le voici :

Un petit chmod +x sur ce script, vous l’exécutez en passant en paramètre le dossier contenant les fichiers à fixer et c’est fini 😀

Continuer la lecture

Faire cohabiter Apache et OpenVPN sur le 443

Hier, je me suis expérimenté à installer OpenVPN sur un serveur tout neuf … Ou plus ou moins une récup d’un vieux PC de @Codeur_Fou x)

Et je dois dire que c’était plutôt simple quand on a un bon tuto. Et c’est là que je vous renvoie à l’excellent billet de Nico Largo sur le sujet.

Il y a juste une toute petite chose qui manque sur son tutoriel. Il utilise le port 443, port qui je le rappel est utilisé communément par le HTTPS.

Comment donc faire cohabiter Apache et OpenVPN pour qu’ils délivrent les pages demandés en HTTPS et le VPN tranquilou ni vu ni connu j’t’embrouille wesh ?

EDIT : Comme me l’a signalé Kahas, je me base sur Debian, mais les modifications sont tout à fait applicables sur d’autres systèmes Linux, il vous suffira d’adapter les commandes. De plus, je modifie Apache, mais la configuration d’Nginx et autres serveurs web sera sensiblement la même.

Continuer la lecture

Utiliser le clavier Mac sur un Windows

Ami utilisateurs de Mac, vous adorez peut-être Mac pour son clavier un peu spécial. Les touches ne sont pas au même endroits et pourtant, beaucoup estime que ces changements sont plus logiques et plus pratiques que les emplacements communément acquis.

Et que cela est rageant voir perturbant quand vous installez Windob Windows via Bootcamp ou une machine virtuelle Windob Windows et que vous ne retrouvez pas votre clavier habituel !

Continuer la lecture

Utiliser socket.io (et les websockets) avec Apache

Je vois déjà certains venir et dire qu’Apache pas fait pour ça, que son rôle est d’afficher des pages statiques ou PHP brute et que tout le reste devrait être laissé à un vrai serveur proxy ou à un serveur web plus récent comme Nginx. Alors oui … Mais quand on n’a pas envie de s’embêter à mettre en place un système compliqué et juste monter un node à l’arrache pour faire une tâche précise, Apache est largement suffisant.

Malheureusement, le support du websocket dans le mod_proxy d’Apache n’est assuré qu’à partir de la version 2.4. Or, la version proposée actuellement dans les dépôts Debian (ou autre Linux stable) est généralement la 2.2. Faut t-il pour autant basculer sur une branche de mise à jour instable ?

Je vous propose aujourd’hui de compiler vous-même l’extension mod_proxy_wstunnel qui permettra de vous servir de websocket sans trop de problèmes.

Continuer la lecture

Installer Windows sur un vieux Macbook sans clé USB et sans DVD

Ce samedi a été une après midi bidouille.

Mon frère s’est commandé un Optibay, un étui en métal permettant d’y loger un second disque dur à mettre à la place du lecteur optique (lecteur DVD si vous préférez).

L’installation du matos s’est passé sans soucis, le MacBook Pro milieu 2009 retrouve une seconde jeunesse avec un SSD en disque principal (le disque dur de base du Mac se retrouvant en second pour stocker tout pleins de choses, notamment une partition dédié à Windows).

Sauf que arrivé à l’installation du dit Windows … Je me suis rendu compte que j’avais complètement oublié que le support de Bootcamp sur un Macbook relativement ancien ne pouvais se faire qu’en présence d’une galette officielle de Windows dans le mangeur de disque … Pas cool :'(

Et histoire d’enfoncer encore le clou un peu plus … Impossible de booter par clé USB comme vous le feriez sur un Macbook récent (vous verrez plus loin dans l’article), bref la misère :/

Quoi qu’il en soit, l’esprit du système D m’emplis et tel un Mac Gyver des temps moderne, je me suis mis au défi d’installer Windows 7 avec seulement un ISO (légal / non modifié) et sans utiliser de périphériques externes. C’est parti !

Continuer la lecture

DISM : l’outil ultime de création de supports Windows 7 personnalisés

Il y a maintenant 4 ans (oui déjà), j’ai rédigé un article pour le laboratoire Microsoft de Supinfo (donc j’ai été co-responsable en 2ème année) traitant en détail du DISM.

Cékoidoncstruc ?

Le DISM (ou Deployment Image Servicing and Management) est un outil en ligne de commande présent sur Windows 7 qui permet de fabriquer des images disques de Windows 7 personnalisés.

Par exemple disons que j’ai envie d’avoir un Windows 7 Pro avec mon driver Nvidia installé de base, quelques logiciels comme Firefox aussi (<= obligatoire) puis pourquoi pas qu’il soit directement configuré avec la bonne langue, activé avec une licence valide et sans avoir besoin de toucher à quoi que ce soit pendant l’installation ? Bah c’est possible et plutôt simplement en plus !

Concrètement, ça sert beaucoup dans deux cas de figures :

  • Vous avez besoin de réinstaller souvent votre système ou que vous n’avez pas envie de refaire toujours les mêmes actions quand vous installez votre système sur d’autres ordinateurs
  • Vous voulez déployer une image Windows sur pleins de postes et que cette image répondent exactement à vos besoins.

Puis ça vous apprendra aussi diverse petites choses sur la structure de Windows 7 ainsi que de l’architecture du registre (au niveau stockage, les ruches, toussa …). Notez que ce tutoriel peu très bien s’appliquer à Windows 8, vu que ce système (de merde) s’appuie sensiblement sur le même noyau que Windows 7.

Bref, dans tout les cas, je vous invite à lire mon article détaillé sur le laboratoire Microsoft de Supinfo.