It would be nice if Clickhouse supported building in an enviornment with GLIBC 2.32+ like it supports older releases (pinning symbols).

My usecase is that I'm building in a new machine (Archlinux with GLIBC 2.33) and that works great until I want to run the integration tests, which run under an old Ubuntu (20.04) with 2.31-0ubuntu9.2 and that will fail when using the binary:

```
E               Exception: Timed out while waiting for instance `node1' with ip address 172.16.0.4 to start. Container status: running, logs: clickhouse: /lib/x86_64-linux-gnu/libc.so.6: version `GLIBC_2.32' not found (required by clickhouse)
E               clickhouse: /lib/x86_64-linux-gnu/libc.so.6: version `GLIBC_2.33' not found (required by clickhouse)
```

I see that @amosbird started working on it but ended up discarding the PR (https://github.com/ClickHouse/ClickHouse/pull/24015). I've tested it and it doesn't work for 2.33.

Are there any plans to support this or should I look for a better way to run those tests locally?
{
    
    if (fs::exists(new_path))
        throw Exception(ErrorCodes::FILE_ALREADY_EXISTS, "File {} exists", new_path);
    fs::rename(old_path, new_path);
}
#pragma GCC diagnostic push
#pragma GCC diagnostic ignored "-Wmissing-noreturn"
static void renameExchangeFallback(const std::string &, const std::string &)
{
    throw Exception("System call renameat2() is not supported", ErrorCodes::UNSUPPORTED_METHOD);
}
#pragma GCC diagnostic pop
void renameNoReplace(const std::string & old_path, const std::string & new_path)
{
    if (!renameat2(old_path, new_path, RENAME_NOREPLACE))
        renameNoReplaceFallback(old_path, new_path);
}
void renameExchange(const std::string & old_path, const std::string & new_path)
{
    if (!renameat2(old_path, new_path, RENAME_EXCHANGE))
        renameExchangeFallback(old_path, new_path);
}
bool renameExchangeIfSupported(const std::string & old_path, const std::string & new_path)
{
    return renameat2(old_path, new_path, RENAME_EXCHANGE);
}
}