Điểm:1

làm thế nào để xây dựng một snap dựa trên jre

lá cờ fr

Tôi là nhà phát triển của jape, một trình soạn thảo chứng minh logic chính thức sử dụng java để cung cấp GUI và OCaml để cung cấp công cụ chứng minh từng bước. (xem rbornat/jape trên github). Tôi đang cố đóng gói phim jape trong tích tắc. Snap chứa một jre, được xây dựng bằng jlink và JDK 11 từ con nuôiopenjdk. Nó bắt đầu bằng cách gọi một lớp trong jre.

Để xây dựng snap tôi đã bao gồm thuộc tính xây dựng: [keep-execstack] bởi vì trình biên dịch JIT (và một thư viện khác, đã quên cái gì) cần nó.

Snap hoạt động với --devmode và --dangerous. Tôi đã bảo nó kết nối với tập tin cá nhân vì vậy nó có thể nhận được tại ~/.java, và kết nối với :Trang Chủ. Càng xa càng tốt.

Nhưng bộ thu gom rác của jre tạo ra một nhiều quyền truy cập vào các tệp hệ thống, được hiển thị cho tôi bởi snappy-debug. Ví dụ, nó bắt đầu với

= Ứng dụngArmor =
Thời gian: 14 tháng 8 18:49:17
Nhật ký: apparmor="ALLOWED" operation="open" profile="snap.jape.jape" name="/proc/1/cgroup" pid=40869 comm="java" request_mask="r" deny_mask="r" fsuid =1000 đô la=0
Tệp: /proc/1/cgroup (đã đọc)
Gợi ý:
* điều chỉnh chương trình để không truy cập '@{PROC}/@{pid}/cgroup'

= Ứng dụngArmor =
Thời gian: 14 tháng 8 18:49:18
Nhật ký: apparmor="ALLOWED" operation="open" profile="snap.jape.jape" name="/proc/40869/coredump_filter" pid=40869 comm="java" Request_mask="w" deny_mask="w" fsuid =1000 tiền tệ=1000
Tệp: /proc/40869/coredump_filter (ghi)
Gợi ý:
* điều chỉnh chương trình để không truy cập '@{PROC}/@{pid}/coredump_filter'

= Ứng dụngArmor =
Thời gian: 14 tháng 8 18:49:18
Nhật ký: apparmor="ALLOWED" operation="truncate" profile="snap.jape.jape" name="/proc/40869/coredump_filter" pid=40869 comm="java" Request_mask="w" deny_mask="w" fsuid =1000 tiền tệ=1000
Tệp: /proc/40869/coredump_filter (ghi)
Gợi ý:
* điều chỉnh chương trình để không truy cập '@{PROC}/@{pid}/coredump_filter'

= Ứng dụngArmor =
Thời gian: 14 tháng 8 18:49:18
Nhật ký: apparmor="ALLOWED" operation="open" profile="snap.jape.jape" name="/proc/sys/kernel/core_potype" pid=40869 comm="java" Request_mask="r" deny_mask="r " fsuid=1000 ouid=0
Tệp: /proc/sys/kernel/core_potype (đã đọc)
Gợi ý:
* điều chỉnh chương trình để không truy cập '@{PROC}/sys/kernel/core_potype'

= Ứng dụngArmor =
Thời gian: 14 tháng 8 18:49:18
Nhật ký: apparmor="ALLOWED" operation="open" profile="snap.jape.jape" name="/proc/sys/kernel/core_uses_pid" pid=40869 comm="java" Request_mask="r" deny_mask="r " fsuid=1000 ouid=0
Tệp: /proc/sys/kernel/core_uses_pid (đã đọc)
Gợi ý:
* điều chỉnh chương trình để không truy cập '@{PROC}/sys/kernel/core_uses_pid'

