O czym muszę wiedzieć, jeśli chcę napisać aplikację, która będzie działać na dowolnej dystrybucji Linuksa?

15

Planuję napisać aplikację, którą chciałbym móc uruchomić na dowolnej instalacji Linuksa bez konieczności przepisywania jakiegokolwiek kodu w tym celu (może z wyjątkiem interfejsu, GNOME vs KDE itp.).

Nie jestem bardzo doświadczony w szczegółach różnic między dystrybucjami, a także nie mogę podać szczegółów na temat projektu, ponieważ właśnie wszedł on w fazę planowania inną niż będzie wgłębiał się głęboko w jądro w celu interakcji z jak największą ilością sprzętu komputerowego.


źródło
open source czy zastrzeżone? skompilowany czy zinterpretowany?
ksenoterrakid,
open source i skompilowane.
cóż, więc nie musisz się martwić o napisanie małej aplikacji / pliku makefile lub czegoś, co ponownie połączy Twój program, tak jak robi to wyrocznia
Xenoterracide

Odpowiedzi:

10

Kilka punktów, o których należy pamiętać przy opracowywaniu,

  1. Użyj standardowego systemu kompilacji
  2. Unikaj na stałe ścieżek biblioteki
  3. pkg-configzamiast tego użyj narzędzi takich jak znalezienie zewnętrznych pakietów.
  4. Jeśli twoja aplikacja ma GUI, użyj takich struktur, wxWidgetsktóre mogą renderować natywne elementy interfejsu użytkownika w zależności od tego, gdzie działasz.
  5. Unikaj tworzenia zależności z pakietami, które nie będą działać w innych dystrybucjach.

Jedynym sposobem, aby w pełni upewnić się, że aplikacja działa we wszystkich dystrybucjach, jest jej uruchomienie i przetestowanie. Jednym ze sposobów na to jest tworzenie maszyn wirtualnych dla każdej dystrybucji. W tym celu można użyć VirtualBox. Mam na swoim komputerze około 8 maszyn wirtualnych do tego rodzaju testów.

Myślę, że nie można generalizować zbyt wiele podczas wdrażania aplikacji, ponieważ każda dystrybucja używa innego sposobu instalowania pakietów. Debian używa debi fedora rpm.

Navaneeth KN
źródło
3
po prostu unikaj twardego kodowania, największą różnicą między WSZYSTKIMI dystrybucjami jest menedżer pakietów i miejsce, w którym umieszczają różne rzeczy. Załóż, że umieści każdy plik i katalog w innym miejscu niż Ty.
ksenoterrakid,
2

Tylko mój 2c, ale miałem mniej problemów z aplikacjami, które albo pochodzą z pakietów w oficjalnych repozytoriach, albo są skompilowane ze źródła. Aplikacje, które są dystrybuowane jako pliki binarne innych firm, zwykle mają pewne problemy z zależnościami. Zazwyczaj będę musiał je wyśledzić i rozwiązać ręcznie.

Tak więc, gdybym miał wydać aplikację dla systemu Linux, musiałbym albo ją spakować i przenieść do oficjalnych repozytoriów. W przeciwnym razie rozprowadziłbym go w formie źródłowej, aby użytkownik skompilował go dla swojego systemu.

sybreon
źródło
2

Jeśli piszesz dla niewbudowanego systemu Linux, najważniejsze jest, aby pamiętać, że różne dystrybucje będą miały inną kolekcję wersji bibliotek. Dlatego powinieneś ustawić wystarczająco starą linię bazową. Ponieważ Debian aktualizuje się powoli, stabilna Debiana (lub stara, gdy istnieje, w ciągu kilku miesięcy po wydaniu) wydaje się być rozsądnym wyborem.

Będziesz musiał osobno zapakować dla każdej dystrybucji. Jeśli twoja aplikacja jest open source i w ogóle się powiedzie, możesz liczyć na to, że ktoś ją odbierze i przyczyni się do opakowania, więc nie jest to niezbędna umiejętność. Poza opakowaniem różnice między dystrybucjami wpływają głównie na administrację systemu, a nie na rozwój lub codzienne użytkowanie.

Jeśli zamierzasz załatać jądro, będziesz musiał przetestować więcej dystrybucji, ponieważ każda dystrybucja ma własne łatki, które mogą powodować niezgodności, a każda dystrybucja ma ustawienia przestrzeni użytkownika, które mogą zależeć od różnych zestawów interfejsów jądra (np. Wymagań dla niektórych rzeczy nie być modułami).

Zauważ, że to, co napisałem powyżej, nie jest prawdą, jeśli chcesz, aby Twoja aplikacja działała na systemach wbudowanych (tutaj oznacza to wszystko, co nie jest serwerem, komputerem stacjonarnym lub laptopem), które nawet jeśli działają na jądrze Linuksa, często nie mają zwykłych bibliotek, zaczynając od rezygnacji z Glibc na rzecz µClibc , dietlibc , Bionic itp.

Gilles „SO- przestań być zły”
źródło
0

Distros różni się głównie domyślnymi ustawieniami / konfiguracjami opakowania i aplikacji. Każdy kod działający w określonej architekturze powinien działać w każdej dystrybucji tej architektury. Możesz także z łatwością uruchamiać aplikacje GNOME w KDE i odwrotnie, dzięki czemu możesz wybrać tę, która najlepiej pasuje do ciebie / twojej bazy użytkowników i gotowe!

Pan Shunz
źródło
0

Najważniejsze jest wybranie języka. W jakim języku będzie to uruchamiane? Jeśli naprawdę chcesz uruchomić dowolną dystrybucję Linuksa, możesz napisać ją w Pythonie. Każda aplikacja Pythona, która będzie działała na Linuksie, będzie (w zasadzie) działać na dowolnej dystrybucji Linuksa z 0 modyfikacjami.

Python ma również naprawdę ładne spoiwa GTK i Qt. Nigdy nie pracowałem z gtk, ale PyQt jest naprawdę świetny do pracy.

Zaletą Pythona jest to, że prawdopodobnie nie będziesz musiał kompilować żadnych rozszerzeń (zależy to jednak całkowicie od tego, co piszesz. Nawet jeśli jest to konieczne, jest to dość łatwe.) I masz również świetne źródło dystrybucji za pośrednictwem pypi . Instalowanie stamtąd programów python jest zwykle nawet łatwiejsze niż repozytorium pakietów dystrybucyjnych.

Falmarri
źródło