สแนป (ซอฟต์แวร์)
| สแนป | |
|---|---|
| นักพัฒนา | บริษัท แคนอนิคอล จำกัด |
| เขียนเป็น | Go , C , สคริปต์เชลล์ , Python , JavaScript , NASL [ 1 ] |
| ระบบปฏิบัติการ | ลินุกซ์ |
| ใบอนุญาต | GNU GPLv3 (ไคลเอ็นต์และรันไทม์), กรรมสิทธิ์ (แบ็กเอนด์) [ 2 ] |
| เว็บไซต์ | snapcraft.io |
Snap เป็นระบบ การบรรจุและปรับใช้ซอฟต์แวร์ที่พัฒนาโดยCanonicalสำหรับระบบปฏิบัติการที่ใช้ เคอร์เนล Linuxและ ระบบ init systemd แพ็กเกจที่เรียกว่าsnapsและเครื่องมือสำหรับใช้งานsnapd สามารถใช้งานได้กับ Linuxหลาย เวอร์ชัน [ 3 ]และช่วยให้ นักพัฒนาซอฟต์แวร์ ต้นน้ำสามารถแจกจ่ายแอปพลิเคชันของตนให้กับผู้ใช้ได้โดยตรง Snaps เป็นแอปพลิเคชันแบบ self-contained ที่ทำงานใน sandbox โดยมีการเข้าถึงระบบโฮสต์ผ่านตัวกลาง
ฟังก์ชันการทำงาน
แซนด์บ็อกซ์ที่ปรับแต่งได้
แอปพลิเคชันใน Snap ทำงานในคอนเทนเนอร์ที่มีการเข้าถึงระบบโฮสต์อย่างจำกัดผู้ใช้สามารถให้แอปพลิเคชันเข้าถึงคุณสมบัติเพิ่มเติมของโฮสต์ได้โดย ใช้ อินเทอร์เฟ ซ เช่น การบันทึกเสียง การเข้าถึงอุปกรณ์ USB และการบันทึกวิดีโอ [ 4 ] [ 5 ] [ 6 ]อินเทอร์เฟซเหล่านี้เป็นตัวกลางของ API ของ Linux ทั่วไป เพื่อให้แอปพลิเคชันสามารถทำงานในแซนด์บ็อกซ์ได้โดยไม่ต้องเขียนใหม่ แอปพลิเคชันเดสก์ท็อปยังสามารถใช้ XDG Desktop Portals ซึ่งเป็น API มาตรฐานที่สร้างขึ้นโดย โครงการ Flatpak (เดิมชื่อ xdg-app) เพื่อให้แอปพลิเคชันเดสก์ท็อปในแซนด์บ็อกซ์สามารถเข้าถึงทรัพยากรของโฮสต์ได้[ 7 ] [ 8 ]พอร์ทัลเหล่านี้มักให้ประสบการณ์การใช้งานที่ดีกว่าเมื่อเทียบกับ API ของ Linux ดั้งเดิม เนื่องจากจะขออนุญาตผู้ใช้ในการใช้ทรัพยากร เช่น เว็บแคม ในขณะที่แอปพลิเคชันใช้งาน ข้อเสียคือแอปพลิเคชันและชุดเครื่องมือจำเป็นต้องเขียนใหม่เพื่อให้สามารถใช้ API ใหม่เหล่านี้ได้
แซนด์บ็อกซ์ของ Snap ยังรองรับการแชร์ข้อมูลและซ็อกเก็ต Unixระหว่าง Snap ด้วย[ 9 ]ซึ่งมักใช้เพื่อแชร์ไลบรารีทั่วไปและเฟรมเวิร์กแอปพลิเคชันระหว่าง Snap เพื่อลดขนาดของ Snap โดยหลีกเลี่ยงการทำซ้ำ[ 10 ] [ 11 ]
แซนด์บ็อกซ์ Snap อาศัย โมดูลความปลอดภัย Linux AppArmor จาก เคอร์เนล Linuxต้นทาง เป็นอย่างมาก เนื่องจากโมดูลความปลอดภัย Linux (LSM) หลักเพียงโมดูลเดียวเท่านั้นที่สามารถทำงานได้ในเวลาเดียวกัน[ 12 ]แซนด์บ็อกซ์ Snap จึงมีความปลอดภัยน้อยลงมากเมื่อมีการเปิดใช้งาน LSM หลักอื่น ส่งผลให้ในระบบปฏิบัติการเช่นFedoraซึ่งเปิดใช้งานSELinuxโดยค่าเริ่มต้น แซนด์บ็อกซ์ Snap จึงมีประสิทธิภาพลดลงอย่างมาก แม้ว่า Canonical จะทำงานร่วมกับนักพัฒนาและบริษัทอื่นๆ อีกมากมายเพื่อให้สามารถใช้งาน LSM หลายตัวพร้อมกันได้ แต่ในปี 2020 โซลูชันนี้ก็ยังต้องใช้เวลาอีกนาน[ 13 ] [ 12 ] [ 14 ]
การอัปเดตอัตโนมัติและแบบอะตอมิก
snapd จะตรวจสอบการอัปเดตที่มีอยู่ของ Snap ทั้งหมดหลายครั้งต่อวัน และติดตั้งในพื้นหลังโดยใช้การดำเนินการแบบอะตอมิกการอัปเดตสามารถย้อนกลับได้[ 15 ] [ 16 ]และใช้การเข้ารหัสเดลต้าเพื่อลดขนาดการดาวน์โหลด[ 17 ] [ 18 ] [ 19 ]
ผู้เผยแพร่สามารถปล่อยและอัปเดตซอฟต์แวร์หลายเวอร์ชันพร้อมกันได้โดยใช้ช่องทางต่างๆแต่ละช่องทางมีแทร็กและความเสี่ยง เฉพาะ ซึ่งบ่งชี้ถึงเวอร์ชันและความเสถียรของซอฟต์แวร์ที่เผยแพร่ในช่องทางนั้น เมื่อติดตั้งแอปพลิเคชัน Snap จะใช้latest/stableช่องทางเริ่มต้น ซึ่งจะอัปเดตเป็นเวอร์ชันหลักใหม่ของซอฟต์แวร์โดยอัตโนมัติเมื่อมีให้ใช้งาน ผู้เผยแพร่สามารถสร้างช่องทางเพิ่มเติมเพื่อให้ผู้ใช้สามารถเลือกใช้เวอร์ชันหลักเฉพาะของซอฟต์แวร์ได้ ตัวอย่างเช่น2.0/stableช่องทางหนึ่งจะอนุญาตให้ผู้ใช้ใช้ซอฟต์แวร์เวอร์ชัน 2.0 และรับการอัปเดตย่อยเท่านั้นโดยไม่มีความเสี่ยงต่อการเปลี่ยนแปลงที่ไม่เข้ากันกับเวอร์ชันก่อนหน้า เมื่อผู้เผยแพร่ปล่อยเวอร์ชันหลักใหม่ในช่องทางใหม่ ผู้ใช้สามารถอัปเดตเป็นเวอร์ชันถัดไปได้ด้วยตนเองเมื่อต้องการ[ 20 ] [ 21 ] [ 22 ] [ 23 ]
ผู้ใช้สามารถกำหนดตารางเวลา ความถี่ และช่วงเวลาของการอัปเดตอัตโนมัติได้ นอกจากนี้ ผู้ใช้ยังสามารถหยุดการอัปเดตอัตโนมัติชั่วคราวเป็นระยะเวลาหนึ่ง หรือหยุดได้ตลอดไป[ 24 ] [ 25 ] [ 26 ]การอัปเดตจะหยุดชั่วคราวโดยอัตโนมัติบนการเชื่อมต่อแบบคิดค่าบริการตามปริมาณข้อมูล[ 27 ] [ 28 ]
สแนปคราฟต์
| สแนปคราฟต์ | |
|---|---|
| นักพัฒนา | บริษัท แคนอนิคอล จำกัด |
| เวอร์ชันเสถียร | 9.0.0 [ 29 ] / 7 พฤษภาคม 2569 ( 7 พฤษภาคม 2569 ) |
| เขียนเป็น | Python , สคริปต์เชลล์ , C++ , Go , Dart [ 30 ] |
| ระบบปฏิบัติการ | ลินุกซ์ |
| ใบอนุญาต | สัญญาอนุญาตสาธารณะทั่วไปของ GNU เวอร์ชัน 3.0 |
| เว็บไซต์ | snapcraft.io |
| ที่เก็บข้อมูล | github.com/snapcore/snapcraft |
Snapcraft เป็นเครื่องมือสำหรับนักพัฒนาในการบรรจุโปรแกรมของตนในรูปแบบ Snap [ 31 ]โดยทำงานบนระบบปฏิบัติการ Linux ที่รองรับโดย Snap, macOS [ 32 ]และMicrosoft Windows [ 33 ] Snapcraftสร้างแพ็กเกจในเครื่องเสมือนโดยใช้ Multipass [ 34 ]เพื่อให้แน่ใจว่าผลลัพธ์ของการสร้างนั้นเหมือนกัน ไม่ว่าจะสร้างบนระบบปฏิบัติการหรือดิสทริบิวชันใดก็ตาม[ 35 ] Snapcraft รองรับเครื่องมือสร้างและภาษาโปรแกรมหลายภาษา เช่นGo , Java , JavaScript , Python , C / C++และRustนอกจากนี้ยังอนุญาตให้นำเข้าเมตาเดตาของแอปพลิเคชันจากหลายแหล่ง เช่นAppStream , git , สคริปต์เชลล์ และsetup.pyไฟล์[ 32 ] [ 36 ]
ร้านสแนปสโตร์
Snap Store อนุญาตให้นักพัฒนาเผยแพร่แอปพลิเคชันที่บรรจุในรูปแบบ snap ได้[ 37 ]แอปทั้งหมดที่อัปโหลดไปยัง Snap Store จะได้รับการทดสอบโดยอัตโนมัติ รวมถึง การสแกน หามัลแวร์อย่างไรก็ตาม การสแกนนี้ไม่สามารถตรวจจับปัญหาทั้งหมดได้ ในกรณีหนึ่งในเดือนพฤษภาคม 2018 พบว่าแอปพลิเคชันสองแอปจากนักพัฒนารายเดียวกันมี โปรแกรมขุด คริปโตเคอร์เรนซีที่ทำงานอยู่เบื้องหลังระหว่างการทำงานของแอปพลิเคชัน ในปี 2024 มีการอัปโหลดกระเป๋าเงินคริปโตเคอร์เรนซีปลอมที่สามารถขโมยเงินของผู้ใช้ได้ และเมื่อ Canonical ลบออกไป ก็มีการอัปโหลดใหม่โดยบัญชีใหม่[ 38 ] Canonical แนะนำให้ผู้ใช้ติดตั้ง Snap จากผู้เผยแพร่ที่ผู้ใช้ไว้วางใจเท่านั้น[ 39 ] [ 40 ]
สนับสนุน
Snapคือ แพ็กเกจแบบ ครบวงในตัวเอง ที่ใช้งานได้กับ ระบบปฏิบัติการ Linuxหลายรุ่นซึ่งแตกต่างจากวิธีการจัดการแพ็กเกจ Linux แบบดั้งเดิมที่ต้องใช้แพ็กเกจที่ปรับแต่งเฉพาะสำหรับระบบปฏิบัติการ Linux แต่ละรุ่น[ 41 ] [ 42 ]

