Tek bir python betiği için nasıl bir deb paketi oluşturabilirim?


78

Deb paketi olarak dağıtmak istediğim tek bir python betiğim var. Birlik panelinde yerel tarihi gösteren bir göstergedir . Ben takip etti komut dosyaları veya ikili bir .deb paketi oluşturmak ancak başarısız çünkü bir deb paketi oluşturmak olamazdı.

Birisi bana ne yapmam gerektiği konusunda adım adım talimat verebilir mi? Bildiğim kadarıyla bu senaryo bağlı python-appindicator.

NOT:
Debian / Ubuntu paketleme talimatlarına bağlantı vermek istemiyorum. Ben çoğunu gördüm. Onları acemi dostu bulmuyorum.


6
Debian ve Ubuntu paketleme talimatları yeni başlayanlar için uygun olmamakla birlikte (güven bana, biliyorum), sizler için borç yaratan birçok GUI uygulaması, lintian gibi son bir paket kontrolcüsünü çalıştırdığınızda sadece bir sürü hataya yol açar. Ambalajlama konusunda ciddiyseniz, onu dağıtmak ve talimatlara uymak en iyi yoldur :)
Thomas Boxley

Paketleme hakkında bilgim yok, ancak eklemeye çalıştığınız işlevsellik, Birliğe yerleşiktir.
Saat

Yanıtlar:


84

Aşağıdaki, bir python betiği için bir kaynak paketin nasıl görünebileceğinin temel bir örneğidir. Ambalaj eğitimlerinin çoğu biraz karmaşık olsa da, bir sorunla karşılaştığınızda gerçekten yardımcı olabilirler. Bununla birlikte, ilk önce Debian paketlerine bakarak Debian paketlemesinin temellerini öğrendim. apt-get sourcebenzer bir şey ve örnek ile öğrenin.

İşte temel kaynak paket düzeniniz:

my-script/
    -- myScript
    -- debian/
        -- changelog
        -- copyright
        -- compat
        -- rules
        -- control
        -- install

dch --createDüzgün biçimlendirilmiş bir debian/changeloggiriş oluşturmak için dizinde çalıştırın .

debian / copyright şöyle görünmeli:

Format: http://www.debian.org/doc/packaging-manuals/copyright-format/1.0/
Upstream-Name: myScript
Upstream-Contact: Name, <email@address>

Files: *
Copyright: 2011, Name, <email@address>
License: (GPL-2+ | LGPL-2 | GPL-3 | whatever)
 Full text of licence.
 .
 Unless there is a it can be found in /usr/share/common-licenses

debian / uyumlu olabilir:7

debian / kurallar :

#!/usr/bin/make -f

%:
    dh $@ --with python2

Boşluktan önce "sekme" olması gerektiğini unutmayın dh $@ --with python2.

debian / kontrol :

Source: my-script
Section: python
Priority: optional
Maintainer: Name, <email@address>
Build-Depends: debhelper (>= 7),
               python (>= 2.6.6-3~)
Standards-Version: 3.9.2
X-Python-Version: >= 2.6


Package: my-script
Architecture: all
Section: python
Depends: python-appindicator, ${misc:Depends}, ${python:Depends}
Description: short description
 A long description goes here.
 .
 It can contain multiple paragraphs

debian / install :

myScript usr/bin/

Bu dosya, hangi dosyanın hangi klasöre yükleneceğini gösterir.

Şimdi inşa et debuild --no-tgz-check

Bu, işlevsel bir deb paketi oluşturacaktır. Lintian, bir orig.tar.gz'nin eksikliği hakkında birkaç uyarı verecek, ancak tarball bültenleri yapan uygun bir yukarı akış projesi oluşturmayı planlamıyorsanız, muhtemelen şimdilik bunu görmezden gelmek isteyeceksiniz.


