ทำไมซอฟต์แวร์ไม่ได้บรรจุในไฟล์เดียว


15

เราเห็นว่าซอฟต์แวร์ Windows ส่วนใหญ่บรรจุอยู่ในไฟล์ปฏิบัติการเพียงไฟล์เดียว เมื่อฉันดับเบิลคลิกไฟล์ติดตั้งมันจะทำการตั้งค่าไฟล์ไบนารีและไลบรารีทั้งหมดด้วย

ฉันเข้าใจการพึ่งพา Ubuntu หรือมากกว่าแพ็คเกจลินุกซ์ทั่วไป แต่ฉันสงสัยว่าทำไมมันถึงมีอยู่ เป็นไปไม่ได้ไหมที่จะสร้างไฟล์เดียวที่มีการขึ้นต่อกันทั้งหมด? ปัญหาของวิธีนี้คืออะไร?

โปรดลองระบุเหตุผลในรายละเอียด

คำตอบ:


17

เหตุผลหลักที่การพึ่งพาไม่ได้รวมอยู่ในโปรแกรมนั้นคือเพื่อให้สามารถอัปเดตส่วนประกอบของระบบได้อย่างง่ายดาย

ลองนึกภาพหนึ่งการพึ่งพาถูกใช้โดยโปรแกรมที่แตกต่างกันห้าโปรแกรม หากพบช่องโหว่ด้านความปลอดภัยในการพึ่งพานั้นจะต้องมีการอัปเดตเพียงชุดเดียวแทนที่จะเป็นห้าชุด

สำหรับผู้ใช้ไม่จำเป็นต้องติดตั้งหลายแพคเกจ - ติดตั้งซอฟต์แวร์ชิ้นเดียวที่คุณต้องการติดตั้งโดยอัตโนมัติ


ข้อแตกต่างที่สำคัญระหว่าง. deb และ. exe ไม่ใช่ว่าซอฟต์แวร์ Ubuntu ไม่ได้เผยแพร่ในไฟล์เดียว ความแตกต่างที่สำคัญคือแนวคิดทั้งหมดของที่เก็บซอฟต์แวร์ที่มีแพ็คเกจและสามารถให้การอัปเดตได้อย่างง่ายดาย

บางครั้งอาจเป็นปัญหาสำหรับคอมพิวเตอร์ที่ไม่มีการเชื่อมต่ออินเทอร์เน็ตโดยตรง มีเครื่องมือเช่นAPTonCDที่ช่วยลดปัญหาเหล่านี้ได้


2
บางครั้งมีความสำคัญกับผู้ใช้เช่นเราโดยที่ไม่สามารถเข้าถึงอินเทอร์เน็ตได้อย่างเหมาะสม
Anwar

2
วิธีใดก็ตามที่ฉันเกลียดคุณลักษณะนี้เพราะอินเทอร์เน็ตของฉันช้า และการแบ่งปันซอฟต์แวร์อูบุนตูที่ดาวน์โหลดมานั้นเป็นเรื่องยากมาก (อย่าแนะนำให้ทำการแบ็คอัพ apt-cache เพราะฉันทำทุกวัน)
Tachyons

1
แต่แล้วคุณควรจะรักคุณสมบัติจริงๆ! เพราะแทนที่จะดาวน์โหลดไลบรารีห้าครั้งคุณเพียงดาวน์โหลดครั้งเดียว ลองนึกภาพทุกโปรแกรมในการติดตั้ง Ubuntu ของคุณมาพร้อมกับการติดตั้ง GTK + หรือ Qt ของตัวเอง! สิ่งเหล่านี้เป็นอย่างมาก
Michael Wild

4

