Rilis sistem paket mandiri Flatpak 1.14.0

Cabang stabil baru dari toolkit Flatpak 1.14 telah diterbitkan, yang menyediakan sistem untuk membangun paket mandiri yang tidak terikat dengan distribusi Linux tertentu dan dijalankan dalam wadah khusus yang mengisolasi aplikasi dari seluruh sistem. Dukungan untuk menjalankan paket Flatpak disediakan untuk Arch Linux, CentOS, Debian, Fedora, Gentoo, Mageia, Linux Mint, Alt Linux dan Ubuntu. Paket Flatpak disertakan dalam repositori Fedora dan didukung oleh manajer aplikasi asli GNOME.

Inovasi utama di cabang Flatpak 1.14:

  • Dimungkinkan untuk membuat direktori untuk file dalam status (.local/state) dan mengatur variabel lingkungan XDG_STATE_HOME yang menunjuk ke direktori ini.
  • Menambahkan pemeriksaan bersyarat dalam bentuk "have-kernel-module-name" untuk menentukan keberadaan modul kernel (analog universal dari pemeriksaan has-intel-gpu yang diusulkan sebelumnya, alih-alih menggunakan ekspresi "have-kernel-module-i915 ” sekarang dapat digunakan).
  • Perintah “flatpak document-unexport —doc-id=…” telah diterapkan.
  • Ekspor metadata Appstream untuk digunakan di lingkungan utama disediakan.
  • Menambahkan aturan penyelesaian perintah flatpak untuk cangkang Ikan
  • Akses jaringan ke layanan X11 dan PulseAudio diperbolehkan (jika pengaturan yang sesuai ditambahkan).
  • Cabang utama dalam repositori Git telah diubah namanya dari “master” menjadi “main”, karena kata “master” baru-baru ini dianggap salah secara politis.
  • Skrip peluncuran kini ditulis ulang jika aplikasi diganti namanya.
  • Menambahkan opsi "--include-sdk" dan "--include-debug" ke perintah install untuk menginstal file SDK dan debuginfo.
  • Menambahkan dukungan untuk parameter “DeploySideloadCollectionID” ke file flatpakref dan flatpakrepo. Jika disetel, ID koleksi akan disetel saat menambahkan repositori jarak jauh, dan bukan setelah memuat metadata.
  • Mengizinkan pembuatan lingkungan kotak pasir bersarang untuk penangan dalam sesi dengan nama MPRIS (Spesifikasi Antarmuka Jarak Jauh Pemutar Media) yang terpisah.
  • Utilitas baris perintah sekarang menyediakan informasi tentang penggunaan ekstensi runtime yang sudah ketinggalan zaman.
  • Perintah uninstall mengimplementasikan permintaan konfirmasi sebelum menghapus runtime atau ekstensi runtime yang masih digunakan.
  • Menambahkan dukungan untuk opsi “--socket=gpg-agent” ke perintah seperti “flatpak run”.
  • Kerentanan telah diperbaiki di libotree yang berpotensi memungkinkan pengguna menghapus file sewenang-wenang di sistem melalui manipulasi pengendali flatpak-system-helper (mengirimkan permintaan penghapusan dengan nama cabang yang diformat khusus). Masalahnya hanya muncul di Flatpak dan libostree versi lama yang dirilis sebelum 2018 (<0.10.2) dan tidak memengaruhi rilis saat ini.

Izinkan kami mengingatkan Anda bahwa Flatpak memungkinkan pengembang aplikasi menyederhanakan distribusi program mereka yang tidak termasuk dalam repositori distribusi standar dengan menyiapkan satu wadah universal tanpa membuat rakitan terpisah untuk setiap distribusi. Untuk pengguna yang sadar akan keamanan, Flatpak memungkinkan Anda menjalankan aplikasi yang meragukan dalam sebuah wadah, hanya menyediakan akses ke fungsi jaringan dan file pengguna yang terkait dengan aplikasi tersebut. Bagi pengguna yang tertarik dengan produk baru, Flatpak memungkinkan Anda menginstal aplikasi pengujian terbaru dan rilis stabil tanpa perlu melakukan perubahan pada sistem. Misalnya, paket Flatpak dibuat untuk LibreOffice, Midori, GIMP, Inkscape, Kdenlive, Steam, 0 AD, Visual Studio Code, VLC, Slack, Skype, Telegram Desktop, Android Studio, dll.

Untuk mengurangi ukuran paket, ini hanya mencakup dependensi khusus aplikasi, dan sistem dasar serta pustaka grafis (pustaka GTK, Qt, GNOME dan KDE, dll.) dirancang sebagai lingkungan runtime standar plug-in. Perbedaan utama antara Flatpak dan Snap adalah Snap menggunakan komponen lingkungan sistem utama dan isolasi berdasarkan pemfilteran panggilan sistem, sementara Flatpak membuat wadah terpisah dari sistem dan beroperasi dengan kumpulan runtime besar, tidak menyediakan paket sebagai dependensi, tetapi standar lingkungan sistem (misalnya, semua perpustakaan yang diperlukan untuk pengoperasian program GNOME atau KDE).

Selain lingkungan sistem standar (runtime), yang diinstal melalui repositori khusus, dependensi tambahan (bundel) yang diperlukan agar aplikasi dapat berfungsi juga disediakan. Secara total, runtime dan bundel membentuk pengisian wadah, meskipun faktanya runtime diinstal secara terpisah dan diikat ke beberapa wadah sekaligus, yang menghindari duplikasi file sistem yang umum untuk wadah. Satu sistem dapat menginstal beberapa runtime berbeda (GNOME, KDE) atau beberapa versi runtime yang sama (GNOME 3.40, GNOME 3.42). Kontainer dengan aplikasi sebagai dependensi hanya menggunakan pengikatan pada runtime tertentu, tanpa memperhitungkan masing-masing paket yang membentuk runtime tersebut. Semua elemen yang hilang dikemas langsung dengan aplikasi. Ketika sebuah kontainer terbentuk, konten runtime dipasang sebagai partisi /usr, dan bundel dipasang di direktori /app.

Runtime dan wadah aplikasi dibuat menggunakan teknologi OSTree, di mana gambar diperbarui secara atom dari repositori mirip Git, yang memungkinkan metode kontrol versi diterapkan ke komponen distribusi (misalnya, Anda dapat dengan cepat mengembalikan sistem ke a keadaan sebelumnya). Paket RPM diterjemahkan ke dalam repositori OSTree menggunakan lapisan rpm-ostree khusus. Instalasi terpisah dan pembaruan paket dalam lingkungan kerja tidak didukung; sistem diperbarui bukan pada tingkat komponen individual, tetapi secara keseluruhan, mengubah statusnya secara atom. Menyediakan alat untuk menerapkan pembaruan secara bertahap, menghilangkan kebutuhan untuk mengganti gambar sepenuhnya dengan setiap pembaruan.

Lingkungan terisolasi yang dihasilkan sepenuhnya independen dari distribusi yang digunakan dan, dengan pengaturan paket yang tepat, tidak memiliki akses ke file dan proses pengguna atau sistem utama, dan tidak dapat mengakses peralatan secara langsung, kecuali output melalui DRI dan panggilan ke subsistem jaringan. Organisasi keluaran dan masukan grafis diimplementasikan menggunakan protokol Wayland atau melalui penerusan soket X11. Interaksi dengan lingkungan eksternal didasarkan pada sistem pesan DBus dan API Portal khusus.

Untuk isolasi, lapisan Bubblewrap dan teknologi virtualisasi container Linux tradisional digunakan, berdasarkan penggunaan cgroups, namespace, Seccomp dan SELinux. PulseAudio digunakan untuk mengeluarkan suara. Dalam hal ini, isolasi dapat dinonaktifkan, yang digunakan oleh pengembang banyak paket populer untuk mendapatkan akses penuh ke sistem file dan semua perangkat di sistem. Misalnya, GIMP, VSCodium, PyCharm, Octave, Inkscape, Audacity, dan VLC hadir dengan mode isolasi terbatas yang memberikan akses penuh ke direktori home. Jika paket dengan akses ke direktori home disusupi, meskipun ada label “sandboxed” di deskripsi paket, penyerang hanya perlu mengubah file ~/.bashrc untuk mengeksekusi kodenya. Masalah terpisah adalah kontrol atas perubahan paket dan kepercayaan pada pembuat paket, yang seringkali tidak terkait dengan proyek atau distribusi utama.

Sumber: opennet.ru

Tambah komentar