12
Bir paketleyici (ve destekçi) olarak, python scriptlerini oldukça sık paketlerim. Bu cevabın tek bir python betiği için bir paket oluşturmak için ne yapılacağının en eksiksiz açıklaması olduğunu güvenle söyleyebilirim.
Thomas Ward

2
Python 3 için de güncelleyebilir misiniz? Sanırım değişiklik yapmalıyız debian/rulesve bundan debian/controlemin değilim.
Aditya

1
@Aditya, Python3 için yeni bir soru olabilir mi? Cevap çok farklı olmayacaktı, ancak bu cevap bir Python betiğini nasıl paketleyeceğinin en basit / en küçük örneği olmayı hedefliyor. Birden çok uygulama ile karıştırmak istediğimden emin değilim.
andrews,

@andrewsomething: Sonra ilginizi çekebilir bu bir ... Ben ona elimi denemek istiyorum, o yorumunu ... düzenleme Biraz o konuda gerekli terk etmemi istenir
Aditya

1
Kütüphanelerden ne haber? Python betiği kütüphaneleri içe
aktarırsa

18
  1. Evinizde herhangi bir adla bir klasör oluşturun, örneğin: mypyscript
  2. Klasörü açın ve 'DEBIAN' ve 'usr' adlarıyla iki klasör oluşturun.
  3. DEBIAN klasörünü açın. Orada 'kontrol' adında bir metin dosyası (uzantısız) oluşturun.
  4. 'Control' açın ve aşağıdaki gibi yazın ve DEBIAN'a kaydedin

    Package: mypyscript
    Version: 0.01
    Architecture: all
    Maintainer: your name<your mail id>
    Installed-Size: 2
    Depends: python-appindicator
    Section: extras
    Priority: optional
    Homepage: your homepage
    Description: describe
    
  5. Mypyscript adlı klasöre dön. 'Usr' açın. 'Bin' adında bir klasör oluşturun. 'Bin' açın ve pythonscript dosyanızı buraya yapıştırın.

  6. Ayrıca bir menü girişi yapabilirsiniz. Ancak bu şart değil.
  7. 'Mypyscript' klasörünün bulunduğu ana klasöre dönün veya dosya tarayıcısını kapatın.
  8. Terminali aç. Terminalin giriş klasöründe olduğundan emin olun. yazın. dpkg -b mypyscriptSonra enter tuşuna basın. Saniye içinde deb paketiniz hazır

Not: Lütfen 'kontrol' dosyasını doğru doldurunuz. Kesme işareti kullanmayın. Sadece isimleri belirtmek içindir.


1
Harika çalışıyor! Kabul edilen cevap karmaşıktır.
SuB

'Myscript'in iznini 755'e ve sahibini root olarak değiştirmeyi unutmayın.
SuB

Bir menü girişini nasıl oluştururum?
Yapılacak

9

Paket oluşturmak için bir GUI aracı olan Debreate ile deneyebilirsiniz .


Borçlu serin. Şimdiye kadar beğendim, bugün python kaynak kodundan derlemek için kullanmaya başladım.
CevapSeeker


2

Deneyin pkgme . Sadece Çalışması gerekiyordu.

Şununla yükleyin:

sudo apt install pkgme

Şununla koş:

pkgme
debuild

(Yeni bir geliştiricinin çalışması gerekebilir, bunu doğru yapmak gpg --gen-keyiçin Geliştirme Anahtarları Atama'ya bakın )



0

Debreate kullanmayı deneyebilirsiniz

Bu, yukarıda listelenen web sitesinden indirmek istemiyorsanız, PPA'yı kullanabileceğiniz paketler ve şeyler oluşturmak için bir Gui Arabirimidir.

sudo add-apt-repository ppa:antumdeluge/<ppaname>; sudo apt update; sudo apt install debreate

PPA'yı tek bir kod satırı olarak çalışacak şekilde yoğunlaştırdım! Harika soru için teşekkürler ve bu kod satırlarını terminale sokmaya devam ettiğinizden emin olun!

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.