Pull to refresh

Используем portdowngrade на примере

Reading time 3 min
Views 1.8K
Возникла необходимость откатить один из портов FreeBSD, а именно eAccelerator, с версии 0.9.6.1 до 0.9.5.3. Связано это с удалением пользовательских функций кэширования начиная с версии 0.9.6-rc1.

Для решения подобной задачи как раз подойдет утилита portdowngrade.
Без неё мы должны выполнить следующие действия:
  • Отследить изменения порта в CVS репозитории FreeBSD.
  • По комментариям найти все файлы предыдущего релиза (пример ревизий Makefile для eAccelerator).
  • Загрузить эти файлы и правильно их расположить в дереве портов FreeBSD.
  • Используя стандартные механизмы управления портами установить порт.

Утилита portdowngrade сама анализирует историю заданного порта и показывает список изменений. Остается лишь выбрать, какую из предыдущих версий порта мы хотим установить. Таким образом, portdowngrade автоматизирует всю, описанную выше, последовательность действий, от осмотра CVS репозитория, до копирования нужных файлов в дерево портов.

Рассмотрим как происходит откат порта к предыдущей версии на примере eAccelerator.


Установка portdowngrade


Переходим в каталог порта, запускаем сборку:
cd /usr/ports/ports-mgmt/portdowngrade
make


И сразу получаем сообщение:
Press CTRL-C and define DEFAULT_CVS_SERVER
(e.g. make DEFAULT_CVS_SERVER=":pserver:anoncvs@anoncvs. ... .FreeBSD.org:/home/ncvs" install)
if you want to use a special CVS server as default. See
http://www.freebsd.org/doc/en_US.ISO8859-1/books/handbook/anoncvs.html
for a list of possible cvs server


Нам предлагают остановить сборку порта и и выполнить её с указанием анонимного CVS сервера по умолчанию. Так же дается ссылка на страницу Handbook, где есть список этих серверов. По собственному опыту могу сказать, что лучше брать сервера из английской версии Handbook, потому как в русской версии информация далека от действительности.
Я не стал указывать CVS сервер по умолчанию (возможная недоступность и прочие факторы). Его можно будет задать в параметрах командной строки при запуске portdowngrade.

Устанавливаем:
make install clean


Установка завершена.

Использование portdowngrade


Переходим к дереву портов:
cd /usr/ports


Запускаем portdowngrade:
portdowngrade -s :pserver:anoncvs@anoncvs.fr.FreeBSD.org:/home/ncvs www/eaccelerator


Не забываем указать CVS сервер (параметр -s) и имя порта с категорией, который будем откатывать.
Дополнительные параметры командной строки можно посмотреть в man portdowngrade.

Видим следующее:
portdowngrade 0.6 by Heiner Eichmann
Please note, that nothing is changed in the ports tree
unless it is explicitly permitted in step 6!

Seeking port www/eaccelerator ... found: www/eaccelerator

Step 1: Checking out port from CVS repository
CVS root directory: :pserver:anoncvs@anoncvs.fr.FreeBSD.org:/home/ncvs

Step 2: Reading the port history from the CVS repository

Step 3: Analyzing the port history from the CVS repository

Step 4: Load port version numbers and present results
Keys: <space> : next page                      d : details
            p : previous page
      <enter> : leave presentation and downdgrade if wanted
=========================================================================================
number         date         portversion  comment
    1  2010/06/01 08:37:37  0.9.6.1      Update to 0.9.6.1 release.
    2  2010/04/11 08:10:38  0.9.6        Update to 0.9.6 release:
    3  2008/06/18 12:26:58  0.9.5.3      Update to 0.9.5.3 release.
    4  2008/02/11 07:12:33  unknown      Enable shared memory and content caching api.
.........................................................................................
   48  2003/04/04 09:49:28  2.3.8        [New Port] Turck MMCache 2.3.6 (An opcode cache for PHP)

Total lines: 48. Command:

Собственно, мы получили список версий порта с номером, датой и комментарием. Нас интересует версия 0.9.5.3 (номер 3). Жмём «Ввод» («Enter»), вводим номер, соглашаемся с тем, что порт будет изменен:
Enter version number to change port to (0: exit): 3

Step 5: Checking out choosen date of the port from the CVS repository

Step 6: Modifying the port
Port: www/eaccelerator
at : 2008/06/18 12:26:58
Type 'yes' to bring the port to the state of the date above
or 'no' to exit without changing anything. Note, that this only changes
the port, not the installed software! yes or no:yes

The port has been set to the selected version.

Все, откат порта в дереве портов осуществлен.

Теперь можно установить этот порт стандартными средствами. Но для обновления портов я использую portupgrade.
Создаем новый файл базы данных INDEX.db в /usr/ports:
portsdb -Uu


Устанавливаем eAccelerator:
portupgrade -f eaccelerator


P.S. Нужно помнить, что после следующего обновления дерева портов все изменения порта будут утеряны.
Tags:
Hubs:
+5
Comments 0
Comments Leave a comment

Articles