「Nix」の版間の差分
(nixがAURから削除されcommunityに移動された(?)ようなので変更) |
Kusanaginoturugi (トーク | 投稿記録) (→参照: add TranslationStatus) |
||
(2人の利用者による、間の12版が非表示) | |||
1行目: | 1行目: | ||
− | [[Category:パッケージ |
+ | [[Category:パッケージマネージャー]] |
[[en:Nix]] |
[[en:Nix]] |
||
− | [https://nixos.org/nix/ Nix] は純粋 |
+ | [https://nixos.org/nix/ Nix] は、パッケージ管理の信頼性と再現性を高めることを目的とした純粋に機能的なパッケージマネージャーです。 |
− | |||
− | 詳しくは [https://nixos.org/nix/manual/ Nix パッケージマネージャガイド] を見てください。 |
||
== インストール == |
== インストール == |
||
+ | |||
+ | Nix のインストールには 3 つの選択肢があります。ネイティブ Arch Linux パッケージ、Nix が公式にサポートするアップストリームインストールスクリプト、および Nix のサードパーティサポートを提供する会社である Determinate Systems が提供する「Zero to Nix」スクリプトです。 |
||
+ | |||
+ | === ネイティブ === |
||
Nix は {{Pkg|nix}} パッケージでインストールできます。 |
Nix は {{Pkg|nix}} パッケージでインストールできます。 |
||
+ | === アップストリームインストールスクリプト === |
||
− | == 設定 == |
||
+ | ファイルを {{ic|1=curl --proto '=https' --tlsv1.2 -sSfL <nowiki>https://nixos.org/nix/install</nowiki> -o nix-install.sh}} でダウンロードし、ファイルを確認します: {{ic|less ./nix-install.sh}}、そしてスクリプトを実行します {{ic|./nix-install.sh --daemon}} で Nix のインストールを開始します。 |
||
− | 初めて Nix を使うときには、チャンネルの追加が必要です。ただしその前に、パーミッションの問題を解決しなくてはなりません。 |
||
+ | {{Warning|Nix のドキュメントが示唆しているように {{ic|curl ''some-url'' {{!}} sh}} を実行することは、未知のコードを実行するためセキュリティリスクと見なされます。したがって、実行する前にスクリプトを手動でダウンロードして確認することを推奨します。}} |
||
− | Nix はデフォルトでは {{ic|/nix}} フォルダにインストールされます。[https://nixos.org/nix/manual/#sec-single-user 非特権アカウント] で Nix を使いたい場合、以下のコマンドを実行してください: |
||
+ | === Zero to Nix インストールスクリプト === |
||
− | $ sudo chown -R $USER. /nix/var/nix/{gcroots,profiles} |
||
+ | より簡単で、複雑でない Nix のセットアップを望む場合は、Determinate Systems のセットアップを使用できます。ファイルを {{ic|1=curl --proto '=https' --tlsv1.2 -sSf -L <nowiki>https://install.determinate.systems/nix</nowiki> -o nix-install.sh}} でダウンロードし、ファイルを確認します: {{ic|less ./nix-install.sh}}、そしてスクリプトを実行します {{ic|sh ./nix-install.sh install}} でインストールを開始します。 |
||
− | そして、チャンネルを追加・更新するために、[https://nixos.org/nix/manual/#sec-channels 以下のコマンド] を実行: |
||
+ | {{Warning|Determinate Systems が示唆しているように {{ic|curl ''some-url'' {{!}} sh}} を実行することは、未知のコードを実行するためセキュリティリスクと見なされます。したがって、実行する前にスクリプトを手動でダウンロードして確認することを推奨します。}} |
||
− | $ nix-channel --add https://nixos.org/channels/nixpkgs-unstable |
||
+ | {{Note|インストーラーはデフォルトで [https://github.com/DeterminateSystems/nix-installer#diagnostics Determinate Systems にテレメトリを送信します]。手動で無効にするには、{{ic|1=sh ./nix-install.sh install --diagnostic-endpoint=""}} を使用してください。}} |
||
+ | |||
+ | 詳細については、[https://zero-to-nix.com/start Determinate Systems のマニュアル] を参照してください。 |
||
+ | |||
+ | == 設定 == |
||
+ | |||
+ | Nix デーモンが起動時に起動するように、{{ic|nix-daemon.service}} を[[有効化]]します。 |
||
+ | |||
+ | デーモンソケットにアクセスするために必要なユーザーを {{ic|nix-users}} [[ユーザーグループ|グループ]] に追加します。変更が有効になるためにセッションを再起動します。 |
||
+ | |||
+ | [https://nixos.wiki/wiki/Nix_channels チャンネル] を追加し、更新します。 |
||
+ | |||
+ | $ nix-channel --add <nowiki>https://nixos.org/channels/nixpkgs-unstable</nowiki> |
||
$ nix-channel --update |
$ nix-channel --update |
||
− | $ nix-env -u |
||
+ | == 使用方法 == |
||
− | 非特権の Nix だけを使う場合、以下を実行することで "warning: Nix search path entry '...' does not exist, ignoring" と表示されなくなります: |
||
+ | |||
+ | {{Note|[[#ネイティブ|公式リポジトリ]]から Nix をインストールした場合、{{ic|~/.nix-profile/bin}} ディレクトリを手動で PATH に追加する必要があります。}} |
||
+ | |||
+ | シェルが設定された後、以下を実行することで ''hello'' が更新された PATH にインストールされます: |
||
+ | |||
+ | $ nix-env -iA nixpkgs.hello |
||
+ | |||
+ | バイナリ自体は {{ic|/nix/store/[hash]-hello-[version]/bin/hello}} に位置します。 |
||
+ | |||
+ | {{ic|hello}} を実行して、正しい PATH にあることを確認します。動作すれば、以下で削除できます: |
||
+ | |||
+ | $ nix-env --uninstall hello |
||
+ | |||
+ | または、インストールされているプログラムのリストを確認できます: |
||
+ | |||
+ | $ nix-env --query |
||
+ | |||
+ | さらに、世代をリストすることもできます: |
||
+ | |||
+ | $ nix-env --list-generations |
||
+ | |||
+ | より詳細な情報については {{man|1|nix-env}} を参照してください。 |
||
+ | |||
+ | == ヒントとコツ == |
||
+ | |||
+ | === 最大ジョブ数 === |
||
+ | |||
+ | デフォルトでは、nix は一つのビルダーのみを使用します。以下の設定により、nix は CPU の数だけのジョブを使用することができます: |
||
+ | |||
+ | {{hc|/etc/nix/nix.conf|2= |
||
+ | max-jobs = auto |
||
+ | }} |
||
+ | |||
+ | === グラフィカルアクセラレーション === |
||
+ | |||
+ | OpenGL および Vulkan アプリケーションを実行するには、[https://github.com/guibou/nixGL NixGL] を使用します。 |
||
+ | |||
+ | === デスクトップ統合 === |
||
+ | |||
+ | デスクトップ環境と Nix アプリケーションを統合するために、{{ic|~/.nix-profile/share}} ディレクトリを {{ic|$XDG_DATA_DIRS}} に追加します。例えば、{{ic|1=export XDG_DATA_DIRS=$HOME/.nix-profile/share:$XDG_DATA_DIRS}} を使用します。 |
||
+ | |||
+ | === nix-shell の Zsh 統合 === |
||
+ | |||
+ | {{ic|nix-shell}} はデフォルトで [[Bash]] を起動します。{{AUR|zsh-nix-shell}} は、{{ic|nix-shell}} 環境でデフォルトのシェルとして [[Zsh]] を使用することを可能にします。一部のプロンプトプラグイン、例えば {{AUR|zsh-theme-powerlevel10k}} や {{AUR|zsh-pure-prompt}} は、{{ic|nix-shell}} インジケーターを提供します。 |
||
+ | |||
+ | == コマンド補完 == |
||
+ | |||
+ | === Zsh === |
||
+ | |||
+ | {{AUR|nix-zsh-completions}} は {{ic|nix-env}} や {{ic|nix-shell}} などの nix コマンドのための Zsh 補完を提供します。 |
||
+ | |||
+ | == トラブルシューティング == |
||
+ | |||
+ | === ファイルが多すぎます === |
||
+ | |||
+ | 一部のビルドでは以下のようなエラーが発生することがあります: |
||
+ | |||
+ | error: opening directory '/nix/store/...': Too many open files |
||
+ | |||
+ | {{ic|nix-daemon.service}} を[[編集]]してファイルの上限を増やします: |
||
+ | |||
+ | [Service] |
||
+ | LimitNOFILE=65536 |
||
+ | |||
+ | === root ユーザーチャネルに関する警告メッセージ === |
||
+ | |||
+ | Nix を使用中にこのエラーが発生した場合: |
||
+ | |||
+ | warning: Nix search path entry '/nix/var/nix/profiles/per-user/root/channels' does not exist, ignoring |
||
+ | |||
+ | root ユーザーはチャネルを更新する必要があります: |
||
+ | |||
+ | # nix-channel --update |
||
+ | |||
+ | === ユーザー関連の Nix 検索パスエントリが存在しない、無視しています === |
||
+ | |||
+ | warning: Nix search path entry '/nix/var/nix/profiles/per-user/<USER>/channels' does not exist, ignoring |
||
+ | |||
+ | {{Bug|78828}} を参照してください。または、問題が発生しない [[#Upstream installation script]] または [[#Zero to Nix installation script]] を使用できます。 |
||
+ | |||
+ | === エラー: ファイル 'nixpkgs' が Nix 検索パスに見つかりませんでした (これを $NIX_PATH または -I で追加してください) === |
||
+ | |||
+ | {{Bug|78828}} を参照してください。または、問題が発生しない [[#Upstream installation script]] または [[#Zero to Nix installation script]] を使用できます。 |
||
+ | |||
+ | === サンドボックスビルドの問題 === |
||
+ | |||
+ | ==== その他のサンドボックスの問題 ==== |
||
+ | |||
+ | error: while setting up the build environment: mounting /proc: Operation not permitted |
||
+ | error: program '/usr/bin/nix-env' failed with exit code 1 |
||
+ | |||
+ | 1: package 'utils' in options("defaultPackages") was not found |
||
+ | 2: package 'stats' in options("defaultPackages") was not found |
||
+ | Error: .onLoad failed in loadNamespace() for 'utils', details: |
||
+ | call: system(paste(which, shQuote(names[i])), intern = TRUE, ignore.stderr = TRUE) |
||
+ | error: cannot popen '/nix/store/fnkvlbls29d01jcx3wsdnhykyrl7087r-which-2.21/bin/which 'uname' 2>/dev/null', probable reason 'Cannot allocate memory' |
||
+ | |||
+ | この問題は上流で知られています:[https://github.com/NixOS/nix/issues/2311 #2311]、[https://github.com/NixOS/nix/issues/3000 #3000]、および [https://github.com/NixOS/nix/issues/4636 #4636]。 |
||
+ | {{Warning|サンドボックスを無効にすることは一般的に推奨されておらず、ビルド環境が汚染され、さらにビルドエラーが発生する可能性があります。{{ic|nixpkgs}} からの何でもサンドボックスでビルドされることを期待しています。}} |
||
− | $ sudo nix-channel --update |
||
+ | 最も一般的な修正は、設定ファイルでサンドボックスを無効にすることです: |
||
− | === archlinux-nix を使う === |
||
+ | {{hc|/etc/nix/nix.conf|2= |
||
− | {{AUR|archlinux-nix}} を使うことで必要なグループやパーミッションが設定された archlinux 互換の nix 環境を起動することが可能です。 |
||
+ | # disable sandboxing |
||
+ | sandbox = false |
||
+ | }} |
||
+ | その後、{{ic|nix-daemon}} サービスを[[再起動]]します。 |
||
− | {{Pkg|nix}} をインストールすると {{AUR|archlinux-nix}} もインストールされるので、以下のコマンドを実行して利用可能なコマンドを確認してください: |
||
+ | === ロケール警告 === |
||
− | # archlinux-nix |
||
+ | [https://nixos.wiki/wiki/Locales Nix wiki] は {{ic|1=export LOCALE_ARCHIVE=/usr/lib/locale/locale-archive}} の実行を推奨しています。または、環境変数 {{ic|1=LC_ALL=C}} をエクスポートします。 |
||
− | システムを起動するには、以下のコマンドを実行: |
||
+ | == 参照 == |
||
− | # archlinux-nix bootstrap |
||
+ | * [https://nixos.org/nix/ Homepage] |
||
− | ビルドグループを設定するには以下のコマンドを実行: |
||
+ | * [https://nixos.wiki/wiki/Nix Upstream wiki] |
||
+ | * [https://nixos.org/nix/manual/ Nix Package Manager Guide] |
||
+ | * [[Wikipedia:Nix package manager]] |
||
+ | * [https://zero-to-nix.com/ Zero to Nix] |
||
+ | {{TranslationStatus|Nix|2024-05-07|804233}} |
||
− | # archlinux-nix setup-build-group |
2024年5月7日 (火) 19:47時点における最新版
Nix は、パッケージ管理の信頼性と再現性を高めることを目的とした純粋に機能的なパッケージマネージャーです。
インストール
Nix のインストールには 3 つの選択肢があります。ネイティブ Arch Linux パッケージ、Nix が公式にサポートするアップストリームインストールスクリプト、および Nix のサードパーティサポートを提供する会社である Determinate Systems が提供する「Zero to Nix」スクリプトです。
ネイティブ
Nix は nix パッケージでインストールできます。
アップストリームインストールスクリプト
ファイルを curl --proto '=https' --tlsv1.2 -sSfL https://nixos.org/nix/install -o nix-install.sh
でダウンロードし、ファイルを確認します: less ./nix-install.sh
、そしてスクリプトを実行します ./nix-install.sh --daemon
で Nix のインストールを開始します。
Zero to Nix インストールスクリプト
より簡単で、複雑でない Nix のセットアップを望む場合は、Determinate Systems のセットアップを使用できます。ファイルを curl --proto '=https' --tlsv1.2 -sSf -L https://install.determinate.systems/nix -o nix-install.sh
でダウンロードし、ファイルを確認します: less ./nix-install.sh
、そしてスクリプトを実行します sh ./nix-install.sh install
でインストールを開始します。
詳細については、Determinate Systems のマニュアル を参照してください。
設定
Nix デーモンが起動時に起動するように、nix-daemon.service
を有効化します。
デーモンソケットにアクセスするために必要なユーザーを nix-users
グループ に追加します。変更が有効になるためにセッションを再起動します。
チャンネル を追加し、更新します。
$ nix-channel --add https://nixos.org/channels/nixpkgs-unstable $ nix-channel --update
使用方法
シェルが設定された後、以下を実行することで hello が更新された PATH にインストールされます:
$ nix-env -iA nixpkgs.hello
バイナリ自体は /nix/store/[hash]-hello-[version]/bin/hello
に位置します。
hello
を実行して、正しい PATH にあることを確認します。動作すれば、以下で削除できます:
$ nix-env --uninstall hello
または、インストールされているプログラムのリストを確認できます:
$ nix-env --query
さらに、世代をリストすることもできます:
$ nix-env --list-generations
より詳細な情報については nix-env(1) を参照してください。
ヒントとコツ
最大ジョブ数
デフォルトでは、nix は一つのビルダーのみを使用します。以下の設定により、nix は CPU の数だけのジョブを使用することができます:
/etc/nix/nix.conf
max-jobs = auto
グラフィカルアクセラレーション
OpenGL および Vulkan アプリケーションを実行するには、NixGL を使用します。
デスクトップ統合
デスクトップ環境と Nix アプリケーションを統合するために、~/.nix-profile/share
ディレクトリを $XDG_DATA_DIRS
に追加します。例えば、export XDG_DATA_DIRS=$HOME/.nix-profile/share:$XDG_DATA_DIRS
を使用します。
nix-shell の Zsh 統合
nix-shell
はデフォルトで Bash を起動します。zsh-nix-shellAUR は、nix-shell
環境でデフォルトのシェルとして Zsh を使用することを可能にします。一部のプロンプトプラグイン、例えば zsh-theme-powerlevel10kAUR や zsh-pure-promptAUR は、nix-shell
インジケーターを提供します。
コマンド補完
Zsh
nix-zsh-completionsAUR は nix-env
や nix-shell
などの nix コマンドのための Zsh 補完を提供します。
トラブルシューティング
ファイルが多すぎます
一部のビルドでは以下のようなエラーが発生することがあります:
error: opening directory '/nix/store/...': Too many open files
nix-daemon.service
を編集してファイルの上限を増やします:
[Service] LimitNOFILE=65536
root ユーザーチャネルに関する警告メッセージ
Nix を使用中にこのエラーが発生した場合:
warning: Nix search path entry '/nix/var/nix/profiles/per-user/root/channels' does not exist, ignoring
root ユーザーはチャネルを更新する必要があります:
# nix-channel --update
ユーザー関連の Nix 検索パスエントリが存在しない、無視しています
warning: Nix search path entry '/nix/var/nix/profiles/per-user/<USER>/channels' does not exist, ignoring
FS#78828 を参照してください。または、問題が発生しない #Upstream installation script または #Zero to Nix installation script を使用できます。
エラー: ファイル 'nixpkgs' が Nix 検索パスに見つかりませんでした (これを $NIX_PATH または -I で追加してください)
FS#78828 を参照してください。または、問題が発生しない #Upstream installation script または #Zero to Nix installation script を使用できます。
サンドボックスビルドの問題
その他のサンドボックスの問題
error: while setting up the build environment: mounting /proc: Operation not permitted error: program '/usr/bin/nix-env' failed with exit code 1
1: package 'utils' in options("defaultPackages") was not found 2: package 'stats' in options("defaultPackages") was not found Error: .onLoad failed in loadNamespace() for 'utils', details: call: system(paste(which, shQuote(names[i])), intern = TRUE, ignore.stderr = TRUE) error: cannot popen '/nix/store/fnkvlbls29d01jcx3wsdnhykyrl7087r-which-2.21/bin/which 'uname' 2>/dev/null', probable reason 'Cannot allocate memory'
この問題は上流で知られています:#2311、#3000、および #4636。
最も一般的な修正は、設定ファイルでサンドボックスを無効にすることです:
/etc/nix/nix.conf
# disable sandboxing sandbox = false
その後、nix-daemon
サービスを再起動します。
ロケール警告
Nix wiki は export LOCALE_ARCHIVE=/usr/lib/locale/locale-archive
の実行を推奨しています。または、環境変数 LC_ALL=C
をエクスポートします。