LINUX.ORG.RU

История изменений

Исправление monk, (текущая версия) :

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

Почему? Предположим, я захотел сделать такую возможность для Debian.

Мне нужны следующие команды-утилиты:

  • repo-init

Перебирает все установленные пакеты и для каждого делает apt source в /usr/src/repo

  • repo-get <имя пакета>

Копирует исходники пакета из /usr/src/repo в /usr/src/current/<имя пакета>

  • repo-commit <имя пакета>

Собирает пакет из /usr/src/current/, устанавливает его через dpkg, записывает имя в файл с именами изменённых пакетов.

  • repo-upgrade

Вытаскивает список пакетов для обновления через apt, для каждого обновляемого изменённого вытаскивает новый исходник, объединяет через kdiff3 новый, старый и текущий. Получает новый текущий, собирает пакет.

Обновляет все остальные пакеты, ставит новые версии изменённых.

Для всех обновлённых скачивает новые исходники в /usr/src/repo

  • repo-restore <имя пакета>

Устанавливает пакет из дистрибутива. Удаляет из списка обновлённых.


Всё. С поправкой на команды получения исходников и обновления можно адаптировать для любого дистрибутива.

Исходная версия monk, :

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

Почему. Предположим, я захотел сделать такую возможность для Debian.

Мне нужны следующие команды-утилиты:

  • repo-init

Перебирает все установленные пакеты и для каждого делает apt source в /usr/src/repo

  • repo-get <имя пакета>

Копирует исходники пакета из /usr/src/repo в /usr/src/current/<имя пакета>

  • repo-commit <имя пакета>

Собирает пакет из /usr/src/current/, устанавливает его через dpkg, записывает имя в файл с именами изменённых пакетов.

  • repo-upgrade

Вытаскивает список пакетов для обновления через apt, для каждого обновляемого изменённого вытаскивает новый исходник, объединяет через kdiff3 новый, старый и текущий. Получает новый текущий, собирает пакет.

Обновляет все остальные пакеты, ставит новые версии изменённых.

Для всех обновлённых скачивает новые исходники в /usr/src/repo

  • repo-restore <имя пакета>

Устанавливает пакет из дистрибутива. Удаляет из списка обновлённых.


Всё. С поправкой на команды получения исходников и обновления можно адаптировать для любого дистрибутива.