Создайте deb-репозиторий с несколькими версиями одного пакета

16

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

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

Вот часть часто задаваемых вопросов о представлении, показывающая, что он не может этого сделать:

3.1) Can I have two versions of a package in the same distribution?
-------------------------------------------------------------------
Sorry, this is not possible right now, as reprepro heavily optimizes
at only having one version of a package in a suite-type-component-architecture
quadruple.
You can have different versions in different architectures and/or components
within the same suite. (Even different versions of a architecture all package
in different architectures of the same suite). But within the same
architecture and the same component of a distribution it is not possible.
Бессарабов
источник

Ответы:

11

Насколько я понимаю, при добавлении пакетов для mini-dinstall требуются файлы Debian .changes. Как я был только .deb файлы доступны я обнаружил , что точно поддерживает несколько версий , как хорошо.

Еще одним более легким вариантом является freight, который представляет собой набор сценариев оболочки для поддержки репозитория debian. Я (2017) уже три года использую фрахт для поддержания небольшого, но активно обновляемого репозитория с хорошими результатами. Одной из ключевых особенностей была возможность хранить несколько версий пакета.

Изменить: Обновлена ​​ссылка на новое грузовое репо, так как предыдущий не обновлялся с 2014 года.

bohrax
источник
1
Downvoter: хотите уточнить?
Боракс,
1
Обратите внимание, что freightон был разветвлен и теперь поддерживается по адресу github.com/freight-team/freight - оригинальная версия не обновлялась с 2014 года.
Вольфганг
@WolfgangThanks, обновил ссылку в ответе!
бура
9

Решение состоит в том, чтобы использовать мини-dinstall для управления репозиториями deb. Он не удаляет предыдущую версию пакета из хранилища.

Бессарабов
источник
2
Похоже, что это правда, только если «keep_old = 1» установлен в mini-dinstall.conf. По умолчанию (в соответствии со страницей руководства и недавним опытом) удаляются более старые версии. Протестировано с версией 0.6.29ubuntu1.
pendor
2

Я слышал хорошие вещи об альтернативе, фрахте:

https://github.com/rcrowley/freight

HTH, mistige

mistige
источник
Не уверен, почему этот ответ был отклонен, если это не было из-за отсутствия деталей. Грузовые перевозки действительно выглядят как жизнеспособная альтернатива представителю процпро, которую я намерен опробовать, так как у меня такая же потребность, как и у ОП
killthrush
Я не downvoter, но, возможно, потому что груз уже упоминался в моем ответе год назад. Во всяком случае, я могу ручаться за это как жизнеспособный вариант. Я использовал его более года для небольшого, но активно обновляемого хранилища. Мы были укушены этой проблемой, хотя: github.com/rcrowley/freight/pull/65
bohrax
1
@bohrax: похоже, что freightон был разветвлен и теперь поддерживается на github.com/freight-team/freight .
Вольфганг
-1

Если вы хотите написать файл Packages самостоятельно (например, с помощью специального скрипта), вы можете поместить туда несколько версий одного и того же пакета, и apt-get позволит вам установить конкретную версию с синтаксисом

apt-get install packagename=version

Вы можете получить всю информацию, необходимую для написания этого пакета

dpkg-deb --info package.deb

и

md5sum package.deb

При обновлении apt-get также будет выбран самый высокий номер версии (по крайней мере, в моем ограниченном тестировании).

pfyon
источник
Спасибо за ответ, но я предпочитаю использовать какую-то систему, которая будет генерировать файл Packages.
Бессарабов
Это не отвечает на вопрос о создании хранилища пакетов с несколькими версиями одного и того же пакета. Это ответ на другой вопрос.
gertvdijk
-2

Как говорит программа, более старые из них очищаются при входе нового. Обычно это делается несколькими репо. Точно так же, как Ubuntu и Debian имеют несколько репозиториев для стабильных и нестабильных версий или Natty, Oneiric, ... вам нужно иметь несколько репозиториев.

Обычно менеджеры пакетов выбирают самую новую версию пакета, поэтому пользователям будет сложно выбрать и ее.

Мартин Уединг
источник
1
Создание нескольких репозиториев не решает мою проблему. Мне нужно несколько версий одного и того же пакета, чтобы быть в одном репо. Для тех, кому интересно, зачем мне это, вот тема с моим объяснением: answers.launchpad.net/launchpad/+question/171452
bessarabov
Я боюсь, что вы должны смотреть на свою проблему под другим углом, поскольку обычные репозитории Debian не поддерживают несколько версий.
Мартин Юдинг
2
Вы не правы. Пожалуйста, ознакомьтесь с обычным репозиторием Debian ftp.us.debian.org/debian/pool/main/p/perl и убедитесь, что существует несколько версий одного и того же пакета для одной и той же картинки.
Бессарабов