このチュートリアルでは、Nixパッケージマネージャーを使用してパッケージのインストール、削除、更新、アップグレードなどのパッケージ管理操作を実行する方法について説明します。 Nixパッケージマネージャーをまだインストールしていない場合は、以前のガイド「Nix–LinuxおよびUnix用の強力なパッケージマネージャー」を参照してください。 。すでにご存知かもしれませんが、Nixを使用してすべてのパッケージ管理操作を実行するためにrootまたはsudoユーザーである必要はありません。
Nixパッケージマネージャー入門
Nixには多くのコマンドがあります。パッケージ管理の主なコマンドはnix-envです。 。このコマンドは、パッケージの一覧表示、インストール、更新、ロールバック、削除、クエリに使用されます。例を挙げていくつかのコマンドを見てみましょう。
Nixチャネルの更新
Nixチャネルは、一連のNix式とマニフェストを含む場所を指す単なるURLです。デフォルトでは、 Nixpkgs Nixをインストールすると、チャンネルは「登録済み」チャンネルのリストに自動的に追加されます。
Nixチャネルの最新情報を入手するには、次のコマンドを実行します。
$ nix-channel --update
出力例:
downloading Nix expressions from ‘https://d3g5gsiof5omrk.cloudfront.net/nixpkgs/nixpkgs-17.09pre108299.ec9a23332f/nixexprs.tar.xz’... downloading ‘https://d3g5gsiof5omrk.cloudfront.net/nixpkgs/nixpkgs-17.09pre108299.ec9a23332f/nixexprs.tar.xz’... [8335/8656 KiB, 206.5 KiB/s] unpacking channels...
以下に示すように、システムに手動でチャネルを追加することもできます。
$ nix-channel --add https://nixos.org/channels/nixpkgs-unstable
チャネルをサブスクライブ(追加)した後、次のコマンドを使用して、使用可能な最新のNix式を取得するようにチャネルを更新することを忘れないでください。
$ nix-channel --update
チャネルを削除するには、次を実行します:
$ nix-channel --remove nixpkgs
利用可能なパッケージの検索/クエリ
サブスクライブされたチャネルで利用可能なパッケージのリストを表示するには、次のコマンドを実行します。
$ nix-env -qa
上記のコマンドの出力例は次のとおりです。
2048-in-terminal-2015-01-15 2bwm-0.2 389-ds-base-1.3.5.15 3dpong-0.5 4store-1.1.6 8086tiny-1.25 90secondportraits-1.01b 915resolution-0.5.3 9pfs a2jmidid-8 a2ps-4.14 a52dec-0.7.4p4 aacgain-1.9.0 aacskeys-0.4.0e aalib-1.4rc5 abc-verifier-20160818 abcde-2.7.2 abcl-1.4.0 [...]
ここで、「-q」はクエリ操作を示します。 「-a」は、利用可能なすべての(つまり、インストール可能な)パッケージを示します。
以下に示すように、特定のパッケージを照会できます。
$ nix-env -qa chromium
出力:
chromium-58.0.3029.110
また、次のコマンドを使用して特定のパッケージを検索できます。
$ nix-env -qaP | grep python3-3
出力例:
nixpkgs.python33 python3-3.3.6 nixpkgs.python33Full python3-3.3.6 nixpkgs.python34 python3-3.4.6 nixpkgs.python34Full python3-3.4.6 nixpkgs.python35 python3-3.5.3 nixpkgs.python35Full python3-3.5.3 nixpkgs.python3Full python3-3.6.1 nixpkgs.python36Full python3-3.6.1 nixpkgs.python3 python3-3.6.1
インストールされているすべてのパッケージを一覧表示するには、次のコマンドを実行します。
$ nix-env -q
利用可能なパッケージのステータスを確認することもできます。以下の例を見てください。
$ nix-env -qas gcc
出力例:
IPS gcc-5.4.0
ここで、「I」は指定されたパッケージがインストールされていることを示し、「P」はパッケージがシステムに存在することを示し、「S」はいわゆる代替があるかどうかを示します。 パッケージ用。
正規表現を使用してパッケージをクエリ/リストできます。正規表現の例をいくつか示します。
クロム
パッケージ名のchromiumおよび任意のバージョンと一致します。
クロム-58.0
パッケージ名chromiumおよびバージョン58.0と一致します。
例:
$ nix-env -qa chromium-58.0
gtk \\ +
パッケージ名と一致するgtk+ 。 +文字は、数量詞として解釈されないようにバックスラッシュを使用してエスケープする必要があります。また、シェルが確実に渡すように、バックスラッシュを別のバックスラッシュでエスケープする必要があります。
。\*
任意のパッケージ名に一致します。これはほとんどのコマンドのデフォルトです。
'。*zip。*'
文字列zipを含むすべてのパッケージ名に一致します 。ドットに注意してください:'* zip *'は機能しません。これは、正規表現では、文字*が数量詞として解釈されるためです。
'。*(firefox | chromium)。*'
文字列firefoxを含むすべてのパッケージ名に一致します またはクロム 。
パッケージのインストール
前のチュートリアルで述べたように、すべてのパッケージは Nix Storeに保存されます。 、通常はディレクトリ / nix / store 。
パッケージをインストールするには、次のコマンドを実行するだけです:
$ nix-env --install gcc
または、
$ nix-env -i gcc
上記のコマンドは、利用可能な最新のgccパッケージをインストールします。
上記のコマンドの出力例は次のとおりです。
installing ‘gcc-5.4.0’ download-from-binary-cache.pl: still waiting for ‘https://cache.nixos.org/zx0i63k1qswsfjj3kxhwk1vqa9i5ys8i.narinfo’ after 5 seconds... download-from-binary-cache.pl: still waiting for ‘https://cache.nixos.org/dyj2k6ch35r1ips4vr97md2i0yvl4r5c.narinfo’ after 5 seconds... download-from-binary-cache.pl: still waiting for ‘https://cache.nixos.org/g25gnfmd8i392ahiip9nwfv80szqbkcs.narinfo’ after 5 seconds... these paths will be fetched (38.94 MiB download, 150.45 MiB unpacked): /nix/store/7n45x3waczv1smsdkax2dy4j2zhbfk82-glibc-2.25-bin /nix/store/dyj2k6ch35r1ips4vr97md2i0yvl4r5c-gcc-5.4.0 /nix/store/f05gsfcilsczwic8aga0cgl0sygbw5lc-zlib-1.2.11 /nix/store/f111ij1fc83965m48bf2zqgiaq88fqv5-glibc-2.25 /nix/store/g25gnfmd8i392ahiip9nwfv80szqbkcs-gcc-5.4.0-man /nix/store/n5k6yqf81jp4qbay2czaqciimhxikcq8-linux-headers-4.4.10 /nix/store/vrr9maj9lqj2xwndlx3kh07vhnc111i2-glibc-2.25-dev /nix/store/xfrkm34sk0a13ha9bpki61l2k5g1v8dh-gcc-5.4.0-lib /nix/store/zx0i63k1qswsfjj3kxhwk1vqa9i5ys8i-gcc-5.4.0-info fetching path ‘/nix/store/zx0i63k1qswsfjj3kxhwk1vqa9i5ys8i-gcc-5.4.0-info’... [...] fetching path ‘/nix/store/dyj2k6ch35r1ips4vr97md2i0yvl4r5c-gcc-5.4.0’... *** Downloading ‘https://cache.nixos.org/nar/00y98z7i8a1a8d3nkv4dbbfbwwvznccbvmjdhaay0gqc0gfgb020.nar.xz’ to ‘/nix/store/dyj2k6ch35r1ips4vr97md2i0yvl4r5c-gcc-5.4.0’... % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 100 29.5M 100 29.5M 0 0 373k 0 0:01:21 0:01:21 --:--:-- 365k building path(s) ‘/nix/store/nxx0bfg3n685fl0l3m2gbjqannh0wb9i-user-environment’ created 78 symlinks in user environment
コマンドを使用してgccがインストールされているかどうかを確認しましょう:
$ gcc -v
出力例:
Using built-in specs. COLLECT_GCC=gcc COLLECT_LTO_WRAPPER=/nix/store/dyj2k6ch35r1ips4vr97md2i0yvl4r5c-gcc-5.4.0/libexec/gcc/x86_64-unknown-linux-gnu/5.4.0/lto-wrapper Target: x86_64-unknown-linux-gnu Configured with: Thread model: posix gcc version 5.4.0 (GCC)
上記の出力でお気づきのように、gccは "dyj2k6ch35r1ips4vr97md2i0yvl4r5c-gcc-5.4.0"という名前のサブディレクトリにあります。 / nix / storeの下 。ここでは、dyj2k6ch35r1ips4vr97md2i0yvl4r5c-gcc-5.4.0を一意の識別子として呼び出します。このサブディレクトリには、gccパッケージに必要なすべての依存関係とライブラリが含まれています。
インストールせずにパッケージをテストする
Nixパッケージマネージャーのもう1つの注目すべき機能は、システムにインストールせずにパッケージをテストできることです。パッケージをインストールせずにテストする方法については、次のガイドを参照してください。
- Linuxにインストールせずにパッケージをテストする方法
パッケージのアップグレード
パッケージを次に利用可能なバージョンにアップグレードするには、次のコマンドを実行します。
$ nix-env --upgrade vim
または、単に:
$ nix-env -u vim
上記のコマンドはvimのみをアップグレードします 「新しい」バージョンがある場合はパッケージ。
また、次のコマンドを実行して、インストールされているすべてのパッケージを一度にアップグレードできます。
$ nix-env -u
ロールバックパッケージ
パッケージをインストールしましたが、役に立たないか、正しく機能していません。同じパッケージの下位バージョンが必要です。あなたは何をしますか?単純。次のコマンドを使用して、以前の作業バージョンにロールバックするだけです。
$ nix-env --rollback
パッケージのアンインストール
パッケージをアンインストールするには、次のコマンドを実行します:
$ nix-env -e gcc
上記のコマンドは、 gccというパッケージをアンインストールします システムから。
以下に示すように、複数のパッケージを削除できます。
$ nix-env -e gcc vim
出力例:
uninstalling ‘vim-8.0.0442’ uninstalling ‘gcc-5.4.0’ building path(s) ‘/nix/store/mxpikbq3l08379h8ik8mrj3fcw6mh6y4-user-environment’ created 6 symlinks in user environment
未使用のパッケージの削除
パッケージがアンインストールされても、Nixストア(つまり/ nix / store /ディレクトリ)からは削除されません。のみ、シンボリックリンクはプロファイルから削除されます。
アンインストールされたパッケージを実際に削除するには、次のコマンドを実行します:
$ nix-collect-garbage -d
出力例:
finding garbage collector roots... deleting garbage... deleting ‘/nix/store/s4jr4dc9gghldr3xza23rw0gm9kp21kl-nix-prefetch-scripts.drv’ deleting ‘/nix/store/km2gyzlvs9vkrr52wxfyhinv4r52ksrj-nix-prefetch-bzr.drv’ deleting ‘/nix/store/7mi73sdc1p349vmpb5nyxsrv8ayk5hly-bazaar-2.7.0.drv’ [...] deleting ‘/nix/store/8ckmcs9hx1qm0yxdnv892vrvx49zm1sq-setup-hook-2.0.sh’ deleting ‘/nix/store/trash’ deleting unused links... note: currently hard linking saves -0.00 MiB 1447 store paths deleted, 12.65 MiB freed
このコマンドを定期的に実行して、システムから未使用のパッケージを削除する必要があります。
そして、今のところこれですべてです。 Nixパッケージマネージャーの基本的な使い方を知っていただければ幸いです。ここで取り上げた内容は、Nixパッケージマネージャーを使い始めるのに十分です。もちろん、多くのコマンドがあります。 Nixコマンドの詳細については、このガイドの最後にあるNix公式マニュアルを参照してください。
このガイドが役立つと思われる場合は、ソーシャル、プロフェッショナルネットワークで共有し、OSTechNixをサポートしてください。来るより良いもの。しばらくお待ちください!
乾杯!