นั่นไม่จริงทั้งหมด ซอฟต์แวร์ Ubuntu มักจะมาในไฟล์. deb หนึ่งไฟล์ เป็นไฟล์ที่ง่ายที่สุด (และไม่ถูกต้อง) ไฟล์. deb เป็นไฟล์. exe สำหรับ Windows โปรแกรมทั้งหมดรวมถึงที่อยู่ใน windows ใช้การอ้างอิงกับไฟล์อื่น ๆ ในระบบปฏิบัติการ (ไลบรารี) กระบวนการติดตั้งนั้นชัดเจนมากขึ้นหรือน้อยลงในระบบปฏิบัติการที่แตกต่างกัน เมื่อคุณใช้ศูนย์ซอฟต์แวร์ใน Ubuntu เพื่อดาวน์โหลดโปรแกรมคุณดาวน์โหลดเฉพาะการอ้างอิงที่ไม่ได้ติดตั้งในระบบของคุณและไฟล์โปรแกรมจริง ที่ป้องกันระบบจากการโอเวอร์โหลดด้วยไฟล์ที่ซ้ำกันและฟังก์ชั่นที่ซ้ำกันซึ่งจะเกิดความขัดแย้ง

เชื่อหรือไม่ความแตกต่างเพียงอย่างเดียวระหว่างการติดตั้งโปรแกรมใน windows หรือ Ubuntu คือจำนวนข้อมูลที่พวกเขาให้แก่ผู้ใช้ Windows คิดว่าผู้ใช้นั้นเป็นใบ้และไม่ต้องการให้พวกเขารู้ว่ากำลังติดตั้งอะไรเมื่อใช้ไฟล์ exe ใน linux คุณจะได้รับข้อมูลนั้น .. สำหรับผู้ใช้บางรายมีรายละเอียดมากเกินไป แต่คนอื่น ๆ (ส่วนใหญ่) รู้สึกขอบคุณจริงๆ

หวังว่ามันสมเหตุสมผล


2
ถูกต้องที่สุด. แม้แต่ distros อื่น ๆ (ไม่ดีเท่า Ubuntu) ก็ใช้. rpms สิ่งที่เกี่ยวกับ. exe, .deb หรืออะไรก็ตามก็คือมันเป็น. tar ขนาดใหญ่ที่แยกตัวเองออกไปยังที่ต่าง ๆ ! ใน Windows จะไปที่ Program Files และแสดงแถบความคืบหน้า แต่บน linux จะแสดงให้คุณเห็นมากขึ้น
WindowsEscapist

1
ฉันคิดว่าคำแนะนำว่าไฟล์ exe เป็นเหมือนไฟล์ tar ขนาดใหญ่ไกลเกินกว่าจะเข้าใจได้ง่าย ไฟล์ tar ไม่สามารถเรียกใช้งานได้ ไฟล์ exe (ตามธรรมชาติ) คือ นั่นคือด้วยไฟล์ deb (ซึ่งแน่นอนว่าเป็นไฟล์ tar) มันเป็นตัวจัดการแพ็กเกจที่จัดการกระบวนการจริงของการย้ายไฟล์ไปรอบ ๆ เพื่อให้ระบบสามารถอยู่ด้านบนของสิ่งที่ค่อนข้างหรูหรา ด้วยโปรแกรมตัวติดตั้ง (เช่นใน Windows) มันเป็นตัวติดตั้งที่ทำ อาจพูดคุยกับส่วนประกอบของระบบบางอย่างเพื่อรักษาสิ่งต่าง ๆ ให้เป็นระเบียบ แต่ถ้ารู้สึกเช่นนั้น
Dylan McCall

1
วิธีที่ดีที่สุดในการสรุปคือ Windows มีผู้ผลิตโปรแกรมติดตั้งเช่น InstallShield และ NSIS มีเครื่องมือเช่นนั้นสำหรับ Linux ด้วย MojoSetup เป็นที่นิยม นั่นคือสิ่งที่คุณบางครั้งดาวน์โหลดโปรแกรมและมันมีไฟล์ปฏิบัติการ (มักจะลงท้ายด้วย. sh หรือ. run) และมันช่วยให้คุณมีตัวช่วยสร้างเล็กน้อย สิ่งเหล่านี้มักจะไม่คุยกับผู้จัดการแพ็คเกจและทำงานได้เหมือนโปรแกรมติดตั้งใน Windows ในบันทึกย่อนั้น Windows Installer (ที่มีไฟล์. msi) เป็นสิ่งที่พยายามล้างความยุ่งเหยิงนั้น)
Dylan McCall

