この記事は CAMPHOR- Advent Calendar 2017 の20日目の記事です.
Python では pip,Ruby では Bundler,JavaScript (Node.js) では npm と様々なパッケージマネージャが存在します.これらを使うと,パッケージをいい感じにインストールして使えるようにしてくれますが,どのようにしてパッケージがインストールされているのかあまりよく把握していない人もいると思います.また,Ruby では Gemfile
や Gemfile.lock
, Python では requirements.txt
,Node.js では package.json
,package-lock.json
,yarn.lock
といったファイルがパッケージマネージャによって使われていますが,このようなファイルは何のために存在するのか分からない人もいるかと思います.
この記事では,パッケージマネージャがどのようにパッケージをインストールしているのかを紹介します.まず,パッケージマネージャが存在しない場合を仮定してみて,そこから様々な機能を追加していくことでパッケージマネージャが何をしているかを順に見ていきます.