百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 技术文章 > 正文

如何在CentOS上安装和使用Wine

nanshan 2025-03-04 13:20 11 浏览 0 评论

最近想要把工作环境从Windows切换到Linux系统,但公司的IM软件(豆芽)只有Windows和MAC的版本,很多常用工具也只有Windows的版本,贸然切换环境的话会给工作带来很多不便,于是便想到使用Wine安装Windows应用软件。

Wine是“Wine Is Not an Emulator”的缩写,这表明Wine不是任何一种类型的模拟器。Wine不会模拟任何硬件环境,因此它的性能要比虚拟机和容器要好得多。实际上,Wine是一个系统调用的翻译层,负责将应用程序的Windows系统调用转换为Linux系统调用。这种方式会有一定的性能损失,但实际上较新版本的Windows要兼容较老的应用程序,也会在系统中引入类似的系统调用翻译层,所以性能损失几乎可以忽略不计。

虽然目前最流行的桌面版Linux系统是Ubuntu,但是本人平时使用CentOS较多,因此本文只会描述如何在虚拟环境下的CentOS系统中安装和使用Wine,过几天会再写一篇如何在Ubuntu系统中安装和使用Wine的文章。

一、环境描述

1. 虚拟机配置

  • CPU:单核 2.4GHz

  • 内存:DDR3 1333 2GB

  • 硬盘:120GB

  • IP地址:10.24.16.149

  • 操作系统:CentOS 6.6 x86_64 Desktop

2. 编译环境

  • GCC:4.4.7 20120313

  • YUM源:官方Base源 + EPEL源 + RepoForge源

3. Wine

  • 版本:wine-1.9.15.tar.bz2

  • 安装方式:编译安装(本文内容)

二、添加YUM源

1. 添加EPEL源

在Shell中运行以下命令,添加EPEL源:

rpm -ivh http://dl.fedoraproject.org/pub/epel/epel-release-latest-6.noarch.rpm

2. 添加RepoForge源

在Shell中运行以下命令,添加RepoForge源:

rpm -ivh http://apt.sw.be/redhat/el6/en/x86_64/rpmforge/RPMS/rpmforge-release-0.5.3-1.el6.rf.x86_64.rpm

三、安装编译环境

在Shell中运行以下命令,安装GCC编译环境:

yum update -y

yum groupinstall -y "Development Tools"

四、安装依赖包

本文会同时编译和安装32位和64位的Wine,因此必须安装32位和64位的依赖包。

在Shell中运行以下命令,安装64位的依赖包:

yum install -y libX11-devel freetype-devel zlib-devel libxcb-devel libXcursor-devel libXi-devel libXext-devel libXxf86vm-devel libXrandr-devel libXinerama-devel libXcomposite-devel libGLU-devel mesa-libOSMesa-devel libpcap-devel hal-devel libv4l-devel pulseaudio-libs-devel gsm-devel lcms2-devel alsa-lib-devel audiofile-devel cups-devel dbus-devel fontconfig-devel giflib-devel lcms-devel libICE-devel libjpeg-turbo-devel libpng-devel libSM-devel libusb-devel libXau-devel libxml2-devel libXrender-devel libxslt-devel libXt-devel libXv-devel mesa-libGL-devel mesa-libGLU-devel ncurses-devel openldap-devel openssl-devel pkgconfig sane-backends-devel xorg-x11-proto-devel prelink fontforge flex bison openal-soft-devel samba-winbind

在Shell中运行以下命令,安装32位的依赖包:

yum install -y audiofile-devel.i686 dbus-devel.i686 fontconfig-devel.i686 freetype.i686 freetype-devel.i686 giflib-devel.i686 lcms-devel.i686 libICE-devel.i686 libjpeg-turbo-devel.i686 libpng-devel.i686 libSM-devel.i686 libusb-devel.i686 libX11-devel.i686 libXau-devel.i686 libXcomposite-devel.i686 libXcursor-devel.i686 libXext-devel.i686 libXi-devel.i686 libXinerama-devel.i686 libxml2-devel.i686 libXrandr-devel.i686 libXrender-devel.i686 libxslt-devel.i686 libXt-devel.i686 libXv-devel.i686 libXxf86vm-devel.i686 mesa-libGL-devel.i686 mesa-libGLU-devel.i686 ncurses-devel.i686 openldap-devel.i686 openssl-devel.i686 zlib-devel.i686 sane-backends-devel.i686 glibc-devel.i686 libstdc++-devel.i686 pulseaudio-libs-devel.i686 gnutls-devel.i686 libgphoto2-devel.i686 openal-soft-devel.i686 isdn4k-utils-devel.i686 gsm-devel.i686 libv4l-devel.i686 cups-devel.i686 libtiff-devel.i686 gstreamer-devel.i686 gstreamer-plugins-base-devel.i686 gettext-devel.i686 libmpg123-devel.i686 lcms2-devel.i686 mesa-libOSMesa-devel.i686 libpcap-devel.i686 hal-devel.i686

