Tôi cần lưu ý điều gì nếu tôi muốn viết một ứng dụng sẽ chạy trên bất kỳ bản phân phối Linux nào?


15

Tôi dự định viết một ứng dụng mà tôi muốn có thể chạy trên mọi cài đặt Linux mà không phải viết lại bất kỳ mã nào khi làm như vậy (ngoại trừ có thể là giao diện, Gnome vs KDE, v.v.).

Tôi không có nhiều kinh nghiệm trong các chi tiết nhỏ về sự khác biệt giữa các bản phát hành và tôi cũng không thể cung cấp chi tiết về dự án vì nó chỉ mới bước vào giai đoạn lập kế hoạch ngoài việc nó sẽ chọc vào sâu bên trong hạt nhân để tương tác với càng nhiều phần cứng của máy tính càng tốt.


nguồn mở hay độc quyền? biên soạn hay giải thích?
xenoterracide

mã nguồn mở và biên dịch.

tốt thôi, bạn không phải lo lắng về việc viết một số ứng dụng / makefile nhỏ hay thứ gì đó, điều đó sẽ làm lại chương trình của bạn, giống như lời tiên tri
xenoterracide

Câu trả lời:


10

Một số điểm cần lưu ý khi phát triển,

  1. Sử dụng hệ thống xây dựng tiêu chuẩn
  2. Tránh đường dẫn thư viện mã hóa cứng
  3. sử dụng các công cụ như pkg-configđể tìm các gói bên ngoài thay thế.
  4. Nếu ứng dụng của bạn có GUI, hãy sử dụng một số khung như wxWidgetscó thể hiển thị các thành phần UI gốc tùy thuộc vào nơi bạn chạy.
  5. Tránh tạo phụ thuộc với các gói sẽ không chạy trên các bản phân phối khác.

Cách duy nhất để đảm bảo đầy đủ ứng dụng của bạn hoạt động trên tất cả các bản phân phối là thực sự chạy và thử nghiệm trên nó. Một cách bạn có thể làm điều này là tạo các máy ảo cho mỗi bản phân phối. VirtualBox có thể được sử dụng để làm điều này. Tôi có khoảng 8 máy ảo trên hộp cho loại thử nghiệm này.

Tôi nghĩ bạn không thể khái quát quá nhiều về việc triển khai ứng dụng vì mỗi bản phân phối sử dụng các cách cài đặt gói khác nhau. Debian sử dụng debvà fedora rpm.


3
chỉ cần tránh các đường dẫn mã hóa cứng, sự khác biệt lớn nhất giữa TẤT CẢ các bản phân phối là trình quản lý gói của họ và nơi họ đặt mọi thứ. Giả sử rằng họ sẽ đặt mọi tệp và thư mục ở một nơi khác với bạn.
xenoterracide

2

Chỉ 2c của tôi, nhưng tôi đã bớt đau đầu hơn với các ứng dụng đi kèm với các gói trong kho chính thức hoặc được biên dịch từ nguồn. Các ứng dụng được phân phối dưới dạng nhị phân của bên thứ 3 có xu hướng bị một số vấn đề phụ thuộc. Tôi thường sẽ cần phải theo dõi những điều này và giải quyết chúng bằng tay.

Vì vậy, nếu tôi phát hành một ứng dụng Linux, tôi sẽ làm việc để đóng gói và đưa nó vào kho chính thức. Nếu không, tôi sẽ phân phối nó ở dạng nguồn và để người dùng biên dịch nó cho hệ thống của họ.


2

Nếu bạn đang viết cho Linux không nhúng, điều cần lưu ý là các bản phân phối khác nhau sẽ có một bộ sưu tập các phiên bản thư viện khác nhau. Vì vậy, bạn nên thiết lập một đường cơ sở đủ cũ. Khi Debian cập nhật chậm, Debian ổn định (hoặc cũ ổn định khi nó tồn tại, trong vài tháng sau khi phát hành) có xu hướng là một lựa chọn hợp lý.

Bạn sẽ cần phải gói riêng cho mỗi phân phối. Nếu ứng dụng của bạn là nguồn mở và hoàn toàn thành công, bạn có thể tin tưởng vào ai đó nhặt nó lên và đóng góp bao bì, vì vậy đó không phải là một kỹ năng thiết yếu. Khác với bao bì, sự khác biệt giữa các bản phân phối chủ yếu ảnh hưởng đến quản trị hệ thống, không phát triển hoặc sử dụng hàng ngày.

Nếu bạn định vá kernel, bạn sẽ phải kiểm tra nhiều bản phân phối hơn vì mỗi bản phân phối có bản vá riêng có thể gây ra sự không tương thích và mỗi bản phân phối có cài đặt vùng người dùng có thể dựa trên các bộ giao diện kernel khác nhau (ví dụ: yêu cầu đối với một số thứ không phải là mô-đun).

Lưu ý rằng những gì tôi đã viết ở trên là không đúng nếu bạn muốn ứng dụng của mình hoạt động trên các hệ thống nhúng (ở đây có nghĩa là bất cứ thứ gì không phải là máy chủ, máy tính để bàn hoặc máy tính xách tay), ngay cả khi chúng chạy kernel Linux thường không có các thư viện thông thường, bắt đầu với việc Glibc được sử dụng để ủng hộ các loạiClClcc , dietlibc , Bionic , v.v.



0

Distros khác nhau chủ yếu ở bao bì và cấu hình mặc định / ứng dụng. Mỗi mã chạy trong một kiến ​​trúc xác định sẽ chạy trên mọi bản phân phối cho kiến ​​trúc đó. Ngoài ra, bạn có thể dễ dàng chạy các ứng dụng Gnome trong KDE và ngược lại, vì vậy bạn có thể chọn ứng dụng phù hợp nhất với bạn / cơ sở người dùng của bạn và bạn đã hoàn tất!


0

Điều chính là chọn một ngôn ngữ. Ngôn ngữ này sẽ được chạy trong? Nếu bạn thực sự muốn chạy trên bất kỳ bản phân phối linux nào, bạn có thể viết nó bằng Python. Bất kỳ ứng dụng python nào sẽ chạy trên linux (về cơ bản) sẽ chạy trên bất kỳ bản phân phối linux nào với 0 sửa đổi.

Python cũng có chất kết dính GTK và Qt rất đẹp. Tôi chưa bao giờ làm việc với gtk, nhưng PyQt thực sự tuyệt vời để làm việc cùng.

Lợi ích của python là có thể bạn sẽ không cần phải biên dịch bất kỳ tiện ích mở rộng nào (hoàn toàn phụ thuộc vào những gì bạn đang viết. Ngay cả khi bạn cần, nó khá dễ dàng.) Và bạn cũng có một nguồn phân phối tuyệt vời thông qua pypi . Cài đặt chương trình python từ đó thậm chí còn dễ dàng hơn kho lưu trữ gói distro.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.