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 << "Store uri: " << store->getUri() << std::endl;
|
||||||
std::cout << std::endl;
|
std::cout << std::endl;
|
||||||
|
|
||||||
|
checkNixInPath();
|
||||||
checkStoreProtocol(store->getProtocol());
|
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) {
|
void checkStoreProtocol(unsigned int storeProto) {
|
||||||
auto clientProto = GET_PROTOCOL_MAJOR(SERVE_PROTOCOL_VERSION) == GET_PROTOCOL_MAJOR(storeProto)
|
auto clientProto = GET_PROTOCOL_MAJOR(SERVE_PROTOCOL_VERSION) == GET_PROTOCOL_MAJOR(storeProto)
|
||||||
? SERVE_PROTOCOL_VERSION
|
? SERVE_PROTOCOL_VERSION
|
||||||
|
|
Loading…
Reference in a new issue