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.
Odpowiedzi:
Kilka punktów, o których należy pamiętać przy opracowywaniu,
bibliotekipkg-config
zamiast tego użyj narzędzi takich jak znalezienie zewnętrznych pakietów.wxWidgets
które mogą renderować natywne elementy interfejsu użytkownika w zależności od tego, gdzie działasz.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
deb
i fedorarpm
.źródło
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.
źródło
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.
źródło
Uważam, że
Linux Standards Base
jest to pomocne, szczególnie gdy aplikacja zawiera usługi (demony). Zobacz niektóre z tych witryn:Ale gdybym musiał ograniczać się do samego zasobu, mógłby to być Standard Hierarchii Plików .
źródło
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!
źródło
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.
źródło