Snap có khả năng di động trên các UNIX khác (ví dụ macOS) không?


10

Tôi thích ý tưởng đằng sau snap và chơi với nó trên Ubuntu VM.

Tổng quan về Snapcraft

Snapcraft là một công cụ xây dựng và đóng gói giúp bạn đóng gói phần mềm của bạn nhanh chóng. Nó giúp dễ dàng kết hợp các thành phần từ các nguồn khác nhau và xây dựng các công nghệ hoặc giải pháp. Ý chính

Gói .snap cho hệ thống Ubuntu Core chứa tất cả các phụ thuộc của nó. Điều này có một số lợi thế so với xử lý phụ thuộc dựa trên deb hoặc truyền thống dựa trên vòng quay truyền thống, điều quan trọng nhất là nhà phát triển luôn có thể yên tâm rằng không có hồi quy được kích hoạt bởi các thay đổi đối với hệ thống bên dưới ứng dụng của họ.

Snapcraft làm cho việc đóng gói các phụ thuộc này trở nên dễ dàng bằng cách cho phép bạn chỉ định chúng là "các phần" trong tệp snapcraft.yaml. Snappy

Snappy Ubuntu Core là phiên bản mới của Ubuntu với các cập nhật giao dịch - hình ảnh máy chủ tối thiểu có cùng thư viện với Ubuntu ngày nay, nhưng các ứng dụng được cung cấp thông qua một cơ chế đơn giản hơn.

Các ứng dụng Snappy và Ubuntu Core có thể được nâng cấp nguyên tử và khôi phục nếu cần. Các ứng dụng cũng được giới hạn nghiêm ngặt và hộp cát để bảo vệ dữ liệu và hệ thống của bạn.

Ứng dụng xây dựng IoT

Trên những công nghệ được dựa trên snap? Làm thế nào để kiến ​​trúc và bộ công cụ trông? Snap có phụ thuộc vào các tính năng kernel của Linux không?

Tôi hỏi, bởi vì tôi tự hỏi liệu trong tương lai tôi có thể sử dụng các gói snap tương tự trên macOS không?

Làm rõ, sau bình luận đầu tiên:

Tôi biết rằng macOS và Ubuntu không tương thích nhị phân. Một biên dịch lại là cần thiết. Gần như có bất kỳ Nguồn mở nào đã có sẵn cho macOS với Homebrew . Nhà phát triển có thể phát triển trên macOS và triển khai trên Ubuntu khi snap sẽ (trong tương lai) có sẵn cho macOS.


1
Ngay cả khi không có tính năng kernel nào, tôi sẽ không mong đợi bất kỳ ứng dụng không tầm thường nào, thậm chí được biên dịch tĩnh, sẽ chạy mà không biên dịch lại trên macOS và Linux - các định dạng thực thi là khác nhau, ABI sẽ khác với hệ thống POSIX bên dưới các cuộc gọi sẽ khác nhau và đặc biệt đối với các ứng dụng đi trên và ngoài POSIX, các cuộc gọi hệ thống tương đương sẽ khác nhau. Đó không phải là rào cản Tôi nghĩ rằng bất kỳ bao bì có thể vượt qua. Nếu không, các dự án như Wine và Darling đã thành công từ lâu.
muru

Vậy bạn có muốn cài đặt snaps trên macOS hoặc tạo snaps trên macOS không? Câu hỏi của bạn ban đầu giống như câu hỏi trước, và bây giờ nó giống câu hỏi sau.
muru

Ở mức độ nào, vì snaps vẫn chưa được chuyển hoàn toàn sang các bản phân phối Linux khác , tôi mong muốn mọi hành động trên macOS sẽ là một giấc mơ xa vời.
muru

Câu trả lời:


20

Vâng, nhờ sự ổn định của giao diện tòa nhà Linux, điều này là có thể.

Một trong những cam kết tuyệt vời của Linus Torvalds đối với người dùng Linux là bộ giao diện được cung cấp bởi kernel là ổn định. Nhiều người không đánh giá cao giá trị của điều này, hoặc mức độ thách thức của nó như là một nhà lãnh đạo của một dự án mở để đạt được cam kết đó. Ví dụ, hãy xem xét các thay đổi không thể đoán trước trong các API của Gnome! Khi bạn nghe về việc Linus trở nên mạnh mẽ trong danh sách gửi thư, hầu như luôn luôn là do một số người chuyển sang kernel đã quyết định thay đổi giao diện như vậy 'bởi vì họ có ý tưởng tốt hơn'. Linus nói rằng bạn có thể đổi mới mạnh mẽ bên trong hạt nhân, nhưng vui lòng không phá vỡ các ứng dụng 'không gian người dùng' phụ thuộc vào các tòa nhà hiện có.

