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

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

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 не существует, и я не знаю, откуда он должен был исходить.

Итак, я немного искал Google и нашел некоторую информацию о модуле 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): [ ! d6]

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

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

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 , but binary format already
installed by mono-runtime ; not removing.

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

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

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

user@host:/$ sudo update-binfmts --package mono-runtime --remove cli /opt/mono-2.10/bin/mono
update-binfmts: warning: current package is mono-runtime, but binary format
already installed by mono-runtime ; not removing.
user@host:/$ dpkg -S /usr/share/binfmts/cli
dpkg: /usr/share/binfmts/cli not found.
user@host:/$ sudo rm /usr/share/binfmts/cli*
user@host:/$ sudo update-binfmts --install cli /opt/mono-2.10/bin/mono --magic MZ
update-binfmts: warning: current package is , but binary format already
installed by mono-runtime
update-binfmts: exiting due to previous errors

1
задан 20 March 2017 в 14:18

0 ответов

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

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