2013-07-01 20 views
17

almak için bir piton programı debianzingamacı bir .deb

yüklenebilir bir .deb dosyasını (veya paket) oluşturmak için. Hangi tıklandığında yazılımı bir Linux makinesine yükler ve GNOME paneline bir simge konur. Bu uygulamayı oradan başlatmak için.

Ben

atıfta bulunmuşlardır Ya iki debianlaştırmak kılavuzları anılacaktır.

Guide 1

Guide 2

ilki kısmen aksanı ve kısmen de umutsuzca modası geçmiş, anlaşılması imkansız bir video vardı. (2007 yılında yüklendiği)

Ve ikincisi tamamen metinti. 4. Adım'a kadar var, paketi kuruyor. Ama bunu yaptığımda rehberde verilenle eşleşmeyen çıktı aldım. Ben gerektiren ne

ben basit piton program var. Yaşınız alınıyor ve yaşın 18 yaşından küçük, eşit veya üstü olması durumunda tekrar yazdırılıyor. Bu program için sadece bir dosya ve başka bir bağımlılık yoktur. Ve bunu .deb'a kurmak istiyorum. Eğer senin kadar anlatıldığı gibi

Özellikleri

-Python 2.7

-Linux Nane

Düzenleme

Ben tam dizin yapısını izledi. Ve tüm myscript, cowsandbulls ile değiştirildi. Yapı tamamlandı ve debianı aldım.

Traceback (most recent call last): 
    File "/usr/bin/cowsandbulls", line 9, in <module> 
    load_entry_point('cowsandbulls==1.0', 'gui_scripts', 'cowsandbulls')() 
    File "/usr/lib/python2.7/dist-packages/pkg_resources.py", line 337, in load_entry_point 
    return get_distribution(dist).load_entry_point(group, name) 
    File "/usr/lib/python2.7/dist-packages/pkg_resources.py", line 2311, in load_entry_point 
    return ep.load() 
    File "/usr/lib/python2.7/dist-packages/pkg_resources.py", line 2017, in load 
    entry = __import__(self.module_name, globals(),globals(), ['__name__']) 
ImportError: No module named cowsandbulls 

cevap

21

