Apakah snap portable di UNIX lain (contoh macOS)?

10

Saya suka ide di balik snap dan bermain dengannya di Ubuntu VM.

Ikhtisar Snapcraft

Snapcraft adalah alat pembuatan dan pengemasan yang membantu Anda mengemas perangkat lunak Anda dengan cepat. Itu membuatnya mudah untuk memasukkan komponen dari berbagai sumber dan membangun teknologi atau solusi. Konsep kunci

Paket .snap untuk sistem Ubuntu Core berisi semua dependensinya. Ini memiliki beberapa keunggulan dibandingkan penanganan ketergantungan berbasis deb atau rpm tradisional, yang terpenting adalah bahwa pengembang selalu dapat diyakinkan bahwa tidak ada regresi yang dipicu oleh perubahan pada sistem di bawah aplikasi mereka.

Snapcraft memudahkan pengikatan dependensi ini dengan memungkinkan Anda menentukannya sebagai "bagian" di file snapcraft.yaml. Tajam

Snappy Ubuntu Core adalah versi baru Ubuntu dengan pembaruan transaksional - gambar server minimal dengan pustaka yang sama dengan Ubuntu saat ini, tetapi aplikasi disediakan melalui mekanisme yang lebih sederhana.

Aplikasi cepat dan Ubuntu Core itu sendiri dapat ditingkatkan secara atom dan dibatalkan jika diperlukan. Aplikasi juga sangat dibatasi dan dikotak pasir untuk melindungi data dan sistem Anda.

IoT ›Bangun aplikasi

Pada teknologi apa berbasis snap? Bagaimana tampilan arsitektur dan toolkit? Apakah snap tergantung pada fitur kernel Linux?

Saya bertanya, karena saya bertanya-tanya apakah di masa depan saya akan dapat menggunakan paket snap yang sama juga di macOS?

Klarifikasi, setelah komentar pertama:

Saya tahu bahwa macOS dan Ubuntu tidak kompatibel biner. Diperlukan kompilasi ulang. Hampir semua Open Source sudah tersedia untuk macOS dengan Homebrew . Pengembang dapat mengembangkan di macOS dan menggunakan Ubuntu ketika snap akan (di masa depan) tersedia untuk macOS.

Ivanov
sumber
1
Bahkan jika tidak ada fitur kernel yang terlibat, saya tidak akan mengharapkan aplikasi non-sepele, bahkan dikompilasi secara statis, untuk berjalan tanpa kompilasi ulang pada macOS dan Linux - format yang dapat dieksekusi berbeda, ABI akan berbeda untuk sistem POSIX yang mendasarinya panggilan akan berbeda, dan terutama untuk aplikasi yang melampaui POSIX, panggilan sistem yang setara akan berbeda. Itu bukan hambatan saya pikir kemasan apa pun bisa diatasi. Kalau tidak, proyek-proyek seperti Wine dan Darling akan berhasil lama.
muru
Jadi, apakah Anda ingin memasang snap pada macOS atau membuat snap pada macOS? Pertanyaan Anda awalnya tampak seperti yang pertama, dan sekarang sepertinya yang terakhir.
muru
Bagaimanapun, karena buncis masih belum sepenuhnya porting ke distro Linux lain , saya berharap tindakan pada macOS menjadi mimpi pipa.
muru

Jawaban:

20

Ya, berkat stabilitas antarmuka syscall Linux, ini dimungkinkan.

Salah satu komitmen besar Linus Torvalds untuk pengguna Linux adalah set antarmuka yang ditawarkan oleh kernel stabil. Banyak orang tidak menghargai nilai ini, atau betapa sulitnya sebagai pemimpin proyek terbuka untuk mencapai komitmen itu. Pertimbangkan misalnya bagaimana perubahan yang tidak terduga dalam API GNOME berbeda! Ketika Anda mendengar tentang Linus mendapatkan intens di milis, itu hampir selalu karena beberapa committer ke kernel memutuskan untuk mengubah antarmuka seperti 'karena mereka punya ide yang lebih baik'. Linus mengatakan Anda dapat berinovasi secara liar DI DALAM kernel, tetapi jangan merusak aplikasi 'userspace' yang bergantung pada syscalls yang ada.

Sebagai konsekuensi dari kestabilan itu, kernel-kernel lain mungkin menawarkan syscall yang sama, memungkinkan aplikasi yang dibangun di Linux untuk berjalan di kernel yang lain.

