Добрый день.
Я разработчик программы FLProg – среды визуального программирования плат Arduino.
В обсуждениях на форуме посвященном программе и в личных сообщениях мне очень часто задавали вопрос о возможности запуска программы под ОС Linux. К сожалению, я не являюсь линуксоидом, и не имел возможности проверить работу программы под этой системой.
Но буквально сегодня один из пользователей программы сделал мне новогодний подарок. Он провел серьезное исследование вопроса запуска программы под различные версии Linux, и написал статью на эту тему. Я очень ему благодарен, и поскольку считаю, что читателям Хабра это то же будет интересно, представляю эту статью Вам.
Дорогие друзья,
Хочу написать пару слов об использовании FLProg под Линуксом.
Я заведую лабораторией автоматики на инженерном факультете одного частного университета. Мы много работаем с платформой Arduino и у нас всё заточено под Линукс. Кроме того, у нас большой популярностью пользуются русские разработки и русский язык. FLProg был встречен на ура, но к энтузиазму прибавилось и недоумение, почему у русских отсутствует версия под профессиональную операционку.
Но к счастью не всё так запущено.
От разработчика я узнал, что FLProg написан на SmallTalk с использованием вызовов Win API. Со SmallTalk-ом я знаком мало, но у меня есть большой опыт работы например с Си#, который тоже использует Win API, и у меня накопился положительный опыт кроссплатформенного использования подобных приложений. Поэтому у меня не возникло в принципе сомнений, что FLProg должен запуститься под Линуксом.
Для начала я просто скопировал файлы FLProg из Windows в Линукс и запустил программу из командной строки. Ожидания меня не обманули — FLProg запустился и бесперебойно работал под Убунту 12.10 и 14.04, а также openSuSe Evergreen 13.1. Разумеется, для работы с Win API Линукс требует соответствующей среды. Такой средой могут быть дистрибутивы использующие либо объединенное ядро LUK, либо стороннее ПО, как правило Mono или dotGNU (обе воспроизводят под Линуксом среду .NET). У меня во всех трех случаях установлена Mono. В настоящее время Mono поддерживают платформы Debian, Ubuntu, Red Hat, Suse, CentOS, Gentoo и Arch. В SuSe Mono установленя по умолчанию; в других дистрибутивах её надо установить из репозитория или исходников. В настоящее время это процесс достаточно отлаженный и автоматизированный, так что думаю нет надобности описывать его в деталях. Важно, чтобы у вас была версия вашего дистрибутива была по возможности поновее. Например, Убунту поддерживает Mono начиная с 12-й версии, а Fedora Core — с 10-й.
Но что делать, если у вас старая версия Линукса, или возникли проблемы в установлении Mono? (Например, Scientific Linux, которая хоть и является клоном
Red Hat, но Win API поддерживает крайне неохотно; Mono приходится устанавливать из исходников, долго и муторно доводя их до ума вручную.) Тогда на помощь приходит старый, добрый wine. В моем случае я запускал FLProg командой wine './FLProg' из командной строки под Убунту, openSuSe Evergreen 13.1 и Scientific Linux 6. Как и следовало ожидать, FLProg охотно запустился и стабильно работал во всех случаях. Если при этом, Убунту 12 ругается на несовместимые или отсутствующие модули:
это можно проигнорировать, так как речь идет о глюках в реализации поддержки режима i386 под системой amd64 и эти глюки устранены в новых версиях wine. На работе FLProg это не отражается.
Тут мне, возможно, укажут, и вполне справедливо, что нет смысла тупо копировать файлы FLProg-а на Линукс и рисковать, что что-нибудь накосячу, когда FLProg устанавливается стандартной процедурой с использованием инсталятора Smart Install Maker. Разумеется, я пошел по этому пути. Сразу оговорюсь: есть нюансы.
Во-первых, для работы со Smart Install Maker вам понадобится wine. А у wine своя, автономная система файлов и папок, имитирующая систему Windows. Следует учесть, что если инсталятор предлагает установку программы в папке по умолчанию как здесь:
то на самом же деле она будет находится в папке как здесь:
Если вам не принципиально, где размещены файлы FLProg-а, можно всё оставить как есть. В противном случае вам придется вручную подогнать размещение папок под существующую или предполагаемую организацию.
Во-вторых, может случиться, что инсталятору придется помогать руками. Если, например, если под Убунту и SuSe весь процесс гладко прошел в автоматическом режиме, то под Scientific Linux 6 мне пришлось вручную создавать требуемые папки:
Возможно, что прочие дистрибутивы Линукса таят разные другие сюрпризы. Постараюсь в меру возможностей протестировать FLProg на разных дистрибутивах и версиях.
И в-третьих, FLProg установленный «по всем правилам» начинает заметно тормозить. Это особенно заметно на машинах с 2гб памяти и посредственным тактовым генератором. Частично это можно объяснить тем, что теперь вызов программы происходит в измененной среде:
но только частично, так как при вызове программы из командной строки FLProg по-прежнему тормозит. Вероятнее всего это происходит из-за того, что wine сохраняет управление библиотеками в фоновом режиме.
Так что за вами выбор метода установки и вызова FLProg-а. Если вы решите запускать FLProg из командной строки, то проблем у вас не возникнет. Если же открывать каждый раз папку FLProg вам не охота и вы хотите запускать его глобально или, как у меня, из системного меню, то следует помнить, что FLProg ищет файлы в текущей папке и может вам выдать ошибку отсутствия файла:
Лечится это очень просто: можно написать простой скрипт, который будет открывать нужную папку:
и поместить её, например, в ~/bin. Можно также создать новый пункт в системном меню (например под alacarte в оболочке Gnome, как у меня):
и вызывать скрипт через него или прописать обе команды прямо в командной строке через ";" — кому как удобно.
Если вы используете инсталятор для установки FLProg, то инсталятор создаст на рабочем столе две иконки — FLProg.desktop и FLProg.lnk. FLProg.lnk. можно сразу же удалить — он работать не будет; зато FLProg.desktop полностью рабочий — его можно оставить на рабочем столе или перетащить на панель задач — как кому удобнее:
Если вы работаете в Убунту под оболочкой Unity, то каких-то существенных проблем у вас тоже не будет. Если вы установили FLProg с инсталятором, то программа отлично запускается через Dash Apps Lens:
В моем случае видны три иконки — это результат установки через инсталятор и добавления FLProg в системное меню в разных местах и разным образом. На других компьютерах картинка может быть другая. Следует отметить, что в любом случае в панели задач FLProg будет отражатьса либо как приложение wine:
либо как приложение из текстового терминала (в зависимости от метода вызова) и возможности поместить программу отдельно в панель задач на постоянно нету. Это, к сожалению, существенное неудобство Unity, но разработчики оболочки находятся под постоянным обстрелом критики линуксоидов и возможно в будущем что-нибудь в этом плане улучшиться.
Я еще раз хочу поблагодарить Former Naval Person за проделанную работу.
Так же хочу представить еще несколько проектов пользователей программы FLProg.
Передача данных о температуре на сайт http://narodmon.ru/ через WIFI
Контроль заряда аккумуляторных батарей от 230в при отсутствии солнечной энергии.
Симуляция проекта FLProg в Proteus
Ну и естественно в честь нового года: Новогодняя мигалка
Поздравляю всех читателей Хабра с Новым Годом
Автор: totuin