Arhlit - информационные технологии

Операция не разрешена при запуске программы Haskell в OS X

Я пишу свою первую программу на Haskell, веб-приложение, основанное на фреймворке Yesod.

Я скомпилировал код, используя cabal configure && cabal build. Когда я пытаюсь запустить исполняемый файл, я получаю следующую ошибку:

-bash: dist/build/MyApp/MyApp: Operation not permitted

Я установил 64-битную платформу Haskell (2012.2.0.0) на OS X Mountain Lion. Первоначально я установил 32-разрядную версию, но получил ту же ошибку, поэтому я удалил ее и попробовал 64-разрядную версию.

Приложение компилируется и компонуется без ошибок и предупреждений.

Я даже попробовал исправление, описанное в http://reviews.cnet.com/8301-13727_7-57374676-263/workarounds-for-quarantine-bug-in-os-x-lion/, но это не имело значения.

ОБНОВЛЕНИЕ: сюжет усложняется. Исходное дерево на самом деле находится в зашифрованном разреженном пакете (весь мой исходный код). Когда я копирую дерево в свой домашний каталог, оно компилируется и запускается.

Команда mount не показывает параметр noexec:

/dev/disk2s9 on /Volumes/Personal (hfs, local, nodev, nosuid, journaled, noowners, quarantine, mounted by grk)

Я не уверен насчет параметра карантин, но подозреваю, что он исходит от Symantec Endpoint Protection (требуется моим работодателем). Я попробую отключить его для разреженного пакета.


  • Вы пытались добавить права на исполняемый файл с помощью chmod +x dist/build/MyApp/MyApp? 22.10.2012
  • Я не упомянул об этом в своем вопросе, но файл уже исполняемый (rwxr-xr-x). 22.10.2012
  • Вы можете попробовать скомпилировать и запустить простое приложение типа Hello World и посмотреть, работает ли оно нормально или нет... 22.10.2012
  • Смотрите обновление к моему вопросу выше. Спасибо за предложение. 22.10.2012

Ответы:


1

Я нашел ответ на родственном сайте apple.stackexchange.com: https://apple.stackexchange.com/questions/64456/mount-is-adding-a-quarantine-flag-causing-bin-bash-bad-interpreter-operatio

Разреженный пакет фактически отмечен флагом карантин. Я размонтировал том и удалил карантин с помощью следующей команды:

xattr -d com.apple.quarantine Personal.sparsebundle

потом перемонтировал. Проблема решена.

22.10.2012
Новые материалы

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

Скрытый технический долг в системах машинного обучения [NeurIPS 2015]
Что такое технический долг? Технический долг — это метафора, введенная Уордом Каннингемом в 1992 году, чтобы объяснить долгосрочные затраты, связанные с быстрым продвижением в разработке..

Алгоритм быстрой сортировки в Python
Всем привет, добро пожаловать на programminginpython.com . Здесь я покажу вам, как реализовать алгоритм быстрой сортировки в Python. В предыдущих статьях я рассмотрел Сортировку вставкой ,..

Как использовать манипулирование объектами в JavaScript
Объекты являются важным строительным блоком JavaScript. Они позволяют группировать свойства и методы вместе. Объект представляет собой набор свойств. Свойства идентифицируются с..

Разработка игр с помощью Godot Engine: мощный инструмент с открытым исходным кодом
Разработка игр — творческий и сложный процесс, требующий множества навыков и инструментов. Одним из наиболее важных инструментов является игровой движок, который представляет собой программную..

От XML к аннотациям: переход к современной конфигурации Spring
Введение Фреймворк Spring претерпел значительную эволюцию с момента своего создания. Одним из заметных изменений стал переход от конфигураций на основе XML к конфигурациям, управляемым..

Я люблю Руби!
Я люблю Руби! Мне это нравится по той же причине, по которой мне нравится программировать на Python. Он настолько интуитивно понятен, а встроенные методы упрощают решение проблем. Если вы..