パッケージマネージャ
ソフトウェアパッケージを管理するソフトウェア
何をするのか?
ソフトウェアパッケージを管理する.
ソフトウェアパッケージって何だろう.
実際に動作する実行ファイルと,それを使うのに必要な依存ファイル (リソース類) をまとめたもの?
管理とは具体的に何をするのか?
すぐわかるのはソフトウェアを導入する,インストール操作
実行ファイルとかを適当な場所に置いてPATHを通すとか
インストールするために依存関係の解決を行う必要もある
依存関係とは,あるパッケージが動作するために必要な別のパッケージのこと
Node.js は libuv や OpenSSL,zlib に依存している
依存関係の解決が主な仕事では?
何に対するパッケージ管理か?
OSへの管理
aptやbrewでソフトウェアを導入するような感じ
パッケージへの管理
パッケージの依存関係を管理
プログラミング言語固有のものを使うことが多い
OS 備え付けのもの
Ubuntu: apt
Fedora: yum
Arch: pacman
Alpine: apk
NixOS: Nix
Windows: winget (将来的に)
OS と分離されているもの
MacPorts, Homebrew, Nix, Scoop, Chocolatey など
特定のプログラミング言語 (処理系) に特化したもの
ライブラリの管理をする側面がある
Node.js: npm, Yarn, pnpm
Rust: Cargo
Haskell: Cabal, Stack
少なければ少ないほど良い