僕は以前、 Homebrew が Google Analytics のトラッキングがどうのと言う問題で揉めてた時に、 Homebrew を使うのを止め、 Homebrew から NetBSD のパッケージマネージャである、
pkgsrc + pkgin
に乗り換えていました。
しかしながらその後、
pkgsrc + pkgin もなにかイケてないなー
という感が強まったため、今度は、
に乗り換えようと決心、そしてその後、環境構築とかもして、
さあて、使い始めるとするか
ってなった次の日に macOS Sierra がダウンロード可能になってインストールとかしたため、
なんか色々と ( Gentoo Prefix が) 動かないし、そもそもこれメンテされてるの?
と言う、ちょっとしたつらみを感じる状態になっていました。
そして、
今さら Homebrew 使うのもアレだし、 pkgsrc + pkgin もなんかなーだし、 Gentoo Prefix も動く気配も無いし、どうしたもんかなー、 macOS でのパッケージマネージャ
と思ってた時に、
そう言えば、昔 NixOS っていう変わった Linux とか有ったよな
と思い出したりして、
と気がつき、かつ実際に使ってみたら、結構使えるモノだったので、今現在、僕は macOS Sierra でのパッケージマネージャとして、
を使っています。
それで、この nixpkgs
という パッケージマネージャ 、色々と独特かつマイナーで、僕が気がついた特長としては、
と言う感じのパッケージマネージャです。
それでいてさらにnixpkgs
が凄い、と個人的に感じるのは、 パッケージマネージャ というレイヤーで、
通常では システムに両立出来ないパッケージ を、 分離しつつ共存させられる
という点です。
これ、どういう事が出来るかっていうと、すごく雑な説明になるんだけど、
開発環境を docker 化して、パッケージ依存関係をシステムから分離する
と言うような事を、 パッケージマネージャ のレイヤーで出来る、という感じです。
つまり、例えば Java を使ったソフトウェア開発 をしていたとして、 或るプロダクトでは最新の Java のバージョン を、 別のプロダクトでは一つ前のバージョンを 、 それぞれに依存関係として要求される 、という様な状態な時、通常であれば、 VM や Docker でシステム丸ごとコンテナ化して云々かんぬん 、ってするところを、nixpkgs
では、環境の定義ファイルを用意して、それをコマンドに読み込ませて使えば、VM とか docker とかを独自に用意せずに、効率よくシステムに併存させることが出来る、というのが nixpkgs
に出来る事です。
またこういった機能を実現している故か、
- コマンド一発で、不要になったパッケージを一掃出来る
と、これまた凄く良い機能も実装されているので、その点でも結構便利です。
ただし、このパッケージ一掃コマンド、時と場合によっては、と言うか、システムに、
このパッケージは恒久的に必要です
というフラグが立ってない場合、
微妙に吹っ飛ばされたくないパッケージを吹っ飛ばされる
という事も時々有るので、それはそれは要注意だったりしますが。
ちなみに、ここまで書いたこのエントリで、 nixpkgs
や、あるいは NixOS
(nixpkgs
を使った Linux Distro) に興味を持たれれば良いな、とは思うのですが、いかんせん nixpkgs
や NixOS
は独特に過ぎるので、ぶっちゃけ、 取っ付きにくさは結構あります 。
また、nixpkgs
や NixOS
の日本語情報、ってほぼ無いに等しいので、何か判らない事などが有る場合、基本的には英文の情報に当たらざるを得ません。
さらには、2016 年 11 月中旬現在 、nixpkgs
とか NixOS
の公式ドキュメントの類いは、ただ今絶賛整理中で、部分的に Wiki とか 公式ドキュメントとかでバラバラしている状態なので、その点でも情報が探しにくいです。
ただ、そうは言っても、 nixpkgs
という NixOS
で採用されたパッケージマネージャは強力だし、また、NixOS
は DevOps とか Infrastructure as Code と言う文脈においても結構、相性が良いので、ま、興味を持たれた方は、
を覗いて見ると良いんではないかな、と思います。
と言う事で以上。本日の雑文はこれで終わります。