คำตอบเส็งเคร็งแรก:ขึ้นอยู่กับ
หากคุณกำลังปล่อยไบนารีสมมติคำตอบเป็น "ไม่" จนกว่าคุณจะได้กระจายทุก libs ที่ว่ามันเคยเกี่ยวข้องกับมัน (จากพื้นดินขึ้นซึ่งเป็นที่น่ารำคาญจนกว่าคุณจะให้ระบบมากจริงๆที่ยืนอยู่บนอยู่แล้วของตัวเอง ) หรือลิงก์แบบสแตติกเทียบเท่า
... แต่พ่อมดและเงินและพ่อมดเงิน ...
IBM มีตัวติดตั้ง "Unixish ทั่วไป" บางตัวที่ทำให้ฉันตกตะลึงด้วยการทำงานทุกที่ที่ฉันลอง: Linuces หลายตัวจากเคอร์เนลหลายรุ่น OpenSolaris (หรืออะไรก็ตามที่เรียกว่าตอนนี้) Solaris และ BSD แต่มันมีขนาดใหญ่มาก และสิ่งที่พวกเขาให้มีขนาดใหญ่เท่ากัน ไม่มีโปรแกรมแข่งรถเล็ก ๆ น้อย ๆ ที่ได้รับการเผยแพร่ด้วยวิธีนี้เพียงแค่ประเภทขององค์กรขนาดใหญ่ที่คุณคาดหวังจาก IBM
เท่าที่อยู่บน Linux แต่ทำงานได้ดีกับ Linuxdom ส่วนใหญ่สิ่งนี้ดูเหมือนจะเป็นไปได้ในรูปแบบไบนารี่ซึ่งเห็นได้จากความหลากหลายของตัวติดตั้งไบนารีประเภท "for Linux (ทั่วไป)" ที่คุณจะเห็นจากผู้จำหน่ายบางราย มีการเผยแพร่การแชทเบราว์เซอร์เกมเครื่องมือติดตั้งเมตาและอื่น ๆ แต่ผู้ขายจำนวนมากมักใช้เวลาเพื่อให้ได้สิ่งนี้ มันเป็นเรื่องที่น่าอัศจรรย์มากที่พวกเขาสามารถพูดว่า "สำหรับ Linux" และโดยทั่วไปมั่นใจว่ามันจะใช้งานได้ แต่ดูเหมือนจะเป็นเช่นนั้น
แต่...
ฉันแจกจ่ายซอฟต์แวร์เป็นแหล่งที่มาพร้อมกับยูทิลิตีบิลด์ ฉันทำสิ่งนี้ใน C, Erlang, Python, Guile และอื่น ๆ ซึ่งทำให้ฉันมีความยืดหยุ่นมากขึ้นเกี่ยวกับว่ามันจะทำงานหรือไม่และมันง่ายกว่ามากในการเขียน buildscript ที่ทำให้แน่ใจว่าสิ่งที่ถูกต้องมีอยู่ในเวลาสร้างมากกว่า ตรวจสอบให้แน่ใจว่าทุกอย่างเข้าที่รันไทม์ เมื่อมีอยู่แล้วมันเป็นเรื่องสำคัญที่จะเขียนตัวอัปเดตอัตโนมัติสำหรับโปรแกรมของคุณหากคุณแจกจ่ายแหล่งที่มา: แหล่งที่มามักจะมีขนาดเล็กกว่าไบนารีซึ่งรวมถึง deps ทั้งหมดและความบ้าอื่น ๆ การใช้วิธีนี้ฉันไม่ได้มีปัญหามากในการปรับใช้กับ Unices อย่างแน่นอน (และบางครั้ง Windows แต่นั่นก็เป็นงานที่น่าเบื่อมากกว่า)
เล่นลูกอย่างเพียงพอแขนตัวเอง!
เมื่อคุณเริ่มจริงจังเช่นเดียวกับ srsly srs เกี่ยวกับการปรับให้เหมาะสมอย่างราบรื่นภายในโลก Linux คุณจะแจกจ่ายแหล่งข้อมูล C หรือเปลี่ยนเป็นสภาพแวดล้อมที่มีการจัดการอย่างสมบูรณ์เพื่อภาษาที่น่าพอใจที่แฮ็คที่สร้างไว้ล่วงหน้าแล้ว ตัวอย่างเช่นถ้าคุณกำลังเขียนโค้ด Python คุณสามารถตรวจสอบเวอร์ชันและรู้ว่าคุณใช้งาน CPython เวอร์ชันไหนและโดยทั่วไปคาดว่าจะมีบางเวอร์ชั่นที่ใช้งานร่วมกันได้บน Linux ที่ระบุ (และนี่เป็นการตรวจสอบที่ง่ายกว่า C libs / รุ่นที่คุณอาจใช้) Erlang, Guile, Python, Perl, CL และอื่น ๆ ล้วนแล้วแต่เป็นสิ่งที่ดี เป้าหมายง่าย ๆ สำหรับการปรับใช้ประเภทนี้และหลาย ๆ แห่งมีพื้นที่เก็บข้อมูลส่วนกลางเช่น CPAN หรือ pip (หรืออะไรก็ตาม) ที่ผู้ใช้สามารถเรียกใช้คำสั่งเพื่อดึงแหล่งข้อมูลที่เซ็นชื่อด้วยตนเองเมื่อต้องการและรู้ว่าสิ่งต่าง ๆ จะทำงานตามที่คุณต้องการ .
[ภาคผนวก: 1. แม้แต่แฮสเค็ลล์ก็สามารถดึงสิ่งนี้ออกทาง Cabal ได้แม้ว่าฉันจะระมัดระวังในการใช้งานในสภาพแวดล้อมการผลิต 2. มีกลยุทธ์การปรับใช้ "ปล่อย" ที่แตกต่างกันโดยสิ้นเชิงกับ Erlang ที่รับประกันว่ารหัสของคุณจะมีสภาพแวดล้อมที่สมบูรณ์รอบตัว 3. Python ก้าวไปอีกขั้นกับสภาพแวดล้อมเสมือนจริง Runtimes ไม่ทั้งหมดช่วยคุณได้มาก]
บิตสุดท้ายนี้เกี่ยวกับสภาพแวดล้อมที่มีการจัดการบน Linux นั้นยอดเยี่ยมมาก และเป็นโบนัสจะช่วยให้คุณสามารถกำหนดการพึ่งพาทั่วไปได้มากขึ้นแก้ไขโดยอัตโนมัติโดยไม่ต้องใช้ความพยายามใด ๆ เป็นพิเศษโดยไม่ต้องเขียนแพ็คเกจต่อ distro และคุณสามารถหยุดการดูแลได้ว่าระบบ 32 หรือ 64 บิต (โดยทั่วไปแล้ว)