「Nix」の版間の差分

提供: ArchWiki
ナビゲーションに移動 検索に移動
(英語版より記事を追加)
(→‎参照: add TranslationStatus)
 
(同じ利用者による、間の6版が非表示)
28行目: 28行目:
 
== 設定 ==
 
== 設定 ==
   
  +
Nix デーモンが起動時に起動するように、{{ic|nix-daemon.service}} を[[有効化]]します。
初めて Nix を使うときには、チャンネルの追加が必要です。ただしその前に、パーミッションの問題を解決しなくてはなりません。
 
   
  +
デーモンソケットにアクセスするために必要なユーザーを {{ic|nix-users}} [[ユーザーグループ|グループ]] に追加します。変更が有効になるためにセッションを再起動します。
Nix はデフォルトでは {{ic|/nix}} フォルダにインストールされます。[https://nixos.org/nix/manual/#sec-single-user 非特権アカウント] で Nix を使いたい場合、以下のコマンドを実行してください:
 
   
  +
[https://nixos.wiki/wiki/Nix_channels チャンネル] を追加し、更新します。
$ sudo chown -R $USER. /nix/var/nix/{gcroots,profiles}
 
   
  +
$ nix-channel --add <nowiki>https://nixos.org/channels/nixpkgs-unstable</nowiki>
そして、チャンネルを追加・更新するために、[https://nixos.org/nix/manual/#sec-channels 以下のコマンド] を実行:
 
 
$ nix-channel --add https://nixos.org/channels/nixpkgs-unstable
 
 
$ 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}} からの何でもサンドボックスでビルドされることを期待しています。}}
  +
  +
最も一般的な修正は、設定ファイルでサンドボックスを無効にすることです:
  +
  +
{{hc|/etc/nix/nix.conf|2=
  +
# disable sandboxing
  +
sandbox = false
  +
}}
  +
  +
その後、{{ic|nix-daemon}} サービスを[[再起動]]します。
  +
  +
=== ロケール警告 ===
  +
  +
[https://nixos.wiki/wiki/Locales Nix wiki] は {{ic|1=export LOCALE_ARCHIVE=/usr/lib/locale/locale-archive}} の実行を推奨しています。または、環境変数 {{ic|1=LC_ALL=C}} をエクスポートします。
  +
  +
== 参照 ==
  +
  +
* [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}}
$ sudo nix-channel --update
 

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 のインストールを開始します。

警告: Nix のドキュメントが示唆しているように curl some-url | sh を実行することは、未知のコードを実行するためセキュリティリスクと見なされます。したがって、実行する前にスクリプトを手動でダウンロードして確認することを推奨します。

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 が示唆しているように curl some-url | sh を実行することは、未知のコードを実行するためセキュリティリスクと見なされます。したがって、実行する前にスクリプトを手動でダウンロードして確認することを推奨します。
ノート: インストーラーはデフォルトで Determinate Systems にテレメトリを送信します。手動で無効にするには、sh ./nix-install.sh install --diagnostic-endpoint="" を使用してください。

詳細については、Determinate Systems のマニュアル を参照してください。

設定

Nix デーモンが起動時に起動するように、nix-daemon.service有効化します。

デーモンソケットにアクセスするために必要なユーザーを nix-users グループ に追加します。変更が有効になるためにセッションを再起動します。

チャンネル を追加し、更新します。

$ nix-channel --add https://nixos.org/channels/nixpkgs-unstable
$ nix-channel --update

使用方法

ノート: 公式リポジトリから Nix をインストールした場合、~/.nix-profile/bin ディレクトリを手動で PATH に追加する必要があります。

シェルが設定された後、以下を実行することで 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-powerlevel10kAURzsh-pure-promptAUR は、nix-shell インジケーターを提供します。

コマンド補完

Zsh

nix-zsh-completionsAURnix-envnix-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

警告: サンドボックスを無効にすることは一般的に推奨されておらず、ビルド環境が汚染され、さらにビルドエラーが発生する可能性があります。nixpkgs からの何でもサンドボックスでビルドされることを期待しています。

最も一般的な修正は、設定ファイルでサンドボックスを無効にすることです:

/etc/nix/nix.conf
# disable sandboxing
sandbox = false

その後、nix-daemon サービスを再起動します。

ロケール警告

Nix wikiexport LOCALE_ARCHIVE=/usr/lib/locale/locale-archive の実行を推奨しています。または、環境変数 LC_ALL=C をエクスポートします。

参照

翻訳ステータス: このページは en:Nix の翻訳バージョンです。最後の翻訳日は 2024-05-07 です。もし英語版に 変更 があれば、翻訳の同期を手伝うことができます。