見出し画像

パッケージ管理システムとは

何かWebサービスを開発したいな〜と思い立ったはいいものの、いきなりyarnやらnpmを入れてくださいと言われて意味分かりませんでした。

そもそもパッケージ管理システムとはどういうものなのか。

具体的にどういうパッケージ管理システムがあるのかを見ていきたいと思います。


パッケージ管理システムとは

Wikipediaには下記のように書かれています。

OSというひとつの環境で、各種のソフトウェアの導入と削除、そしてソフトウェア同士やライブラリとの依存関係を管理するシステムである。

OSでいろんなソフトウェアを管理するものなのかな?っていうことしか分かりません。もう少し調べてみます。


依存関係とは

そもそもソフトウェア同士やライブラリとの依存関係とはどういうものなのでしょうか。

本当は怖くない黒い画面入門(文末参考文献参照)というWebサイトには下記のように書かれています。

一つのソフトが複数のソフトを利用するため、「ソフトAをアップデートしたらソフトB、ソフトCが動かなくなった「という状況が発生します。「ソフトB 5.0にはソフトA 2.0以上が必要「といった関係があるためです。これをソフトの依存関係と言います。

なるほど、特定のバージョンのWebサーバでしか動作しないソフトウェアとかもありますね。

さらに、下記のように書かれています。

無数のソフトの依存関係を手動で管理するのは面倒過ぎるのでPackage Manager(パッケージマネージャー)と呼ばれる種類のソフトがよく使われます。Package Managerは「そのソフトにどのソフトのバージョン何以上が必要か「、「今インストールされているソフトは何か「といった情報を持っているため、必要に応じてソフトを勝手にダウンロードしてきてインストールしてくれます。

なるほど、非常に分かりやすい説明ですね。つまりパッケージ管理システムは「このバージョンのソフトやライブラリはあのバージョンのソフトと互換性があるからそれをインストールしよう」という感じで自動で依存関係を管理してくれるんですね。


具体的なパッケージ管理システム

Linux系

なんかいっぱいある

macOS

MacPorts、Fink、Homebrew

Node.js

npm,yarn


まとめ

つまりパッケージ管理システムとはソフトウェアの管理やソフトウェア・ライブラリ同士の相互関係を取り持ってくれるシステムです。

yarnとnpmとはNode.jsを管理するために必要なパッケージ管理システムだったということですね。


参考文献

Wikipedia「パッケージ管理システム

本当は怖くない黒い画面入門「Package Manager(パッケージマネージャー)の必要性、Xcode のインストール、Homebrew のインストール、Homebrewを使ってみる

ymyzk’s blog「パッケージマネージャがパッケージをインストールする仕組み

この記事が気に入ったらサポートをしてみませんか?