Salah satu contohnya adalah proyek Joyent Triton, yang menawarkan syscall yang kompatibel dengan Linux dalam wadah pada SmartOS (keturunan IllumOS, keturunan Solaris).

Contoh yang lebih banyak dikenal adalah subsistem Linux baru di Windows .

Tentu saja, berapa banyak syscalls yang ditawarkan, dan seberapa kompatibel bug-for-bug mereka, adalah pertanyaan sebenarnya. Setidaknya untuk saat ini, tidak ada lingkungan lain di mana semua syscall yang diperlukan ada, karena yang digunakan secara relatif relatif baru dan jauh dalam cara kernel berpikir tentang hal-hal yang dikelola.

Tetapi mereka pasti akan datang, pada waktunya, dan saya pikir dengan demikian akan digunakan dalam berbagai konteks.

Yang sangat keren, tambalan selamat datang :)

Mark Shuttleworth
sumber
11

Meskipun saya tidak dapat menemukan informasi tentang macOS, OMG ini ! Artikel Ubuntu memiliki kutipan menarik dari Mark Shuttleworth:

Seperti untuk menjalankan Terkunci pada Windows 10? "Ini benar-benar masuk akal," kata Shuttleworth.

“Terkunci menggunakan fitur modern di kernel Linux untuk melakukan pengurungan keamanan, mengatur akses sistem file, dll, dan semua itu melibatkan penggunaan mekanisme modern di kernel. Dan Canonical memimpin banyak [pekerjaan ini]. Butuh beberapa saat bagi Microsoft untuk [mulai terhubung]. "

Jika "masuk akal" untuk menjalankannya di Windows, saya akan mengatakan hal yang sama untuk macOS, kecuali bahwa Microsoft tampaknya bekerja sama dengan Canonical, yang bukan sesuatu yang saya dengar tentang Apple.


Dokumentasi tentang kebijakan keamanan Snap dan kotak pasir dan entri Wiki Arch di snapd informatif:

Dari Arch Wiki:

Perhatikan bahwa snap-confine dibuat dengan opsi --disable-confinement; kurungan penuh bergantung pada kernel yang diaktifkan AppArmor dan profil terkait untuk snap.

Dari kebijakan:

Di bawah tenda, peluncur:

  • Mengatur berbagai variabel lingkungan: [...]
  • Ketika perangkat keras ditetapkan ke snap, atur grup perangkat dengan perangkat default (mis., / Dev / null, / dev / urandom, dll) dan semua perangkat yang ditugaskan pada snap ini
  • Menyiapkan private / tmp menggunakan per-perintah namespace mount pribadi dan memasang direktori per-perintah pada / tmp
  • Menyiapkan per-perintah menunjukkan contoh baru
  • Menyiapkan filter seccomp untuk perintah
  • Menjalankan perintah di bawah profil AppArmor khusus perintah di bawah nilai bagus default

Kombinasi profil AppArmor yang membatasi ini (yang memediasi akses file, eksekusi aplikasi, kemampuan Linux (7), mount, ptrace, IPC, sinyal, jaringan berbutir kasar), area sistem file spesifik yang ditentukan dengan jelas, penyaringan syscall daftar putih melalui seccomp, pribadi / tmp, contoh baru dan kelompok perangkat menyediakan untuk kurungan dan isolasi aplikasi yang kuat.

Meskipun AppArmor dan seccomp hanya untuk Linux, sepertinya kurungan dapat dibuat opsional, jadi kita dapat mengabaikannya. Lalu ada penggunaan devpts, cgroups dan mount namespaces. Jika ada pemblokiran, saya pikir itu untuk mereka. Saya tidak cukup terbiasa dengan BSD untuk mengatakan apa yang setara.

The snapdaplikasi itu sendiri ditulis dalam Go, yang harus membuatnya cukup cross-platform. Memang, beberapa file memiliki target pembangunan yang sangat menarik :

osutil/group_other.go:

// -*- Mode: Go; indent-tabs-mode: t -*-
// +build !linux,!darwin,!freebsd

osutil/group_linux.go:

// -*- Mode: Go; indent-tabs-mode: t -*-
// +build darwin freebsd linux
// +build cgo

Jadi sepertinya seseorang tertarik pada hal ini.

muru
sumber