0,0
рейтинг
21 июля 2011 в 14:25

Администрирование → Хитрости и трюки при использовании Wine из песочницы

image

Всем привет!
Прочел статью про «Все тонкости настройки Wine», оказалось, что там далеко не все тонкости. Поэтому написал этот пост как дополнение тому.

В данном посте в основном вольный перевод оф. документации, а так же несколько своих и чужих хитростей при работе с вайн.
Скорее всего данный пост будет интересен новичкам и обычным пользователям GNU\Linux. Тем не менее добротные советы от специалистов не будут лишними.

Что такое вайн думаю объяснять нет смысла. Хочу лишь показать несколько трюков при работе с ним.

Префиксы

С их помощью вы можете устанавливать приложения именно туда куда вы их хотите установить, а не в дефолтный .wine. Даже если что то пойдет не так, достаточно удалить тот префикс, в котором произошла ошибка, при этом все другие приложения\префиксы (предположим, что они настроенные) не пострадают.

То есть каждый созданный вами префикс можно рассматривать как отдельный wine – он независим от других префиксов. Или, для еще большей простоты, воспринимайте каждый созданный префикс, как отдельно установленную винду.

Теперь немного практики:
Сейчас мы создадим папку Gamez, в ней мы создадим префикс lib в который установим несколько библиотек. Эти библиотеки все равно пригодятся потом, поэтому пусть кешируются.

mkdir ./Gamez
env WINEPREFIX=$HOME/Gamez/lib wine winecfg
env WINEPREFIX=$HOME/Gamez/lib winetricks directx9 vcrun2005 vcrun2008 vcrun6
env WINEPREFIX=$HOME/Gamez/lib wine winecfg


Последней командой мы опять вызвали окно конфигуратора wine. Просто перейдите на вкладку «Библиотеки» и убедитесь, что все установилось. После этого выполните:

wine winecfg — откроется конфигуратор wine (не из префикса), проверьте ту же вкладку. Видите! Здесь никаких библиотек. Значит он цел и невредим.

Как установить несколько разных версий wine?

Для решения этой задачи придется собирать wine из исходников. При сборке просто используем префикс для дефолтной установке. Примерно как здесь:

./configure prefix=/path/to/install/directory && make
sudo make install


AppDB

Обязательно используйте appdb для поиска информации по установке приложения, возможно стаф, который вы устанавливаете, уже установили и расписали все подводные камни.

Наводим порядок в домашнем каталоге

Если вы любите поиграть, то вероятно ваш /home раздел забит сейвами и прочими файлами игр. Избавиться от этого всего дела, не в ущерб можно так:

image

Замените стандартный путь к моим документам, на желаемое место для хранения сейвов. У меня, к примеру, этот путь ведет в папку с игрой.

Использование последних версий wine

Wine такая штука, чем новее тем лучше! С помощью следующей команды вы всегда будете иметь последнею версию wine (для Ubuntu-подобных дистрибутивов):

sudo add-apt-repository ppa:ubuntu-wine/ppa
sudo apt-get update


После выполнения этих команд ищите последнею версию wine в synaptic.

Установка winetricks

Если по каким-либо причинам у вас до сих пор нет winetricks, то завести его в хозяйстве можно так:

wget winetricks.org/winetricks
sudo cp winetricks /usr/bin
sudo chmod +x /usr/bin/winetricks


Как установить MSI файл?

Это можно сделать двумя способами: wine msiexec /i whatever.msi

Альтернативный способ: wine start whatever.msi

The file foo.exe is not marked as executable… — Что это значит?

Эта ошибка происходит потому что на exe файле стоит запрет на выполнение. Для файла на вашей ФС эта команда должна исправить положение:

chmod a+x ./patch/you/exe.file

если же файл находится на диске, то должна помочь вот эта команда:

mount -o remount,mode=0777,exec /media/cdrom

Как вывести содержимое отладки в отдельный файл?

cd ~/.wine/drive_c/Games/Tron
wine tron.exe &> log.txt


Как отключить «crash» диалог?

Если вы используете префиксы, не забудьте в команде указать путь к префиксу — winetricks nocrashdialog

После запуска приложения\игры, wine ругается и ничего не запускает. Что делать?

Для начала изучите логи, обычно в них все написано. Ниже я приведу самые популярные ошибки:

