Apa yang perlu saya ketahui jika saya ingin menulis aplikasi yang akan berjalan di distro Linux apa pun?

15

Saya berencana untuk menulis aplikasi yang ingin saya jalankan di instalasi Linux apa pun tanpa harus menulis ulang kode apa pun dalam melakukannya (kecuali mungkin antarmuka, GNOME vs KDE, dll).

Saya tidak terlalu berpengalaman dalam detail perbedaan antara distro, dan saya juga tidak bisa memberikan rincian tentang proyek karena itu baru saja memasuki tahap perencanaan selain akan menusuk jauh di dalam kernel untuk berinteraksi dengan sebanyak mungkin perangkat keras komputer.


sumber
open source atau milik? disusun atau ditafsirkan?
xenoterracide
open source dan dikompilasi.
baik maka Anda tidak perlu khawatir tentang menulis beberapa aplikasi kecil / makefile atau sesuatu, yang akan menautkan kembali program Anda, seperti halnya oracle
xenoterracide

Jawaban:

10

Beberapa hal yang perlu diingat ketika berkembang,

  1. Gunakan sistem build standar
  2. Hindari pengkodean jalur pustaka yang sulit
  3. gunakan alat suka pkg-configmencari paket eksternal sebagai gantinya.
  4. Jika aplikasi Anda memiliki GUI, gunakan beberapa kerangka kerja seperti wxWidgetsyang dapat merender elemen UI asli tergantung di mana Anda menjalankan.
  5. Hindari membuat dependensi dengan paket yang tidak akan berjalan di distribusi lain.

Satu-satunya cara untuk memastikan aplikasi Anda berfungsi pada semua distribusi adalah dengan benar-benar menjalankan dan mengujinya. Salah satu cara Anda bisa melakukan ini adalah dengan membuat mesin virtual untuk setiap distribusi. VirtualBox dapat digunakan untuk melakukan ini. Saya memiliki sekitar 8 mesin virtual di kotak saya untuk pengujian semacam ini.

Saya pikir Anda tidak dapat menggeneralisasi terlalu banyak pada penerapan aplikasi karena setiap distribusi menggunakan cara berbeda untuk menginstal paket. Penggunaan Debian debdan fedora rpm.

Navaneeth KN
sumber
3
hanya menghindari jalur pengkodean yang sulit, perbedaan terbesar antara SEMUA distro adalah manajer paket mereka, dan di mana mereka meletakkan sesuatu. Anggap mereka akan meletakkan setiap file dan direktori di tempat yang berbeda dengan Anda.
xenoterracide
2

Hanya 2c saya, tapi saya kurang sakit kepala dengan aplikasi yang datang dengan paket di repositori resmi atau yang dikompilasi dari sumber. Aplikasi yang didistribusikan sebagai binari pihak ketiga cenderung mengalami beberapa masalah ketergantungan. Saya biasanya perlu melacak ini dan mengatasinya secara manual.

Jadi, jika saya akan merilis aplikasi Linux, saya akan bekerja untuk mengemasnya dan membawanya ke repositori resmi. Kalau tidak, saya akan mendistribusikannya dalam bentuk sumber dan meminta pengguna mengkompilasinya untuk sistem mereka.

sybreon
sumber
2

Jika Anda menulis untuk Linux yang tidak tertanam, hal utama yang perlu diingat adalah distribusi yang berbeda akan memiliki koleksi versi pustaka yang berbeda. Jadi, Anda harus menetapkan garis dasar yang cukup lama. Ketika Debian memperbarui dengan lambat, Debian stabil (atau yang lama stabil ketika itu ada, dalam beberapa bulan setelah rilis) cenderung menjadi pilihan yang masuk akal.

Anda harus mengemas secara terpisah untuk setiap distribusi. Jika aplikasi Anda bersifat open source dan sama sekali berhasil, Anda dapat mengandalkan seseorang yang mengambilnya dan berkontribusi dalam pengemasannya, jadi itu bukan keahlian yang penting. Selain kemasan, perbedaan antara distribusi sebagian besar memengaruhi administrasi sistem, bukan pengembangan atau penggunaan sehari-hari.

Jika Anda akan menambal kernel, Anda harus menguji dengan lebih banyak distribusi karena setiap distribusi memiliki tambalan sendiri yang dapat menyebabkan ketidakcocokan dan setiap distribusi memiliki pengaturan userland yang mungkin bergantung pada set berbeda dari antarmuka kernel yang tersedia (misalnya persyaratan untuk beberapa hal bukan menjadi modul).

Perhatikan bahwa apa yang saya tulis di atas tidak benar jika Anda ingin aplikasi Anda bekerja pada sistem embedded (di sini berarti apa pun yang bukan server, desktop atau laptop), yang bahkan ketika mereka menjalankan kernel Linux sering tidak memiliki perpustakaan yang biasa, dimulai dengan Glibc yang menghindari μClibc , dietlibc , Bionic , dll.

Gilles 'SO- berhenti menjadi jahat'
sumber
0

Sebagian besar distro berbeda dalam pengemasan dan default / konfigurasi aplikasi. Setiap kode yang berjalan dalam arsitektur yang ditentukan harus dijalankan pada setiap distro untuk arsitektur itu. Anda juga dapat dengan mudah menjalankan aplikasi GNOME di KDE dan sebaliknya, sehingga Anda dapat memilih salah satu yang paling cocok untuk Anda / pengguna Anda dan Anda selesai!

Tuan Shunz
sumber
0

Yang utama adalah memilih bahasa. Dalam bahasa apa ini dijalankan? Jika Anda benar-benar ingin menjalankan distro linux apa pun, Anda bisa menulisnya dengan Python. Aplikasi python apa pun yang akan berjalan di linux (pada dasarnya) akan berjalan di distro linux apa pun dengan 0 modifikasi.

Python juga memiliki pengikat GTK dan Qt yang sangat bagus. Saya tidak pernah bekerja dengan gtk, tetapi PyQt sangat bagus untuk bekerja dengannya.

Manfaat untuk python adalah bahwa Anda mungkin tidak perlu mengkompilasi ekstensi apa pun (itu benar-benar tergantung pada apa yang Anda tulis sekalipun. Bahkan jika Anda perlu, itu sangat mudah.) Dan Anda juga memiliki sumber distribusi yang bagus melalui pypi . Menginstal program python dari sana biasanya bahkan lebih mudah daripada repositori paket distro.

Falmarri
sumber