Linux - offline(CentOS 7)/wine

[CentOS] Linux wine 설치 1 (소스 컴파일, .Net Framework 응용프로그램 실행을 위한 방법, yum 설치 문제점 해결)

기억력이 점점 나빠진다 2020. 11. 9. 18:44
반응형

 

wine을 CentOS에 설치하려면

yum repository를 활용해야 하는데

인터넷이 연결된 환경에서도 mono, gecko가 설치 되지 않는점

오래된 버전이라 64bit환경에서 winetricks를 활용하여 패키지나 프로그램 설치시 잘 안되는점 등이 발생해

소스 컴파일 방법으로 설치해 보았다

인터넷이 연결된 환경이면 winetricks를 이용해 보다 편하게 설치할 수 있으나

CentOS에서 32bit, 64bit wine을 따로 설치하고 관리해 줘야 이상하게 꼬이는 현상을 막을 수 있겠다

 

wine 공식 홈페이지를 살펴봐도 CentOS관련된 내용은 한두장 뿐이고 정보가 부족하다

Fedora 쪽을 참고하는게 더 나을 것 같지만 테스트를 나중에 해봐야 알 것 같다

 

이것 저것 해봤지만 오프라인 CentOS 환경이라 소스컴파일 해서 진행하는게 가장 안정적인 것 같다

결국 필자는 .Net Framework 4.5정도의 버전까지 설치해보고 간단한 응용프로그램을 돌려보는데 성공했지만

복잡한 프로그램과 다양한 라이브러리를 활용해 개발한 프로그램은 뭔가 다른 작업이 더 필요한듯 보인다

 

어쨋든 yum Repository에 있는 wine 패키지를 활용하기 보다는 최신 버전을 다운받아 설치를 진행해 보자

환경은 offline 상태이고 필요한 패키지들은 online 상태에서 받아와 옮겨서 local에 Repository를 구성하고

설치하는 방식으로 진행했다

 

online상태에서 설치 방법은 아래 글을 참조하기 바란다

2020/10/29 - [Linux - offline(CentOS 7)/wine] - [CentOS] Linux wine 설치(yum repository 이용)

 

 

1. 컴파일을 위한 환경 설정

wine 설치를 위해 소스를 받아 컴파일을 해야하는데 먼저 환경을 구성해보자

offline 환경이라 아래글 내용을 수행했다는 가정하에 진행하겠다

 

2020/09/02 - [Linux - offline(CentOS 7)/Local YUM Repository] - [CentOS] local YUM Repository 만들기 - CentOS Repository

 

[CentOS] local YUM Repository 만들기 - CentOS Repository

특정 패키지들을 설치할때 인터넷이 되는 Online 환경에서 YUM명령어를 통해 쉽고 빠르게 설치를 한다 그러나 Offline 인터넷이 안되는 환경에서는 YUM명령어를 사용하여 패키지를 다운받은 후 설치

boring-notes.tistory.com

2020/11/03 - [Linux - offline(CentOS 7)/Local YUM Repository] - [CentOS] yum groupinstall "Development Tools" Group development does not have any packages to install

 

[CentOS] yum groupinstall "Development Tools" Group development does not have any packages to install

yum 명령어를 이용해 개발 관련 패키지들을 설치해야하는 경우가 종종 발생한다 보통 아래 명령어를 이용해 설치하는데 # yum groupinstall "Development Tools" 아래와 같이 패키지들을 저장소에서 못찾는

boring-notes.tistory.com

위 내용을 수행했다면

먼저 개발용 툴을 설치하자

# yum groupinstall "Development Tools" --setopt=group_package_types=mandatory,default,optional

 

실행하고 설치하면 gcc 같은 컴파일러와 여러 패키지들이 설치된 것을 볼 수 있다

 

또 관련 라이브러리들을 설치하자

32bit 응용프로그램 동작을 위해서 32bit도 설치해야 한다

# yum install libxslt.{i686,x86_64} glibc-devel.{i686,x86_64} libgcc.{i686,x86_64} libX11-devel.{i686,x86_64} freetype-devel.{i686,x86_64} gnutls-devel.{i686,x86_64} libxml2-devel.{i686,x86_64} libjpeg-turbo-devel.{i686,x86_64} libpng-devel.{i686,x86_64} libXrender-devel.{i686,x86_64} alsa-lib-devel.{i686,x86_64}

 

fedora 설치 매뉴얼에는 아래와 같이 되어 있다

다 필요하지는 않지만 확실히 하려면 아래 패키지들을 설치해 줘도 된다

