Как опубликовать приложение с закрытым исходным кодом в 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 и поделится этой сборкой для всех архитектур. Обычно это относится к файлам данных, которые одинаковы на любом компьютере (даже в ОС).
Разрешены другие значения, но это общие.