僕は以前、 [[Homebrew]] が [[Google Analytics]] のトラッキングがどうのと言う問題で揉めてた時に、 [[Homebrew]] を使うのを止め、 [[Homebrew]] から [[ NetBSD]] のパッケージマネージャである、
pkgsrc + pkgin
に乗り換えていました。
しかしながらその後、
pkgsrc + pkgin もなにかイケてないなー
という感が強まったため、今度は、
に乗り換えようと決心、そしてその後、環境構築とかもして、
さあて、使い始めるとするか
ってなった次の日に macOS Sierra がダウンロード可能になってインストールとかしたため、
なんか色々と ( [[Gentoo Prefix]] が) 動かないし、そもそもこれメンテされてるの?
と言う、ちょっとしたつらみを感じる状態になっていました。
そして、
今さら [[Homebrew]] 使うのもアレだし、 pkgsrc + pkgin もなんかなーだし、 [[Gentoo Prefix]] も動く気配も無いし、どうしたもんかなー、 macOS でのパッケージマネージャ
と思ってた時に、
そう言えば、昔 NixOS っていう変わった Linux とか有ったよな
と思い出したりして、
あれ、これ (NixOS のパッケージマネージャ)ってもしかして OSX (macOS) でも使える?
と気がつき、かつ実際に使ってみたら、結構使えるモノだったので、今現在、僕は macOS Sierra でのパッケージマネージャとして、
を使っています。
それで、この nixpkgs
という パッケージマネージャ 、色々と独特かつマイナーで、僕が気がついた特長としては、
- パッケージの定義に関数型言語な独自 DSL を使っている
- パッケージ間依存地獄が _ 基本的に無い_ (ただし競合とかは流石に有る)
- _ 不要となったパッケージ郡をコマンド一発で一掃できる_
と言う感じのパッケージマネージャです。 それでいてさらに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 と言う文脈においても結構、相性が良いので、ま、興味を持たれた方は、
を覗いて見ると良いんではないかな、と思います。
と言う事で以上。本日の雑文はこれで終わります。