Bagaimana cara membuat paket deb untuk skrip python tunggal?


78

Saya memiliki skrip python tunggal yang ingin saya bagikan sebagai paket deb. Ini adalah indikator yang menunjukkan tanggal lokal di panel Unity. Saya memang mengikuti membuat Paket deb. Dari skrip atau binari tetapi saya tidak bisa membuat paket deb karena gagal.

Dapatkah seseorang memberi saya petunjuk langkah demi langkah tentang apa yang harus saya lakukan? Sejauh yang saya tahu script ini tergantung python-appindicator.

CATATAN:
Saya tidak ingin ada tautan ke instruksi pengemasan Debian / Ubuntu. Saya telah melihat sebagian besar dari mereka. Saya tidak menemukan mereka ramah pemula.


6
Meskipun instruksi pengemasan Debian dan Ubuntu tidak ramah untuk pemula (percayalah, saya tahu), banyak aplikasi GUI yang membuat debs untuk Anda hanya menimbulkan banyak kesalahan ketika Anda menjalankan pemeriksa paket akhir, seperti lintian. Jika Anda serius tentang pengemasan, kemudian mengeluarkannya dan mengerjakan instruksi adalah cara terbaik untuk pergi :)
Thomas Boxley

Saya tidak tahu tentang pengemasan, tetapi fungsionalitas yang Anda coba tambahkan dibangun ke Unity.
Ini Willem

Jawaban:


84

Berikut ini adalah contoh dasar tentang bagaimana paket sumber untuk skrip python mungkin terlihat. Meskipun sebagian besar tutorial pengemasan agak rumit, mereka bisa sangat membantu jika Anda menemukan masalah. Yang mengatakan, saya pertama kali mempelajari dasar-dasar kemasan Debian hanya dengan melihat paket Debian. apt-get sourcesesuatu yang serupa dan pelajari dengan contoh.

Berikut tata letak paket sumber dasar Anda:

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

Jalankan dch --createdi direktori untuk membuat debian/changelogentri yang diformat dengan benar .

debian / hak cipta akan terlihat seperti:

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 / compat bisa saja:7

debian / aturan :

#!/usr/bin/make -f

%:
    dh $@ --with python2

Perhatikan bahwa harus ada "tab" sebelumnya dh $@ --with python2, bukan spasi.

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 / instal :

myScript usr/bin/

File ini menunjukkan file mana yang akan diinstal ke folder mana.

Sekarang bangun dengan debuild --no-tgz-check

Ini akan membuat paket deb fungsional. Lintian akan memberikan beberapa peringatan tentang kurangnya orig.tar.gz, tetapi kecuali jika Anda berencana untuk membuat proyek hulu yang tepat yang membuat rilis tarball Anda mungkin hanya ingin mengabaikan itu untuk saat ini.


12
Sebagai pembuat paket (dan backporter), saya sering mengemas skrip python. Saya dapat dengan aman mengatakan bahwa jawaban ini di sini adalah penjelasan paling lengkap tentang apa yang harus dilakukan untuk membuat paket untuk skrip python tunggal.
Thomas Ward

2
Bisakah Anda juga memperbarui untuk Python 3? Saya kira kita perlu melakukan perubahan debian/rulesdan debian/control, tapi saya tidak yakin tentang itu.
Aditya

1
@Aditya, mungkin pertanyaan baru untuk Python3? Jawabannya tidak akan jauh berbeda, tetapi jawaban ini bertujuan untuk menjadi contoh minimum paling sederhana / telanjang tentang cara mengemas skrip Python. Tidak yakin saya ingin mengacaukannya dengan beberapa implementasi.
andrewsomething

@andrewsomething: Maka Anda mungkin tertarik pada yang ini yang mendorong saya untuk meninggalkan komentar itu ... Diperlukan sedikit pengeditan pada yang itu, saya akan mencoba melakukannya ...
Aditya

1
Bagaimana dengan perpustakaan? Jika skrip python mengimpor perpustakaan maka itu tidak akan berfungsi
D.Snap

18
  1. buat folder dengan nama apa saja di rumah Anda misalnya: mypyscript
  2. Buka folder dan buat dua folder dengan nama 'DEBIAN' dan 'usr'
  3. Buka folder DEBIAN. Buat file teks (tanpa ekstensi) dengan nama 'kontrol' di sana.
  4. Buka 'control' dan ketik sebagai berikut dan simpan di DEBIAN

    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. Kembali ke folder bernama mypyscript. Buka 'usr'. Buat folder bernama 'bin'. Buka 'bin' dan rekatkan file pythonscript Anda di sana.

  6. Anda juga dapat membuat entri menu. Tapi itu tidak penting.
  7. Kembali ke folder rumah di mana folder 'mypyscript' terletak atau tutup file browser.
  8. Terminal terbuka. Pastikan terminal ada di folder rumah. ketik. dpkg -b mypyscriptLalu tekan enter. Dalam hitungan detik paket deb Anda siap

Catatan: silakan isi file 'control' dengan benar. Jangan gunakan tanda kutip. Ini hanya untuk menunjukkan nama.


1
Bagus sekali! Jawaban yang diterima rumit.
SuB

Jangan lupa untuk mengubah izin 'myscript' ke 755 dan pemiliknya untuk root.
SuB

Bagaimana cara membuat entri menu?
Untuk Dilakukan

9

Anda dapat mencoba dengan Debreate , alat GUI untuk membuat paket.


Debcreate itu keren. Saya suka sejauh ini, baru mulai menggunakannya hari ini untuk membangun dari kode sumber python.
answerSeeker


2

Coba pkgme . Seharusnya Just Work.

Instal melalui:

sudo apt install pkgme

Jalankan melalui:

pkgme
debuild

(Pengembang baru mungkin harus menjalankan gpg --gen-key, lihat Kunci Pengembangan untuk melakukan ini dengan benar)



0

Anda dapat mencoba menggunakan Debreate

Ini adalah Gui Interface untuk membuat paket dan hal-hal yang dapat Anda gunakan PPA juga jika Anda tidak ingin mengunduhnya dari situs web yang tercantum di atas.

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

Ive mengosongkan ppa sehingga itu berjalan sebagai satu baris kode! Terima kasih atas pertanyaan yang luar biasa dan pastikan untuk terus memasukkan baris kode tersebut ke terminal!

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.