GNU/Linux >> Belajar Linux >  >> Linux

Cara mengemas aplikasi Python untuk Linux

Salah satu cara untuk membuat aplikasi Python dapat diinstal pada sistem operasi berbasis Debian (seperti Debian atau Elementary OS) adalah dengan menggunakan alat dh_virtualenv. Itu membangun .deb paket yang membungkus lingkungan virtual Python di sekitar aplikasi dan menyebarkannya saat menginstal.

Dalam artikel ini, saya akan menjelaskan cara menggunakannya dengan contoh membangun paket yang berisi alat HTTPie untuk menguji API HTTP dari baris perintah tanpa harus mengaktifkan lingkungan virtual.

Kemasan dengan dh_virtualenv

Pertama, Anda perlu menginstal alat yang dibutuhkan dh_virtualenv. Dokumentasi dh_virtualenv menyediakan semua opsi instalasi. Pada sistem berbasis Debian saya, saya memasukkan:

apt-get install dh-virtualenv devscripts 

Meskipun paket devscripts tidak diperlukan, ini akan menyederhanakan melakukan operasi selanjutnya.

Sekarang, buat direktori untuk menyimpan sources. Karena ini adalah paket HTTPie lokal, tidak resmi, saya menyebutnya myhttp . Selanjutnya, mari buat beberapa file di dalam myhttp untuk menyediakan metadata ke sistem pembangunan Debian.

Pertama, buat debian/control berkas:

Sumber:myhttp
Bagian:python
Prioritas:ekstra
Pemelihara:Jan Doe
Build-Depends:debhelper (>=9), python3.7, dh-virtualenv (>=0.8)
Versi Standar:3.9.5

Paket:myhttp
Arsitektur:apa saja
Tergantung sebelumnya:dpkg (>=1.16.1), python3.7, ${misc:Pre-Depends}
Tergantung:${misc:Depends}
Deskripsi:http client
 Berguna untuk melakukan sesuatu

Jadi tentang apa semua informasi ini? Seperti yang dikatakan dokumentasi Debian:

"Baris 1–7 adalah informasi kontrol untuk paket sumber. Baris 9–13 adalah informasi kontrol untuk paket biner."

Ini pendapat saya:

  • bagian nilai sebagian besar tidak berarti untuk kasus kami, tetapi perlu ada di sana. Sangatlah penting untuk memberikan informasi kepada pemasang UI yang dipandu, yang tidak relevan untuk paket ini.
  • Ekstra Prioritas value adalah prioritas yang tepat untuk paket pihak ke-3 seperti ini.
  • Sangat disarankan untuk memasukkan detail kontak asli di Pengelola bidang. Namun tidak harus email pribadi Anda -- "Tim Infrastruktur ", misalnya, jika paket dikelola oleh tim dan Anda ingin masalah dikirim ke email alias tim.
  • bergantung pada bangunan kolom menunjukkan bahwa Anda memerlukan debhelper, python, dan dh-virtualenv untuk membangun paket:proses pembuatan paket akan memastikan dependensi tersebut diinstal pada waktu pembuatan paket.
  • Versi standar sebagian besar untuk konsumsi manusia. Ini menunjukkan panduan mana yang Anda ikuti. Panduan ini didasarkan pada dokumentasi resmi dh-virtualenv, yang didasarkan pada panduan 3.9.5 dari Debian. Ini hampir selalu merupakan pilihan terbaik untuk memberi nama paket biner dan paket sumber yang sama.
  • Arsitektur bidang harus Apa saja karena lingkungan virtual mungkin menyertakan beberapa file khusus arsitektur:jika tidak, bidang akan lebih baik dipilih sebagai semua .
  • Simpan pra-tergantung list apa adanya:pre-depends adalah bentuk dependensi yang cukup ketat, dan jarang Anda memerlukan sesuatu yang lebih dari jumlah minimum yang disarankan di sini. Dependensi biasanya dihitung secara akurat oleh sistem build, jadi tidak ada alasan untuk menentukannya secara manual.
  • Jika paket Anda sebagian besar untuk penggunaan internal, maka Deskripsi mungkin hanya menentukan informasi minimal dan tautan ke wiki perusahaan; jika tidak, detail lebih lanjut mungkin berguna.

Kemudian buat debian/compat file, yang sebagian besar ada untuk tujuan historis:

$ echo "9" > debian/compat 

Selanjutnya, buat changelog untuk memberi tahu pengguna paket apa yang telah berubah sejak rilis terakhir. Cara termudah adalah dengan menggunakan dch --create untuk membuat template lalu isi nilainya.

Diisi, terlihat seperti:

myhttp (2.0.0-1) stabil; urgensi=medium

  * Rilis awal.

 -- Jan Doe  Jumat, 27 Mar 2020 01:09:22 +0000

Sekarang Anda perlu memberi tahu alat untuk menginstal HTTPie, tetapi versi yang mana?

Buat requirements.in file yang memiliki versi longgar:

httpie 

Secara umum, file persyaratan longgar hanya akan berisi dependensi langsung dari proyek Anda dan akan menentukan versi minimum jika diperlukan. Tidak selalu perlu untuk menentukan versi minimum:alat biasanya condong ke arah pengetatan ketergantungan terhadap "versi terbaru yang memungkinkan". Jika paket Debian Anda sesuai dengan satu paket Python internal, kasus umum dalam aplikasi internal, file persyaratan longgar akan terlihat serupa:hanya satu baris dengan nama paket.

Kemudian gunakan pip-compile (yang tersedia dengan menginstal paket PyPI pip-tools ):

$ pip-compile requirements.in > requirements.txt 

Ini akan menghasilkan file dependensi ketat yang disebut requirements.txt :

#
# File ini dibuat secara otomatis oleh pip-compile
# Untuk memperbarui, jalankan:
#
#    pip-compile requirements.in
#
certfi==2019.11.28       # melalui permintaan
chardet==3.0.4            # melalui permintaan
httpie==2.0.0             # melalui -r requirements.in
idna==2.9            melalui permintaan
pigmen==2.6.1           # melalui httpie
permintaan==2.23.0          # melalui httpie
urllib3==1.25.8           # melalui permintaan

Terakhir, tulis debian/rules file untuk membuat paket. Karena dh_virtualenv melakukan semua kerja keras, file aturannya sederhana:

#!/usr/bin/make -f

%:
        dh $@ --with python-virtualenv --python /usr/bin/python3.7

Pastikan untuk menentukan juru bahasa Python. Secara default, ini akan menggunakan penerjemah di /usr/bin/python , yaitu Python 2, tetapi Anda harus menggunakan versi Python yang didukung.

Penulisan selesai; yang tersisa hanyalah membangun paket:

$ debuild -b -us -uc 

Lebih banyak sumber daya Linux

  • Lembar contekan perintah Linux
  • Lembar contekan perintah Linux tingkat lanjut
  • Kursus online gratis:Ikhtisar Teknis RHEL
  • Lembar contekan jaringan Linux
  • Lembar contekan SELinux
  • Lembar contekan perintah umum Linux
  • Apa itu container Linux?
  • Artikel Linux terbaru kami

Ini akan menghasilkan file di direktori induk dengan nama seperti myhttp_2.0.0-1_amd64.deb . File ini dapat diinstal pada sistem operasi apa pun yang kompatibel.

Secara umum, yang terbaik adalah membangun paket Debian yang ditujukan untuk platform tertentu, seperti Debian 10.0, pada platform yang sama.

Anda dapat menyimpan paket Debian ini dalam repositori dan menginstalnya di semua sistem yang relevan dengan, misalnya, Ansible.

Kesimpulan

Pengemasan aplikasi untuk sistem operasi berbasis Debian adalah proses multi-langkah. Menggunakan dh_virtualenv akan membuat prosesnya mudah.


Linux
  1. Cara menginstal Python di Linux

  2. Cara Membuat Direktori Bersama untuk Semua Pengguna di Linux

  3. Cara membuat paket RPM Linux

  1. Cara Membuat Script Perintah Linux

  2. Cara Membuat Swap di Linux

  3. Cara membuat layanan Systemd di Linux

  1. Cara membuat file swap di Linux

  2. Cara membuat user di linux menggunakan python

  3. Bagaimana cara membuat paket pengujian Travis CI untuk Linux, OS X, Windows?