Как опубликовать приложение с закрытым исходным кодом в i386 и amd64 в PPA?

У меня есть пакет Debian, который скомпилирован (вручную) для i386 и amd64, так как это приложение с закрытым исходным кодом.

Во избежание конфликтов при загрузке с dput в PPA launchpad.net я добавил имя архитектуры в конце версии, но это не удалось, потому что у меня ошибка, указывающая, что загружаемая версия не превышает предыдущую (загрузка пакета i386 сначала сработала, но тогда amd64 потерпит неудачу).

Например, если имя пакета привет, у меня есть следующие имена:

hello-1.0.0ubuntu1~precise1~i386
hello-1.0.0ubuntu1~precise1~amd64

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

Например, если имя пакета привет, у меня есть следующие имена:

hello-i386-1.0.0ubuntu1~precise1
hello-amd64-1.0.0ubuntu1~precise1

Таким образом, пользователь должен сделать sudo apt-get install hello-i386 или же sudo apt-get install hello-amd64

Итак, вопрос в том, как мне назвать свой пакет, чтобы пользователи могли выполнять одну и ту же команду apt-get и иметь правильную версию?

1 ответ

Решение

Наличие архитектуры в имени пакета (или в строке версии) не является хорошим решением, если у вас нет действительно веской причины для этого.

Вы получили ошибку версии, потому что Launchpad видит исходный пакет как hello и пытается обновить hello пакет, который находится в вашем PPA. Тем не менее, пакет в вашем PPA имеет большую строку версии, чем та, которую вы загружаете ("i" больше, чем "a"). Я думаю, что Launchpad также проверяет версию в основных репозиториях, поэтому вы не можете загрузить более старую версию пакета для серии, в которой более новый пакет находится в основных репозиториях.

Насколько я знаю, Launchpad не позволяет загружать двоичные файлы (даже для приложений с закрытым исходным кодом). Вам нужно только загрузить исходный архив tarball и папки debian, и Launchpad создаст его для всех применимых архитектур. Это определяется тем, что находится в файле debian / control. За каждую упаковку

  • Если есть строка, которая говорит Architecture: anyзатем Launchpad соберет пакет для (как минимум) amd64 и i386. Обычно это относится к любым библиотекам и исполняемым файлам.
  • Если есть строка, которая говорит Architecture: allзатем Launchpad скомпилирует этот файл в chroot i386 и поделится этой сборкой для всех архитектур. Обычно это относится к файлам данных, которые одинаковы на любом компьютере (даже в ОС).

Разрешены другие значения, но это общие.

Другие вопросы по тегам