Downgrading packages (Русский)

From ArchWiki
Revision as of 06:37, 17 February 2013 by Kycok (Talk | contribs) (Fixed link from "PKGBUILD" to "PKGBUILD (Русский)")

Jump to: navigation, search
Описание help replacing me
Возврат к более старым версиям пакетов: как и зачем.
Полезные ссылки
Arch Build System
pacman
LVM – how to enable snapshots and how to revert to their state

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

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

Причины

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

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

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

Подробности

Тем не менее, пользователю нужно учесть следующие моменты:

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

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

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

Инструкция по откату пакетов

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

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

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

В AUR доступен пакет под названием downgradeAUR. Это простой скрипт на Bash, который ищет в кэше старые версии пакета. Если пакет не будет найден, то он может искать в A.R.M.. Затем понадобится выбрать пакет для установки. Здесь описаны основные возможности пакета по автоматизации процесса. Для получения дополнительной информации выполните: downgrade --help.

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

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

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

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

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

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

ARM

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

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

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

В худшем случае, если пакет не найден в другом месте, вам придется самостоятельно собирать себе старую версию. Для этого нужен файл PKGBUILD, можно для изменения взять существующий PKGBUILD из ABS или найти нужный пакет на https://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.

Template:FAQ

Template:FAQ

Template:FAQ