五、下载Wine源码包

在Shell中运行以下命令,下载Wine的源码包:

cd /root/Downloads/

wget http://mirrors.ibiblio.org/wine/source/1.9/wine-1.9.15.tar.bz2

六、编译安装Wine

1. 解压缩源码包

在Shell中运行以下命令,解压缩源码包:

tar jxvf wine-1.9.15.tar.bz2

cd wine-1.9.15

2. 编译安装

在Shell中运行以下命令,编译安装Wine(注意,编译耗时较长,两次编译分别需要1小时左右):

mkdir build

cd build

mkdir wine64

cd wine64

../../configure --prefix=/usr/local/Wine --enable-win64

make -j4

cd ..

mkdir wine32

cd wine32

../../configure --prefix=/usr/local/Wine --with-wine64=../wine64

make -j4

make install

cd ../wine64

make install

注意,在执行configure脚本进行编译前配置时,会找不到以下依赖关系(如果哪位读者能够补全这些依赖关系,请回复告知,谢谢!),如下图所示:

  • 缺少的32位依赖关系

  • 缺少的64位依赖关系

3. 添加环境变量

在Shell中运行以下命令,配置全局环境变量:

vi /etc/profile

在上述文件的最后添加一行,内容为:

export PATH=$PATH:/usr/local/Wine/bin

使得全局环境变量生效:

source /etc/profile

4. 安装cabextract

若需要通过Wine安装以cab格式打包的软件,则还需要安装cabextract包:

yum install -y cabextract

5. 安装Mono

Mono是一种开源的、跨平台的.NET框架的实现。Wine可以通过在Windows平台上编译的Mono来运行.NET应用程序。

在Shell中运行以下命令,下载和安装Mono:

cd /root/Downloads

wget http://dl.winehq.org/wine/wine-mono/4.6.3/wine-mono-4.6.3.msi

mkdir -p /usr/local/Wine/share/wine/mono

mv wine-mono-4.6.3.msi /usr/local/Wine/share/wine/mono/

6. 安装Gecko

Wine实现了自己版本的IE浏览器,而这种实现基于Mozilla的Gecko布局引擎。Gecko具有32位和64位两种版本。

在Shell中运行以下命令,下载和安装Gecko:

cd /root/Downloads

wget http://dl.winehq.org/wine/wine-gecko/2.47/wine_gecko-2.47-x86.msi

wget http://dl.winehq.org/wine/wine-gecko/2.47/wine_gecko-2.47-x86_64.msi

mkdir -p /usr/local/Wine/share/wine/gecko

mv wine_gecko-2.47-x86.msi /usr/local/Wine/share/wine/gecko/

mv wine_gecko-2.47-x86_64.msi /usr/local/Wine/share/wine/gecko/

7. 配置Wine

在Shell中运行以下命令,分别配置32位和64位的Wine:

WINEARCH=win32 WINEPREFIX=~/.wine32 winecfg

WINEARCH=win64 WINEPREFIX=~/.wine64 winecfg

执行上述两个命令时,会分别创建Wine的32位和64位的工作目录,并且会自动安装上文下载的Wine和Gecko组件,最后会打开Wine的配置窗口。在配置窗口中,最好将两个版本的Wine都配置为Windows 7的兼容性,如下图所示:

8. 安装Winetricks

Winetricks是一个很方便的工具脚本,当需要通过Wine运行某些程序时,这个脚本便可用于下载和安装各种必需的可再发行的运行时库。这些运行时库可能会使用一些闭源的库文件替换Wine的某些组件。注意,这个脚本下载和安装的软件全部都是32位平台的,即使是在Wine64的环境下,其安装的软件也都是32位的(一般安装在~/.wine64/drive_c/Program Files (x86)/目录中)。在Shell中运行以下命令,下载和安装Winetricks:

cd /root/Downloads

wget https://raw.githubusercontent.com/Winetricks/winetricks/master/src/winetricks

chmod 755 winetricks

mv winetricks /usr/local/Wine/bin

9. 验证测试

在Shell中运行以下命令,运行winetricks脚本,验证Wine32是否安装成功:

WINEPREFIX=~/.wine32 winetricks

winetricks脚本运行时会打开一个窗口,如下图所示:

在上图中,选择Select the default wineprefix,然后点击OK按钮,进入Wine32的配置窗口,如下图所示:

在上图中,选择Run uninstaller,然后点击OK按钮,进入Wine32的添加/删除程序窗口,如下图所示:

