Snap diğer UNIX'te taşınabilir mi (örnek macOS)?


10

Snap'in arkasındaki fikri seviyorum ve bir Ubuntu VM'de oynadım.

Snapcraft Genel Bakış

Snapcraft, yazılımınızı bir çırpıda paketlemenize yardımcı olan bir oluşturma ve paketleme aracıdır. Farklı kaynaklardan bileşenleri birleştirmeyi ve teknoloji veya çözümler üretmeyi kolaylaştırır. Anahtar kavramlar

Ubuntu Core sistemi için bir .snap paketi tüm bağımlılıklarını içerir. Bu, geleneksel deb veya rpm tabanlı bağımlılık işlemeye göre birkaç avantaja sahiptir, en önemlisi, bir geliştiricinin, uygulamalarının altındaki sistemdeki değişikliklerin tetiklediği hiçbir regresyon olmadığından her zaman emin olabilmesidir.

Snapcraft, snapcraft.yaml dosyasında "parçalar" olarak belirtmenize izin vererek bu bağımlılıkları birleştirmeyi kolaylaştırır. çabuk

Snappy Ubuntu Core, işlem güncellemelerine sahip yeni bir Ubuntu yorumlamasıdır - günümüzün Ubuntu ile aynı kütüphanelere sahip minimal bir sunucu görüntüsü, ancak uygulamalar daha basit bir mekanizma ile sağlanır.

Snappy uygulamaları ve Ubuntu Core'un kendisi atomik olarak yükseltilebilir ve gerekirse geri alınabilir. Uygulamalar ayrıca verilerinizi ve sisteminizi korumak için tamamen sınırlandırılır ve korumalı olarak yerleştirilir.

IoT ›Uygulama oluşturma

Snap hangi teknolojilere dayanıyor? Mimari ve araç setleri nasıl görünüyor? Snap Linux çekirdek özelliklerine bağlı mı?

Soruyorum, çünkü gelecekte macOS'ta da aynı ek paketleri kullanıp kullanamayacağımı merak ediyorum.

İlk yorumdan sonra açıklama:

MacOS ve Ubuntu'nun ikili uyumlu olmadığını biliyorum. Yeniden derleme gerekli. Homebrew ile macOS için halihazırda neredeyse tüm Açık Kaynaklar var . Geliştirici macOS üzerinde geliştirebilir ve snap macOS (gelecekte) macOS için kullanılabilir olduğunda Ubuntu üzerinde konuşlayabilir.


1
Hiçbir çekirdek özelliği dahil olmasa bile, statik olarak derlenmiş olsa bile önemsiz olmayan herhangi bir uygulamanın macOS ve Linux'ta yeniden derlenmeden çalışmasını beklemezdim - yürütülebilir biçimler farklıdır, ABI'ler temel POSIX sistemi için farklı olacaktır çağrılar farklı olurdu ve özellikle POSIX'in ötesine geçen uygulamalar için eşdeğer sistem çağrıları farklı olacaktır. Bunlar herhangi bir ambalajın üstesinden gelebileceğini düşündüğüm engeller değil . Aksi takdirde Wine ve Darling gibi projeler uzun zaman önce başarılı olurdu.
muru

Peki macOS'a ekler yüklemek veya macOS'ta ekler oluşturmak istiyor musunuz? Sorunuz başlangıçta birincisine benziyordu ve şimdi ikincisine benziyor.
muru

Her halükarda, çıtçıtlar hala diğer Linux dağıtımlarına taşınmamış olduğundan, macOS'ta herhangi bir eylemin bir boru rüyası olmasını beklerdim.
muru

Yanıtlar:


20

Evet, Linux syscall arayüzünün kararlılığı sayesinde bu mümkün.

Linus Torvalds'ın Linux kullanıcılarına verdiği büyük taahhütlerden biri, çekirdeğin sunduğu arabirim kümesinin kararlı olmasıdır. Birçok insan bunun değerini veya bu taahhüdü yerine getirmenin açık bir projenin lideri olarak ne kadar zor olduğunu takdir etmiyor. Örneğin, GNOME API'larındaki öngörülemeyen değişikliklerin aksine ne olduğunu düşünün! Linus'un bir posta listesinde yoğunlaştığını duyduğunuzda, neredeyse her zaman çekirdeğe gelen bazı komünistler böyle bir arayüzü değiştirmeye karar verdiler çünkü daha iyi bir fikirleri vardı. Linus, çekirdek içinde çılgınca yenilik yapabileceğinizi söylüyor, ancak lütfen mevcut sistem çağrılarına bağlı olan 'kullanıcı alanı' uygulamalarını kırmayın.

