Кое-что о Юме для забывчивых | Популярный Linux

King аватар
Опубликовано King в Пнд, 21/12/2009 — 18:30

Речь идет о 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)






Запись опубликована в рубрике Без рубрики. Добавьте в закладки постоянную ссылку.