Я разработчик jape, формального редактора логических доказательств, который использует java для предоставления графического интерфейса и OCaml для предоставления механизма проверки. (см. rbornat/jape на github). Я пытаюсь упаковать шутку как оснастку. Снап содержит jre, созданный с использованием jlink и JDK 11 от acceptopenjdk. Он начинается с вызова класса в файле jre.
Чтобы построить оснастку, я уже должен был включить атрибуты сборки: [keep-execstack]
потому что JIT-компилятору (и еще одной библиотеке, забыл для чего) это нужно.
Снап работает с --devmode и --dangerous. Я сказал ему подключиться к личные дела
чтобы он мог добраться до ~/.java
, и подключен к :дом
. Все идет нормально.
Но сборщик мусора jre делает много доступа к системным файлам, показанный мне быстрая отладка
. Например, он начинается с
= AppArmor =
Время: 14 августа 18:49:17
Журнал: apparmor="РАЗРЕШЕНО" operation="open" profile="snap.jape.jape" name="/proc/1/cgroup" pid=40869 comm="java" required_mask="r" disabled_mask="r" fsuid =1000 ид=0
Файл: /proc/1/cgroup (прочитано)
Предложение:
* настроить программу так, чтобы она не обращалась к '@{PROC}/@{pid}/cgroup'
= AppArmor =
Время: 14 августа 18:49:18
Журнал: apparmor="РАЗРЕШЕНО" operation="open" profile="snap.jape.jape" name="/proc/40869/coredump_filter" pid=40869 comm="java" required_mask="w" disabled_mask="w" fsuid =1000 ид=1000
Файл: /proc/40869/coredump_filter (запись)
Предложение:
* настроить программу так, чтобы она не обращалась к '@{PROC}/@{pid}/coredump_filter'
= AppArmor =
Время: 14 августа 18:49:18
Журнал: apparmor="РАЗРЕШЕНО" operation="truncate" profile="snap.jape.jape" name="/proc/40869/coredump_filter" pid=40869 comm="java" required_mask="w" disabled_mask="w" fsuid =1000 уид=1000
Файл: /proc/40869/coredump_filter (запись)
Предложение:
* настроить программу так, чтобы она не обращалась к '@{PROC}/@{pid}/coredump_filter'
= AppArmor =
Время: 14 августа 18:49:18
Журнал: apparmor="РАЗРЕШЕНО" operation="open" profile="snap.jape.jape" name="/proc/sys/kernel/core_pattern" pid=40869 comm="java" required_mask="r" disabled_mask="r " fsuid=1000 ouid=0
Файл: /proc/sys/kernel/core_pattern (прочитано)
Предложение:
* настроить программу так, чтобы она не обращалась к '@{PROC}/sys/kernel/core_pattern'
= AppArmor =
Время: 14 августа 18:49:18
Журнал: apparmor="РАЗРЕШЕНО" operation="open" profile="snap.jape.jape" name="/proc/sys/kernel/core_uses_pid" pid=40869 comm="java" required_mask="r" disabled_mask="r " fsuid=1000 ouid=0
Файл: /proc/sys/kernel/core_uses_pid (прочитано)
Предложение:
* настроить программу так, чтобы она не обращалась к '@{PROC}/sys/kernel/core_uses_pid'
= AppArmor =
Время: 14 августа 18:49:18
Журнал: apparmor="РАЗРЕШЕНО" operation="open" profile="snap.jape.jape" name="/proc/1/cgroup" pid=40869 comm="java" required_mask="r" disabled_mask="r" fsuid =1000 ид=0
Файл: /proc/1/cgroup (прочитано)
Предложение:
* настроить программу так, чтобы она не обращалась к '@{PROC}/@{pid}/cgroup'
а позже он тратит много времени на чтение информации о памяти
= AppArmor =
Время: 14 августа 18:49:18
Журнал: apparmor="РАЗРЕШЕНО" 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" required_mask="r" disabled_mask="r" fsuid=1000 ouid=0
Файл: /sys/fs/cgroup/memory/user.slice/user-1000.slice/[email protected]/memory.limit_in_bytes (чтение)
Предложения:
* настроить программу так, чтобы она не обращалась к '/sys/fs/cgroup/memory/user.slice/user-1000.slice/[email protected]/memory.limit_in_bytes'
* настроить программу так, чтобы она не обращалась к '/sys/fs/cgroup/memory/user.slice/user-[0-9]*.slice/user@[0-9]*.service/memory.limit_in_bytes'
= AppArmor =
Время: 14 августа 18:49:18
Журнал: apparmor="РАЗРЕШЕНО" 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" required_mask="r" disabled_mask="r" fsuid=1000 ouid=0
Файл: /sys/fs/cgroup/memory/user.slice/user-1000.slice/[email protected]/memory.usage_in_bytes (чтение)
Предложения:
* настроить программу так, чтобы она не обращалась к '/sys/fs/cgroup/memory/user.slice/user-1000.slice/[email protected]/memory.usage_in_bytes'
* настроить программу так, чтобы она не обращалась к '/sys/fs/cgroup/memory/user.slice/user-[0-9]*.slice/user@[0-9]*.service/memory.usage_in_bytes'
Я в недоумении, как сделать это моментально. системные файлы
интерфейс говорит, что снап не должен смотреть на /и т.д
или же /прок
; в макет
механизм не любит связываться с proc/1/cgroup
(это все, что я пробовал до сих пор), и мне нужно было бы как-то предоставить время выполнения жидкость
и pid
значения для описания того, что происходит. Тем не менее, документация snapcraft для java не намекает ни на одну из этих трудностей.
Помощь?