由上图可知,Mono和Gecko已经在Wine32环境中成功安装了。

验证Wine64是否安装成功的步骤和Wine32几乎完全相同,需要在Shell中运行以下命令:

WINEPREFIX=~/.wine64 winetricks

七、安装软件

现在,以豆芽(32位)和灵格斯字典(64位)为例,使用Wine安装这两个软件,并且分别设置它们的快捷键。这样便能分别验证Wine32和Wine64是否能够正常工作。

1. 设置字体

由于Wine默认不支持中文字体,因此需要将宿主机(Windows 7)的微软雅黑和宋体字体文件拷贝至Wine的相关目录中,否则运行中文软件将会出现乱码,如下所示:

  • 传输软件:Xftp 5

  • 微软雅黑源路径:C:\Windows\Fonts\msyh.ttc

  • 宋体源路径:C:\Windows\Fonts\simsun.ttc

  • Wine32目标路径:
    ~/.wine32/drive_c/windows/Fonts/

  • Wine64目标路径:
    ~/.wine64/drive_c/windows/Fonts/

2. 安装软件

在Shell中执行以下命令,下载豆芽和灵格斯字典的安装程序:

cd /root/Downloads

wget http://im.suning.com/updates/PC/3.5.0.2/SuningIM_PC.exe

wget http://www.lingoes.cn/download/lingoes_2.9.2_x64_cn.exe

在Shell中分别执行以下两个命令,安装豆芽和灵格斯字典:

# 安装豆芽(Wine32)

LANG=zh_CN.UTF-8 WINEPREFIX=~/.wine32 wine ./SuningIM_PC.exe

# 安装灵格斯字典(Wine64)

LANG=zh_CN.UTF-8 WINEPREFIX=~/.wine64 wine ./lingoes_2.9.2_x64_cn.exe

注意,上述命令中的LANG=zh_CN.UTF-8环境变量表示需要使用UTF-8编码的中文,否则运行中文程序时便会出现代码。

豆芽的安装窗口如下图所示(安装过程不再赘述),可以看出使用了微软雅黑字体:

灵格斯字典的安装窗口如下图所示(安装过程不再赘述),可以看出使用了宋体字体:

3. 设置快捷键

Windows的应用程序通常具有很多快捷键,可以大大提高操作效率,但是在Wine环境中安装的应用程序,默认却不能使用快捷键。此时,需要安装xdotool和xbindkeys,前者负责将按键转发给指定的应用程序窗口,后者负责将按键绑定至指定的Shell命令。在Shell中安装xdotool和xbindkeys:

yum install -y xdotool xbindkeys

豆芽的常用快捷键是ctrl+alt+z,这个快捷键可以最小化豆芽窗口,或者将豆芽窗口呼出至前台。灵格斯的常用快捷键是ctrl+q,这个快捷键可以最小化灵格斯窗口,或者将灵格斯窗口呼出至前台。在Shell中运行以下命令,设置豆芽的快捷键:

xbindkeys --defaults > /root/.xbindkeysrc

vi ~/.xbindkeysrc

在这个文件的最后添加如下的内容:

"xdotool key --window $(xdotool search --name '豆芽2016' | head -n1) ctrl+alt+z"

Control+Alt + z

"xdotool key --window $(xdotool search --name 'Lingoes 灵格斯' | head -n1) ctrl+q"

Control + q

上述的两项配置都会将快捷键绑定至xdotool命令,xdotool会根据名称找到相应的应用程序窗口,然后将快捷键转发给这个窗口。保存这个配置文件之后,在Shell中运行以下命令,使得XBindKeys重新载入配置文件:

pkill xbindkeys && xbindkeys &

4. 验证测试

在Shell中运行以下命令,确保XBindKeys正在运行:

ps aux | grep xbindkeys

在CentOS的桌面上双击运行豆芽和灵格斯的快捷方式,豆芽还需要输入工号和密码登录,运行后的图形界面如下图所示:

然后,按下ctrl+alt+zctrl+q这两个快捷键,便可以分别最小化和呼出豆芽和灵格斯的应用程序窗口了。

八、注意事项

  • Wine64现在对于32位的应用程序的兼容性不是很好,所以尽量将32位的软件安装在Wine32中,将64位的软件安装在Wine64中。

  • 尽管本文使用root权限执行所有的安装和配置操作,但建议尽量不要使用root账户,否则Windows应用程序获得的权限过大,很有可能对系统造成安全隐患。

  • 目前Wine兼容的Windows软件非常多,Wine的官网有一个APPDB数据库,包含了所有兼容软件的信息,APPDB的URL为:

    http://appdb.winehq.org/

相关推荐

