http://wiki.rosalab.ru/ru/index.php?title=%D0%91%D0%BB%D0%BE%D0%B3:%D0%A2%D0%BE%D1%87%D0%BA%D0%B0_%D0%A0%D0%BE%D1%81%D1%8B/Urpmi.recover_-_%D0%BC%D0%B0%D1%88%D0%B8%D0%BD%D0%B0_%D0%B2%D1%80%D0%B5%D0%BC%D0%B5%D0%BD%D0%B8_%D0%B4%D0%BB%D1%8F_%D0%BF%D0%B0%D0%BA%D0%B5%D1%82%D0%BD%D0%BE%D0%B9_%D0%B1%D0%B0%D0%B7%D1%8B&feed=atom&action=historyБлог:Точка Росы/Urpmi.recover - машина времени для пакетной базы - История изменений2024-03-29T08:22:47ZИстория изменений этой страницы в викиMediaWiki 1.26.4http://wiki.rosalab.ru/ru/index.php?title=%D0%91%D0%BB%D0%BE%D0%B3:%D0%A2%D0%BE%D1%87%D0%BA%D0%B0_%D0%A0%D0%BE%D1%81%D1%8B/Urpmi.recover_-_%D0%BC%D0%B0%D1%88%D0%B8%D0%BD%D0%B0_%D0%B2%D1%80%D0%B5%D0%BC%D0%B5%D0%BD%D0%B8_%D0%B4%D0%BB%D1%8F_%D0%BF%D0%B0%D0%BA%D0%B5%D1%82%D0%BD%D0%BE%D0%B9_%D0%B1%D0%B0%D0%B7%D1%8B&diff=11074&oldid=prevDenis.silakov в 08:24, 21 марта 20142014-03-21T08:24:26Z<p></p>
<p><b>Новая страница</b></p><div>Многие разработчики и любопытные пользователи нередко сталкиваются с необходимостью откатить недавно установленные пакеты, которые привнесли в их систему не совсем ожидаемые обновления. Это обычно случается при установке пакетов из неофициальных источников, из testing-репозиториев или просто из частных репозиториев разработчиков и контейнеров, содержащих пакеты исключительно для тестирования. Последнее особенно актуально для нашей команды QA — откатывать установленные для тестирования пакеты им приходится очень часто.<br />
<br />
Откатывать пакеты вручную не очень удобно, особенно если их много и вы не вполне уверены, что именно надо откатить для возврата системы в нормальное состояние. На помощь может прийти {{prog|urpm-reposync}}, но этот инструмент может оказаться слишком мощным — он осуществит полную синхронизацию вашей системы с подключенными репозиториями, и откатить только часть пакетов с его помощью затруднительно.<br />
<br />
Хорошая новость — теперь ниша между ручным откатом пакетов и использованием reposync заполнена утилитой {{prog|urpmi.recover}}, способной откатывать установленные вами пакеты. {{prog|Urpmi.recover}} может вернуть пакетную базу в состояние на определенную дату в прошлом, либо откатить заданное количество транзакций по установке пакетов.<br />
<br />
{{prog|Urpmi.recover}} является частью пакета {{pkg|urpmi}} и автоматически попадет в вашу систему с обновлениями.<br />
<br />
Для осуществления такого отката пакетов, {{prog|urpmi.recover}} сохраняет старые версии обновляемых пакетов в директории {{file|/var/spool/repackage}}. И для того, чтобы начать пользоваться утилитой, необходимо сначала инициализировать сохранение старых версий пакетов, выполнив команду<br />
<br />
# urpmi.recover --checkpoint<br />
<br />
Этой командой вы как-бы говорите: «Сейчас у меня система в стабильном состоянии, но я собираюсь установить потенциально опасные пакеты. Пожалуйста, начиная с этого момента, отслеживай все устанавливаемые пакеты и сохраняй их старые версии в случае обновления».<br />
<br />
Вы можете выполнять эту команду и в будущем для переопределения стабильного состояния системы. При этом при каждом вызове {{cmd|urpmi.recover --checkpoint}} директория {{file|/var/spool/repackage}} будет очищаться, так что откатиться на более раннюю дату вы уже не сможете.<br />
<br />
Пока отслеживание установки и обновления пакетов включено, старые версии пакетов сохраняются в поддиректориях {{file|/var/spool/repackage}}, соответствующих дате обновления, так что вы всегда можете изучить эти пакеты самостоятельно.<br />
<br />
Если в некоторый момент времени вы решаете, что настало время откатить систему в прошлое, то просто выполните команду<br />
<br />
# urpmi.recover --rollback <timestamp><br />
<br />
Время отката можно указать как число секунд с начала Эпохи, но для людей предусмотрены и более удобные варианты, например:<br />
<br />
# urpmi.recover --rollback "2014-03-07 13:20:47"<br />
<br />
или даже так:<br />
<br />
# urpmi.recover --rollback "1 hour ago"<br />
<br />
Можно откатить и заданное количество транзакций, указав опцию {{prog|--transactions}} и передав количество транзакций для отката опции {{prog|--rollback}}:<br />
<br />
# urpmi.recover --transactions --rollback <число_транзакций><br />
<br />
В частности, если вы только что установили пакет (который притянул кучу зависимостей), то вы можете просто откатить это обновление, выполнив<br />
<br />
# urpmi.recover --transactions --rollback 1<br />
<br />
Наконец, отключить отслеживание установки пакетов вы можете командой<br />
<br />
# urpmi.recover --disable<br />
<br />
Эта команда также очистит {{file|/var/spool/repackage}}.<br />
<br />
Вот так с помощью {{prog|urpmi.recover}} можно откатывать состояние пакетной базы. Утилита находится в экспериментальном состоянии и отсутствие ошибок не гарантируется, тестируйте на свой страх и риск:). Впрочем, перед осуществлением отката {{prog|urpmi.recover}} сообщит вам, что именно он собирается сделать (какие пакеты удалить, какие откатить), и у вас будет возможность отказаться, если вам что-то не понравится. Наконец, в случае чего, urpm-reposync готов прийти на помощь.<br />
<br />
Также стоит помнить, что мэйнтейнеры не всегда заботятся об обеспечении корректного отката пакетов на предыдущие версии — так что если новая версия пакета вам что-то сломала в системе, то откат на старую может и не помочь.<br />
<br />
<br />
<!--<br />
<poll><br />
ALTERNATIVE<br />
OPEN_RESULTS<br />
UNSAFE_ID=good-news-2013-09-30<br />
Надеюсь, эта новость вас…<br />
Ввела в экстаз <tt>^_^</tt><br />
Порадовала <tt>:)</tt><br />
Оставила равнодушным <tt>-_-</tt><br />
Огорчила <tt>:(</tt><br />
</poll><br />
--><br />
<br />
[[Category:ToROSAPoint]]<br />
{{wl-publish: 2014-03-21 12:20:05 +0400 | Denis.silakov }}</div>Denis.silakov