snap listนี้แสดงให้เห็นว่าSkypeและIntelliJ IDEAได้ถูกติดตั้งเรียบร้อยแล้วรูปแบบไฟล์ snap เป็น ระบบไฟล์บีบอัดเดียวที่ใช้ รูปแบบ SquashFSพร้อมส่วนขยาย.snap. ระบบไฟล์นี้ประกอบด้วยแอปพลิเคชัน ไลบรารีที่แอปพลิเคชันนั้นพึ่งพา และเมตาเดตาแบบประกาศ เมตาเดตานี้จะถูกตีความโดย snapd เพื่อตั้งค่าแซนด์บ็อกซ์ ที่ปลอดภัยที่มีรูปร่างเหมาะสม สำหรับแอปพลิเคชันนั้น หลังจากการติดตั้ง snap จะถูกติดตั้งโดยระบบปฏิบัติการโฮสต์และคลายการบีบอัดแบบทันทีเมื่อมีการใช้งานไฟล์[ 43 ] [ 23 ]แม้ว่าสิ่งนี้จะมีข้อดีคือ snap ใช้พื้นที่ดิสก์น้อยลง แต่ก็หมายความว่าแอปพลิเคชันขนาดใหญ่บางตัวจะเริ่มต้นช้าลง[ 44 ] [ 45 ]
Snap รองรับแอปพลิเคชัน Linux ทุกประเภท เช่น แอปพลิเคชันเดสก์ท็อป เครื่องมือเซิร์ฟเวอร์ แอป IoT และแม้แต่บริการระบบ เช่น สแต็กไดรเวอร์เครื่องพิมพ์[ 46 ] [ 47 ]เพื่อให้แน่ใจในเรื่องนี้ Snap อาศัยsystemdสำหรับคุณสมบัติต่างๆ เช่น การเรียกใช้บริการระบบที่เปิดใช้งานซ็อกเก็ตใน Snap [ 48 ]ซึ่งทำให้ Snap ทำงานได้ดีที่สุดเฉพาะบนดิสทริบิวชันที่สามารถใช้ระบบ init นั้น ได้[ 49 ]
การรับเลี้ยงบุตรบุญธรรม