MFC40.DLL : через winetricks установи mfc40 (Microsoft Foundation Classes from Visual C++ 4).
MFC42.DLL, MSVCP60.DLL : через winetricks установи vcrun6 (MS Visual C++ 6 sp4 libraries: mfc42, msvcp60, msvcrt).
MFC71.DLL, MSVCP71.DLL : через winetricks установи vcrun2003 (MS Visual C++ 2003 libraries: mfc71,msvcp71,msvcr71).
MFC80.DLL, MSVCP80.DLL : через winetricks установи vcrun2005 (MS Visual C++ 2005 libraries: mfc80,msvcp80,msvcr80).
MFC90.DLL, MSVCP90.DLL : через winetricks установи vcrun2008 (MS Visual C++ 2008 libraries: mfc90,msvcp90,msvcr90).
MDAC : через winetricks установи mdac27 (MS MDAC 2.7).

Мое приложение работает, но текстовые поля ведут себя странно

Проанализируйте дебаг wine после запуска приложения, если видите что ругается на RICHED20.DLL, то доустановите через winetricks следующею библиотеку: riched20

После запуска в консоль выводятся fixme сообщения. Что это?

Вы можете просто их игнорировать, это информация для разработчиков.

Что делать если приложению необходим .NET фреймворк?

Через вайнтрикс можно установить 1 или 2 фреймворк. Как альтернатива использовать mono. Если же приложение требует 3 или 4 фреймворк, то скорее всего оно работать не будет (хотя 3 и даже 3.5 доступен в меню winetricks). Ждем пока решат эту проблему.

Игра которую я пытаюсь установить защищена от распространения возможно ли её установить?

Смотри список copy protection, которые работают.

Что делать если приложение требует IE?

Wine использует по умолчанию ядро\движок Gecko – это то же, что и на Firefox. Поэтому можно через winetrikcs доустановить gecko(если его нет) и\или fakeie6.

Если же это не помогло, попробуйте поменять версию windows на win2k и установить через winetricks ie6, ie7 или ie8.

Как включить сглаживание шрифтов в wine?

Если ваша версия выше чем 1.1.12 вы можете использовать winetricks и выбрать один из трех вариантов сглаживания: fontsmooth-gray, fontsmooth-rgb или fontsmooth-bgr

После выхода из игры не восстанавливается разрешение экрана

Должно помочь: xrandr -s 0

Как попасть в реестр wine?

wine regedit — Если используются префиксы укажите путь в команде.

Нуждается ли wine в отдельной установке драйверов?

Нет. Wine – это не эмулятор компьютера, он лишь переводит вызовы Windows API в понятные линуксу команды.

Безопасно ли запускать wine от root?

Никогда не запускайте wine от root пользователя!!!

Если это уже случилось измените владельца ~./wine директории.

cd ~
sudo chown -R $USER:$USER .wine


Техника безопасности при использовании wine

Вот несколько советов, которые помогут вам повысить безопасность:

  • Никогда не запускайте программы с подозрительных сайтов
  • Никогда не используйте root пользователя для запуска приложений!
  • Используйте антивирусный сканер для запускаемых приложений, например ClamAV. Или хотя бы проверяете экзешники на virustotal
  • Попробуйте удалить wine диск Z:, который указывает по умолчанию на корневой каталог. В качестве обходного пути запускать программы из ~/.wine/drive_c директории.
  • Используйте виртуальную машину для запуска и проверки подозрительных приложений.


Файл .xsession-errors забивает мусором все дисковое пространство!!! Что делать? (рецепт от --=XliN=--)

Сохраните следующий скрипт:
% cat .scripts/xsessionerrorscleaner.sh
#! /bin/bash
while true ; do
inotifywait -e modify ~/.xsession-errors &> /dev/null
[[ "$(stat -c %s ~/.xsession-errors)" -ge "52428800" ]] && echo > ~/.xsession-errors
done

Добавьте его в автозагрузку, и установите следующий пакет (он необходим для работы скрипта).
apt-get install inotify-tools

Делаем «песочницу» для wine (рецепт от drBatty)