Bu istikrarın bir sonucu olarak, diğer çekirdeklerin aynı sistem çağrılarını sunması, Linux üzerinde oluşturulan uygulamaların bu diğer çekirdeklerde çalışmasına izin vermesi mümkündür.

Buna bir örnek, SmartOS (Solaris'in soyundan gelen IllumOS soyundan) konteynerlerde Linux uyumlu sistem aramaları sunan Joyent Triton projesidir.

Daha yaygın bilinen bir örnek, Windows'taki yeni Linux alt sistemidir .

Tabii ki, kaç sistem çağrısı sunuluyor ve hata-bug için ne kadar uyumlu oldukları asıl soru. En azından şimdilik, gerekli tüm sistem çağrılarının olduğu başka bir ortam yok, çünkü çıtçıtların kullanımı, çekirdeğin yönettiği şeyler hakkında düşündüğü şekilde nispeten yeni ve derin.

Ama kesinlikle, zamanla gelecekler ve sanırım çıtçıtlar çok çeşitli bağlamlarda kullanılabilir.

Çok güzel, yamalar hoş geldiniz :)


11

MacOS hakkında herhangi bir bilgi bulamasam da, bu OMG! Ubuntu makalesinde Mark Shuttleworth'un ilginç bir alıntısı var:

Snaps'ı Windows 10'da çalıştırmaya gelince? “Kesinlikle mantıklı” dedi Shuttleworth.

“Snaps, Linux çekirdeğindeki modern özellikleri güvenlik hapsi yapmak, dosya sistemi erişimini ayarlamak vb. İçin kullanıyor ve bunların hepsi çekirdeğin modern mekanizmalarını kullanmayı içeriyor. Ve kanonik bir sürü [bu işte] liderlik ediyor. Microsoft'un [ona bağlanması] biraz zaman alacak. ”

Windows'da çalıştırmak için "makul" ise, macOS için de aynı şeyi söyleyebilirim, ancak Microsoft'un Canonical ile işbirliği yaptığı görünüyor, ki bu Apple'ın yaptığı hakkında duyduğum bir şey değil.


Üzerinde dokümantasyon çekin güvenlik politikası ve korumalı alan ve snapd üzerinde Arch Wiki girdi bilgilendirici:

Arch Wiki'den:

Snap-confine'nin --disable-confinement seçeneğiyle oluşturulduğunu unutmayın; tam sınırlama, AppArmor özellikli bir çekirdeğe ve ek için ilgili profile bağlıdır.

Politikadan:

Başlığın altında, fırlatıcı:

  • Çeşitli ortam değişkenlerini ayarlar: […]
  • Snap'e donanım atandığında, varsayılan cihazlarla (örn. / Dev / null, / dev / urandom vb.) Ve bu eke atanmış tüm cihazlara sahip bir cihaz grubu oluşturur.
  • Komut başına özel bağlama ad alanı kullanarak ve / tmp üzerine komut başına dizin ekleme özel / tmp kurar
  • Komut başına yeni bir örnek oluşturur
  • Komut için seccomp filtresini ayarlar
  • Komutlara özel AppArmor profili altındaki komutu varsayılan bir hoş değer altında yürütür

Kısıtlayıcı AppArmor profillerinin bu kombinasyonu (dosya erişimi, uygulama yürütme, Linux yetenekleri (7), bağlama, ptrace, IPC, sinyaller, kaba taneli ağ oluşturma aracı, açıkça tanımlanmış uygulamaya özgü dosya sistemi alanları, seccomp üzerinden beyaz listeye sistem filtreleme, özel / tmp, yeni örnek geliştiricileri ve aygıt grupları güçlü uygulama hapsi ve izolasyonu sağlar.

AppArmor ve seccomp yalnızca Linux olsa da, hapsetme isteğe bağlı hale getirilebilir, bu yüzden bunu göz ardı edebiliriz. Sonra devpts, cgroups ve mount ad alanlarının kullanımı var. Herhangi bir engelleme varsa, bence bunlar için olurdu. Eşdeğerlerin ne olduğunu söylemek için BSD'lere yeterince aşina değilim.

snapdMakul çapraz platform yapmalıdır kendisi Git yazılmıştır uygulama. Gerçekten de, bazı dosyalar çok ilginç oluşturma hedeflerine sahiptir :

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

Görünüşe göre birisi bununla ilgileniyor.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.