この記事は 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 といったファイルがパッケージマネージャによって使われていますが,このようなファイルは何のために存在するのか分からない人もいるかと思います.
![パッケージマネージャがパッケージをインストールする仕組み - ymyzk’s blog](https://cdn-ak-scissors.b.st-hatena.com/image/square/972bfb078e08b31c1146cb1fe804d3dabb180fa8/height=288;version=1;width=512/https%3A%2F%2Fi0.wp.com%2Fblog.ymyzk.com%2Fwp-content%2Fuploads%2F2017%2F12%2F21729285b0a2c2d400eede9bb398a6b7.png%3Ffit%3D1200%252C796%26ssl%3D1)