macports — установка старых версий пакетов

macports  Столкнувшись с багом в одной из версий пакета из macports, встала задача вернуть старую версию. К сожаление, старой версии в локальных портах не осталось вовсе, и сделать activate и переключиться на неё не представлялось возможным. Поиск готовых решений огорчил, вот и пишу заметку, с подробностями, в надежде что многим пригодится .

Итак, будем создавать локальный репозиторий для macports, в этом примере будет всего один порт, но, сделать несколько — не проблема, как Вы сами увидите.

создаем папку где будут храниться локальные порты:

# mkdir ~/mport

идем на сайт — https://www.macports.org/ports.php и ищем свой пакет.

maports-2

Кликаем на найденный пакет (git-lfs), попадаем на:
macports-3

Выбираем ревизию которую нам необходимо, с необходимой версией файла. Внизу кликаем на текстовую версию, копируем текст.
Далее, смотрим категорию пакета (devel), и создаем папку (категория_пакета/имя_пакета):

# mkdir -p ~/mport/devel/git-lfs

создаем файл и вставляем туда текст скопированный ранее.

# vim ~/mport/devel/git-lfs/Portfile

далее идем в ~/mport и выполняем:

# portindex

Редактируем файл /opt/local/etc/macports/sources.conf

и добавляем туда:

file:///Users/ваша_домашняя_папка/mport

перед:

rsync://rsync.macports.org/release/tarballs/ports.tar [default]

сохраняем и ищем пакет:

# port search git-lfs

получаем:
macports-4

и устанавливаем:

# sudo port install git-lfs @1.1.0

Вот и всё, мы добились желаемого. Я думаю что понятно, что при необходимости поставить старые версии нескольких пакетов, нужно всего лишь повторить создание папок и файлов Portfile, для каждого из них, а потом уже выполнить portindex.

А всё началось с бага в git-lfs @1.1.1 — не ну хотел он никак работать, даже клон git-ом нельзя было сделать, если репозиторий содержал файлы помеченные lfs.

Не забудьте убедиться, что нужная Вам версия имеется на зеркалах, но обычно, 2-3 версии назад всегда есть на зеркалах.

Удачи в настройках.
© shadow_alone

Leave a Reply

You must be logged in to post a comment.