Sadece stdeb test (https://pypi.python.org/pypi/stdeb bakınız) Debian paketi içine başka bir Python paketi dönüm için bir Python paketi: yeniden yükledikten sonra terminalden komutunu cowsandbulls koştu zaman aşağıdaki hata var.

apt-get install python-stdeb 

Sonra aşağıdaki içeriği ile myscript.py denilen basit bir komut dosyası yapılmış:

Önce stdeb yüklü Önemli

def main(): 
    print "Hello world, says myscript!" 
    # wait for input from the user 
    raw_input() 

if __name__ == '__main__': 
    main() 

, dizin yapısı olmalıdır:

somewhere/myscript/ 
    setup.py 
    myscript/ 
     __init__.py 
     myscript.py 

Kurulumda.py dosyası, sen böyle bir şey yapmak:

import os 
from setuptools import setup 
from nvpy import nvpy 

setup(
    name = "myscript", 
    version = "1.0", 
    author = "Charl P. Botha", 
    author_email = "[email protected]", 
    description = "Demo of packaging a Python script as DEB", 
    license = "BSD", 
    url = "https://github.com/cpbotha/nvpy", 
    packages=['myscript'], 
    entry_points = { 
     'console_scripts' : ['myscript = myscript.myscript:main'] 
    }, 
    data_files = [ 
     ('share/applications/', ['vxlabs-myscript.desktop']) 
    ], 
    classifiers=[ 
     "License :: OSI Approved :: BSD License", 
    ], 
) 

console_scripts direktifi önemlidir, bu bileşke DEB yükledikten sonra kullanılabilir sistem genelinde olacak my_script adlı çalıştırılabilir komut dosyası oluşturacaksınız. Komut dosyanız tkinter veya wxpython gibi bir şey kullanıyorsa ve bir grafik kullanıcı arabirimine sahipse, console_scripts yerine gui_scripts kullanmalısınız.

data_files yönergesi, /usr/share/applications içine uygun bir masaüstü dosyası yükleyecektir, böylece masaüstü ortamınızdan da myscript'u başlatabilirsiniz. vxlabs-myscript.desktop şuna benzer: deb_dist dizinde .deb yaratacak

python setup.py --command-packages=stdeb.command bdist_deb 

:

[Desktop Entry] 
Version=1.0 
Type=Application 
Name=myscript 
Comment=Minimal stdeb example 
# myscript should wait for user input at the end, else the terminal 
# window will disappear immediately. 
Exec=myscript 
Icon=/usr/share/icons/gnome/48x48/apps/file-manager.png 
Categories=Utility; 
# desktop should run this in a terminal application 
Terminal=true 
StartupNotify=true 
StartupWMClass=myscript 

DEB oluşturmak için, üst düzey myscript aşağıdakileri yapın.

Bu şekilde oluşturulmuş DEB'yi yükledikten sonra, komut satırından myscript çalıştırabilir ve ayrıca masaüstü ortamımdan da kullanabilirim. Bir deb paketi binanın doğru yolu dpkg-buildpackage kullanıyor ama bazen biraz karmaşıktır https://github.com/cpbotha/stdeb-minimal-example

+0

Sir alındı. Ne '__ __init py' içeriği olmalıdır? – IcyFlame

+1

'__init __. Py' boş bir dosyadır, ancak buna sahip olmanız gerekir, diğer bir deyişle“ myscript ”dizini bir paket olarak görülmez ve alınamaz. Cevabımın alt kısmında yayınladığım github bağlantısı tüm kodlara sahiptir. –

+0

Giriş noktasını başka bir işlevin ismine değiştirebilir miyim? – IcyFlame

1

:

İşte yukarıdaki örnek koduyla bir github repo var. Bunun yerine, dpkg -b <folder>'u kullanabilir ve Debian paketinizi oluşturacaktır.

  1. dosyaları oluşturun:

    Bu

    herhangi bir ikili veya manuel derleme (Python, Bash, İnci, Yakut) gerek kalmadan otomatik olarak çalışır script her türlü dpkg -b <folder> ile Debian paketini oluşturmak için temel bilgiler aşağıda ve aşağıdaki yapıyı yeniden oluşturmak için klasörler:, /usr/bin/ yerleştirilmiş
ProgramName-Version/ 
    ProgramName-Version/DEBIAN 
    ProgramName-Version/DEBIAN/control 
    ProgramName-Version/usr/ 
    ProgramName-Version/usr/bin/ 
    ProgramName-Version/usr/bin/your_script 

komut doğrudan terminalden denir ben scr uzantı eklemek vermedi dikkat ut. Ayrıca, borç paketinin yapısının, yüklendikten sonra programın yapısı olacağını da görebilirsiniz. Programınız tek bir dosyaya sahipse bu mantığı izlerseniz, ProgramName-Version/usr/bin/your_script'un altına doğrudan yerleştirebilirsiniz, ancak birden çok dosyanız varsa, ProgramName-Version/usr/share/ProgramName/all your files'un altına yerleştirmeniz ve /usr/bin/'un altında sadece bir dosya yerleştirmeniz yeterli olacaktır. Bu, komut dosyalarınızı /usr/share/ProgramName/

köküne
  • değiştirin tüm klasör iznini

      :

      chown root:root -R /path/to/ProgramName-Version 
      
    1. Değişim scriptin izinleri:

      chmod 0755 /path/to/the/script 
      
    2. Son olarak şunları çalıştırabilirsiniz: dpkg -b /path/to/the/ProgramName-Version ve deb paketiniz oluşturulacak!


    İşte control dosyanın bir örnektir (Ayrıca posta/ön inst komut ekleyebilir ve istediğiniz her şeyi, normal bir Debian paketi gibi çalışır). Yalnızca "kontrol" olarak adlandırılan bir boş dosyaya kopyalayıp yapıştırın ve her şeyi yapacak sen this program kullanabilirsiniz dpkg -b <folder> kullanarak oluşturmak istiyorsanız DEBIAN klasörüne

    Package: ProgramName 
    Version: VERSION 
    Architecture: all 
    Maintainer: YOUR NAME <EMAIL> 
    Depends: python2.7, etc , etc, 
    Installed-Size: in_kb 
    Homepage: http://foo.com 
    Description: Here you can put a one line description. This is the short Description. 
    Here you put the long description, indented by 1 space. 
    

    koymak gerekir tek komut. Düzenli olarak paketler oluşturursanız, bahsettiğim tüm şeyleri yapmak acıdır!

    * kılavuz Basics of Debian Packages