nix doctor: add warning for multiple versions
It's pretty easy to unintentionally install a second version of nix into the user profile when using a daemon install. In this case it looks like nix was upgraded while the nix-daemon is probably still unning an older version.
This commit is contained in:
parent
246acf93f2
commit
0f18dc5479
1 changed files with 17 additions and 0 deletions
|
@ -33,9 +33,26 @@ struct CmdDoctor : StoreCommand
|
|||
std::cout << "Store uri: " << store->getUri() << std::endl;
|
||||
std::cout << std::endl;
|
||||
|
||||
checkNixInPath();
|
||||
checkStoreProtocol(store->getProtocol());
|
||||
}
|
||||
|
||||
void checkNixInPath() {
|
||||
PathSet dirs;
|
||||
|
||||
for (auto & dir : tokenizeString<Strings>(getEnv("PATH"), ":"))
|
||||
if (pathExists(dir + "/nix-env"))
|
||||
dirs.insert(dirOf(canonPath(dir + "/nix-env", true)));
|
||||
|
||||
if (dirs.size() != 1) {
|
||||
std::cout << "Warning: multiple versions of nix found in PATH." << std::endl;
|
||||
std::cout << std::endl;
|
||||
for (auto & dir : dirs)
|
||||
std::cout << " " << dir << std::endl;
|
||||
std::cout << std::endl;
|
||||
}
|
||||
}
|
||||
|
||||
void checkStoreProtocol(unsigned int storeProto) {
|
||||
auto clientProto = GET_PROTOCOL_MAJOR(SERVE_PROTOCOL_VERSION) == GET_PROTOCOL_MAJOR(storeProto)
|
||||
? SERVE_PROTOCOL_VERSION
|
||||
|
|
Loading…
Reference in a new issue