Добавить -o Acquire::ForceIPv4=true
при выполнении apt-get
.
Если Вы хотите установить настройку, персистентную, просто создают/etc/apt/apt.conf.d/99force-ipv4 и помещают Acquire::ForceIPv4 "true";
в нем:
echo 'Acquire::ForceIPv4 "true";' | sudo tee /etc/apt/apt.conf.d/99force-ipv4
Опции конфигурации Acquire::ForceIPv4
и Acquire::ForceIPv6
были добавлены к версии 0.9.7.9~exp1 (см. ошибку 611891), который доступен начиная с Дерзкой Ubuntu (выпущенный в октябре 2013) и Debian Jessie (выпущенный в апреле 2015).
Как Gilles говорит, использовать gai.conf
.Примечания:
getaddrinfo
.gai.conf
, необходимо создать резервную копию его и также читать, это (не волнуйтесь, это коротко). Редактирования ниже, вероятно, уже упоминаются в Вашем текущем файле; если текущий файл указывает на что-то другое от того, что упоминается ниже, необходимо, вероятно, предпочесть то, что находится в текущем файле.Но если это - то, что Вы хотите (который это, вероятно), давайте продолжим двигаться. Скажите, что у нас есть два хоста www.he.net
и www.ripe.net
:
$ host www.he.net
www.he.net is an alias for he.net.
he.net has address 216.218.186.2
he.net has IPv6 address 2001:470:0:76::2
$ host www.ripe.net
www.ripe.net has address 193.0.6.139
www.ripe.net has IPv6 address 2001:67c:2e8:22::c100:68b
Случай 1: предпочтите IPv4 для всех хостов
Добавьте к /etc/gai.conf
следующая строка:
precedence ::ffff:0:0/96 100
После того, чтобы сохранить отредактированный файл (никакая потребность перезапустить), необходимо видеть сетевые приложения (например, telnet
) использование IPv4: например,
$ telnet www.ripe.net 81
Trying 193.0.6.139...
^C
$ telnet www.he.net 81
Trying 216.218.186.2...
Случай 2: предпочтите IPv6 для определенных хостов
Если мы хотим предпочесть IPv6 только для www.he.net
или его сеть, мы можем добавить маску/префикс для всех, или просто некоторая часть, ее IPv6 адресуют к /etc/gai.conf
. Например, следующая строка:
precedence 2001:470::/32 100
(после того, чтобы сохранить отредактированный файл), производит
$ telnet www.ripe.net 81
Trying 193.0.6.139...
^C
$ telnet www.he.net 81
Trying 2001:470:0:76::2...
^C
Случай 3: предпочтите IPv4 для определенных хостов
Если мы инвертируем маску, то реверс будет верен? Согласно @GrueMaster, добавляя
precedence 2001:470::/96 100
работавший для него после отключения IPv6 для security.ubuntu.com
(иначе это останавливается навсегда).
См. также:
#security.debian.org has IPv6 address 2610:148:1f10:3::73 \n #security.debian.org has IPv6 address 2001:4f8:8:36::6 \n precedence 2001:4f8::/96 100 \n precedence 2610:148::/96 100
к моему/etc/gai.conf и склонный - получают работы обновления, прекрасные теперь.
– don bright
01.06.2015, 03:49
Вы могли установить apt-cacher-ng на запасной машине для действия как прокси/кэш для всех хостов. Можно вынудить конфигурацию только использовать определенные хосты или использовать прием/etc/hosts, предложенный @badp на той одной машине.
apt-get install apt-cacher-ng
После того как у Вас есть установка apt-cache-ng, просто необходимо отбросить следующую строку (с IP-адресом / имя хоста, измененное для указания на машину ловца) в/etc/apt/apt.conf.d/90httpproxy
Acquire::http { Proxy "http://[192.168.1.254]:3142"; };
Я использую ту установку для сокращения использования пропускной способности, но это должно обходное решение проблема. К сожалению, я не знаю о способе непосредственно отключить ipv6 поиски для Кв. - вовлекают себя.
Вы могли работать вокруг этого путем установки прокси-сервера DNS, который отбросил ip6 ответы.
Как насчет того, чтобы включить строку /etc/hosts
переопределение соответствующих адресов? например,
130.89.149.226 ftp.debian.org
195.20.242.89 security.debian.org
/etc/hosts
с IP-адресами я не владею мной.
– Shadur
23.03.2011, 13:34
Я нашел намного лучший способ сделать это. Откройте Ваш sources.list
файл и записывает имена хостов repos. Получите их адреса IPv4, затем отредактируйте sources.list
с адресами IPv4, а не именами хостов. Кв. - добирается, должен теперь связаться, репозитории по IPv4 обращается к Вам указанный, обходящий IPv6.
Существует недостаток, что repos обычно имеют своего рода выравнивание нагрузки и/или настроенную геолокацию IP, который, конечно, обходит этот метод. Однако не должно иметь значения, если только несколько человек делают его. Если Вы действительно находите, что одно зеркало является медленным, попытайтесь получить другой repo IP-адрес (например, при помощи сервиса ping онлайн) и использование это.
Решили проблему несколько иначе - снизили приоритет сетей IPv6, которые содержат [1130792]безопасность. debian.org[1130793] в [1130794]/etc/gai.conf[1130795]:
Таким образом, IPv6 всё ещё предпочтительнее, за исключением [1130796]security.debian.org[1130797].[1130382].
По состоянию на 08 октября 2014 года у меня была та же проблема, пытаясь обновить Debian за прокси в локальной сети. В надежде это будет актуально для других, я публикую свой ответ здесь. Как упомянули другие, редактирование / etc / hosts
- это то, что нужно быть осторожным.
Но лично я просто хотел получить обновление.
Содержание /etc/apt/sources.blist при выполнении обновления (он отличался до обновления.):
deb http://http.debian.net/debian/ testing main
deb-src http://http.debian.net/debian/ testing main
deb http://mirrors.kernel.org/debian/ wheezy main
deb-src http://mirrors.kernel.org/debian/ wheezy main
deb http://security.debian.org/ wheezy/updates main
deb-src http://security.debian.org/ wheezy/updates main
Содержание /etc/apt/apt.conf:
Acquire::http::proxy "http://192.168.1.10:7777/";
Acquire::http::Timeout "10";
Acquire::ftp::Timeout "10";
Ddition к / etc / Хозяевы:
#Workaround for making apt-get work (08-10-2014)
195.20.242.89 security.debian.org
130.89.148.12 ftp.debian.org
Теперь работает APT-Get Update; UPT-Get Upgrade
как root работает хорошо.
Как уже упоминалось в других ответах, используйте, запустите команду хоста в домене, чтобы получить правильный IP, чтобы вставить в файл хоста.
Пример:
$ host ftp.debian.org
ftp.debian.org has address 130.89.148.12
Это успешно обновило систему в Debian GNU / Linux Testing (Jessie)
. Возможно, вы не захотите бегать с репозиториями тестирования, а затем просто удалите его из источников. Репозитории тестирования дают вам более последние обновления нескольких пакетов, но не считаются стабильными.
Вы можете попробовать это, если работает для вас
user@ubuntuvm:~$ sudo bash
root@ubuntuvm:~# echo 1 > /proc/sys/net/ipv6/conf/eth0/disable_ipv6
-- > замените имя интерфейса
apt.conf
необходимо записать это как это:Acquire::ForceIPv4 "true";
(с двойными кавычками) – mirabilos 13.12.2014, 17:09sudo echo 'test' > file
не работал бы, потому что перенаправление выполняется с полномочиями пользователя – LeartS 30.09.2016, 12:54