FreeBSD откатить порт


Автор Охальников Олег

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

cd /usr/ports/ports-mgmt/portdowngrade
Дальше можно просто ставить стандартно (я так и делал)

# make install clean
а можно в make передать CVS сервер, вот так:

make DEFAULT_CVS_SERVER=" anoncvs@anoncvs1.FreeBSD.org:/home/ncvs" install clean
Если ставили стандартно, то для того чтобы получить старую версию, команда будет выглядеть таким образом:

# cd /usr/ports/
# portdowngrade -s " anoncvs@anoncvs1.FreeBSD.org:/home/ncvs" net-im/ejabberd
В данном примере, я хочу получить более старую версию сервера ejabber, та что в портах 2.1.8, а надо например 2.1.6 (это лишь пример, можно получить старую версию lang/php5 и т.д.). Выполняем команду, сначала сервер устанавливает шифрованной соединение и предлагает принять ключи, пишем "yes", дальше на экран выводится краткий хелп и выводятся старые версии, не нужно ждать пока покажутся все, как только видим цифру и нужную версию порта, жмем энтер, появляется строка, в которой надо поставить цифру нужного порта:

# portdowngrade -s " anoncvs@anoncvs1.FreeBSD.org:/home/ncvs" net-im/ejabberd

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 net-im/ejabberd ... found: net-im/ejabberd

Step 1: Checking out port from CVS repository
CVS root directory: anoncvs@anoncvs1.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: : next page d : details
p : previous page
: leave presentation and downdgrade if wanted
=================================================================
number date portversion comment
1 2011/06/24 13:49:45 2.1.8 - Update to 2.1.8
2 2011/05/10 16:44:25 2.1.6 - Update to 2.1.6
3 2011/03/20 12:53:23 2.1.5 - Get Rid MD5 support
4 2010/10/24 21:55:04 2.1.5 - Mark BROKEN on 6.X: does not compile
5 2010/09/30 20:05:20 2.1.5 Teach the original Makefile about NOPORTDOCS.


Total lines: 48. Command:
Enter version number to change port to (0: exit): 2

Ставлю "2", т.е. обновляю то что есть сейчас в портах на версию 2011/05/10 16:44:25 2.1.6 - Update to 2.1.6
жмем ентер, говорим "yes", когда спросят

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

Step 6: Modifying the port
Port: net-im/ejabberd
at : 2011/05/10 16:44:25
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. Install it if you wish.
If you have portupgrade installed, you should run

portsdb -Uu

now, to see the changes in the ports database. In any case

portupgrade -f ejabberd

will install the changed port. Note: if you run cvsup, the port
is changed back to the choosen label!
Отмечу, что portdowngrade откатывает только один пакет, без зависимостей. Поэтому стоит это учитывать, при откате на старые версии ПО.
Рortupgrade должен присутствовать в системе.

http://unixa.ru

Обновлено: 12.03.2015