ฉันคิดว่าวิธี Linux ดีกว่าวิธี Windows แต่ใช่ว่าวิธีของ Windows นั้นง่ายและสะดวก
Anwar

2
รูปแบบไฟล์ Windows ที่สอดคล้องกับการเป็น.deb .msi
Eliah Kagan

3

บน Ubuntu ซอฟต์แวร์ส่วนใหญ่มีไฟล์เดียว มันเป็น*.debไฟล์แพคเกจเดเบียนซึ่งมีการดาวน์โหลดแกะและติดตั้งจากผู้จัดการแพคเกจของคุณ

เหตุใด Ubuntu จึงไม่ติดตั้งซอฟต์แวร์จากไฟล์เรียกทำงานแบบแยกไฟล์เองเหมือนซอฟต์แวร์ Windows ส่วนใหญ่ทำ

เพราะการแตก*.exeไฟล์เป็นเรื่องที่อันตรายมาก ๆ

ความแตกต่างที่สำคัญที่สุดระหว่างโปรแกรมประมวลผลแบบคลายตัวเองและระบบบรรจุภัณฑ์เช่นเดเบียน / อูบุนตูคือ:

  • ความปลอดภัย
  • ความโปร่งใส
  • ควบคุมละเอียดยิ่งขึ้น

รายละเอียดเพิ่มเติม:

ความปลอดภัย

ในโลกของ windows คุณต้องเชื่อถือ*.exeไฟล์เดียวนั้น เราจะมั่นใจได้อย่างไรว่าเชื่อถือได้? คุณจะรู้ได้อย่างไรว่ามันติดตั้งบางอย่าง คุณจะแน่ใจได้อย่างไรว่ามันไม่ได้ทำสิ่งอื่นใดไว้ด้านหลัง?

ใน Ubuntu แพคเกจทั้งหมดมีการเซ็นชื่อแบบดิจิทัลดังนั้นโดยใช้ไฟล์แพคเกจแยกต่างหาก - ตัวจัดการแพ็กเกจ (ไม่ว่าจะเป็น muon, synaptic, aptitude หรือแม้แต่ apt apt) คุณจะได้รับการตรวจสอบเนื้อหาก่อนที่มันจะแตกออกมา แน่นอนว่าคุณเชื่อถือที่เก็บข้อมูล ฉันควรเชื่อถือที่เก็บ Ubuntu (หน่วยงานเดียว) มากกว่าหลายร้อยแหล่งที่ไม่คุ้นเคยที่มักจะดาวน์โหลด

การควบคุมแบบละเอียด

ด้วย*.exeไฟล์คุณสามารถทำสิ่งเดียวได้ ใน Ubuntu คุณสามารถตรวจสอบเนื้อหาของแพ็คเกจคำอธิบายการกำหนดค่าไฟล์แต่ละไฟล์การเปลี่ยนแปลงล่าสุดการแก้ไขข้อบกพร่อง ฯลฯ จากความสะดวกสบายของผู้จัดการแพ็คเกจของคุณก่อนตัดสินใจว่าจะติดตั้งหรือไม่

