Обеспечить совместную работу вызовов командной строки Wine и Mono в Debian?

Я использую Debian 12 (Книжный червь). У меня установлен Mono (с https://download.mono-project.com/repo/debian , для запуска программного обеспечения для резервного копирования Duplicati) уже много лет. Я пытаюсь заставить Wine работать гладко.

Wine работает достаточно хорошо при прямом вызове:wine hello.exeделает правильные вещи. Но я не могу бежатьhello.exeпрямо из командной строки.

Я сделалsudo apt install wine-binfmtчтобы установить обработчики двоичного формата Wine. Но все равно:

      $ ./hello.exe
Cannot open assembly './hello.exe': File does not contain a valid CIL image.

Я думаю, это потому, что у меня зарегистрировано два обработчика для MS-DOS (исполняемые файлы MZ "4d5a"):

      $ cat /proc/sys/fs/binfmt_misc/cli
enabled
interpreter /usr/lib/binfmt-support/run-detectors
flags:
offset 0
magic 4d5a
$ cat /proc/sys/fs/binfmt_misc/wine
enabled
interpreter /usr/lib/binfmt-support/run-detectors
flags:
offset 0
magic 4d5a

О, но они оба указывают наrun-detectorsв качестве обработчика, который... хранит свои конфигурационные файлы в /usr/share/binfmts/... и у меня там есть два перекрывающихся обработчика:

      $ cat /usr/share/binfmts/cli
package mono-runtime
detector /usr/lib/cli/binfmt-detector-cli
interpreter /usr/bin/cli
magic MZ
$  cat /usr/share/binfmts/wine
package wine
interpreter /usr/bin/wine
magic MZ

Команда Моно (readlink -f /usr/bin/cli=>/usr/bin/mono-sgen). Я предполагаю, что «двоичные файлы» Monocliожидает, что упакованный байт-код .NET будет выглядеть как двоичный файл MS-DOS? Могу ли я установить какой-нибудь «детектор», который отличает двоичный файл Mono от «обычного» двоичного файла MS-DOS и отправляет один вид в Mono, а другой — в Wine?

1 ответ

Электрический ток/usr/lib/cli/binfmt-detector-cliимеет ошибку и классифицирует большинство двоичных файлов PE32+ как «CLR» (т. е. для Mono). До мая 2022 года в классификаторе была ошибка, из-за которой все двоичные файлы PE32+ классифицировались как нативные. См. https://github.com/mono/linux-packaging-mono/pull/38.

Исправление классификатора для правильной классификации двоичных файлов PE32+ как CLR или нет устраняет мою проблему (остальная часть стека Wine/Mono и Wine-binfmt работают по назначению).

Другие вопросы по тегам