สาขาใหม่ของชุดเครื่องมือที่มั่นคง ซึ่งเป็นระบบที่ช่วยให้สามารถสร้างแพ็กเกจแบบครบวงในตัวเองได้ โดยไม่ผูกติดกับระบบปฏิบัติการใดโดยเฉพาะ Linux และทำงานในคอนเทนเนอร์พิเศษที่แยกแอปพลิเคชันออกจากส่วนที่เหลือของระบบ Arch รองรับการเรียกใช้แพ็กเกจ Flatpak Linux, , Debianเฟโดรา, เจนทู, มาเกีย, Linux มินต์และ Ubuntuแพ็กเกจ Flatpak รวมอยู่ในที่เก็บแพ็กเกจของ Fedora และได้รับการสนับสนุนในตัวจัดการแอปพลิเคชัน GNOME มาตรฐาน
สำคัญ ในสาขา Flatpak 1.8:
- การใช้งานการติดตั้งในโหมด P2P นั้นง่ายขึ้น (ช่วยให้คุณจัดระเบียบการโหลดแอปพลิเคชันและชุดรันไทม์ผ่านโหนดกลางหรือไดรฟ์สำหรับระบบที่ไม่มีการเชื่อมต่อเครือข่าย) การสนับสนุนการติดตั้งผ่านโฮสต์ระดับกลางบนเครือข่ายท้องถิ่นถูกยกเลิกแล้ว ตามค่าเริ่มต้น การปิดใช้ไซด์โหลดที่เก็บข้อมูลบนไดรฟ์ USB ในเครื่องโดยอัตโนมัติ หากต้องการเปิดใช้งานที่เก็บโลคัลระดับกลาง คุณต้องกำหนดค่าที่เก็บโดยการสร้างลิงก์สัญลักษณ์จาก /var/lib/flatpak/sideload-repos หรือ
/run/flatpak/sideload-repos. การเปลี่ยนแปลงทำให้การใช้งานโหมด P2P ภายในง่ายขึ้นและเพิ่มประสิทธิภาพ - เพิ่มหน่วย systemd เสริมเพื่อตรวจจับที่เก็บข้อมูลเพิ่มเติมบนไดรฟ์ USB ภายนอกที่เชื่อมต่อโดยอัตโนมัติ
- สำหรับแอปพลิเคชันที่มีสิทธิ์เข้าถึงระบบไฟล์ ไดเร็กทอรี /lib ของสภาพแวดล้อมโฮสต์จะถูกส่งต่อไปยัง /run/host/lib
- เพิ่มสิทธิ์การเข้าถึง FS ใหม่ - "host-etc" และ "host-os" ซึ่งอนุญาตให้เข้าถึงไดเร็กทอรีระบบ /etc และ /usr
- เพื่อสร้างโค้ดการแยกวิเคราะห์ไฟล์ที่มีประสิทธิภาพมากขึ้น จะใช้ GVariant จาก ostreee .
- การกำหนดค่าฝังศพใต้ถุนโบสถ์ให้ความสามารถในการสร้างโดยไม่ต้อง
libsystemd; - เปิดใช้งานการติดตั้งซ็อกเก็ต Journal ในโหมดอ่านอย่างเดียว
- เพิ่มการสนับสนุนสำหรับการส่งออกไดเรกทอรีไปยังการส่งออกเอกสาร
- อนุญาตการเข้าถึงโดยตรงไปยังอุปกรณ์เสียง ALSA สำหรับแอปพลิเคชันที่สามารถเข้าถึง Pulseaudio
- ใน API เพิ่มสัญญาณ "ติดตั้งตัวตรวจสอบสิทธิ์" ที่ไคลเอนต์สามารถใช้เพื่อติดตั้งตัวตรวจสอบสิทธิ์ที่จำเป็นในการทำธุรกรรมให้เสร็จสิ้น
- เปิดใช้งานการใช้ข้อมูลเขตเวลาตาม /etc/localtime จากระบบโฮสต์ ซึ่งแก้ไขปัญหาที่เกี่ยวข้องกับเขตเวลาในบางแอปพลิเคชัน
- หยุดการติดตั้งไฟล์ env.d จาก gdm เนื่องจากตัวสร้าง systemd ทำงานได้ดีกว่าในงานนี้
- ยูทิลิตี้ create-usb มีการเปิดใช้งานการส่งออกบางส่วนตามค่าเริ่มต้น
- ไฟล์ sysusers.d ได้รับการจัดเตรียมเพื่อสร้างผู้ใช้ที่จำเป็นผ่าน systemd
- เพิ่มตัวเลือก “-[no-]follow-redirect” ลงในคำสั่ง “flatpak remote-add” และ “flatpak modified” เพื่อปิด/เปิดใช้งานการเปลี่ยนเส้นทางไปยังพื้นที่เก็บข้อมูลอื่น
- ให้กับระบบ
เพิ่ม Spawn API เพื่อรับ ID กระบวนการจริง (PID) ของแอปพลิเคชันที่ทำงานอยู่ - พื้นที่เก็บข้อมูล OCI (Open Container Initiative) ทั้งหมดได้รับการแปลงให้ใช้ตัวตรวจสอบสิทธิ์ flatpak-oci-authenticator
- เพิ่มตัวเลือก “--commit=” ให้กับคำสั่ง “flatpak remote-info” และ “flatpak update” เพื่อตั้งค่าเวอร์ชันเฉพาะของที่เก็บ OCI
- เพิ่มการสนับสนุนเบื้องต้นสำหรับการอัพเดตเดลต้าสำหรับที่เก็บ OCI
- เพิ่มคำสั่ง "flatpak update" ซึ่งเป็นนามแฝงสำหรับคำสั่ง "flatpak update"
- นำสคริปต์การป้อนข้อมูลที่สมบูรณ์ไปใช้สำหรับเชลล์คำสั่ง fish
เราขอเตือนคุณว่า Flatpak ช่วยให้นักพัฒนาแอปพลิเคชันสามารถกระจายโปรแกรมที่ไม่รวมอยู่ในที่เก็บการแจกจ่ายมาตรฐานได้ง่ายขึ้นโดย คอนเทนเนอร์สากลหนึ่งคอนเทนเนอร์โดยไม่ต้องสร้างชุดประกอบแยกกันสำหรับการแจกจ่ายแต่ละครั้ง สำหรับผู้ใช้ที่คำนึงถึงความปลอดภัย Flatpak ช่วยให้คุณสามารถเรียกใช้แอปพลิเคชันที่น่าสงสัยในคอนเทนเนอร์ โดยให้การเข้าถึงเฉพาะฟังก์ชันเครือข่ายและไฟล์ผู้ใช้ที่เกี่ยวข้องกับแอปพลิเคชันเท่านั้น สำหรับผู้ใช้ที่สนใจผลิตภัณฑ์ใหม่ Flatpak ช่วยให้คุณสามารถติดตั้งการทดสอบล่าสุดและแอพพลิเคชั่นที่เสถียรโดยไม่จำเป็นต้องทำการเปลี่ยนแปลงระบบ เช่นปัจจุบันแพ็คเกจ Flatpak มีอยู่แล้ว для LibreOffice, Midori, GIMP, Inkscape, Kdenlive, Steam, 0 A.D., Visual Studio Code, VLC, Slack, Skype, Telegram Desktop, Android สตูดิโอ ฯลฯ
เพื่อลดขนาดแพ็คเกจ จะรวมเฉพาะการพึ่งพาเฉพาะแอปพลิเคชัน และระบบพื้นฐานและไลบรารีกราฟิก (ไลบรารี Gtk+, Qt, GNOME และ KDE ฯลฯ) ได้รับการออกแบบให้เป็นสภาพแวดล้อมรันไทม์มาตรฐานของปลั๊กอิน ข้อแตกต่างที่สำคัญระหว่าง Flatpak และ Snap คือ Snap ใช้ส่วนประกอบของสภาพแวดล้อมระบบหลักและการแยกตามการกรองการเรียกของระบบ ในขณะที่ Flatpak สร้างคอนเทนเนอร์ที่แยกจากระบบและทำงานกับชุดรันไทม์ขนาดใหญ่ โดยไม่ให้แพ็คเกจเป็นการพึ่งพา แต่เป็นมาตรฐาน สภาพแวดล้อมของระบบ (เช่น ไลบรารีทั้งหมดที่จำเป็นสำหรับการทำงานของโปรแกรม GNOME หรือ KDE)
นอกเหนือจากสภาพแวดล้อมของระบบมาตรฐาน (รันไทม์) ที่ติดตั้งผ่านระบบพิเศษแล้ว มีการจัดหาการอ้างอิงเพิ่มเติม (บันเดิล) ที่จำเป็นสำหรับแอปพลิเคชันในการทำงาน โดยรวมแล้ว รันไทม์และบันเดิลจะสร้างการเติมคอนเทนเนอร์ แม้ว่ารันไทม์จะถูกติดตั้งแยกกันและเชื่อมโยงกับคอนเทนเนอร์หลายอันในคราวเดียว ซึ่งช่วยให้คุณหลีกเลี่ยงการทำซ้ำไฟล์ระบบที่เหมือนกันกับคอนเทนเนอร์ได้ ระบบหนึ่งสามารถติดตั้งรันไทม์ที่แตกต่างกันได้หลายแบบ (GNOME, KDE) หรือรันไทม์เดียวกันหลายเวอร์ชัน (GNOME 3.26, GNOME 3.28) คอนเทนเนอร์ที่มีแอปพลิเคชันเป็นแบบพึ่งพาจะใช้การเชื่อมโยงเฉพาะกับรันไทม์ที่ระบุเท่านั้น โดยไม่คำนึงถึงแต่ละแพ็คเกจที่ประกอบเป็นรันไทม์ องค์ประกอบที่ขาดหายไปทั้งหมดจะถูกรวมเข้ากับแอปพลิเคชันโดยตรง เมื่อคอนเทนเนอร์ถูกสร้างขึ้น เนื้อหารันไทม์จะถูกเมาท์เป็นพาร์ติชัน /usr และบันเดิลจะถูกเมาท์ในไดเร็กทอรี /app
การเติมรันไทม์และคอนเทนเนอร์แอปพลิเคชันเกิดขึ้นโดยใช้เทคโนโลยี ซึ่งอิมเมจได้รับการอัปเดตแบบอะตอมมิกจากพื้นที่เก็บข้อมูลที่คล้ายกับ Git ทำให้สามารถใช้วิธีควบคุมเวอร์ชันกับส่วนประกอบของการแจกจ่ายได้ (เช่น คุณสามารถย้อนกลับระบบไปสู่สถานะก่อนหน้าได้อย่างรวดเร็ว) แพ็คเกจ RPM ได้รับการแปลเป็นที่เก็บ OSTree โดยใช้เลเยอร์พิเศษ . ไม่รองรับการติดตั้งและอัปเดตแพ็คเกจแยกต่างหากภายในสภาพแวดล้อมการทำงาน ระบบได้รับการอัปเดตไม่ได้อยู่ที่ระดับของแต่ละส่วนประกอบ แต่โดยรวมแล้วจะเปลี่ยนสถานะแบบอะตอมมิก มีเครื่องมือเพื่อใช้การอัปเดตแบบค่อยเป็นค่อยไป โดยไม่จำเป็นต้องแทนที่รูปภาพทั้งหมดด้วยการอัพเดตแต่ละครั้ง
สภาพแวดล้อมแบบแยกที่สร้างขึ้นนั้นไม่ขึ้นอยู่กับการกระจายที่ใช้โดยสิ้นเชิง และด้วยการตั้งค่าแพ็คเกจที่เหมาะสม จะไม่สามารถเข้าถึงไฟล์และกระบวนการของผู้ใช้หรือระบบหลัก ไม่สามารถเข้าถึงอุปกรณ์ได้โดยตรง ยกเว้นเอาต์พุตผ่าน DRI และ ระบบย่อยเครือข่าย เอาท์พุตกราฟิกและการจัดระเบียบอินพุต ใช้โปรโตคอล Wayland หรือผ่านการส่งต่อซ็อกเก็ต X11 การโต้ตอบกับสภาพแวดล้อมภายนอกจะขึ้นอยู่กับระบบการส่งข้อความ DBus และพอร์ทัล API พิเศษ สำหรับเป็นฉนวน อินเตอร์เลเยอร์ และแบบดั้งเดิมสำหรับ Linux เทคโนโลยีการจำลองเสมือนคอนเทนเนอร์โดยอาศัยการใช้งาน cgroups, namespaces, Seccomp และ SELinuxPulseAudio ใช้สำหรับส่งสัญญาณเสียงออก
ที่มา: opennet.ru