*1) создаём юзера
2) меняем права на домашние каталоги на 700
*3) прописываем команду в sudoers (visudo)
первый_юзер имя_компа=(второй_юзер) NOPASSWD: /программа_с_полным_путём
4) у первого юзера прописываем в автозагрузку DE команду xhost +local: второй_юзер
5) в ярлык для запуска программы пишем
sudo -u второй_юзер /программа_с_полным_путём
тогда первый юзер сможет более-менее безопасно запускать программы от имени второго юзера.
звёздочкой отмечены пункты, для которых нужны права рута.
Индустриальный Эльф @ielf
карма
9,0
рейтинг 0,0
Реклама помогает поддерживать и развивать наши сервисы

Подробнее
Реклама

Самое читаемое Администрирование

Комментарии (49)

  • +33
    Все кто 50% времени под линуксом проводят в wine лицемеры.
    • +11
      «А еще желтым земляным червяком»(с)
    • +33
      А вы! А вы тогда FireFox'ом под виндой пользуетесь, вот!
    • 0
      А если больше?
    • НЛО прилетело и опубликовало эту надпись здесь
    • +4
      Спасибо, кэп. Вам сюда: holywars.ru
  • –10
    Ещё б кто нить сказал, почему у меня Warcraft 3 TFT тормозит под Вайном но при этом не тормозит на винде был бы дико благодарен. И вернулся бы в лоно Линукса…
    • +9
      -opengl
    • +3
      appdb.winehq.org/objectManager.php?sClass=version&iId=3126
      А это пробовали?
      What can be done if Warcraft III is slow

      The game may run faster for you if you configure Wacraft III to use OpenGL instead of DirectX. To default the game to use OpenGL, see the registry import below. This creates HKEY_CURRENT_USER\Software\Blizzard Entertainment\Warcraft III with new DWORD value called «Gfx OpenGL» with the value set to 1. So you may create a file using the text, or use regedit to do the same.

      The game might run faster in windowed mode. To do this, launch with the parameter -window. It has been reported that it works well on older Intel integrated cards.

      То есть добавить запись в реестре, чтобы использовать opengl, а также использовать оконный режим.
      • +16
        Ух ты спасибо! Странно AppDB смотрел но не видел там этого решения… Я тупой!
  • 0
    иногда бывает, игра занимает огромные размеры, например, 12 гигов в iso архиве (или даже в zip). утилита mountiso (или какой-то другой mount для архивов) очень помогает не делать распаковку всего, а юзать из архива. только проблема есть, нельзя поставить +x права на файл, который из замаунченого архива. Может знаете какой-нибудь «ход конём», чтобы можно было запускать приложения?
    • +4
      ЕМНИП, бит запуска нужен только при использовании wine через binfmt-misc.
      То бишь можно сделать просто:
      wine /media/cd_rom_label/setup.exe
      И да, iso — не архив как таковой, а образ диска.
      А можно ещё явно указать режим доступа для всех файлов:
      sudo mount -o loop image.iso /mnt/cd_image -o mode=777
    • НЛО прилетело и опубликовало эту надпись здесь
      • 0
        Более того, можно ещё использовать fuse-iso и cdemu.
  • –8
    Картинка поста как бы намекает «придется поеб… ся»
  • –12
    Картинка поста как бы намекает «придется потрахаться»
    • –7
      Перегружал три раза, небыло коммента, подумал не туда нажал, пришлось написать заново, получилось по другому ((:, вот и сейчас не видно поста уже в течении 2 минут, извиняюсь за offtop
      • НЛО прилетело и опубликовало эту надпись здесь
        • 0
          Извинениями рейтингу не поможешь. А иногда и карме ))
          • –2
            Я не обижаюсь, если за шутки, народ минусует карму как говорится в пизду такой народ :))
            • НЛО прилетело и опубликовало эту надпись здесь
              • 0
                Это сарказм.
              • 0
                с чего вы взяли, день у меня отличный, а с юмором всем не угодишь.
    • +1
      Откуда столько говна в людях, я например никогда не ставлю минусы в карму если там осталось 5 ед. чтобы оставить возможность написать пост.
      Да и вообще минусы почти никогда не ставлю. А теперь из-за каких то мудаков плюющих в карму, не смогу добавить пост который хотел.
      • +1
        Универсальное правило: обсуждение кармы, рейтинга и плюсования-минусования комментариев в комментариях — дурной тон.

        Кто, как и по каким критериям оценивает — личное дело каждого.

        И ещё одно правило: облажался случайно в камментах — не делай из этого проблему. Больше шума — больше минусов (это уже субъективная статистика).
      • –1
        Это же илитный ИТ ресурс, кому нужны какие-то посты?

        Главное — распять за неудачную шутку!
  • 0
    Побежал пробовать… На виртуалке…
  • +2
    rm ~/.xsession-errors
    ln -s /dev/null ~/.xsession-errors
    Как то так.
  • 0
    >Как установить несколько разных версий wine?
    А не проще юзать PlayOnLinux? Для каждой софтины можно свою версию вайна иметь с отдельным префиксом и своими настройками.
    • 0
      PoL — проще.
      Руками — гибче.
      • 0
        Ядро тоже можно руками под себя собирать, только этого развлечения на серваках хватает. На своей рабочей станции хочется сделать пару кликов и уже начать играть в любимую игрушку :) То бишь не повредило бы в статье это как альтернативу указать.
        • 0
          Про PoL уже расписали в этом топике (а так же про плюсы и миминусы).
          Линк приатачил, так что думаю нет смысла писать об одном и том же.
  • 0
    А у меня почему-то перестал идти Fallout 2 на wine. Даже и не знаю почему. На Lucid. И не у маня одного. Обидно.
    • 0
      Странно, у меня все тип топ. Правда у меня 10 мята.

  • 0
    Подскажите начинающему в линуксе, где можно почитать как запускать ту или иную игруху. сейчас интересует стар2.
    или по каким признакам узнавать что делать.
    • +1
      Не с запуска игр знакомство с линуксом начинать надо.
      • 0
        Замечу, что запустить, например, Simcity 4 под Wine можно, а вот под Windows 7 не получается.
        • +1
          НЛО прилетело и сломало полгорода.
      • 0
        о великий йода, с чего же?? с разучивания гамм??
    • 0
      Спросить у дядюшки Яндекса по запросам типа «wine starcraft 2»
      • 0
        о гуру линукса, ты такой ответ даёшь на все вопросы, только подставляя %имя_запроса%??
    • 0
      где можно почитать как запускать ту или иную игруху.
      На appdb.winehq.org.
      • 0
        реально большое спасибо!!!
  • +1
    appdb.winehq.org/objectManager.php?sClass=version&iId=20882
    Если бы вы прочли статью, то нашли бы ссылку на AppDb
    • 0
      спасибо что тыкнули носом. такой объём инфы из статьи свалился сразу что даже не заметил.
  • 0
    Реально ли установить программу в wine глобально для всех пользователей?
    Пусть у меня игра, которая весит много гигов. Если каждый юзер её установит в свой домашний каталог, то это будет слишком толсто.
    Можно ли сделать так:
    * создать пользователя wine (типа «root» для wine)
    * создать каталог «/wine», куда с правами пользователя wine установить игру
    * у каждого пользователя переадресовать папку «drive_c» в «/wine»
    * а папки в «/wine/users/*» переадресовать в домашние папки пользователей?
    • +1
      Можно.
      Читаем последнюю часть про настройку sudoers и делаем отдельного пользователя для wine.
      Пишем скрипт wrapper который правильным образом устанавливает переменную окружения WINEPREFIX и делает запуск wine из под соотв. пользователя. При необходимости добавляем запуск wrapper-а в binfmt_misc.
      И лучше делать /wine просто wineprefix-ом, а не симлинком от drive_c для каждого пользователя.
      Это же Linux, здесь можно сделать всё что только можно представить, вопрос лишь в количестве необходимых телодвижений.
      • 0
        Да, спасибо, думаю, что использование WINEPREFIX будет вариантом получше. Но, насколько я знаю, префикс содержит домашние папки пользователей для wine-приложений («C:\Users»), а хотелось, чтобы wine-приложение для каждого пользователя адресовалось в свою домашнюю директорию. Таким образом, все равно придется переадресовывать папки «/wine/Users/*» («C:\Users\*») в «/home/*».
  • 0
    И ни в той, ни в этой статье не упоминается, что в .wine/dosdevices можно создать симлинк unc, перенаправить его на локальную сеть (созданную с помощью autofs, например, в каталоге /smb) и тогда получим полноценную поддержку путей UNC

Только зарегистрированные пользователи могут оставлять комментарии. Войдите, пожалуйста.