Do hậu quả của sự ổn định đó, các hạt nhân khác có thể cung cấp các tòa nhà tương tự, cho phép các ứng dụng được xây dựng trên Linux chạy trên các hạt nhân khác đó.

Một ví dụ về điều đó là dự án Joyent Triton, cung cấp các tòa nhà tương thích với Linux trong các container trên SmartOS (hậu duệ của IllumOS, hậu duệ của Solaris).

Một ví dụ được biết đến rộng rãi hơn là hệ thống con Linux mới trong Windows .

Tất nhiên, có bao nhiêu tòa nhà được cung cấp, và chúng tương thích với lỗi như thế nào, là câu hỏi thực sự. Ít nhất là cho đến nay, không có môi trường nào khác, nơi có tất cả các tòa nhà cần thiết, bởi vì những cái mà snaps sử dụng là tương đối mới và sâu sắc trong cách mà kernel nghĩ về những thứ nó quản lý.

Nhưng họ chắc chắn sẽ đến, đúng lúc, và tôi nghĩ rằng snaps sẽ có thể sử dụng được trong một loạt các bối cảnh.

Mà là rất mát mẻ, bản vá chào mừng :)


11

Mặc dù tôi không thể tìm thấy bất kỳ thông tin nào về macOS, OMG này ! Bài viết trên Ubuntu có một trích dẫn thú vị từ Mark Shuttleworth:

Còn khi chạy Snaps trên Windows 10? Đây là điều hoàn toàn hợp lý, Shuttle Shuttleworth nói.

Snaps Snaps đang sử dụng các tính năng hiện đại trong nhân Linux để thực hiện bảo mật, thiết lập quyền truy cập hệ thống tệp, v.v. và tất cả những thứ đó liên quan đến việc sử dụng các cơ chế hiện đại trong kernel. Và Canonical dẫn rất nhiều [công việc này]. Sẽ mất một lúc để Microsoft [kết nối với nó].

Nếu nó "hợp lý" để chạy nó trong Windows, thì tôi cũng nói như vậy với macOS, ngoại trừ việc Microsoft dường như đang hợp tác với Canonical, đó không phải là điều tôi đã nghe về Apple đang làm.


Các tài liệu về chính sách an ninh Snap và hộp cátmục Arch Wiki trên snapd là thông tin:

Từ Wiki Wiki:

Lưu ý rằng snap-confine được xây dựng với tùy chọn --disable-confinement; sự giam cầm hoàn toàn phụ thuộc vào kernel kích hoạt AppArmor và hồ sơ liên quan cho snap.

Từ chính sách:

Dưới mui xe, trình khởi chạy:

  • Thiết lập các biến môi trường khác nhau: [Hoài]
  • Khi phần cứng được gán cho snap, thiết lập một nhóm thiết bị với các thiết bị mặc định (ví dụ: / dev / null, / dev / urandom, v.v.) và bất kỳ thiết bị nào được gán cho snap này
  • Thiết lập một private / tmp bằng cách sử dụng một không gian tên mount riêng cho mỗi lệnh và gắn một thư mục cho mỗi lệnh trên / tmp
  • Thiết lập một lệnh perpts thể hiện mới
  • Thiết lập bộ lọc seccomp cho lệnh
  • Thực thi lệnh trong hồ sơ AppArmor dành riêng cho lệnh theo giá trị đẹp mặc định

Sự kết hợp các cấu hình AppArmor hạn chế này (qua trung gian truy cập tệp, thực thi ứng dụng, khả năng Linux (7), mount, ptrace, IPC, tín hiệu, kết nối mạng thô), các khu vực hệ thống tệp cụ thể của ứng dụng được xác định rõ ràng, lọc trong danh sách trắng / tmp, devpts thể hiện mới và các nhóm thiết bị cung cấp khả năng giam cầm và cách ly ứng dụng mạnh.

Mặc dù AppArmor và seccomp chỉ là Linux, nhưng có vẻ như việc giam cầm có thể được thực hiện tùy chọn, vì vậy chúng tôi có thể bỏ qua điều đó. Sau đó, việc sử dụng các devpts, cgroups và mount không gian tên. Nếu có bất kỳ sự ngăn chặn nào, tôi nghĩ nó sẽ dành cho những người đó. Tôi không đủ quen thuộc với các BSD để nói tương đương là gì.

Bản snapdthân ứng dụng được viết bằng Go, điều này sẽ khiến nó trở nên đa nền tảng hợp lý. Thật vậy, một số tệp có mục tiêu xây dựng rất thú vị :

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

Vì vậy, có vẻ như ai đó có hứng thú với điều này.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.