# yum install alsa-plugins-pulseaudio.i686 glibc-devel.i686 glibc-devel libgcc.i686 libX11-devel.i686 freetype-devel.i686 libXcursor-devel.i686 libXi-devel.i686 libNX_Xext-devel.i686 libXext-devel.i686 libXxf86vm-devel.i686 libXrandr-devel.i686 libXinerama-devel.i686 mesa-libGLU-devel.i686 mesa-libOSMesa-devel.i686 libXrender-devel.i686 libpcap-devel.i686 ncurses-devel.i686 libzip-devel.i686 lcms2-devel.i686 zlib-devel.i686 libv4l-devel.i686 libgphoto2-devel.i686 libcapifax-devel.i686 cups-devel.i686 libxml2-devel.i686 openldap-devel.i686 libxslt-devel.i686 gnutls-devel.i686 libpng-devel.i686 flac-libs.i686 json-c.i686 libICE.i686 libSM.i686 libXtst.i686 libasyncns.i686 libedit.i686 liberation-narrow-fonts.noarch libieee1284.i686 libogg.i686 libsndfile.i686 libuuid.i686 libva.i686 libvorbis.i686 libwayland-client.i686 libwayland-server.i686 llvm-libs.i686 mesa-dri-drivers.i686 mesa-filesystem.i686 mesa-libEGL.i686 mesa-libgbm.i686 nss-mdns.i686 ocl-icd.i686 pulseaudio-libs.i686 python-talloc.x86_64 sane-backends-libs.i686 tcp_wrappers-libs.i686 unixODBC.i686 samba-common-tools.x86_64 samba-libs.x86_64 samba-winbind.x86_64 samba-winbind-clients.x86_64 samba-winbind-modules.x86_64 mesa-libGL-devel.i686 fontconfig-devel.i686 libXcomposite-devel.i686 libtiff-devel.i686 openal-soft-devel.i686 mesa-libOpenCL-devel.i686 opencl-utils-devel.i686 alsa-lib-devel.i686 gsm-devel.i686 libjpeg-turbo-devel.i686 pulseaudio-libs-devel.i686 pulseaudio-libs-devel gtk3-devel.i686 libattr-devel.i686 libva-devel.i686 libexif-devel.i686 libexif.i686 glib2-devel.i686 mpg123-devel.i686 mpg123-devel.x86_64 libcom_err-devel.i686 libcom_err-devel.x86_64 libFAudio-devel.i686 libFAudio-devel.x86_64
# yum install gstreamer-plugins-base-devel gstreamer-devel.i686 gstreamer.i686 gstreamer-plugins-base.i686 gstreamer-devel gstreamer1.i686 gstreamer1-devel gstreamer1-plugins-base-devel.i686 gstreamer-plugins-base.x86_64 gstreamer.x86_64 gstreamer1-devel.i686 gstreamer1-plugins-base-devel gstreamer-plugins-base-devel.i686 gstreamer-ffmpeg.i686 gstreamer1-plugins-bad-free-devel.i686 gstreamer1-plugins-bad-free-extras.i686 gstreamer1-plugins-good-extras.i686 gstreamer1-libav.i686 gstreamer1-plugins-bad-freeworld.i686

 

 

2. wine 소스파일, mono/gecko 설치파일 다운로드

 

이제 wine 소스파일과 .NetFramework 기반 프로그램 설치시 필요한 mono와 프로그램에서 사이트 표시할때 필요한 gecko를 다운받자

gecko는 선택사항이지만 .NetFramework 기반 프로그램 설치 및 실행을 위해선 mono가 반드시 필요하니 꼭 설치하자

 

wine, mono, gecko는 wine 공식사이트에서 다운 받을 수 있다

- wine

dl.winehq.org/wine/source/

 

Index of /wine/source

 

dl.winehq.org

- mono

dl.winehq.org/wine/wine-mono/

 

Index of /wine/wine-mono

 

dl.winehq.org

- gecko

wiki.winehq.org/Gecko

 

Gecko - WineHQ Wiki

Wine implements its own version of Internet Explorer. The implementation is based on a custom version of Mozilla's Gecko Layout Engine. Installing When your application tries to display a site, Wine loads and uses its custom implementation of Gecko. Wine t

wiki.winehq.org

 

 

wine과 mono 버전을 맞춰서

wine은 4.0.3, mono는 4.7.5, gecko는 2.47.1 버전을 다운 받아 서버로 옮겼다

최신 버전으로 테스트를 해보았는데 wine자체가 제대로 동작하지 않는다

아직 CentOS는 지원이 잘 안되는 듯 하여 어쩔 수 없이 예전 버전으로 설치하였다

추후 다른 최신 버전도 테스트를 해보아야 겠다

mono와 gecko는 msi파일을 받아서 간편하게 설치하자

 

 

3. wine 소스파일 컴파일 및 설치

먼저 다운받은 wine 소스 패키지 압축파일의 압축을 해제하고 컴파일을 해보자

 

# tar -xvf wine-4.0.4.tar.xz

 

압축해제된 폴더에 들어가 컴파일을 해야하는데

64bit, 32bit 따로 폴더를 만들어 각각 컴파일 해줘야 하는 작업이 필요하다

먼저 아래와 같이 각각 폴더를 만들어준 뒤 컴파일을 수행하자

 

# cd wine-4.0.4
# mkdir build
# mkdir build/wine64
# mkdir build/wine32

 

이후 각각 컴파일을 수행하고 설치하면 된다

 

