Debian paketi Python modüllerini PyPI'den nasıl kurabilir?


20

Bu soru tamamlayacak çalışır bu bir . PyPI üçüncü taraf modülleri kullanan bir python uygulaması var. Uygulamamı bir debian paketine paketlemek istiyorum, ancak debian / ubuntu depolarında olmayan python bağımlılıklarını nasıl ele alacağımı bilmiyorum (debian paketleri olarak paketlenmiş)


1.Çözüm : Modülleri PyPI'den debian paketimde oluşturun.

Çözüm # 2: Stdeb
kullanarak ihtiyacım olan tüm PyPI modülleri için debian paketleri oluşturun ve bunları debian / ubuntu depolarına ekleyin.

Aslında bir Çözüm # 3'e ihtiyacım var, çünkü debian paketimi yüklerken PyPI bağımlılıklarını kurmak istiyorum, tercihen bir virtualenv'e!

Çözüm # 3 ne olurdu ? Ben çimdik gerekiyor mu DEBIAN / preinst ettirici senaryo?


Neden Debian paketi oluşturmanız gerektiğini açıklayabilir misiniz? Python uygulamanızın Python dışı kaynaklara ihtiyacı var mı?
Jonathan

@Jonathan Kullanıcıların uygulamamı Ubuntu Yazılım Merkezi'nden yükleyebilmesini istiyorum. Bunun için bir * .deb'ye ihtiyacım olduğunu düşünüyorum. Python uygulamam Python dışı kaynaklara değil, sadece üçüncü taraf python modüllerine ihtiyaç duyuyor.
andri_ch

@Jonathan Debian paketleri Ubuntu'daki standart kurulum yöntemidir. Bir kişi kolayca bir .debdosyayı dağıtabilir veya Launchpad'de özel bir havuz veya bir PPA kurabilir .
MestreLion

Yanıtlar:


20

Debian IRC kanalında irc: //irc.debian.org#debian-mentors , bazı şeylerle konuştum , aynı şeyi sordum ve genel fikir birliği:

Çözüm # 1:

Kaynak dosyalarını tek bir kod temeli olarak kopyalayarak paketinize bağımlılıkları entegre etmek çok kaşlarını çattı. Bağımlılıkları, güncellemeleri, sürümleri vb. İşleyen bir paketleme sisteminin amacını yener.

Çözüm # 3:

İkili olmayan ( .deb) yüklerken debian olmayan paketleri anında indirmek ciddi bir güvenlik riskidir, kesinlikle hayır. Hatta etmek mümkün olmaz incelemek çıkararak bağımlılıkları debonlar indirilen ve saati yüklemek kurulur çünkü. Depo sistemini tamamen atlayan bir yaklaşım. İlgili hiçbir kullanıcı, perde arkasında (ve roothatırlayın!), Güvenilir olmayan ek kaynaklardan güvenilir olmayan ek yazılımlar indiren bir paketten memnun olmaz . Evet, bu DEBIAN/postinst(veya preinst) ile uğraşmayı ve (veya wgetsizin durumunuzda,pip install) ve Flash, Oracle Java, Steam ve diğerleri tarafından alınan yaklaşım budur. Ancak bu tescilli, kapalı kaynaklı bir yazılımdır, bu yüzden güvenlikleri zaten yoktur.

Çözüm # 1.5:

Bunu söz etmedi, ancak sadece az bağımlılıkları entegre olabilir inşa zamanda içinde, yani kaynak paketi ( .orig.tar.gz, .debian.tar.gz, .dsc"ikili" paketi (oluştururken PyPi dan indirerek, üçlü) .deb). İçin talimatlar ( ikili paketin aksine küçük harfe dikkat edin) pip installgirer ve yayınladığınızda ya da yürütülür .debian/rulesdebiandebuilddpkg-buildpackage

Bu # 1 ve # 3 arasında bir orta yol. # 3'ün bazı sorunlarını hafifletir (ama çözmez!): En azından son ürünü inceleyebilirsiniz ve .debkurulum zamanında internet erişimi gerektirmez. Tüm riskler ve yükler son kullanıcıdan paket koruyucusuna aktarılır. Ancak, paketleme sistemi altyapısının çoğunu atladığı için # 1 ile aynı sorunlara sahiptir. Daha sonra, bağımlılıkları ele alma (sürümler, güncellemeler, gereksinimler, çakışmalar) ilk etapta neden yaratılmıştır dpkg/ aptyaratılmıştır! :)

Çözüm # 2:

One True Doğru ™ . Bağımlılıklarınız için debian paketleri oluşturursunuz, bunları paketinizde gereksinimler olarak listelersiniz ve tüm .debsveya kaynak paketleri gönderirsiniz.

Oradan bir dizi seçeneğiniz var:

  • Debian'a dahil edilmek için hem yazılımınızı hem de bağımlılıklarını içeren kaynak paketlerini gönderin . Kabul edilirse, Ubuntu gibi tüm türevler de dahil olmak üzere tüm Debian kullanıcıları tarafından otomatik olarak kullanılabilir.

  • Kaynak paketleri Launchpad'e yükleyin , böylece herhangi bir Ubuntu kullanıcısının (ve Linux Mint gibi türevlerinin) kolayca ekleyip kurabileceği bir PPA oluşturun

  • Web sitenizde, Debian tabanlı herhangi bir sistemden kullanıcıların ekleyebileceği ve güncellemeyi indirmek, yüklemek ve güncel tutmak /etc/apt/sources.list.diçin aptaltyapıyı kullanabilecekleri (yukarıda olduğu gibi!) Kendi debian deponuzu barındırın.

  • Ev sahibi .debdoğrudan indirmek için dosya ve yükleyin. Hiçbir aptveya otomatik güncelleme düşünülmemiştir.

PyPi bağımlılıklarınızı (ve python yazılımınızı da!) Nasıl paketleyeceğinize gelince , işlemi kolaylaştıran bir dizi araç ve referans vardır:

  • stdeb , dediğin gibi. Oldie ve güle güle.

  • Pybuild , Debian'ın yerini alan yeni ve şaşırtıcı bir araç stdeb.

Ve birçok yararlı referans:

Yardıma mı ihtiyacınız var? Bunlara göz atın:



2

Orada pypi2debpypi bir paket almak ve bir deb paketine haline getirmek.


0

Onlar, perl'deki cpan gibidir, depolarınız varsa, apt-get ile kurabilirsiniz, eğer pip ile kuramazsanız, fark / usr / local'daki pip kurulumudur.

Pip ile kurmak için şunları yapabilirsiniz:

apt-get install python-pip 
pip install foopackage 

Örneğin:

pip install MultipartPostHandler2

Bu OP'nin sorusuna cevap vermiyor. Soru, bir Debian paketinin PyPi'den bir Python paketi kurmasıdır, böylece 'apt-get <custom-package>' veya 'dpkg -i <custom-package>', PyPi'den python bağımlılıklarını çeker.
SevakPrime

Onlar, perl'deki cpan gibidir, depolarınız varsa, apt-get ile kurabilirsiniz, eğer pip ile kuramazsanız, fark pip / usr / local'da olmalıdır, ancak belki de cevabımı daha iyi sil.
Sérgio

Yorumunuz OP sorusuna uygun bir cevap veriyor. Yukarı oylanmak için bu yorumu cevabınıza koymalısınız. (Örneğin, MestreLion'un cevabına bakın.) Olduğu gibi, cevabınız OP'nin sorusuna cevap vermiyor.
SevakPrime
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.