2014-12-14 02:19:15 +00: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="ssec-copy-closure">
|
|
|
|
|
|
2020-07-23 12:10:59 +00:00
|
|
|
|
<title>Copying Closures via SSH</title>
|
2014-12-14 02:19:15 +00:00
|
|
|
|
|
|
|
|
|
<para>The command <command
|
|
|
|
|
linkend="sec-nix-copy-closure">nix-copy-closure</command> copies a Nix
|
|
|
|
|
store path along with all its dependencies to or from another machine
|
|
|
|
|
via the SSH protocol. It doesn’t copy store paths that are already
|
|
|
|
|
present on the target machine. For example, the following command
|
|
|
|
|
copies Firefox with all its dependencies:
|
|
|
|
|
|
|
|
|
|
<screen>
|
|
|
|
|
$ nix-copy-closure --to alice@itchy.example.org $(type -p firefox)</screen>
|
|
|
|
|
|
|
|
|
|
See <xref linkend='sec-nix-copy-closure' /> for details.</para>
|
|
|
|
|
|
|
|
|
|
<para>With <command linkend='refsec-nix-store-export'>nix-store
|
|
|
|
|
--export</command> and <command
|
|
|
|
|
linkend='refsec-nix-store-import'>nix-store --import</command> you can
|
|
|
|
|
write the closure of a store path (that is, the path and all its
|
|
|
|
|
dependencies) to a file, and then unpack that file into another Nix
|
|
|
|
|
store. For example,
|
|
|
|
|
|
|
|
|
|
<screen>
|
|
|
|
|
$ nix-store --export $(nix-store -qR $(type -p firefox)) > firefox.closure</screen>
|
|
|
|
|
|
|
|
|
|
writes the closure of Firefox to a file. You can then copy this file
|
|
|
|
|
to another machine and install the closure:
|
|
|
|
|
|
|
|
|
|
<screen>
|
|
|
|
|
$ nix-store --import < firefox.closure</screen>
|
|
|
|
|
|
|
|
|
|
Any store paths in the closure that are already present in the target
|
|
|
|
|
store are ignored. It is also possible to pipe the export into
|
|
|
|
|
another command, e.g. to copy and install a closure directly to/on
|
|
|
|
|
another machine:
|
|
|
|
|
|
|
|
|
|
<screen>
|
|
|
|
|
$ nix-store --export $(nix-store -qR $(type -p firefox)) | bzip2 | \
|
|
|
|
|
ssh alice@itchy.example.org "bunzip2 | nix-store --import"</screen>
|
|
|
|
|
|
|
|
|
|
However, <command>nix-copy-closure</command> is generally more
|
|
|
|
|
efficient because it only copies paths that are not already present in
|
|
|
|
|
the target Nix store.</para>
|
|
|
|
|
|
|
|
|
|
</section>
|