Wine on CentOS 8: PDF-XChange Viewerを使う

CentOS 8.2にWine 5.0をインストールし、Windows のPDF編集ソフト PDF-XChange Viewer 2.5 をWine上で使ってみました。
(実機にネイティブにインストールしたCentOSでは、ビデオチップとドライバの関係でWineの画像も文字も小さすぎて使えなかったので、KVMのゲストOSにインストールして使っています。)

  • CentOS 8.2https://centos.org/

    CentOSはRedHat Enterprise Linux(RHEL)のクローンです。
    2020年6月15日に8.2がリリースされました。

  • Wine 5.0https://www.winehq.org/

    Wine(Wine Is Not an Emulator)は、LinuxなどのPOSIX準拠OS上でWindowsアプリケーションを実行するWindows互換のレイヤです。仮想マシンやエミュレータと異なり、Windows APIコールをPOSIXコールに変換することで、WindowsアプリケーションをLinuxデスクトップ上で、Linuxアプリと同じように表示/操作ができます。
    Wineプロジェクト(WineHQ)が開発し、ライセンスはglibcライブラリなどと同じLGPLで配布されています。

    https://ja.wikipedia.org/wiki/Wine
    https://en.wikipedia.org/wiki/Wine_(software)

    GOME Terminal(上)とWindows Explorer(下)

  • PDF-XChange Viewer 2.5https://www.tracker-software.com/product/pdf-xchange-viewer

    Windowsのアプリケーションです。PDFのviewerですが、PDFの編集もできるのが特徴です。
    Tracker Software Products社が開発し、独自のライセンス「PDF-XChange PDF Viewer End User License Agreement」で配布しています。無償版と、フル機能の有償版があります。

    PDF-XChange Viewer 2.5 on Wine 5.0/CentOS 8.2

    (PDFの編集機能が主体となる、高機能なPDF-XChange Editor 8.0もリリースされています。
    https://www.tracker-software.com/
    https://www.tracker-software.com/product/pdf-xchange-editor
    但し、KVMのゲストOS 8.2のWine 5.0上で起動すると、アプリやWineだけでなく、VM自体がフリーズしてしまいました。。)

● Wineのインストール

CentOS 8ではWine(4.0.4)のバイナリパッケージ、あるいはWine 5.0のソースをコンパイルすることで利用できます。

1) Wine 4.0.4のバイナリパッケージを利用する
epelリポジトリから提供されています。以下のようにしてインストールします。

[...]# dnf install epel-release
[...]# dnf install wine

これで、WindowsのNotepadやExplorerは、それぞれ「wine notepad」、「wine explorer」コマンドを実行することで起動できます。
但し、PDF-XChange Viewerを起動しようとすると、以下のようにエラーとなってしまいます。

[... ダウンロード]$ wine PDFXVwer.exe
wine: Z:\home\user01\ダウンロード\PDFXVwer.exe の EXE フォーマットが不正です。
[... ダウンロード]$ LANG=wine PDFXVwer.exe
wine: Bad EXE format for Z:\home\user01\ダウンロード\PDFXVwer.exe.   ←英語のエラー表示
[... ダウンロード]$ wine64 PDFXVwer.exe
wine: Z:\home\user01\ダウンロード\PDFXVwer.exe の EXE フォーマットが不正です。  ←wine64でも同じエラー

以下のURLに「現時点では、いくつかの大きなバグのために多くの32 bit アプリケーションが64 bit wineprefixでは動きません」といった記載があります。これに該当するのかも知れません。
https://wiki.winehq.org/FAQ#How_do_I_create_a_32_bit_wineprefix_on_a_64_...
「At present there are some significant bugs that prevent many 32 bit applications from working in a 64 bit wineprefix.」

以下の手順2)のように、5.0のソースからビルドすると実行できます。

CentOS 8用のWine 5.0バイナリはまだ提供されていないようです。
Wineプロジェクト(WineHQ)がリリースしているのは、Ubuntu、DebianとFedora用のバイナリです。
https://wiki.winehq.org/Download

2) Wine 5.0のソースコードをコンパイルして利用する

