Câu trả lời xảo quyệt trước: Nó phụ thuộc
Nếu bạn đang phát hành mã nhị phân, giả sử câu trả lời là "không", trừ khi bạn đang phân phối tất cả các libs rằng nó bao giờ liên quan đến với nó (từ mặt đất lên, đó là gây phiền nhiễu, trừ khi bạn đang cung cấp một hệ thống thực sự khổng lồ đứng trên nào của riêng mình ) hoặc là liên kết tĩnh tương đương.
... nhưng phù thủy và tiền bạc, và phù thủy tiền bạc ...
IBM có một số trình cài đặt "Unixish nói chung" đã gây sốc cho tôi khi làm việc ở mọi nơi tôi đã thử chúng: một số Linuces từ một số thế hệ kernel, OpenSolaris (hoặc bất cứ thứ gì nó được gọi là bây giờ), Solaris và BSD. Nhưng chúng rất lớn. Và những thứ họ cung cấp cũng lớn không kém. Không có chương trình đua xe nhỏ nào được xuất bản theo cách này, chỉ là những thứ enterprisey lớn mà bạn mong đợi từ IBM.
Theo như Linux, nhưng hoạt động tốt trên hầu hết Linuxdom, điều này dường như có thể ở dạng nhị phân, bằng chứng là có nhiều trình cài đặt nhị phân loại "cho Linux (chung)" mà bạn sẽ thấy từ một số nhà cung cấp. Một số trò chuyện, trình duyệt, trò chơi, trình cài đặt meta, v.v ... được xuất bản theo cách này, nhưng luôn luôn bởi các nhà cung cấp lớn, những người có thể dành thời gian để làm điều này đúng. Thật tuyệt vời khi họ có thể nói "cho Linux" và nói chung là tự tin rằng nó sẽ hoạt động, nhưng điều này dường như là trường hợp.
Nhưng...
Tôi phân phối phần mềm của mình dưới dạng nguồn với tiện ích xây dựng. Tôi làm điều này bằng C, Erlang, Python, Guile, v.v. Điều này giúp tôi linh hoạt hơn rất nhiều về việc nó sẽ chạy hay không, và việc viết một bản dựng để đảm bảo những thứ phù hợp tồn tại trong thời gian xây dựng sẽ dễ dàng hơn nhiều so với đảm bảo mọi thứ được đặt đúng chỗ trong thời gian chạy. Khi tồn tại, việc viết một trình cập nhật tự động cho chương trình của bạn là chuyện nhỏ nếu bạn phân phối nguồn: nguồn thường nhỏ hơn rất nhiều so với tệp nhị phân bao gồm tất cả các dep và sự điên rồ khác. Sử dụng phương pháp này, tôi không gặp nhiều khó khăn khi triển khai trên Unices (và đôi khi là Windows, nhưng đó là một chút việc vặt).
Đủ trò chơi trẻ con, tự mình vũ trang!
Khi bạn trở nên nghiêm túc, như srsly srs, về việc hòa nhập trơn tru trong thế giới Linux, bạn phân phối các nguồn C hoặc chuyển sang một môi trường được quản lý hoàn chỉnh để có một ngôn ngữ thú vị đã được dựng sẵn. Ví dụ: nếu bạn đang viết mã Python, bạn có thể kiểm tra các phiên bản và biết phiên bản CPython nào của bạn hoạt động và thường mong đợi một phiên bản tương thích tồn tại trên một Linux cụ thể (và điều này dễ kiểm tra hơn nhiều so với quét C libs rộng rãi / phiên bản bạn có thể đang sử dụng). Erlang, Guile, Python, Perl, CL, v.v ... đều rất các mục tiêu dễ dàng cho loại triển khai này và nhiều trong số chúng có kho lưu trữ trung tâm như CPAN hoặc pip (hoặc bất cứ thứ gì) nơi người dùng có thể chạy lệnh để tự lấy nguồn đã ký khi họ muốn và biết rằng mọi thứ sẽ hoạt động như bạn dự định .
[Phụ lục: 1. Ngay cả Haskell thường có thể thực hiện việc này thông qua Cabal - mặc dù tôi sẽ thận trọng khi làm điều đó trong môi trường sản xuất. 2. Có các chiến lược triển khai "phát hành" hoàn toàn khác nhau với Erlang để đảm bảo mã của bạn mang một môi trường hoàn chỉnh xung quanh nó. 3. Python tiến thêm một bước với môi trường ảo; không phải tất cả thời gian làm việc đều giúp bạn nhiều như vậy.]
Điều cuối cùng về môi trường được quản lý trên Linux thật tuyệt vời . Và, như một phần thưởng, nó cho phép bạn xác định các phụ thuộc chung hơn nhiều, để chúng tự động giải quyết mà không cần nỗ lực thêm, không yêu cầu viết gói cho mỗi bản phân phối và bạn có thể ngừng quan tâm xem hệ thống là 32 hay 64 bit (nói chung, dù sao).