On veut compiler une nouvelle librairie dans notre beau code. Le “README” indique seulement 2 dépendances… Par expérience, c’est rare que la liste soit exhaustive.
Voici un truc rapide de la part d’un collègue pour aller à la «chasse aux dépendances» sans cochonner sa machine. Ça implique Docker et linux.
À mettre dans Dockerfile
FROM ubuntu:14.04 ENV DEBIAN_FRONTEND=noninteractive RUN apt-get update # regular tools needed for the job RUN apt-get install -y bash binutils build-essential libstdc++6 # the actual "new dependencies" we are hunting down RUN apt-get install -y 'libsigc++-2.0-dev' libglibmm-2.4-dev
Sauvegarder dans le répertoire à partir duquel l’image sera constuite. Tout ce que le répertoire contient sera copié dans l’image, alors $HOME n’est probablement pas un bon endroit pour ça.
Pour construire l’image:
docker build -t nom_de_ton_image .
Exécuter et se connecter à l’image.
docker run --rm -ti -v $PWD:/buildenv nom_de_ton_image:latest bash
Ensuite, mettre le code désiré dans /buildenv
. Essayer de “builder”. Exécuter les “apt install
” voulus et les ajouter à mesure dans le Dockerfile. Une fois que ça fonctionne, quitter. Reconstruire le docker à partir du Dockerfile à jour. Essayer de “rebuilder” sans avoir à exécuter de “apt install
“. Si c’est bon, la recette est complète.
Merci Éric et Jean!