Wine 5.0のソースのコンパイルは手作業でも出来るようですが、Eric Maという人が作成した「install-wine-i686-centos8.sh」というシェルスクリプトがGitHubに公開されているので、これを利用すると便利です。
https://www.systutorials.com/how-to-install-wine-32-bit-on-centos-8/
https://github.com/zma/usefulscripts/blob/master/script/install-wine-i68...

install-wine-i686-centos8.shは以下のように、必要な作業をすべてやってくれます。

  1. CentOSのアップデート
  2. ビルドに必要なパッケージのインストール
  3. ソースコードのダウンロード
  4. コンパイラgccなどのツールによるビルド

CentOSが最新でない場合はアップデートに時間が掛ります。
(私の場合、実行時のCentOSは8.1だったのですが、たくさんのパッケージがアップデートされて8.2になりました。相当な時間が掛りました。)
また、gccによるソースコードのコンパイルにも時間が掛ります。
私の場合、仮想CPUは4個、メモリは2GBを割り当てていたのですが、途中経過をモニターしていたら、メモリ約2GB、スワップ約2GBを使用していました。現在は仮想CPUは6個、メモリは4GBを割り当てています。

[...]# wget https://raw.githubusercontent.com/zma/usefulscripts/master/script/instal...
[...]# chmod 755 install-wine-i686-centos8.sh
[...]# ./install-wine-i686-centos8.sh
Hello there. Start to download, build and install wine 5.0 32-bit version...
Logs are in /tmp/install-wine.tqgVWU.log
Enabling needed repos and update...
Uninstall old wine if you have installed it...
...(途中省略)...
Download and unpack the wine source package...
--2020-06-18 19:32:57--  
http://dl.winehq.org/wine/source/5.0/wine-5.0.tar.xz
...(途中省略)...
wine-5.0.tar.xz     100%[===================>]  21.43M  9.39MB/s 時間 2.3s     
2020-06-18 19:32:59 (9.39 MB/s) - `wine-5.0.tar.xz' へ保存完了 [22469428/22469428]

Build wine...
   build wine64...
...(途中省略)...
   build wine32...
...(途中省略)...
Install wine...
   install wine32...
   install wine64...
Congratulation! All are done. Enjoy!

(/usr/localの下にインストールされます)
[...]# ls /usr/local/bin
function_grep.pl  widl              winebuild    winefile   wineserver
msidb             wine              winecfg      wineg++    wmc
msiexec           wine-preloader    wineconsole  winegcc    wrc
notepad           wine64            winecpp      winemaker 
regedit           wine64-preloader  winedbg      winemine
regsvr32          wineboot          winedump     winepath
[...]# ls -F /usr/local/lib
libwine.so@  libwine.so.1@  libwine.so.1.0*  wine/

以上の手順でWineのインストールは完了です。

但し、日本語フォントが入っていないので、日本語が表示できません。(日本語の文字のところは□になって表示されます)
winetricsというシェルスクリプトを使用し、「winetrics allfonts」コマンドで各種フォントをインストールします。
winetricsはcabextractを使用するのでこのパッケージもインストールします。
cabextractはWindowsが使用しているcabinet形式のアーカイブ(.cab)からファイルを抽出するコマンドです。

cabextractパッケージをインストールする。

[...]# wget https://pkgs.dyn.su/el8/base/x86_64/cabextract-1.9-2.el8.x86_64.rpm
[...]# rpm -ivh cabextract-1.9-2.el8.x86_64.rpm
[...]# rpm -qil cabextract
Name        : cabextract
Version     : 1.9
...(途中省略)...
URL         : http://www.cabextract.org.uk/
Summary     : Utility for extracting cabinet (.cab) archives
Description :
cabextract is a program which can extract files from cabinet (.cab)
archives.
/usr/bin/cabextract
...(途中省略)...
/usr/share/man/man1/cabextract.1.gz

winetricksコマンドを実行
https://github.com/Winetricks/winetricks

[...]# wget https://raw.githubusercontent.com/Winetricks/winetricks/master/src/winet...
[...]# chmod 755 winetricks
[...]# cp winetricks /usr/local/bin

以下は、Wineを使う一般ユーザで実行します。
[...]$ winetricks allfonts  ←WineにWindowsアプリや各種フォント(日本語フォントを含む)がインストールされます
[...]$ ls -F ~/.cache/winetricks/ ←ダウンロードしたファイルはキャッシュに置かれます
PowerPointViewer/  droid/    liberation/  sourcehansans/  track_usage  vlgothic/
baekmuk/           eufonts/  lucida/      tahoma/         uff/         wenquanyi/
corefonts/         ipamona/  opensymbol/  takao/   
[...]$ du -sh ~/.cache/winetricks/
279M	/home/user01/.cache/winetricks/

上記の「winetricks allfonts」を実行すると、最初の実行時はネットからダウンロードしてインストールするのでかなりの時間が掛ります。
ダウンロードしたファイルは~/.cache/winetricks/にキャッシュされるので、2回目の実行からはそれほど時間は掛りません。

これでWineに日本語フォントがインストールされ、以下のようにMSフォントはインストールした日本語フォントにマッピングされます。

    • MS Gothic ⇒ VL Gothic
    • MS Mincho ⇒ IPAMincho
    • MS PGothic ⇒ VL Gothic
    • MS PMincho ⇒ IPAMincho
    • MS UI Gothic ⇒ VL Gothic

「wine regedit」コマンドを実行して、フォントのマッピングを表示

マッピング先のフォントが正しくインストールされていない場合は日本語の文字は□になって表示されます。
マッピング先のフォントの種類が上記と異なっていた場合は字がかすれて見にくくなる場合があります。(仮想化環境のためかも。)

ユーザの~/.wineディレクトリの下にWindowsの疑似ファイルシステムが作成されます。

[... ~]$ du -sh ~/.wine
1.1G	/home/user01/.wine  ←Windowsアプリやフォントを追加でインストールすると増えていきます
[... ~]$ ls -F ~/.wine
dosdevices/  drive_c/  system.reg  user.reg  userdef.reg  winetricks.log
[... ~]$ ls -F ~/.wine/drive_c/
'Program Files'/  'Program Files (x86)'/   ProgramData/   users/   windows/
[... ~]$ cd ~/.wine/drive_c/windows/Fonts/  ←フォントディレクトリ
[... Fonts]$ ls ipa* takao* vl*   ←日本語フォントもインストールされています
ipag-mona.ttf    ipamp-mona.ttf     takaomincho.ttf        vl-pgothic-regular.ttf
ipagp-mona.ttf   takaoexgothic.ttf  takaopgothic.ttf
ipagui-mona.ttf  takaoexmincho.ttf  takaopmincho.ttf
ipam-mona.ttf    takaogothic.ttf    vl-gothic-regular.ttf
[... Fonts]$ du -sh .
277M	.

● PDF-XChange Viewer 2.5 のインストール

Tracker Software Products社のサイトからダウンロードします。
https://www.tracker-software.com/product/pdf-xchange-viewer

[... ダウンロード]$ ls -l PDFXVwer.exe
-rw-------. 1 user01 user01 18181936  6月 18 17:40 PDFXVwer.exe
[... ダウンロード]$ sum PDFXVwer.exe
56559 17756

[... ダウンロード]$ wine PDFXVwer.exe  ←Wine上でPDFXVwerを起動

(Wineには以下のようにインストールされました)
[... drive_c]$ pwd
/home/user01/.wine/drive_c
[... drive_c]$ ls -lh 'Program Files/Tracker Software/PDF Viewer/PDFXCview.exe'
-rwxrwxr-x. 1 user01 user01 16M 12月 13  2018 'Program Files/Tracker Software/PDF Viewer/PDFXCview.exe'

「wine PDFXVwer.exe」コマンドを最初に実行した時は、PDFXVwerがWineにインストールされてから起動します。
2回目の実行からは、単に起動します。

また、GNOMEデスクトップの[アクティビティ]のメニューに「お気に入り」として追加しておくと、このアイコンをクリックして起動できます。

編集するPDFはPDFXVwerのメニューから、[ファイル]⇒[開く]で選択するか、ファイルマネージャからWineの画面にドラッグ&ドロップすることもできます。

詳しい使い方はマニュアル(PDFVManual.pdf)に書かれています。
PDFXVwer.exeと同じく、以下の「Download」メニューから「Viewer Manual(PDF)」を選択するとダウンロード出来ます。
https://www.tracker-software.com/product/pdf-xchange-viewer