2014-08-24 18:18:18 +01:00
|
|
|
<section xmlns="http://docbook.org/ns/docbook"
|
|
|
|
xmlns:xlink="http://www.w3.org/1999/xlink"
|
|
|
|
xmlns:xi="http://www.w3.org/2001/XInclude"
|
|
|
|
version="5.0"
|
|
|
|
xml:id="sec-ad-hoc-packages">
|
2018-05-02 00:57:09 +01:00
|
|
|
<title>Ad-Hoc Package Management</title>
|
2014-08-24 18:18:18 +01:00
|
|
|
|
2018-05-02 00:57:09 +01:00
|
|
|
<para>
|
2019-09-19 18:17:30 +01:00
|
|
|
With the command <command>nix-env</command>, you can install and uninstall
|
|
|
|
packages from the command line. For instance, to install Mozilla Thunderbird:
|
2014-08-24 18:18:18 +01:00
|
|
|
<screen>
|
2019-06-17 12:25:50 +01:00
|
|
|
<prompt>$ </prompt>nix-env -iA nixos.thunderbird</screen>
|
2019-09-19 18:17:30 +01:00
|
|
|
If you invoke this as root, the package is installed in the Nix profile
|
|
|
|
<filename>/nix/var/nix/profiles/default</filename> and visible to all users
|
|
|
|
of the system; otherwise, the package ends up in
|
|
|
|
<filename>/nix/var/nix/profiles/per-user/<replaceable>username</replaceable>/profile</filename>
|
|
|
|
and is not visible to other users. The <option>-A</option> flag specifies the
|
|
|
|
package by its attribute name; without it, the package is installed by
|
|
|
|
matching against its package name (e.g. <literal>thunderbird</literal>). The
|
|
|
|
latter is slower because it requires matching against all available Nix
|
|
|
|
packages, and is ambiguous if there are multiple matching packages.
|
2018-05-02 00:57:09 +01:00
|
|
|
</para>
|
|
|
|
|
|
|
|
<para>
|
2019-09-19 18:17:30 +01:00
|
|
|
Packages come from the NixOS channel. You typically upgrade a package by
|
|
|
|
updating to the latest version of the NixOS channel:
|
2014-08-24 18:18:18 +01:00
|
|
|
<screen>
|
2019-06-17 12:25:50 +01:00
|
|
|
<prompt>$ </prompt>nix-channel --update nixos
|
2014-08-24 18:18:18 +01:00
|
|
|
</screen>
|
2019-09-19 18:17:30 +01:00
|
|
|
and then running <literal>nix-env -i</literal> again. Other packages in the
|
|
|
|
profile are <emphasis>not</emphasis> affected; this is the crucial difference
|
|
|
|
with the declarative style of package management, where running
|
|
|
|
<command>nixos-rebuild switch</command> causes all packages to be updated to
|
|
|
|
their current versions in the NixOS channel. You can however upgrade all
|
|
|
|
packages for which there is a newer version by doing:
|
2014-08-24 18:18:18 +01:00
|
|
|
<screen>
|
2019-06-17 12:25:50 +01:00
|
|
|
<prompt>$ </prompt>nix-env -u '*'
|
2014-08-24 18:18:18 +01:00
|
|
|
</screen>
|
2018-05-02 00:57:09 +01:00
|
|
|
</para>
|
2014-08-24 18:18:18 +01:00
|
|
|
|
2018-05-02 00:57:09 +01:00
|
|
|
<para>
|
|
|
|
A package can be uninstalled using the <option>-e</option> flag:
|
2014-08-24 18:18:18 +01:00
|
|
|
<screen>
|
2019-06-17 12:25:50 +01:00
|
|
|
<prompt>$ </prompt>nix-env -e thunderbird
|
2014-08-24 18:18:18 +01:00
|
|
|
</screen>
|
2018-05-02 00:57:09 +01:00
|
|
|
</para>
|
2014-08-24 18:18:18 +01:00
|
|
|
|
2018-05-02 00:57:09 +01:00
|
|
|
<para>
|
|
|
|
Finally, you can roll back an undesirable <command>nix-env</command> action:
|
2014-08-24 18:18:18 +01:00
|
|
|
<screen>
|
2019-06-17 12:25:50 +01:00
|
|
|
<prompt>$ </prompt>nix-env --rollback
|
2014-08-24 18:18:18 +01:00
|
|
|
</screen>
|
2018-05-02 00:57:09 +01:00
|
|
|
</para>
|
|
|
|
|
|
|
|
<para>
|
2019-09-19 18:17:30 +01:00
|
|
|
<command>nix-env</command> has many more flags. For details, see the
|
|
|
|
<citerefentry>
|
2018-05-02 00:57:09 +01:00
|
|
|
<refentrytitle>nix-env</refentrytitle>
|
|
|
|
<manvolnum>1</manvolnum></citerefentry> manpage or the Nix manual.
|
|
|
|
</para>
|
2014-08-24 18:18:18 +01:00
|
|
|
</section>
|