Это могло произойти, если Dom0 исчерпывает память и начинает отказывать, например. Или если было спорное устройство - совместно использовано для записи несколькими машинами - но я предполагаю, что это не обстоятельства здесь. Давайте надеяться, что никто не взломал Ваше поле и играет с Вами. Или возможно некоторый простой датчик сторожевого таймера/heartbeat, сбрасывающий Вашу машину, потому что этому не удалось сообщить. В целом больше информации могло пролить больше света на это.
Вот один из способов сделать это, суть в этом * Repo-baseurl: ", о котором сообщает команда yum repolist:
# curl -s --dump-header - `yum repolist rhcd -v | grep Repo-baseurl | awk '{print $2}'` -o /dev/null
HTTP/1.1 200 OK
Date: Fri, 17 May 2013 09:58:30 GMT
Server: Apache/2.2.3 (CentOS)
Connection: close
Transfer-Encoding: chunked
Content-Type: text/html;charset=ISO-8859-1
Расшифровка этого:
yum repolist rhcd -v
Loading "fastestmirror" plugin
Config time: 0.104
Yum Version: 3.2.22
Loading mirror speeds from cached hostfile
Repo-id : rhcd
Repo-name : rhcd
Repo-status : enabled:
Repo-updated: Mon Nov 1 14:37:19 2010
Repo-pkgs : 2,599
Repo-size : 3.7 G
Repo-baseurl: http://lochost:81/core_build/il31/centos/5Server/i386/CentOS/
Извлеките baseurl с помощью grep и труба к awk для URL-адреса.
используйте параметр заголовка дампа curl, чтобы увидеть статус http:
HTTP/1.1 200 OK
Date: Fri, 17 May 2013 09:58:30 GMT
Server: Apache/2.2.3 (CentOS)
Connection: close
Transfer-Encoding: chunked
Content-Type: text/html;charset=ISO-8859-1
Конечно, yum - действительно хорошо скомпонованная программа на Python, поэтому я думаю, вы также можете собрать ее вместе как утилиту python, импортирующую соответствующие биты yum.
Без репозитория yum repolist отобразит все репозитории yum. Затем вы можете обработать их в цикле.
Я не думаю, что существует общая команда для проверки возможности соединения yum.
Что вы можете сделать:
создайте тестовое репо в /etc/yum.repos.d/test.repo
, которое проверяет только одно место, а не весь список зеркал, чтобы все было быстрее.
[test]
name= test
#mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=os
baseurl=http://mirror.centos.org/centos/$releasever/os/$basearch/
enabled = 0
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-6
, а затем выдавайте ням. команду в форме
yum --disablerepo=* --enablerepo=test list available
, если вы получаете сообщение об ошибке подключения, скорее всего, ваше подключение к Интернету неисправно. Конечно, centos.org также может быть недоступен в приведенном выше примере, но шансы на это меньше.
Для меня работала следующая команда:
yum repolist -v | grep Repo-baseurl | awk '{print $3}'
вместо этой:
yum repolist rhcd -v | grep Repo-baseurl | awk '{print $2}'
А для нескольких yum-репозиториев вы можете сделать следующее:
for repourl in $(yum repolist -v | grep Repo-baseurl | awk '{print $3}') ; do echo $repourl; curl -s --dump-header - $repourl -o /dev/null; done
Результатом будет:
http://repo-url-1/
HTTP/1.1 200 OK
Date: Sat, 31 Aug 2019 08:32:35 GMT
Server: Apache/2.2.15 (CentOS)
Connection: close
Transfer-Encoding: chunked
Content-Type: text/html;charset=UTF-8
http://repo-url-2/
HTTP/1.1 200 OK
Date: Sat, 31 Aug 2019 08:32:36 GMT
Server: Apache/2.2.15 (CentOS)
Connection: close
Transfer-Encoding: chunked
Content-Type: text/html;charset=UTF-8
У меня была такая же потребность (проверьте, правильно ли настроен прокси), и хотя приведенные выше решения давали подсказки, ни одно из них не было полным решением, поскольку проверка с помощью curl не использует прокси-сервер http, настроенный в ням.
Во-первых, yum-прокси можно настроить:
для каждого репо, добавив proxy = http: //
в каждый /etc/yum.repos. d / *. repo
глобально, добавив proxy = http: //
и http_caching = none
в yum.conf (без кеширования во избежание получение устаревшего файла repmod.xml, вызывающего несоответствие контрольной суммы)
1. Сначала получите список репозиториев и URL-адресов:
#Produces a csv with 'repo_id#repo_url' rows
yum repolist enabled -v|egrep 'Repo-id|Repo-baseurl' | paste -sd ' \n' | awk '{printf ("%s#%s\n",$3,$6)}' > repolist.csv
2. Очистите кеш yum, чтобы избежать кеширования ответов
yum clean all
Затем для каждого репозитория в repolist.csv выполните следующие действия:
3a. запросить содержимое репо с помощью yum (около 15 секунд для базы)
#count packages, outputs: 9352
yum --quiet --disablerepo=* --enablerepo=base list available|wc -l
3b. в качестве альтернативы запросить конкретный пакет с повторным запросом (около 7 секунд для базы)
# outputs: 1
repoquery --repoid=base --qf "%-20{repoid} %{name}" openssh-clients|wc -l