详解 HTTPS、TLS、SSL、HTTP区别和关系

一、什么是HTTPS、TLS、SSLHTTPS,也称作HTTPoverTLS。TLS的前身是SSL,TLS1.0通常被标示为SSL3.1,TLS1.1为SSL3.2,TLS1.2为SSL...

锐安信SSL证书自动化运维系统:灵活管理SSL/TLS证书全生命周期

点击上方关注“锐成云分销”,云建站解决方案专家!域名、SSL证书、DNS、主机一站选齐在SSL/TLS证书的生命周期管理中,证书的各种操作方式是基础且核心的部分之一,更是保障用户数据传输加密的关键。这...

宝塔免费的 SSL/TLS 证书如何续签

申请之前,请确保域名已解析,如未解析会导致审核失败(包括根域名)宝塔SSL申请的是免费版TrustAsiaDVSSLCA-G5证书,仅支持单个域名申请有效期1年,不支持续签,到期后需要重新申...

HTTPS、HTTP、TLS/SSL工作及握手原理、PKI/CA密钥体系

一、HTTPS与HTTP介绍二、TLS/SSL工作原理三、TSL/SSL握手过程四、HTTPS性能优化五、PKI体系一、HTTPS与HTTP介绍1.Https(SecureHypetextTran...

什么是SSL证书卸载 SSL证书卸载有什么作用

SSL证书是数字证书的一种,安装部署的话可以对网站起到身份验证和数据加密的作用。网站部署SSL证书,相对就必然会有SSL证书卸载,那么SSL证书卸载是什么呢?SSL证书卸载有什么作用?随着SSL通信量...

让SSL/TLS协议流行起来:深度解读SSL/TLS实现1

一前言SSL/TLS协议是网络安全通信的重要基石,本系列将简单介绍SSL/TLS协议,主要关注SSL/TLS协议的安全性,特别是SSL规范的正确实现。本系列的文章大体分为3个部分:SSL/TLS协...

苹果、谷歌、微软等一致同意!SSL/TLS证书最长有效期锐减至47天

快科技4月14日消息,苹果此前向CA/B论坛(负责管理SSL/TLS证书的行业组织)提议,将所有证书有效期缩短至45天。日前CA/B论坛服务器证书工作组投票通过SC-081v3提案,最终决定将SSL/...

Android怎么设置端口转发,将访问本设备的端口转到另外一台设备

一、Android系统怎么设置端口转发,将访问本设备的端口转到另外一台设备?要设置端口转发,您需要先在Android设备上安装一个支持端口转发的应用程序。其中一个常用的应用是"Termux&#...

大神级产品:手机装 Linux 运行 Docker 如此简单

本内容来源于@什么值得买APP,观点仅代表作者本人|作者:灵昱Termux作为一个强大的Android终端模拟器,能够运行多种Linux环境。然而,直接在Termux上运行Docker并不可行,需要...

关于H3C交换机的SSH功能配置方法(华三交换机ssh配置)

对于交换机的初步学习,作为初学者的我,还望诸位不吝赐教。若存在不足之处,烦请大家多提宝贵意见。同样身为初学者的我们,亦可携手共进,相互分享技术经验。一、本地用户配置(核心步骤)1.创建用户并设置密码...

Linux常用操作ssh(linux中的ssh命令)

ssh#p是小写ssh-p22user@hostsftp#连接sftp-P22root@host#将文件上传到服务器上:put[本地文件的地址][服务器上文件存储的位置]#将...

小白心得,如何使用SSH连接飞牛系统(fnos)?

一、背景作为一个刚接触飞牛系统的小白,在研究飞牛os的时候,发现很多功能都需要连接ssh,但是如何使用SSH连接飞牛系统成为入门飞牛os的一道坎。下面以自己的学习经历详细记录下过程吧。二、系统设置1、...

如何在 Windows 11 或 10 上使用 Winget 安装 OpenSSH

SSH(SecureShell)是大多数开发人员和系统管理员用来通过Linux远程连接托管服务器或任何云服务的工具,因为SSH在Linux中是内置的。然而,对于Windows呢?是的...

linux文件之ssh配置文件的含义与作用

ssh远程登录命令是操作系统(包括linux和window系统)下常用的操作命令,可以帮助用户,远程登录服务器系统,查看,操作系统相关信息。linux系统对于ssh命令有专门保存其相关配置的目录和文件...

害怕Linux SSH不安全?这几个小妙招安排上!

ssh是访问远程服务器最常用的方法之一,同时,其也是Linux服务器受到攻击的最常见的原因之一。不过别误会...我们并不是说ssh有什么安全漏洞,相反,它在设计上是一个非常安全的协议。但是安...

取消回复欢迎 发表评论: