Difference between revisions of "Downgrading packages (Русский)"

From ArchWiki
Jump to: navigation, search
(How to Откат пакетов)
m (codeline -> ic)
Line 26: Line 26:
  
 
== How to Откат пакетов ==
 
== How to Откат пакетов ==
* В: Я только что выполнил {{Codeline|pacman -Syu}} и пакет ''XYZ'' с версии М был обновлен до версии N. Обновление пакета вызывает проблемы на моем компьютере, как я могу откатить версию N к старой версии M?
+
* В: Я только что выполнил {{Ic|pacman -Syu}} и пакет ''XYZ'' с версии М был обновлен до версии N. Обновление пакета вызывает проблемы на моем компьютере, как я могу откатить версию N к старой версии M?
* О: Версию пакета можно понизить элементарно, для этого найдите старую версию нужного пакета в директории {{Filename|/var/cache/pacman/pkg}} (если ранее не запускали {{Codeline|pacman -Scc}}, то нужный пакет будет там). Если пакет есть, то его можно установить, выполнив {{Codeline|pacman -U /var/cache/pacman/pkg/pkgname-olderpkgver.pkg.tar.gz}}. Если нужный пакет был скачан вручную, то понадобится указать полный путь к пакету.
+
* О: Версию пакета можно понизить элементарно, для этого найдите старую версию нужного пакета в директории {{Filename|/var/cache/pacman/pkg}} (если ранее не запускали {{Ic|pacman -Scc}}, то нужный пакет будет там). Если пакет есть, то его можно установить, выполнив {{Ic|pacman -U /var/cache/pacman/pkg/pkgname-olderpkgver.pkg.tar.gz}}. Если нужный пакет был скачан вручную, то понадобится указать полный путь к пакету.
  
 
Эта команда удалит существующий пакет, проверив при этом все изменяющиеся зависимости, и установит более старую версию пакета.
 
Эта команда удалит существующий пакет, проверив при этом все изменяющиеся зависимости, и установит более старую версию пакета.
Line 80: Line 80:
 
* В: Как я могу запретить pacman обновлять откаченые пакеты?
 
* В: Как я могу запретить pacman обновлять откаченые пакеты?
 
* О: Добавить название пакета в строку "IgnorePkg" файла {{Filename|/etc/pacman.conf}}.
 
* О: Добавить название пакета в строку "IgnorePkg" файла {{Filename|/etc/pacman.conf}}.
{{Codeline|"IgnorePkg = package1 package2 ..."}} в {{Filename|pacman.conf}} запретит pacman, при выполнении --sysupgrade, устанавливать обновления для выбранных пакетов.
+
{{Ic|"IgnorePkg = package1 package2 ..."}} в {{Filename|pacman.conf}} запретит pacman, при выполнении --sysupgrade, устанавливать обновления для выбранных пакетов.
  
 
== Возврат к точке сохранения (Savepoint) ==
 
== Возврат к точке сохранения (Savepoint) ==

Revision as of 17:55, 11 December 2011

This template has only maintenance purposes. For linking to local translations please use interlanguage links, see Help:i18n#Interlanguage links.


Local languages: Català – Dansk – English – Español – Esperanto – Hrvatski – Indonesia – Italiano – Lietuviškai – Magyar – Nederlands – Norsk Bokmål – Polski – Português – Slovenský – Česky – Ελληνικά – Български – Русский – Српски – Українська – עברית – العربية – ไทย – 日本語 – 正體中文 – 简体中文 – 한국어


External languages (all articles in these languages should be moved to the external wiki): Deutsch – Français – Română – Suomi – Svenska – Tiếng Việt – Türkçe – فارسی

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

Прежде чем откатить пакет, подумайте, нужно ли это делать. Если необходимость отката вызвана ошибками, пожалуйста, помогите сообществу Arch и разработчикам этого ПО, потратьте несколько минут на составление отчета об ошибке и отправке его в трекер ошибок Arch или на сайт самого проекта. В связи с безрилизной моделью развития Arch, и при продолжительном его использовании, Вы, возможно, периодически будете сталкиваться с ошибками в новых пакетах. Наше сообщество и разработчики ПО будут признательны Вам за приложенные усилия. Дополнительная информация может не только спасти нас от часов тестирования и отладки, но также позволит повысить стабильность программного обеспечения.

Причины

Процесс отката (понижения) версии пакета заключается в удалении текущей версии пакета и установке вместо нее предыдущей. Откат может выполняться как до предыдущей версии, так и до любой доступной.

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

Откат версии одного пакета может повлечь за собой необходимость понижения версий других пакетов. При наличии большого количества экспериментальных и тестовых пакетов, а так же отредактированных конфигурационных файлов, полная переустановка системы может оказаться предпочтительнее откату версий.

Подробности

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

Во-вторых, в случае удаления необходимых версий пакетов из системы, необходимо убедиться, в их доступности из другого источника. Это связано с безрелизной моделью развития системы Arch Linux, репозитории автоматически обновляются без сохранения старых версий пакетов. Подробнее об этой проблеме ниже.

В-третьих, следует соблюдать осторожность при внесении изменений в конфигурационные файлы и сценарии. На данный момент, во избежание возможных проблем, лучше использовать pacman, хотя и он имеет некоторые ограничения.

Сейчас находится в разработке концепция Машины Отката Arch (Arch Rollback Machine) и при готовности она будет включена в стандартные средства pacman. Как только это произойдет, процесс станет автоматизированным.

А пока, пожалуйста, следуйте инструкциям идущим далее.

How to Откат пакетов

  • В: Я только что выполнил pacman -Syu и пакет XYZ с версии М был обновлен до версии N. Обновление пакета вызывает проблемы на моем компьютере, как я могу откатить версию N к старой версии M?
  • О: Версию пакета можно понизить элементарно, для этого найдите старую версию нужного пакета в директории Template:Filename (если ранее не запускали pacman -Scc, то нужный пакет будет там). Если пакет есть, то его можно установить, выполнив pacman -U /var/cache/pacman/pkg/pkgname-olderpkgver.pkg.tar.gz. Если нужный пакет был скачан вручную, то понадобится указать полный путь к пакету.

Эта команда удалит существующий пакет, проверив при этом все изменяющиеся зависимости, и установит более старую версию пакета.

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

Также, для отката пакетов Вы можете воспользоваться программой downgrader - это мощная программа написанная на C++, работает с логами pacman, кэшем пакетов и ARM. Она поможет откатить пакет к предыдущей версии по данным из логов, сама найдет, скачает и установит нужный пакет. Также она умеет работать с несколькими пакетами одновременно, например если система стала нестабильна после большого обновления. Для получения дополнительной информации обратитесь к этой теме форума.

Поиск старых версий

Существует три способа поиска.

Зеркала Out-Of-Sync

При отсутствии старых версий пакетов, нужно проверить, не синхронизировалось ли одно из зеркал, и получить пакет оттуда. Нажмите здесь, чтобы посмотреть статус зеркал.

Также нужные пакеты можно поискать на этом зеркале:

ARM

Arch Rollback Machine (ARM ) содержит архив снимков (snapshots) всех репозиториев начиная с 1 ноября 2009. Содержимое сайта постоянно изменяется, поэтому если вы заинтересованы в ARM, то лучше будет, регулярно просмотривать объявления и обсуждения на форуме, для того, чтобы быть в курсе текущего состояния проекта. Последние обсуждения на форуме можно почитать здесь.

URL-адреса задуманы таким образом, чтоб при помощи скриптов wget+pacman было максимально просто "откатить" систему до определенной даты. Автоматизация процесса пока не объяснена. Для упрощения ручного поиска отдельного пакета, можно использовать страницу поиска, расположенную в ARM Search.

Re-компиляция пакетов

В худшем случае, если пакет не найден в другом месте, вам придется самостоятельно собирать себе старую версию. Для этого нужен файл PKGBUILD, можно для изменения взять существующий PKGBUILD из ABS, или найти нужный пакет на http://www.archlinux.org/packages/. После того как вы его нашли, нажмите кнопку "Открыть логи SVN" и выберите "Просмотр журнала". Найдите нужный вариант, и нажмите на ссылку. Далее просто скачайте файлы, расположенные в этом каталоге, и создайте пакет с помощью с makepkg.

Дополнительная информация

Изменение основных настроек менеджера пакетов pacman осуществляется с помощью редактирования файла pacman.conf, для редактироваия файла понадобятся права root. Для правки файла следует набрать в командной строке "nano /etc/pacman.conf" (без кавычек). (Конечно можно редактировать файл и с помощью графических утилит, например Shaman, но чаще намного быстрее и безопаснее выполнять такие действия из командной строки.)

Достаточно просто изменить адреса репозиториев, в которых pacman осуществляет поиск программ. Для скрытия от pacman и системы управления пакетами определенного репозитория нужно в начало строки репозитория, добавить знак фунта (#).

Например, для добавления репозитория с ARM, нужно закомментировать старую строку, и добавить новую с соответствующими путями, формат:

[core]
#Server=http://mirrors.gigenet.com/archlinux/core/os/i686
Server=http://arm.konnichi.com/2009/11/01/core/os/i686

В этом примере, дата в имени раздела указывает на то, что в нем расположены все пакеты, которые были доступны на 1 ноября 2009 года. Обратите внимание, что все репозитории являются снимками (snapshots) официального репозитория. Далее нужно разместить зеркало ARM в самом верху /etc/pacman.d/mirrorlist. Так для синхронизации всех официальных репозиториев ARM, перечисленных в /etc/pacman.conf, нужно выбрать на зеркале http://arm.konnichi.com/2009/11/01/, например, $repo/os/i686, и выполнить:

pacman -Syy # получить список пакетов
pacman -Suu # откатить все пакеты до версии в репозитории

Но все это не гарантирует полностью автоматического отката, так как иногда имеющаяся версия пакета не совпадает с требующейся. В таком случае можно поискать нужную версию пакета на глобальном зеркале, например http://arm.konnichi.com/core/os/i686, обратите внимание на отсутствие даты в пути.

Вопрос про зависимости

  • В: Я не могу откатить пакет, из-за зависимостей.
  • О: При обновлении или удалении с помощью pacman -Ud pkgpkgname-olderpkgver.pkg.tar.gz, можно игнорировать зависимости, но учитывайте, что в дальнейшем это может привести к проблемам в системе.

Запрет для pacman на обновление некоторых пакетов

  • В: Как я могу запретить pacman обновлять откаченые пакеты?
  • О: Добавить название пакета в строку "IgnorePkg" файла Template:Filename.

"IgnorePkg = package1 package2 ..." в Template:Filename запретит pacman, при выполнении --sysupgrade, устанавливать обновления для выбранных пакетов.

Возврат к точке сохранения (Savepoint)

  • В: Я хочу вернуться ко вчерашнему состоянию своей системы.
  • О: Легко осуществимо при использовании механизма периодических снимков (snapshots).

За создание и сохранение снимков (snapshots) отвечает менеджер логических томов (LVM). Не следует путать эти снимки (snapshots) со снимками CVS.LVM snapshots are kernel-level filesystem snapshots that, unlike a full backup, use a COW (copy-on-write) scheme which means that it occupies very little disk space so long as no files were modified, and if files were modified, the snapshot occupies only a little more than the disk space needed to store the pre-modified files. This usually means that you can snapshot a 35GB system with only 2GB free space, considering that pacman -Sy will likely modify far less than 2GB of data. If the state of your system after the upgrade is undesirable, you can quickly rollback to previous snapshot images of your system.

См. также

  • ABS для получения дополнительной информации.
  • LVM о том, как включить снимки и как вернуться к предыдущему состоянию.