อ่าน 11 นาที
สแนป (ซอฟต์แวร์)
Snap เป็นระบบ การบรรจุ และ ปรับใช้ ซอฟต์แวร์ที่พัฒนาโดย Canonical สำหรับ ระบบปฏิบัติการ ที่ใช้ เคอร์เนล Linux และ ระบบ init systemd แพ็กเกจที่เรียกว่า snaps...
สแนป (ซอฟต์แวร์)
| สแนป | |
|---|---|
| นักพัฒนา | บริษัท แคนอนิคอล จำกัด |
| เขียนเป็น | 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 พฤษภาคม 2026 |
| เขียนเป็น | 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
สรุปเนื้อหา
ข้อมูลสำคัญจากบทความ
ข้อมูลสำคัญเกี่ยวกับ สแนป (ซอฟต์แวร์)
Snap เป็นระบบ การบรรจุ และ ปรับใช้ ซอฟต์แวร์ที่พัฒนาโดย Canonical สำหรับ ระบบปฏิบัติการ ที่ใช้ เคอร์เนล Linux และ ระบบ init systemd แพ็กเกจที่เรียกว่า snaps...
แซนด์บ็อกซ์ที่ปรับแต่งได้
แอปพลิเคชันใน Snap ทำงานใน คอนเทนเนอร์ ที่มีการเข้าถึงระบบโฮสต์อย่างจำกัดผู้ใช้สามารถให้แอปพลิเคชันเข้าถึงคุณสมบัติเพิ่มเติมของโฮสต์ได้โดย ใช้ อินเทอร์เฟ ซ เช่น การบันทึกเสียง การเข้าถึงอุปกรณ์ USB และการบันทึกวิดีโอ [ 4 ] [ 5 ] [ 6 ]...
การอัปเดตอัตโนมัติและแบบอะตอมิก
snapd จะตรวจสอบการอัปเดตที่มีอยู่ของ Snap ทั้งหมดหลายครั้งต่อวัน และติดตั้งในพื้นหลังโดยใช้ การดำเนินการแบบอะตอมิก การอัปเดตสามารถย้อนกลับได้ [ 15 ] [ 16 ] และใช้ การเข้ารหัสเดลต้า เพื่อลดขนาดการดาวน์โหลด [ 17 ] [ 18 ] [ 19 ]
สแนปคราฟต์
Snapcraft เป็นเครื่องมือสำหรับนักพัฒนาในการบรรจุโปรแกรมของตนในรูปแบบ Snap [ 31 ] โดยทำงานบนระบบปฏิบัติการ Linux ที่รองรับโดย Snap, macOS [ 32 ] และ Microsoft Windows [ 33 ] Snapcraft สร้างแพ็กเกจใน เครื่องเสมือน โดยใช้ Multipass [ 34 ]...