Все об Arch Linux

Arch Linux будет тем, что вы из него сделаете!

Wine-щим Powershell: запуск Windows-скриптов на Arch

Windows-скрипты на Arch запускаются, и виртуалка для этого не нужна. Ставим wine и wine-mono одной командой, sudo pacman -S wine wine-mono, и запускаем нужную утилиту прямо из терминала. У меня так работает рекламный инструмент Direct Commander, который без Windows-окружения не живёт.

Всё началось с рекламной утилиты Direct Commander. Инструмент нужен для работы с рекламными кабинетами, и существует он только под Windows. Ни аналогов под Linux, ни веб-версии, ни нормальной замены. Пришлось крутиться.

Зачем Arch-пользователю Windows-скрипты?

Казалось бы, на Arch есть всё. Но часть инструментов существует только под Windows. Рекламные утилиты, парсеры, мелкие бизнес-программы, скрипты на PowerShell. Переписывать их под Linux никто не собирается, а работать с ними надо.

Тут и приходит Wine. Это прослойка, которая переводит Windows-вызовы в Linux-вызовы. Программа думает, что работает в Windows, а на деле сидит в обычном процессе на Arch. Для скриптов и утилит этого хватает с головой.

Отдельно стоит wine-mono. Это свободная реализация .NET Framework. Многие Windows-скрипты написаны на PowerShell или C#, и без .NET-рантайма они не стартуют. wine-mono закрывает эту дыру.

Вместе оба пакета тянут примерно 818 МиБ. Звучит внушительно, но это разовая плата, дальше всё работает из коробки.

Как поставить wine и wine-mono на Arch?

Сначала обновляем систему, это стандартное правило Arch:

sudo pacman -Syu

Потом ставим сам Wine:

sudo pacman -S wine wine-mono

Пакеты лежат в официальных репозиториях, так что никаких AUR и сборок. Всё, что нужно, pacman притащит сам, включая зависимости.

После установки проверяем версию:

wine --version

Если в ответ строка вида wine-10.x, значит, всё на месте.

Как запустить Windows-скрипт через Wine?

Запуск выглядит до смешного просто. Переходим в папку с программой и пишем:

wine DirectCommander.exe

Первый запуск займёт время. Wine создаст префикс в ~/.wine, настроит окружение, инициализирует wine-mono. Дальше утилита стартует как обычное приложение.

У меня Direct Commander поднялся без единой пляски с бубном. Скрипт увидел своё окружение, подтянул настройки, и всё заработало. Единственный нюанс: окно программы выглядит как Windows-окно, но это ожидаемо.

Если скрипт требует PowerShell, wine-mono даёт и его. Windows-скрипты на .NET запускаются тем же wine, без дополнительных телодвижений.

Если утилита капризничает, загляни в winecfg. Там можно выставить версию Windows, посмотреть установленные компоненты и пересоздать префикс. Для большинства скриптов хватает настроек по умолчанию.

Как добавить Windows-программу в меню приложений?

Запускать утилиту из терминала каждый раз неудобно. Решение простое: создаём .desktop-файл, и программа появляется в меню как обычное приложение.

Файл кладём в ~/.local/share/applications/, например direct-commander.desktop. Полный формат и опции описаны на странице Desktop entries в ArchWiki:

[Desktop Entry]
Name=Direct Commander
Comment=Рекламная утилита через Wine
Exec=wine /home/user/.wine/drive_c/Program Files/DirectCommander/DirectCommander.exe
Type=Application
Categories=Utility;

Путь к исполняемому файлу подставляй свой. После этого ищи Direct Commander в меню приложений, как любую другую программу.

Что может пойти не так?

Первое, с чем сталкиваются все, это медленный первый запуск. Wine создаёт префикс, ставит wine-mono, и на это уходит пара минут. Не пугайся, второй запуск будет мгновенным.

Второе: скрипт ругается на отсутствие .NET. Значит, wine-mono не подхватился. Лечится пересозданием префикса через winecfg.

Третье: пункт меню не появился. Проверь, что файл лежит в ~/.local/share/applications/ и что путь в Exec верный. Иногда помогает перелогиниться.

Частые вопросы

Wine и wine-mono занимают много места? Около 818 МиБ вместе. Это один раз, и за это вы получаете запуск Windows-скриптов без виртуалки.

Можно ли убрать wine после запуска скрипта? Не советую. Скрипты вроде Direct Commander нужны регулярно, и каждый раз ставить и сносить Wine глупо. Пусть живёт, места он больше не попросит.

Wine сломает мою систему? Нет. Wine работает в своём префиксе ~/.wine и не трогает системные пакеты. Это обычный пользовательский процесс.

Что делать, если скрипт не запускается? Смотри вывод в терминале. Чаще всего проблема в отсутствии wine-mono или в кривом префиксе. Помогает winecfg, он пересоздаёт окружение.

Нужна ли виртуалка вместо Wine? Для скриптов нет. Виртуалка съедает ресурсы и требует отдельной Windows-лицензии. Wine справляется с утилитами на ура.

Заключение

Wine на Arch решает задачу, которую иначе решать нечем. Одна команда установки, и Windows-скрипты работают рядом с Linux-программами. У меня Direct Commander живёт так уже давно, и я про него забыл, пока не сел писать эту статью.

Если тема Windows-совместимости интересна, глянь статью про PortProton, там тот же Wine, но для игр. А если захочешь автоматизировать установку таких инструментов, тебе в AUR, про него тоже есть статья.

Полезные ресурсы



Не получилось? Поможем настроить

Задай вопрос в чате — отвечаем быстро, по делу и без воды.

Читайте также

Комментарии

Загрузка…

Откроется GitHub: создайте новый issue с вашим комментарием (кнопка «Submit new issue»). После отправки обновите эту страницу — комментарий появится ниже.

Telegram Max