Package managerの一覧整理
パッケージマネージャとは、コンピュータに何のソフトウェアがインストールされたかを記録し、新しいソフトウェアのインストール・新しいバージョンへのソフトウェアの更新・以前インストールしたソフトウェアの削除を容易に行えるようにするプログラムです。
パッケージとは、ファイル群を一つにし、インストールや削除をまとめてできるようにしたものです。
各言語
Language | Type | File | Package manager |
---|---|---|---|
Python | FS | requirements.txt | pip |
Ruby | FS | Gemfile | Bundler |
JavaScript | F | package.json | npm, yarn |
Node.js | S | package.json | npm, yarn |
Rust | - | Cargo.toml | cargo |
npmとYarnの違い
npm | Yarn | |
---|---|---|
Package-install速度 | 遅い傾向 | 速い傾向 |
安全性 | パッケージの整合性チェックなどはない | パッケージの整合性チェックがあり、安全性が高い |
バージョン管理 | バージョン違いの依存パッケージをインストールしてしまう可能性がある | yarn.lockファイルによってバージョン管理が強固になり、バージョン違いの依存パッケージのインストールの心配がな |
Yarnの特徴としては、次のものが挙げられます。
npmと互換性がある
インストールが速い
セキュリティが高い
強固なバージョン管理が可能
そして、Yarnはインストールの速度がnpmと比べて非常に速い。
npmでは直列でインストールし、Yarnでは並列でインストールできるためです。
さらにセキュリティもYarnは強固で、インストール時にパッケージが不正に変更されていないかなどをチェックサムを用いて検証することができます。
最後にバージョン管理についても優れています。
・yarn.lock
インストールしたパッケージが使用している別のパッケージ(依存パッケージ)のバージョンが明確に書き込まれます。
依存パッケージバージョンの整合性が保たれるので、バージョン不一致でプロジェクトが動かなくなる危険性が無くなります。
Linux
Distibution | パッケージ形式 | ||
---|---|---|---|
RedHat系 | RPM | RPM、yum | |
Debian系 | deb | dpkg、apt |
パッケージ管理システムでできること
・パッケージのインストール、アンインストール、更新
・パッケージ同士の依存関係の解決
パッケージ管理システムでは依存関係を把握し、依存関係が損なわれてしまうようなインストール(あるいはアンインストール)に警告を出します。
・パッケージをリポジトリから持ってきます。
「公式リポジトリ」おかげで、パッケージ名を指定することでシステム側でリポジトリを探して、パッケージを探してくれます。
非公式のリポジトリもありますが、それらはパッケージ管理システムに登録することで使えるようになります。