ในตอนแรก Snap รองรับเฉพาะการแจกจ่าย Ubuntu Core ที่ใช้ Snap เท่านั้นแต่ในเดือนมิถุนายน 2016 ได้มีการพอร์ตไปยังการแจกจ่าย Linux หลากหลายรุ่นเพื่อให้กลายเป็นรูปแบบสำหรับแพ็กเกจ Linux สากล[ 50 ] Snap ต้องการSystemdซึ่งมีอยู่ในการแจกจ่าย Linux ส่วนใหญ่ แต่ไม่ใช่ทั้งหมด ระบบ ที่คล้าย Unix อื่นๆ (เช่นFreeBSD ) ไม่ได้รับการสนับสนุน[ 51 ] ChromeOS ไม่รองรับ Snap โดยตรง แต่ รองรับผ่านการแจกจ่าย Linux ที่ติดตั้งไว้ซึ่งรองรับ Snap เช่นGallium OS [ 52 ]
Ubuntu และระบบปฏิบัติการที่พัฒนาต่อยอดจาก Ubuntu อย่างเป็นทางการจะติดตั้ง Snap ไว้ล่วงหน้าเป็นค่าเริ่มต้น เช่นเดียวกับระบบปฏิบัติการอื่นๆ ที่ใช้ Ubuntu เป็นพื้นฐาน เช่นKDE NeonและZorin OS [ 53 ] ปัจจุบัน Solusวางแผนที่จะยกเลิก Snap เพื่อลดภาระในการบำรุงรักษาแพตช์ AppArmor ที่จำเป็นสำหรับการจำกัด Snap อย่างเข้มงวด[ 54 ] Zorin OSได้ลบ Snap ออกจากแพ็คเกจเริ่มต้นใน Zorin OS 17 [ 55 ]ในขณะที่ระบบปฏิบัติการที่พัฒนาต่อยอดจาก Ubuntu อย่างเป็นทางการอื่นๆ เช่นKubuntu , XubuntuและUbuntu MATE ก็มี Flatpakมาให้เป็นส่วนเสริมด้วย แต่จะไม่ทำเช่นนั้นอีกต่อไปตั้งแต่ Ubuntu 23.04 เป็นต้นไป ซึ่งหมายความว่าผู้ใช้ต้องติดตั้งด้วยตนเอง[ 56 ]
บริษัทพัฒนาซอฟต์แวร์เดสก์ท็อปที่มีชื่อเสียงหลายแห่งเผยแพร่ซอฟต์แวร์ของตนใน Snap Store รวมถึงGoogle [ 57 ] JetBrains [ 58 ] KDE [ 59 ] Microsoft (สำหรับเวอร์ชัน Linux เช่น .NET Core 3.1 [ 60 ] Visual Studio Code , Skype [ 61 ]และPowerShell ) , Mozilla [ 62 ]และSpotify [ 63 ] Snap ยังถูกใช้ใน สภาพแวดล้อม Internet of Thingsตั้งแต่ผลิตภัณฑ์ที่ผู้บริโภคใช้งาน[ 64 ]ไปจนถึงเกตเวย์การจัดการอุปกรณ์ขององค์กร[ 65 ]และเครือข่าย การสื่อสาร ผ่านดาวเทียม[ 66 ] [ 67 ] สุดท้ายนี้ Snap ยังถูกใช้โดยนักพัฒนาแอปพลิเค ชันเซิร์ฟเวอร์ เช่นInfluxDB [ 68 ] Kata Containers [ 69 ] Nextcloud [ 70 ]และTravis CI [ 71 ]
แผนกต้อนรับ
Clément Lefèbvre ผู้ก่อตั้งและหัวหน้าโครงการLinux Mintได้วิพากษ์วิจารณ์ Snap โดยโต้แย้งว่า Canonical ควบคุมการแจกจ่ายซอฟต์แวร์และทำให้ร้านค้าของตนเป็นข้อกำหนดสำหรับผู้ใช้ Snap ในปี 2020 โครงการ Linux Mint ได้ประกาศว่าการเผยแพร่จะไม่มาพร้อมกับซอฟต์แวร์ Snap และจะไม่อนุญาตให้ติดตั้งแพ็กเกจ Snap โดยอัตโนมัติผ่าน APT [ 72 ] [ 73 ]
ใน Ubuntu เวอร์ชันล่าสุด Canonical ได้ย้ายแพ็กเกจบางแพ็กเกจไปยัง Snap โดยเฉพาะ เช่นเว็บเบราว์เซอร์ChromiumและFirefox [ 74 ] [ 75 ] [ 37 ]การแทนที่ Firefox ส่งผลให้ผู้ใช้มีปฏิกิริยาตอบรับที่หลากหลายเนื่องจากปัญหาด้านประสิทธิภาพของเวอร์ชัน Snap โดยเฉพาะอย่างยิ่งในช่วงเริ่มต้น[ 74 ]
ดูเพิ่มเติม
- แฟลตแพ็ก
- แอปอิมเมจ
- ห้าม
- ผู้สร้างแอปพลิเคชันแบบพกพา
- ROXใช้ไดเร็กทอรี ( AppDirs ) เป็นชุดแอปพลิเคชัน
- รายชื่อระบบจัดการแพ็กเกจของ Linux
ลิงก์ภายนอก
- เว็บไซต์อย่างเป็นทางการ
- การเปรียบเทียบทางเทคนิคระหว่าง snaps และ debs