Кое-что о Юме для забывчивых

King аватар

Речь идет о YUM - утилите для обновления RedHat-систем.

Часть первая, и не последняя
Как-то в прошлом году довелось установить корпоративный сервер на CentOS 5.2.
И вот он успешно жужжал до сегодняшнего дня, намолотив 273 дня аптайма.
И поскольку первая заповедь админа "Если все работает нормально - ничего не трогай!" мною обычно соблюдается, то я и ничего не делал - как была версия 5.2 с текущими на тот момент обновлениями, так и осталась.

Кстати, "то я и ничего не делал" напомнило старый анекдот:

Прибегает к прапорщику запыхавшийся солдат:
- Товарищ прапорщик! Рядовой Зайцев ваше приказание выполнил!
- Гм... Так я вроде тебе ничего не приказывал?
- Так я ничего и не делал!

Так вот, вот в канун новогодних праздников, изнывая от желания чего-нибудь сделать, надумал я сотворить тотальный апгрейд Центоса на этом самом сервере. Вопреки админской заповеди, но ей есть оправдание - как-никак, пропустил переход на 5.3 и даже 5.4, нехорошо-с...

Не долго мудрствуя, запускаю на сервере секретную команду

  1.         yum update

Однако в ответ получаю ворох невнятных ошибок, некоторым образом указывающих на отсутствие доступа к Интернету.
Хотя pыng на все наружные все сайты проходит на ура.
Странно... Ведь точно помню, что текущую версию 5.2 я таки обновлял. Но тогда как?
Еще через некоторое усиленных воспоминаний вспомнил, что для этого пробивал на сервер порт, потому что сервер, как положено корпоративному серверу, находится внутри локалки и защищен всякими проксями и прочими защитами.
А когда заканчивал апдейт - снова отключал этот мапинг.

Конечно, можно было и сегодня поступить аналогично. Но чисто из научного любопытства мне стало интересно - неужели YUM не умеет работать через прокси?

Полез в man yum - о прокси ничего не сказано. Зато он нашелся в man yum.conf

  1.        proxy                url to the proxy server that yum should use.
  2.        proxy_username       username to use for proxy
  3.        proxy_password       password for this proxy

После этого осталось дописать в конец конфига man yum.conf необходимые параметры

  1.        proxy=http://192.168.1.1:3128
  2.        proxy_username=corporate-server
  3.        proxy_password=SuperPassword

Но первая же попытка обновить дистрибутив снова выдала ошибку, теперь уже синтаксиса:

  1. # yum update
  2. Loading "fastestmirror" plugin
  3. Determining fastest mirrors
  4. Could not retrieve mirrorlist <a href="http://mirrorlist.centos.org/?release=5&arch=i386&repo=os" title="http://mirrorlist.centos.org/?release=5&arch=i386&repo=os">http://mirrorlist.centos.org/?release=5&arch=i386&repo=os</a> error was
  5. [Errno 4] IOError: <urlopen error nonnumeric port: '3128?'>
  6. #      

Не буду рассказывать о том, как долго гуглил Инет в поисках причины ошибки. Как всегда, помог знаменитый Tigro
Оказалось, что разработчики Юма изобрели ну офигенно оригинальный способ завершения строки с адресом прокси в своем конфиге - после номера порта должен непременно стоять знак слеша, вот такого - /
Зачем? Ахз... Не иначе, как от большого ума

И окончательный конфиг должен выглядеть так:

  1.        proxy=http://192.168.1.1:3128/
  2.        proxy_username=corporate-server
  3.        proxy_password=SuperPassword

И только после этого YUM учуял наличие Интернета и поволок хидеры с с репозитариев Центоса.


Часть вторая. Как обновлять?

Да как как? Набрал ту самую команду yum update и иди себе кофеёк попивай!
Логично. Но в Интернете нашелся интересный материал по особенностях обновления:

- Если обновится классическим "yum update", то иногда можно столкнуться с тем, что CentOS после ребута не загрузится совсем, или же обновит только часть своих пакетов.
Поэтому опытные центосоводы рекомендую сначала выполнить предварительную команду

  1.        yum update glibc*

и тогда пакеты, которые используют glibc, смогут установиться корректно.
Как бы то ни было, в официальных документах такая рекомендация вроде не встречалось, но попробовать стоит - мало ли чего намудрили разработчики в своих репозитариях...

2. Ну что, теперь уже можно запускать yum update ?
Да хоть вчера! Но опять таки, если вы не ходите ненужных сюрпризов, связанных с обрывам канала, ошибками в мета-списках пакетов и т.п. этот объемистый процесс целесообразно разбить на 3 этапа:
- загрузка сведений о загружаемых пакетах
- загрузка самих пакетов
- обновление системы загруженными пакетами

Выполнение каждого из этих этапов можно контролировать, и если он прошел успешно, начинать следующий.
И тогда полная процедура обновления системы будет выглядеть так:

  1.        yum clean all                       # очистка кеша пакетов
  2.        yum makecache                       # загрузка сведений о пакетах
  3.        yum --downloadonly update           # только загрузка пакетов
  4.        yum update glibc*                   # обновление библиотек glibc
  5.        yum -C update                       # обновление всей системы

Ваша оценка: Ничего Средняя оценка: 10 (7 votes)
RSS-материал