Назад | Перейти на главную страницу

Где я могу получить файл / etc / hosts по умолчанию для Debian Sid?

Я как-то удалил /etc/hosts в моей тестовой системе - Debian Sid. Теперь я хочу установить по умолчанию /etc/hosts. Я попытался dpkg -S /etc/hosts чтобы узнать, какой пакет содержит /etc/hosts, но ничего не найдено. Где его скачать?

В /etc/hosts файл записан через debian-installer, он не существует в виде упакованного файла.

Следующее - мой /etc/hosts из установки по умолчанию:

127.0.0.1       localhost
127.0.1.1       hostname.fqdn.example.com    hostname

# The following lines are desirable for IPv6 capable hosts
::1     ip6-localhost ip6-loopback
fe00::0 ip6-localnet
ff00::0 ip6-mcastprefix
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters

Дополнительные сведения о синтаксисе см. В разделе «Справочник по Debian». Разрешение имени хоста.

Обновить:

Поскольку я чувствую, что этот ответ получил больше голосов, чем я ожидал, в ответ я немного поработал для вас. :)

Фактический пакет, используемый debian-installer, который содержит /etc/hosts логика, называется net-cfg. В частности, два файла, netcfg.h и netcfg-common.c справиться с логикой построения /etc/hosts файл.

netcfg.h имеет #defines как для самого файла, так и для записей IPv6:

#define HOSTS_FILE      "/etc/hosts"
...<snip>...
#define IPV6_HOSTS \
"# The following lines are desirable for IPv6 capable hosts\n" \
"::1     ip6-localhost ip6-loopback\n" \
"fe00::0 ip6-localnet\n" \
"ff00::0 ip6-mcastprefix\n" \
"ff02::1 ip6-allnodes\n" \
"ff02::2 ip6-allrouters\n"

netcfg-common.c содержит грязную работу, заполняя информацию в /etc/hosts:

if ((fp = file_open(HOSTS_FILE, "w"))) {
    char ptr1[INET_ADDRSTRLEN];

    fprintf(fp, "127.0.0.1\tlocalhost");

    if (ipaddress.s_addr) {
        inet_ntop (AF_INET, &ipaddress, ptr1, sizeof(ptr1));
        if (domain_nodot && !empty_str(domain_nodot))
            fprintf(fp, "\n%s\t%s.%s\t%s\n", ptr1, hostname, domain_nodot, hostname);
        else
            fprintf(fp, "\n%s\t%s\n", ptr1, hostname);
    } else {
#if defined(__linux__) || defined(__GNU__)
        if (domain_nodot && !empty_str(domain_nodot))
            fprintf(fp, "\n127.0.1.1\t%s.%s\t%s\n", hostname, domain_nodot, hostname);
        else
            fprintf(fp, "\n127.0.1.1\t%s\n", hostname);
#else
        fprintf(fp, "\t%s\n", hostname);
#endif
    }

    fprintf(fp, "\n" IPV6_HOSTS);

    fclose(fp);
}

Не отмечен в Debian, но должен быть

::1                     localhost localhost.my.domain
127.0.0.1               localhost localhost.my.domain

(если вы не используете IPv6, вы можете игнорировать строку, начинающуюся с :: 1)

Изменить: файл, вероятно, является базовой установкой, а не из дополнительного пакета.