เมื่อคุณติดตั้งจาก*.exeไฟล์คุณต้องเชื่อถือ 'hook' ที่ถอนการติดตั้ง (และไม่*.exeรับประกันว่าจะมีไฟล์ทั้งหมด) ใน Ubuntu ไฟล์ทั้งหมดที่อยู่ในแพ็คเกจมาตรฐานที่ติดตั้งโดยผู้จัดการแพ็คเกจสามารถถอนการติดตั้งได้เสมอเพราะเป็นฟังก์ชั่นของผู้จัดการแพ็คเกจไม่ใช่แพ็คเกจเอง ตัวจัดการแพคเกจเป็นแอปพลิเคชันแยกต่างหากและเชื่อถือได้ซึ่งมีทั้งตัวติดตั้งและตัวถอนการติดตั้งแพคเกจจะไม่สามารถยกเลิกการติดตั้ง hook จากคุณได้ แน่นอนแพคเกจที่เป็นอันตรายสามารถแอบดูสิ่งต่าง ๆ ผ่านการดำเนินการหลังการติดตั้ง แต่นั่นเป็นสาเหตุที่เรามีระบบที่เก็บข้อมูลอย่างเป็นทางการและบุคคลเดียวกันกับที่เราไว้วางใจในการดูแลรักษา

ความโปร่งใส

มันไปไกลกว่านี้ บน Ubuntu ฉันเชื่อมั่นในระบบของฉันได้จริงเพราะฉันสามารถตรวจสอบซอฟต์แวร์ได้หลายระดับ ระดับสูงสุดคือความสามารถในการดูซอร์สโค้ด แพ็คเกจไบนารีมีแพ็คเกจต้นทางที่สอดคล้องกัน ฉันสามารถดูซอร์สได้จริง (ตัวอย่าง: ' apt-get source bash ' จะให้แหล่งข้อมูลเต็มรูปแบบแก่เชลล์ bash) ในโลกของไฟล์. exe มักจะมีเพียงไบนารีและใครจะรู้ว่าพวกเขาทำอะไรอยู่เบื้องหลัง?

ที่กล่าวว่ามีข้อยกเว้นกฎอยู่เสมอ แต่สำหรับฉันความปลอดภัยและความไว้วางใจหมายความว่าฉันไม่สามารถยอมรับไบนารีที่ดำเนินการจากแหล่งต่าง ๆ หลายร้อยที่ยากต่อการตรวจสอบเป็นวิธีมาตรฐานในการติดตั้งส่วนประกอบในระบบของฉัน


2

นอกเหนือจากสิ่งที่ผู้อื่นพูดถึงแล้วบางครั้งซอฟต์แวร์ชิ้นเดียวก็แยกออกเป็นหลายแพ็คเกจเพราะคุณสมบัติบางอย่างนั้นไม่เกี่ยวข้องกับผู้ใช้ทั้งหมด ตัวอย่างเช่นหากเอกสารของโปรแกรมมีขนาดใหญ่มากก็มักจะได้รับจากแพคเกจแยกต่างหาก สิ่งนี้ช่วยให้ผู้ใช้ที่ไม่สนใจคุณสมบัติที่เป็นทางเลือกเหล่านี้เพื่อประหยัดพื้นที่ดิสก์และแบนด์วิดท์ / เวลาสำหรับการดาวน์โหลด


0

ลองแชร์ความเข้าใจของฉันเกี่ยวกับการพึ่งพากัน(ใช่ฉันทราบถึงประโยชน์ของ Ubuntu หรือวิธีการจัดการซอฟต์แวร์โดยทั่วไปของ Linux ฉันแค่พยายามรวบรวมความคิดเห็นที่ดีและเหตุผลทั้งหมดในลักษณะที่เป็นศูนย์กลาง เพื่อนของฉัน)

โปรแกรม Windows นั้นส่วนใหญ่บรรจุอยู่ในไฟล์เดียว นี่แปลว่าพวกเขาไม่มีการพึ่งพาหรือไม่?

ไม่โปรแกรมเกือบทั้งหมดมีการพึ่งพาโปรแกรมอื่น ๆ (ยกเว้นกรณีที่ซอฟแวร์ที่มีระดับต่ำมากและสามารถพูดคุยกับฮาร์ดแวร์โดยตรงเช่นระบบปฏิบัติการเอง) ซอฟต์แวร์ของ Microsoft นั้นไม่ได้อยู่บนการพึ่งพา ดังนั้นคำถามสำคัญคือพวกเขาจัดการกับมันอย่างไร

