Сначала дерьмовый ответ: это зависит
Если вы выпускаете двоичные файлы, принимайте ответ «нет», если только вы не распространяете все библиотеки, которые он когда-либо связывает с ним (с нуля, что раздражает, если вы не предоставляете действительно огромную систему, которая в любом случае стоит сама по себе) ) или статически связывают эквивалент.
... но волшебники и деньги, и деньги волшебники ...
У IBM есть несколько «общих Unixish» инсталляторов, которые потрясли меня, работая везде, где я их пробовал: несколько Linuces из нескольких поколений ядра, OpenSolaris (или как его сейчас называют), Solaris и BSD. Но они огромны. И вещи, которые они предоставляют, одинаково огромны. Таким образом, не будет опубликовано ни одной маленькой гоночной программы, только то, что вы ожидаете от IBM.
Что касается только того, чтобы оставаться в Linux, но хорошо работать в большинстве Linuxdom, то это представляется возможным в двоичной форме, о чем свидетельствует разнообразие бинарных установщиков типа «для Linux (общего)», которые вы увидите у некоторых поставщиков. Несколько чатов, браузеров, игр, метаинсталляторов и т. Д. Публикуются таким образом, но всегда огромными поставщиками, которые могут потратить время, чтобы сделать это правильно. Удивительно, что они могут сказать «для Linux» и быть в целом уверены, что это сработает, но, похоже, это так.
Но...
Я распространяю свое программное обеспечение как источник с утилитой сборки. Я делаю это на C, Erlang, Python, Guile и т. Д. Это дает мне гораздо больше гибкости в отношении того, будет ли он работать или нет, и гораздо проще написать сценарий сборки, который гарантирует, что правильные вещи существуют во время сборки, чем убедитесь, что все на месте во время выполнения. Когда это существует, написать автообновление для вашей программы тривиально, если вы распространяете источник: источник обычно намного меньше двоичного файла, который включает в себя все deps и другие помехи. Используя этот метод, у меня не было особых проблем с надежным развертыванием в Unices (и иногда в Windows, но это немного сложнее).
Достаточно детской игры, вооружись!
Когда вы серьезно, как и srsly srs, серьезно относитесь к тому, чтобы гармонично вписаться в мир Linux, вы распространяете исходные тексты на C или обращаетесь к полностью управляемой среде для хакерско-восхитительного языка, который уже готов. Например, если вы пишете код на Python, вы можете проверить версии и узнать, с какой вашей версией CPython вы работаете, и, как правило, ожидать, что какая-то совместимая версия будет существовать в данном Linux (и это гораздо проще проверить, чем широкий обзор C libs). / версии, которые вы могли бы использовать). Erlang, Guile, Python, Perl, CL и т. Д. Очень простые цели для такого рода развертываний, и многие из них имеют центральный репозиторий, такой как CPAN или pip (или любой другой), где пользователи могут запускать команду для извлечения подписанного источника самостоятельно, когда они этого хотят, и знать, что в целом все будет работать так, как вы предполагали ,
[Приложение: 1. Даже Haskell может вообще осуществить это через Cabal - хотя я буду осторожен с этим в производственной среде. 2. В Erlang есть совершенно разные стратегии развертывания «релиза», которые гарантируют, что ваш код будет содержать в себе полную среду. 3. Python делает шаг вперед с виртуальными средами; не все среды выполнения помогают вам так сильно.]
Этот последний кусочек об управляемых средах в Linux чертовски крут . И, в качестве бонуса, он позволяет вам определять гораздо более общие зависимости, автоматически разрешать их без дополнительных усилий с вашей стороны, не требует написания пакета для каждого дистрибутива, и вы можете перестать заботиться о том, является ли система 32 или 64 немного (как правило, в любом случае).