# cd build/wine64
# ../../configure --enable-win64
# make -j 8

# cd ../wine32
# PKG_CONFIG_PATH=/usr/lib/pkgconfig ../../configure --with-wine64=../wine64
# make -j 8

 

빌드하는데 시간이 상당히 걸릴 것이다

조금더 빨리 하려면 make -j 4 또는 make -j 8 같이 옵션을 줘서 빌드를 하자

이제 설치를 해주자

 

# make install
# cd ../wine64
# make install

 

설치가 제대로 됐는지 확인해 보자

/usr/local/bin 경로에 가보면 wine 실행 파일들이 있다

아래 명령어를 통해 32bit, 64bit가 제대로 설치됐는지 확인해 보자

# file wine
# file wine64

 

 

4. winetricks 설치(선택)

 

wine으로 다양한 라이브러리들을 설치하고 관리하기 위한 UI를 제공하는 winetricks를 설치해보자

물론 선택적이라 설치안해도 무방하다(특히 오프라인 환경에서는 더더욱 없어도 무방하다)

온라인 환경에 CentOS가 아니라면 상당히 편리하나 오프라인 CentOS 환경에서는

다른 라이브러리, 프로그램 설치시 64bit, 32bit 호환 문제가 있는 듯 보여

필자도 설치는 하였으나 console에서 그냥 명령어를 쳐서 사용하고 있다(prefix 관련하여 꼬이는 문제와 호환성 문제 발생)

 

winetricks는 아래에서 받을 수 있다

wiki.winehq.org/Winetricks

 

Winetricks - WineHQ Wiki

Translations of this page: Français ภาษาไทย(Translators, please see Discussion page.) What is winetricks? Winetricks is a helper script to download and install various redistributable runtime libraries needed to run some programs in Wine. Th

wiki.winehq.org

허나 오프라인 환경에서 wget 명령어는 무의미 하니 

아래 경로를 브라우져로 열어 마우스 우클릭 후 다른이름으로 저장하고 해당 파일을 오프라인 서버로 옮겼다

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

또는 아래 파일을 받아 옮기자

winetricks
0.83MB

 

winetricks 라고 이름을 변경하여 옮기고 실행권한을 주자

# chmod +x winetricks
or
# chmod 755 winetricks
mv winetricks /usr/local/bin/

 

실행 방법은

# winetricks 명령어를 치면 되는데

되도록 5번 내용 이후 32bit, 64bit prefix를 지정하여 사용하는 것이 좋다

물론 x-windows와 같이 UI를 볼 수 있는 환경에서 실행해야 해서

필자는 실제 서버에서 바로 실행하였다

향후 원격제어가 가능하도록 설정하여 원격에서도 해봐야 겠다

# WINEARCH=win32 WINEPREFIX=~/.wine32 winetricks
# WINEARCH=win64 WINEPREFIX=~/.wine64 winetricks

 

실행을 해보면 아래와 같은 창이 뜨는데

여러가지 설정과 기능, 프로그램 설치를 ui로 실행할 수 있게 해준다

하지만 오프라인 상태에선 쓸 수 없는 기능들이 많고, 명령어로 실행이 가능하니

필자는 사용하지 않는다

 

 

 

5. wine 설정

32bit, 64bit를 따로 관리하여 사용해야 하는데

prefix를 설정하여 따로 관리 할 수 있다

prefix를 설정하면 /root 경로에 설정한 prefix별로 폴더가 생성이 되는데

32bit, 64bit 폴더를 따로 생성하여 각각 32bit, 64bit 프로그램을 실행할 수 있는 환경을 구성하는 것이다

 

먼저 아래 옵션을 줘서 winecfg 창을 실행해 보자

 

# WINEARCH=win64 WINEPREFIX=~/.wine64 winecfg
# WINEARCH=win32 WINEPREFIX=~/.wine32 winecfg

 

위와 같은 창이 뜨는데 Windows 7으로 설정해두고 다른 옵션은 변경안해도 무방하다

글자가 깨지는 것은 한글 Font가 없어서 인듯하다

Font 설치하는 법은 아래 글을 참고하면 된다

2020/11/10 - [Linux - offline(CentOS 7)/wine] - [CentOS] wine 한글 깨짐 해결 방법

 

 

설정한 prefix대로 폴더가 생성됐는지 확인해보자

 

# cd /root
# ls -al

 

설정한 prefix대로 잘 생성되었다

폴더를 타고 들어가보면

아래와 같은 구조일 것이다

 

windows폴더에 들어가보면 notepad, regedit도 있다 

한번 실행해 보자

 

# WINEARCH=win32 WINEPREFIX=~/.wine32 wine notepad.exe
# WINEARCH=win64 WINEPREFIX=~/.wine64 wine64 regedit.exe

 

wine이 잘 돌아가는 것을 확인 할 수 있다

32bit, 64bit 둘다 잘 돌아간다

 

.Net Framework 설치 및 윈도우 응용프로그램을 실행하기 위한 설정은 

다음 글을 참조 바란다

 

반응형