= Ứng dụngArmor =
Thời gian: 14 tháng 8 18:49:18
Nhật ký: apparmor="ALLOWED" operation="open" profile="snap.jape.jape" name="/proc/1/cgroup" pid=40869 comm="java" request_mask="r" deny_mask="r" fsuid =1000 đô la=0
Tệp: /proc/1/cgroup (đã đọc)
Gợi ý:
* điều chỉnh chương trình để không truy cập '@{PROC}/@{pid}/cgroup'

và sau đó nó dành nhiều thời gian để đọc những thứ về trí nhớ

= Ứng dụngArmor =
Thời gian: 14 tháng 8 18:49:18
Nhật ký: apparmor="ALLOWED" operation="open" profile="snap.jape.jape" name="/sys/fs/cgroup/memory/user.slice/user-1000.slice/[email protected]/memory .limit_in_bytes" pid=40869 comm="java" request_mask="r" bị từ chối_mask="r" fsuid=1000 ouid=0
Tệp: /sys/fs/cgroup/memory/user.slice/user-1000.slice/[email protected]/memory.limit_in_bytes (đọc)
gợi ý:
* điều chỉnh chương trình để không truy cập '/sys/fs/cgroup/memory/user.slice/user-1000.slice/[email protected]/memory.limit_in_bytes'
* điều chỉnh chương trình để không truy cập '/sys/fs/cgroup/memory/user.slice/user-[0-9]*.slice/user@[0-9]*.service/memory.limit_in_bytes'

= Ứng dụngArmor =
Thời gian: 14 tháng 8 18:49:18
Nhật ký: apparmor="ALLOWED" operation="open" profile="snap.jape.jape" name="/sys/fs/cgroup/memory/user.slice/user-1000.slice/[email protected]/memory .usage_in_bytes" pid=40869 comm="java" request_mask="r" bị từ chối_mask="r" fsuid=1000 ouid=0
Tệp: /sys/fs/cgroup/memory/user.slice/user-1000.slice/[email protected]/memory.usage_in_bytes (đọc)
gợi ý:
* điều chỉnh chương trình để không truy cập '/sys/fs/cgroup/memory/user.slice/user-1000.slice/[email protected]/memory.usage_in_bytes'
* điều chỉnh chương trình để không truy cập '/sys/fs/cgroup/memory/user.slice/user-[0-9]*.slice/user@[0-9]*.service/memory.usage_in_bytes'

Tôi không biết làm thế nào để thực hiện điều này một cách nhanh chóng. Các tập tin hệ thống giao diện nói rằng snap không được nhìn vào /vân vân hoặc /proc; các cách trình bày cơ chế không thích liên kết đến proc/1/cgroup (đó là tất cả những gì tôi đã thử cho đến nay) và bằng cách nào đó tôi sẽ phải cung cấp thời gian chạy uidpid giá trị để mô tả những gì đang xảy ra. Tuy nhiên, tài liệu snapcraft cho java không gợi ý bất kỳ khó khăn nào trong số này.

Cứu giúp?

user535733 avatar
lá cờ cn
Đây có vẻ là một câu hỏi hay dành cho các chuyên gia Snapcraft tại snap.io.

Đăng câu trả lời

Hầu hết mọi người không hiểu rằng việc đặt nhiều câu hỏi sẽ mở ra cơ hội học hỏi và cải thiện mối quan hệ giữa các cá nhân. Ví dụ, trong các nghiên cứu của Alison, mặc dù mọi người có thể nhớ chính xác có bao nhiêu câu hỏi đã được đặt ra trong các cuộc trò chuyện của họ, nhưng họ không trực giác nhận ra mối liên hệ giữa câu hỏi và sự yêu thích. Qua bốn nghiên cứu, trong đó những người tham gia tự tham gia vào các cuộc trò chuyện hoặc đọc bản ghi lại các cuộc trò chuyện của người khác, mọi người có xu hướng không nhận ra rằng việc đặt câu hỏi sẽ ảnh hưởng—hoặc đã ảnh hưởng—mức độ thân thiện giữa những người đối thoại.