Всем привет! Прочел статью про Основы работы с Wine для начинающих, оказалось, что там далеко не все тонкости. Поэтому написал этот пост как дополнение тому. В данном посте в основном вольный перевод оф. документации, а так же несколько своих и чужих хитростей при работе с вайн. Скорее всего данный пост будет интересен новичкам и обычным пользователям GNULinux. Тем не менее добротные советы от специалистов не будут лишними.
Что такое вайн думаю объяснять нет смысла. Хочу лишь показать несколько трюков при работе с ним.
Содержание
- 1 Префиксы
- 2 Как установить несколько разных версий wine?
- 3 AppDB
- 4 Наводим порядок в домашнем каталоге
- 5 Использование последних версий wine
- 6 Установка winetricks
- 7 Как установить MSI файл?
- 8 The file foo.exe is not marked as executable… — Что это значит?
- 9 Как вывести содержимое отладки в отдельный файл?
- 10 Как отключить «crash» диалог?
- 11 После запуска приложенияигры, wine ругается и ничего не запускает. Что делать?
- 12 Мое приложение работает, но текстовые поля ведут себя странно
- 13 После запуска в консоль выводятся fixme сообщения. Что это?
- 14 Что делать если приложению необходим .NET фреймворк?
- 15 Игра которую я пытаюсь установить защищена от распространения возможно ли её установить?
- 16 Что делать если приложение требует IE?
- 17 Как включить сглаживание шрифтов в wine?
- 18 После выхода из игры не восстанавливается разрешение экрана
- 19 Как попасть в реестр wine?
- 20 Нуждается ли wine в отдельной установке драйверов?
- 21 Безопасно ли запускать wine от root?
- 22 Техника безопасности при использовании wine
- 23 Файл .xsession-errors забивает мусором все дисковое пространство!!! Что делать?
- 24 Делаем «песочницу» для wine (рецепт от drBatty)
Префиксы
С их помощью вы можете устанавливать приложения именно туда куда вы их хотите установить, а не в дефолтный .wine. Даже если что то пойдет не так, достаточно удалить тот префикс, в котором произошла ошибка, при этом все другие приложенияпрефиксы (предположим, что они настроенные) не пострадают.
То есть каждый созданный вами префикс можно рассматривать как отдельный wine – он независим от других префиксов. Или, для еще большей простоты, воспринимайте каждый созданный префикс, как отдельно установленную винду.
Теперь немного практики:
Сейчас мы создадим папку Gamez, в ней мы создадим префикс lib в который установим несколько библиотек. Эти библиотеки все равно пригодятся потом, поэтому пусть кешируются.
1
2
3
4
|
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. Просто перейдите на вкладку «Библиотеки» и убедитесь, что все установилось. После этого выполните:
1
|
wine
winecfg
|
Откроется конфигуратор wine (не из префикса), проверьте ту же вкладку. Видите! Здесь никаких библиотек. Значит он цел и невредим.
Как установить несколько разных версий wine?
Для решения этой задачи придется собирать wine из исходников. При сборке просто используем префикс для дефолтной установке. Примерно как здесь:
1
2
|
.
/
configure
prefix
=
/
path
/
to
/
install
/
directory
&&
make
sudo
make
install
|
AppDB
Обязательно используйте appdb для поиска информации по установке приложения, возможно стаф, который вы устанавливаете, уже установили и расписали все подводные камни.
Наводим порядок в домашнем каталоге
Если вы любите поиграть, то вероятно ваш /home раздел забит сейвами и прочими файлами игр. Избавиться от этого всего дела, не в ущерб можно так:
Замените стандартный путь к моим документам, на желаемое место для хранения сейвов. У меня, к примеру, этот путь ведет в папку с игрой.
Использование последних версий wine
Wine такая штука, чем новее тем лучше! С помощью следующей команды вы всегда будете иметь последнею версию wine (для Ubuntu-подобных дистрибутивов):
1
2
|
sudo
add
-
apt
-
repository
ppa
:
ubuntu
-
wine
/
ppa
sudo
apt
-
get
update
|
После выполнения этих команд ищите последнею версию wine в synaptic.
Установка winetricks
Если по каким-либо причинам у вас до сих пор нет winetricks, то завести его в хозяйстве можно так:
1
2
3
|
wget winetricks
.org
/
winetricks
sudo
cp
winetricks
/
usr
/
bin
sudo
chmod
+
x
/
usr
/
bin
/
winetricks
|
Как установить MSI файл?
Это можно сделать двумя способами:
1
|
wine
msiexec
/
i
whatever
.msi
|
Альтернативный способ:
1
|
wine
start
whatever
.msi
|
The file foo.exe is not marked as executable… — Что это значит?
Эта ошибка происходит потому что на exe файле стоит запрет на выполнение. Для файла на вашей ФС эта команда должна исправить положение:
1
|
chmod
a
+
x
.
/
patch
/
you
/
exe
.file
|
Если же файл находится на диске, то должна помочь вот эта команда:
1
|
mount
-
o
remount
,
mode
=
0777
,
exec
/
media
/
cdrom
|
Как вывести содержимое отладки в отдельный файл?
1
2
|
cd
~
/
.wine
/
drive_c
/
Games
/
Tron
wine
tron
.exe
&
amp
;
&
gt
;
log
.txt
|
Как отключить «crash» диалог?
Если вы используете префиксы, не забудьте в команде указать путь к префиксу
1
|
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.
После выхода из игры не восстанавливается разрешение экрана
Должно помочь:
1
|
xrandr
-
s
0
|
Как попасть в реестр wine?
1
|
wine
regedit
|
Если используются префиксы укажите путь в команде.
Нуждается ли wine в отдельной установке драйверов?
Нет. Wine – это не эмулятор компьютера, он лишь переводит вызовы Windows API в понятные линуксу команды.
Безопасно ли запускать wine от root?
Никогда не запускайте wine от root пользователя!!!
Если это уже случилось измените владельца ~./wine директории.
1
2
|
cd
~
sudo
chown
-
R
$USER
:
$USER
.wine
|
Техника безопасности при использовании wine
Вот несколько советов, которые помогут вам повысить безопасность:
- Никогда не запускайте программы с подозрительных сайтов
- Никогда не используйте root пользователя для запуска приложений!
- Используйте антивирусный сканер для запускаемых приложений, например ClamAV. Или хотя бы проверяете экзешники на virustotal
- Попробуйте удалить wine диск Z:, который указывает по умолчанию на корневой каталог. В качестве обходного пути запускать программы из ~/.wine/drive_c директории.
- Используйте виртуальную машину для запуска и проверки подозрительных приложений.
Файл .xsession-errors забивает мусором все дисковое пространство!!! Что делать?
Сохраните следующий скрипт:
1
2
3
4
5
6
7
|
%
cat
.
scripts
/
xsessionerrorscleaner
.
sh
#! /bin/bash
while
true
;
do
inotifywait
-
e
modify
~
/
.xsession
-
errors
&
amp
;
&
gt
;
/
dev
/
null
[
[
"$(stat -c %s ~/.xsession-errors)"
-
ge
"52428800"
]
]
&&
echo
&
gt
;
~
/
.xsession
-
errors
done
|
Добавьте его в автозагрузку, и установите следующий пакет (он необходим для работы скрипта).
1
|
apt
-
get
install
inotify
-
tools
|
Делаем «песочницу» для wine (рецепт от drBatty)
*1) создаём юзера
2) меняем права на домашние каталоги на 700
*3) прописываем команду в sudoers (visudo)
первый_юзер имя_компа=(второй_юзер) NOPASSWD: /программа_с_полным_путём
4) у первого юзера прописываем в автозагрузку DE команду xhost +local: второй_юзер
5) в ярлык для запуска программы пишем:
1
|
sudo
-
u
второй_юзер
/программа_с_полным_путём
|
Тогда первый юзер сможет более-менее безопасно запускать программы от имени второго юзера.
Звёздочкой отмечены пункты, для которых нужны права рута.