**Use case**

It prints:
```
ClickHouse has been successfully installed.

Start clickhouse-server with:
 sudo clickhouse start
```

But if clickhouse-server is already running, let's print:
```
ClickHouse has been successfully installed.

Restart clickhouse-server with:
 sudo clickhouse restart
```
"{0}\tsoft\tnofile\t262144\n"
                    "{0}\thard\tnofile\t262144\n", user);
                fs::create_directories(ulimits_dir);
                WriteBufferFromFile out(ulimits_file.string());
                out.write(ulimits_content.data(), ulimits_content.size());
                out.sync();
                out.finalize();
#endif
            }
            catch (...)
            {
                std::cerr << "Cannot set ulimits: " << getCurrentExceptionMessage(false) << "\n";
            }
        }
        else
            fmt::print("Will not create a dedicated clickhouse user.\n");
        
        fs::path config_dir = prefix / options["config-path"].as<std::string>();
        if (!fs::exists(config_dir))
        {
            fmt::print("Creating config directory {}.\n", config_dir.string());
            fs::create_directories(config_dir);
        }
        fs::path main_config_file = config_dir / "config.xml";
        fs::path users_config_file = config_dir / "users.xml";
        fs::path config_d = config_dir / "config.d";
        fs::path users_d = config_dir / "users.d";
        fs::path log_path = prefix / options["log-path"].as<std::string>();
        fs::path data_path = prefix / options["data-path"].as<std::string>();
        fs::path pid_path = prefix / options["pid-path"].as<std::string>();