Все, что я пытаюсь сделать, это получить вручную установленное 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