Я розмовляв з деякими технічними працівниками на Debian IRC-каналі irc: //irc.debian.org#debian-mentors , запитуючи про те саме, і загальний консенсус був:
Рішення №1:
Інтеграція залежностей у ваш пакет, копіюючи їх вихідні файли у єдину базу коду, дуже нахмуриться. Це перешкоджатиме призначенню системи упаковки, яка обробляє залежності, оновлення, версії тощо.
Рішення №3:
Завантаження недебіанських пакетів під час встановлення бінарного файлу ( .deb) є серйозним ризиком для безпеки, безумовно - ні-ні. Ви навіть не зможете перевірити залежності, витягнувши deb, оскільки вони завантажуються та встановлюються під час встановлення. Це підхід, який повністю обходить систему сховищ. Жоден зацікавлений користувач не буде задоволений пакетом, який за лаштунками (і як root, пам’ятайте!) Завантажує додаткове ненадійне програмне забезпечення з недовірених джерел. Так, це потребує спільного використання DEBIAN/postinst(або preinst) та видачі wget(або, у вашому випадку,pip install), і такий підхід застосовують Flash, Oracle Java, Steam та інші. Але це власне програмне забезпечення із закритим кодом, тому їхня безпека все одно не є.
Рішення №1.5:
Ви не згадали, але ви могли б інтегрувати залежності тільки на час збирання , тобто в початковому пакетом ( .orig.tar.gz, .debian.tar.gz, .dscтріади), скачавши з PyPi при створенні «двійковий» пакет (в .deb). Інструкції для pip installпішов би в debian/rules(зверніть увагу на нижній регістр debian, на відміну від бінарного пакета), і буде виконуватися , коли ви видаєте debuildчи dpkg-buildpackage.
Це середина між №1 та №3. Це пом'якшує (але не вирішує!) Деякі питання №3: принаймні, ви можете оглянути кінцевий продукт, і це .debне вимагатиме доступу до Інтернету під час встановлення. Усі ризики та тягарі передаються від кінцевого користувача до сервісного пакета. Але має ті ж проблеми, що і №1, оскільки вона обходить більшу частину інфраструктури пакувальної системи. Afterall, обробки залежностей (версії, оновлення, вимога, конфлікти) ось чому dpkg/ aptбули створено в першу чергу! :)
Рішення №2:
Єдиний Правдивий Правильний шлях ™ . Ви створюєте пакети debian для своїх залежностей, перераховуєте їх як вимоги у своєму пакеті та відправляєте всі .debsабо вихідні пакети.
Звідти у вас є ряд варіантів:
Подайте вихідні пакети, як ваше програмне забезпечення, так і його залежності, для включення в Debian. Якщо це буде прийнято, вони будуть автоматично доступні для всіх користувачів Debian, включаючи всі похідні, такі як Ubuntu.
Завантажте вихідні пакети на Launchpad , створивши таким чином PPA, який будь-який користувач Ubuntu (та його похідні, такі як Linux Mint) могли легко додавати та встановлювати
Розмістіть власний сховище debian на своєму веб-сайті, щоб користувачі з будь-якої системи, що базується на Debian, могли додавати до них /etc/apt/sources.list.dта використовувати aptінфраструктуру для завантаження, встановлення та постійного оновлення (як вище!)
Розмістіть .debфайли для прямого завантаження та встановлення. Ніяких aptабо автоматичних оновлень, пов'язаних думкою
Що ж стосується , як упакувати ваші залежності PyPi (! І програмне забезпечення пітон теж), існує цілий ряд інструментів і посилань , які роблять процес легко:
stdeb , як ви згадали. Олді та добрі.
Pybuild , новий дивовижний інструмент від Debian, який витісняє stdeb.
І багато корисних посилань:
Потрібна допомога? Перевірте це: