Восстановление из испорченной конфигурации binfmts

Все, что я пытаюсь сделать, - это установить вручную моно (в /opt/mono-2.10) для запуска исполняемых файлов CLI без явного указания интерпретатора. Wine не установлен .

Ubuntu 10.10. В настоящее время моно-пакет не установлен (dpkg -l | grep mono ничего не дает), но они были в прошлом, прежде чем я понял, что мне нужен гораздо более новый, так что, вероятно, это источник этой путаницы.

Запуск исполняемого файла CLI дает мне следующее:

Can't exec "/usr/lib/cli/binfmt-detector-cli": No such file or directory at /usr/share/binfmt-support/run-detectors line 92.

Это верно, /usr/lib/cli/binfmt-detector-cli не существует, и я не знаю, откуда он должен был прийти.

Так что я немного погуглил и нашел некоторую информацию о модуле binfmt_misc. Действительно, он загружен, и у меня есть /proc/sys/fs/binfmt_misc/cli, который содержит это:

enabled
interpreter /usr/share/binfmt-support/run-detectors
flags:
offset 0
magic 4d5a

Этот run-detectors скрипт на Perl, но, видимо, не работает (это, вероятно, Debian # 575776 [ 1117]):

user@host:/$ /usr/share/binfmt-support/run-detectors
Use of uninitialized value in open at /usr/share/binfmt-support/run-detectors line 56.
Use of uninitialized value $ARGV[0] in concatenation (.) or string at /usr/share/binfmt-support/run-detectors line 56.
run-detectors: unable to open : No such file or directory

Но в любом случае, у меня нет Wine, поэтому мне не нужны все эти вещи binfmt-detector-cli в первую очередь. Я просто хочу, чтобы эти двоичные файлы были жестко связаны с интерпретатором Mono. Я нашел этот ответ в SU и в этой записи блога , в которой обсуждается, как изменить эти правила. К сожалению, пытаясь это сделать, я всегда получаю «отказано в разрешении»:

user@host:/$ sudo echo .:CLR:M::MZ::/opt/mono-2.10/bin/mono:. > /proc/sys/fs/binfmt_misc/register
bash: /proc/sys/fs/binfmt_misc/register: Permission denied
user@host:/$ sudo echo -1 > /proc/sys/fs/binfmt_misc/cli
bash: /proc/sys/fs/binfmt_misc/cli: Permission denied

Я нашел /usr/share/binfmts/cli и изменил его на

package mono-runtime
interpreter /opt/mono-2.10/bin/mono
magic MZ

, но, похоже, это не имеет никакого эффекта. Затем есть /var/lib/binfmts/cli, который я изменил на

mono-runtime
magic
0
MZ

/opt/mono-2.10/bin/mono

, но это также не имеет никакого эффекта. Я также нашел сценарий update-binfmts, но не могу заставить его работать. Мне даже не удается удалить существующую конфигурацию. Следующая попытка, например, оставляет меня с довольно загадочным сообщением об ошибке:

user@host:/$ sudo update-binfmts --remove cli /opt/mono-2.10/bin/mono
update-binfmts: warning: current package is <local>, but binary format already
installed by mono-runtime ; not removing.

Я понятия не имею, были ли мои аргументы верны (страница справки упоминает <path>, но не говорит путь к чему это хочет ... или почему), должна ли вторая строка быть сообщением об ошибке и изменила ли она что-либо в первую очередь.

Как мне сделать любой исполняемый файл, который начинается с магической строки 'MZ', для запуска с /opt/mono-2.10/bin/mono?


Обновление 1: выходные данные команд, предложенных Колином, предложили:

[ 117]
2
задан 20 March 2017 в 13:18

1 ответ

Вы никогда не должны редактировать /var/lib/binfmts/cli вручную. Это файл состояния для update-binfmts. Возможно, вы это перепутали, хотя я подозреваю, что моно-пакеты были глючными, что оставляло вещи в таком состоянии. Кроме того, есть запутанное пространство, запутывающее вопросы.

Я бы рекомендовал сначала очистить состояние:

update-binfmts --package 'mono-runtime ' --remove cli /opt/mono-2.10/bin/mono

Затем проверьте, принадлежит ли / usr / share / binfmts / cli какому-либо пакету (dpkg -S /usr/share/binfmts/cli - я понимаю, думаю, что так и должно быть, так как у вас не установлена ​​моно-среда выполнения), а если нет, то удалите этот файл.

Затем установите двоичный формат правильно, как локально установленный формат, а не как принадлежащий пакету:

update-binfmts --install cli /opt/mono-2.10/bin/mono --magic MZ

0
ответ дан 20 March 2017 в 13:18

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

Похожие вопросы: