❌Nixのchannel
Nix Channel は、nixpkgs などのパッケージセットの参照先URL登録し、定期的に更新して使う仕組み
deprecatedになったわけでもないので❌と言うほどでもないが使わないので❌にしとくmrsekut.icon
Nix チャネルは、Nixpkg を最新の状態に保つためにレガシー Nix CLI によって使用されるメカニズムです。新しい Nix CLI では、チャネルがFlakesに置き換えられました。DeepL.icon 典型的な流れ
code:bash
# チャンネル追加
# 更新
nix-channel --update
# 利用
nix-env -iA nixpkgs.git
仕組み
~/.nix-defexpr/channels に channel が展開される
<nixpkgs> のようなパス参照で利用できる
実体は「特定ブランチを指すポインタ」
--update すると最新コミットに進む
問題点
再現性が弱い
channel はブランチを追従しているだけ
いつ評価しても同じとは限らない
チーム開発でバージョンがズレる
グローバル状態
ユーザー単位で管理
プロジェクト単位で固定しづらい
ロック機構がない
package.json + lock のような仕組みがない
例
nixos-stable
stableなもの
updateはセキュリティ上の修正のみ
version番号がついている
command
$ nix-channel --list
現在のchannelの一覧表示
他のchannelの追加
$ nix-channel --remove channel-alias
channelを削除する
$ nix-channel --update channel-alias
channelの更新
$ nix-channel --update
すべてのchannelを更新する
「channelをupdateする」の意味がいまいちわからない
例えばnixpkgsというchannelに登録してたとして、
nixpkgsの提供するhogeを2015年に入れて、その後updateしなかったら、nixpkgs上でhogeが更新されても、localには反映されないということ?