คำตอบ: พวกเขาจัดการสิ่งนี้ในแบบดั้งเดิมของพวกเขาเอง สมมติว่าผู้ใช้ส่วนใหญ่ของพวกเขาเป็นใบ้พวกเขาเพียงแค่ใส่การพึ่งพาทั้งหมดในไฟล์เดียวทำให้ซอฟต์แวร์มีขนาดใหญ่ขึ้น (1 ยื่น)
ตัวอย่างเช่นดูเกมที่วางจำหน่ายสำหรับ Microsoft เกือบทุกเกมจะมีการตั้งค่า DirectX แต่ผู้ใช้อาจมีเวอร์ชั่นที่อัพเดทแล้ว

นี่คือสิ่งที่ฉันพบใน Google เกี่ยวกับสาเหตุที่ DirectX รวมอยู่ในทุกเกม

แม้ว่าไบนารีรุ่นที่ใหม่กว่าได้รับการติดตั้งแล้ว แต่เวอร์ชันนั้นไม่สามารถใช้งานได้และแม้ว่าการติดตั้ง DirectX ของคุณจะเป็นเวอร์ชั่นล่าสุดเพราะคุณได้เรียกใช้ตัวติดตั้งเวอร์ชันล่าสุดที่ไม่รับประกันว่าจะติดตั้งทั้งหมด รุ่นก่อนหน้า ยิ่งแย่ไปกว่านั้นหากมีการติดตั้งรุ่นสำหรับ x86 ก็ไม่รับประกันว่าจะมีการติดตั้งรุ่นเดียวกันสำหรับ x64 ดังนั้นเกม 64 บิตและ 32 บิตอาจต้องใช้เวอร์ชันการติดตั้งเดียวกัน แต่กำหนดเป้าหมายแพลตฟอร์มต่าง ๆ เมื่อทำงาน

คลิกที่นี่สำหรับบทความเต็ม เห็นได้ชัดว่าพวกเขาไม่ได้ทำดีมากกับการพึ่งพาการจัดการ

ส่วนใหญ่เวลาโดยไม่คำนึงถึงการอ้างอิงอยู่แล้วในสถานที่ที่พวกเขาให้มันไปสู่การเพิ่มความเรียบง่าย(สำหรับผู้ใช้ของพวกเขา) ดูว่าชุดซอฟต์แวร์ของซอฟต์แวร์หลายตัวรวมองค์ประกอบรันไทม์. NET
อีกตัวอย่างหนึ่งจากประสบการณ์ของฉัน: เมื่อฉันดาวน์โหลดและติดตั้งซอฟต์แวร์ MS ด้วยความพึงพอใจต่อกระบวนการนี้ฉันคลิกที่ไอคอนเพื่อเปิดซอฟต์แวร์จากนั้นจะแจ้งให้ฉันทราบว่า "ฉันต้องการ Java เพื่อให้ทำงาน" สถานการณ์ดังกล่าวไม่เคยเกิดขึ้นในโลกของ Linux ผ่านการจัดการแพ็คเกจ (ยกเว้นกรณีที่คุณพยายามดาวน์โหลดไฟล์จากเว็บไซต์ .deb พื้นที่เก็บข้อมูลและติดตั้งโดยการดับเบิลคลิกในแฟชั่น MS)

Linux จัดการปัญหาการพึ่งพาอย่างไร?

ดีลีนุกซ์หรืออูบุนตูไม่ได้ซ่อนความจริงที่ว่าคุณต้องมีการติดตั้งการพึ่งพาสำหรับการใช้ซอฟต์แวร์ (ต่างจากวิธีของ Microsoft) แต่เมื่อคุณติดตั้งส่วนประกอบซอฟต์แวร์อื่นซึ่งขึ้นอยู่กับส่วนประกอบเดียวกันให้ใช้การติดตั้งที่ติดตั้งไว้ก่อนหน้านี้ (ซึ่งแตกต่างจากโปรแกรม MS รวมถึงทุกสิ่ง)

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.