Always verify nix store on install

Just wasted a couple hours chasing shadows because the nix store got
corrupted and there was no indication of that anywhere.

Since an install is one-time only, might as well verify.  Optimization
showed that the copied files aren't read-only; fixed that as well.

Also, use /bin/sh since there's a good chance that this script will be
run on systems without /bin/bash
This commit is contained in:
wmertens 2014-10-07 17:40:31 +02:00 committed by Wout Mertens
parent 8cffec8485
commit 4916d92092

View file

@ -1,4 +1,4 @@
#! /usr/bin/env bash #!/bin/sh
set -e set -e
@ -49,7 +49,10 @@ for i in $(cd $self/store >/dev/null && echo *); do
fi fi
if ! [ -e "$dest/store/$i" ]; then if ! [ -e "$dest/store/$i" ]; then
cp -Rp "$self/store/$i" "$i_tmp" cp -Rp "$self/store/$i" "$i_tmp"
chmod -R a-w "$i_tmp"
chmod +w "$i_tmp"
mv "$i_tmp" "$dest/store/$i" mv "$i_tmp" "$dest/store/$i"
chmod -w "$dest/store/$i"
fi fi
done done
echo "" >&2 echo "" >&2
@ -65,6 +68,11 @@ if ! $nix/bin/nix-store --load-db < $self/.reginfo; then
exit 1 exit 1
fi fi
if ! $nix/bin/nix-store --verify; then
echo "$0: store verification failed! Consider deleting /nix and starting over" >&2
exit 1
fi
. $nix/etc/profile.d/nix.sh . $nix/etc/profile.d/nix.sh
if ! $nix/bin/nix-env -i "$nix"; then if ! $nix/bin/nix-env -i "$nix"; then
@ -123,3 +131,12 @@ variables are set, either log in again, or type
in your shell. in your shell.
EOF EOF
fi fi
cat >&2 <<EOF
Then, consider running
nix-store --optimise
which will reduce store disk usage by hardlinking identical
files together.
EOF