「Wine パッケージガイドライン」の版間の差分
(ページの作成:「Category:パッケージ開発 Category:Wine en:Wine package guidelines it:Wine package guidelines ru:Wine package guidelines {{Package Guidelines}}...」) |
(→ライセンス: 翻訳を修正) |
||
(4人の利用者による、間の13版が非表示) | |||
1行目: | 1行目: | ||
[[Category:パッケージ開発]] |
[[Category:パッケージ開発]] |
||
− | [[Category: |
+ | [[Category:エミュレーション]] |
[[en:Wine package guidelines]] |
[[en:Wine package guidelines]] |
||
− | [[ |
+ | [[pt:Wine package guidelines]] |
− | [[ru:Wine package guidelines]] |
||
{{Package Guidelines}} |
{{Package Guidelines}} |
||
10行目: | 9行目: | ||
== 確認事項 == |
== 確認事項 == |
||
+ | * ライセンス: ライセンスがプログラムの再配布を許可しているか。 |
||
− | * License: does the license allow the program to be repackaged? |
||
+ | * インストーラー: ユーザーが特に操作しなくてもプログラムをインストールできるか。インストーラー不要のバージョンは存在するか。 |
||
− | * Installer: is it possible to install the program silently? Even better, does an installer-less version exist? |
||
+ | * ポータビリティ: プログラムはポータブルか。ファイルシステムを汚さないか。 |
||
− | * Portability and cleanness: is the program portable? It is clean? |
||
+ | プログラムがポータブルかどうかというのはレジストリやプログラムディレクトリの外に書き込みを行わないことを意味します。ファイルシステムを汚さないプログラムとはユーザーフォルダに設定を書き込むプログラムを意味します。両方の条件を満たすプログラム (例: 設定をどこにも書き込まない) もあれば、どちらにも当てはまらないプログラも存在します (例: あらゆるところに書き込みを行う)。 |
||
− | Here we mean a program is portable if it ''never'' writes in the registry or outside its directory; we mean a program is clean if it ''never'' writes in its directory, but it may write its settings in the user folder. A program can be also both (e.g., it never writes settings) or neither (e.g., it writes in its directory, it writes around, it writes in the registry...) |
||
=== ライセンス === |
=== ライセンス === |
||
+ | 通常、ライセンスはインストールディレクトリにテキストファイルの形で存在します。見つけられない場合、インストール時の表示を確認してください。大抵のライセンスはファイルの削除や再パッケージを許可していません。前者の場合、[[makepkg]] の処理によってファイルが消えないように注意する必要があります。{{ic|post_install}} で無駄なファイルを削除してしまう可能性があるためです (例: アンインストーラー)。後者の場合、インストールは全て {{ic|post_install}} で行う必要があります。{{ic|build}} ではインストールファイルのコピーのみが行われます。 |
||
− | Usually licenses are in a text file in the install directory. If you can't find it, try following the screens during installation. If nothing is said about repackaging, go on. The author does not care. Otherwise the license usually does not allow removing files or does not allow repackaging at all. In the former case just be careful that the [[makepkg]] process does not lose any file, you may delete unneeded files (e.g., uninstallers) in the {{ic|post_install}} phase; in the latter case all the installing process must be done in the {{ic|post_install}} phase. The {{ic|build}} phase will only be for copying the install files. |
||
=== インストーラ === |
=== インストーラ === |
||
+ | Windows インストーラーよりも {{ic|.zip}} などの圧縮ファイルのほうがパッケージにするのが簡単です。プログラムがインストーラーによってしか配布されていない場合、インターネットを検索してソフトウェアをユーザーの操作なしでインストールする方法がないか探してください。検索する場所としては [http://unattended.msfn.org/unattended.xp/page/list/switch/ MSFN] が良いでしょう。方法が見つからない場合、[[ノンフリーアプリケーションパッケージガイドライン#解凍|解凍ユーティリティ]]を使ってインストーラーを解凍できないか試してみてください。 |
||
− | It is much easier to work with compressed files like {{ic|.zip}} than with Windows installers. If you have no choice, since the author insists on distributing its program with an installer, search the Internet for if it is possible to silently install the software. [http://unattended.msfn.org/unattended.xp/page/list/switch/ MSFN] is usually a good place to search. If you cannot find a way, try to open the installer with different [[ノンフリーアプリケーションパッケージガイドライン#Unpacking|unpacking utilities]]; it may work. |
||
=== ポータビリティ === |
=== ポータビリティ === |
||
+ | ポータブルなプログラムであれば [[Wine]] でファイルシステムをエミュレートする必要はありません。パッケージングするプログラムにポータブル版が存在しないか [http://www.portablefreeware.com Portable Freeware] で確認してみてください。 |
||
− | A portable program does not need its own [[Wine]] emulated file system, so check in [http://www.portablefreeware.com Portable Freeware] if the program you are packaging is portable. |
||
== ガイドライン == |
== ガイドライン == |
||
+ | Windows のプログラムをパッケージ化するということは、プログラムのファイルを JVM と Java のバイトコードと同じように、Wine が解釈するただのデータとして使うことです。 |
||
− | The idea behind packaging a Windows program is to use the program's files as mere data that Wine will interpret, just like JVM and Java bytecode. |
||
+ | したがって、プログラムは {{ic|/usr/share/"$pkgname"}} にインストールし、プログラムは必要なものを全て {{ic|"$HOME"/."$pkgname"}} に書き込むようにします。{{ic|/usr/bin/"$pkgname"}} に保存したスクリプトを使って、フォルダを作成したり必要な準備を行って、それからプログラムを起動します。 |
||
− | So we will install the program in {{ic|/usr/share/"$pkgname"}} and the program will write all what it needs in {{ic|"$HOME"/."$pkgname"}}. Everything will be prepared by a small script saved in {{ic|/usr/bin/"$pkgname"}} that will create the folder, prepare it if needed, and finally start the program. |
||
+ | 次のセクションでは必要なステップについて説明します。 |
||
− | In the next sections we will talk about every step. |
||
+ | この方法ではあれば個々のユーザーがそれぞれ設定を保持することができ、他のユーザーに干渉することがありません。 |
||
− | This way every user will have their own settings and their decisions will not bother other users. |
||
=== インストール === |
=== インストール === |
||
+ | プログラムにインストーラが存在しない場合、インストールはファイルの解凍にすぎません。{{ic|"$pkgdir"/usr/share/$pkgname}} に展開して、パーミッションを適切に設定します。以下のコマンドでパーミッションを確認できます: |
||
− | If the program has no installer, the installation is a mere decompression of a file; unpack it to {{ic|"$pkgdir"/usr/share/$pkgname}}, making sure that the permissions are correct. These commands will do: |
||
$ find "$pkgdir"/usr/share -type f -exec chmod 644 "{}" \; |
$ find "$pkgdir"/usr/share -type f -exec chmod 644 "{}" \; |
||
$ find "$pkgdir"/usr/share -type d -exec chmod 755 "{}" \; |
$ find "$pkgdir"/usr/share -type d -exec chmod 755 "{}" \; |
||
+ | |||
− | If the program cannot be installed the easy way, you need to create a Wine environment: |
||
+ | プログラムを簡単にインストールできない場合、Wine 環境を作成する必要があります: |
||
$ install -m755 -d "$srcdir"/tmp "$srcdir"/tmp/env "$srcdir"/tmp/local |
$ install -m755 -d "$srcdir"/tmp "$srcdir"/tmp/env "$srcdir"/tmp/local |
||
$ export WINEPREFIX="$srcdir"/tmp/env |
$ export WINEPREFIX="$srcdir"/tmp/env |
||
$ export XDG_DATA_HOME="$srcdir"/tmp/local |
$ export XDG_DATA_HOME="$srcdir"/tmp/local |
||
$ wine "$srcdir"/installer.exe /silentoptions |
$ wine "$srcdir"/installer.exe /silentoptions |
||
+ | |||
− | We have not discussed portability yet, but if your program does not need the registry keys it modified, you can just copy the directory from the: |
||
+ | 移植性についてはまだ説明していませんが、プログラムが変更したレジストリキーが必要ない場合は、次の場所からディレクトリをコピーするだけで済みます。 |
||
"$srcdir"/tmp/env/drive_c/Program\ Files/programname |
"$srcdir"/tmp/env/drive_c/Program\ Files/programname |
||
+ | |||
− | Otherwise you need to copy all the registry files too and eventually the files the program installed around. The {{ic|"$srcdir"/tmp/local}} will contains menu icons and desktop files, you may want to copy them in the package. If there does not exist a way to install the program silently... Maybe you can make a {{ic|.tar.gz}} file and upload it somewhere? If nothing automated is possible, force the user to follow the installer and hope he does not mess up the installation, write some checks before blindly copying a folder that may not exist (e.g., the user pressed 'Cancel'.) |
||
+ | それ以外の場合は、すべてのレジストリファイルもコピーし、最終的にはプログラムがインストールしたファイルもコピーする必要があります。{{ic|"$srcdir"/tmp/local}} にはメニューアイコンとデスクトップファイルが含まれているため、これらをパッケージにコピーするとよいでしょう。プログラムをサイレントインストールする方法がない場合は、{{ic|.tar.gz}} ファイルを作成して、どこかにアップロードして下さい。自動化が不可能な場合は、ユーザーにインストーラーに従うよう強制し、インストールが台無しにならないことを願い、存在しない可能性のあるフォルダーをやみくもにコピーする前に (例えば、ユーザーが'Cancel'を押したなど)、いくつかのチェックを書いてください。 |
||
=== /usr/bin スクリプト === |
=== /usr/bin スクリプト === |
||
+ | スクリプトでは設定フォルダを用意してプログラムを起動します。プログラムがポータブルな場合、以下のようになります: |
||
− | This script prepares the settings folder and starts the program. If your program is portable, it will look like this: |
||
#!/bin/bash |
#!/bin/bash |
||
62行目: | 64行目: | ||
fi |
fi |
||
WINEDEBUG=-all wine "$HOME"/.programname/programname "$@" |
WINEDEBUG=-all wine "$HOME"/.programname/programname "$@" |
||
+ | |||
− | If it is clean, it will look like this: |
||
+ | クリーンな場合は、次のようになります。 |
||
#!/bin/bash |
#!/bin/bash |
||
export WINEPREFIX="$HOME"/.programname/wine |
export WINEPREFIX="$HOME"/.programname/wine |
||
72行目: | 75行目: | ||
WINEDEBUG=-all wine /usr/share/programname "$@" |
WINEDEBUG=-all wine /usr/share/programname "$@" |
||
+ | ご覧のとおり、2 番目のケースでは環境の準備がありません。実際、クリーンなアプリケーションはフォルダーに書き込む必要がないため、{{ic|/usr/share}} から直接起動され、その設定はエミュレートされたファイルシステムのどこかに書き込まれます。 |
||
− | As you can see, in the second case there is no environment preparation. In fact a clean application will be started directly from {{ic|/usr/share}} since it will not need to write in its folder, so its settings will be written somewhere in the emulated file system. |
||
+ | アプリケーションがクリーンでもポータブルでもない場合は、2 つのアイデアを組み合わせる必要があります。 |
||
− | If the application is neither clean neither portable the two ideas must be combined. |
||
+ | アプリケーションが設定をまったく書き込まない場合は、{{ic|if}} をスキップして、{{ic|/usr/share}} から起動します。 |
||
− | If the application does not write settings at all, skip the {{ic|if}} and start it from {{ic|/usr/share}}. |
||
+ | 環境を準備するタスクはアプリケーションによって大きく異なる場合がありますが、次の経験則に従ってください。: |
||
− | The task of preparing the environment may differ greatly between applications, but follow these rules of thumb: |
||
+ | プログラムの場合: |
||
− | If the program: |
||
+ | * ファイルを読み、シンボリックリンクする必要がある。 |
||
− | * just needs to read a file, symlink it. |
||
+ | * ファイルに書き込む必要がある場合は、それをコピーする。 |
||
− | * needs to write in a file, copy it. |
||
+ | * ファイルを使用しない場合は、無視する。 |
||
− | * does not use a file, ignore it. |
||
− | + | もちろん、最小値は {{ic|1=WINEDEBUG=-all wine /usr/share/programname "$@"}} を開始するだけです。 |
|
− | + | 通常、環境は {{ic|"$HOME"/.''programname''}} ディレクトリと {{ic|/usr/share/''programname''}} ファイルをシンボリックリンクすることで作られます。しかし、Windows のプログラムによってはパスが非常に気まぐれなので、{{ic|"$HOME"/.''プログラムの名前''/wine/drive_c/Program Files/''プログラムの名前''}} ディレクトリに直接シンボリックリンクする必要があるかもしれません。 |
|
+ | もちろん、これらは Linux 環境に Win32 アプリケーションを統合するための単なるアイデアです。知性と勇気を忘れないでください。 |
||
− | Of course those are just ideas to integrate Win32 applications in the Linux environment, do not forget your intelligence and gumption. |
||
+ | たとえば、[[Wikipedia:ja:μTorrent|μTorrent]] はデフォルトではクリーンなアプリケーションですが、簡単な手順でポータブルアプリケーションとして使用できます。これは単一のファイルであり、wine 環境を作成するのにかなり小さいため (約 5MB)、おそらくやりすぎです。実行可能ファイルをシンボリックリンクし、空の ''settings.dat'' を作成して、それを {{ic|$HOME/.utorrent}} ディレクトリに移植可能に使用することをお勧めします。さらに、ユーザーは {{ic|.utorrent}} フォルダにアクセスするだけで、ダウンロードした {{ic|.torrent}} ファイルのコピーを確認できるという利点もあります。 |
||
− | As example, [[Wikipedia:ja:μTorrent|μTorrent]] is by default a clean application, but with a easy step can be used as a portable one. Since it is a single file and it is pretty small creating its wine environment (about 5MB) it is probably an overkill. It is better to symlink the executable, create the empty '''settings.dat''' in order to use it portable in the {{ic|$HOME/.utorrent}} directory. With the added advantage that just visiting {{ic|.utorrent}} folder an user can see a copy of the {{ic|.torrent}} files she downloaded. |
||
=== UnionFsFuse === |
=== UnionFsFuse === |
||
− | + | {{Pkg|unionfs-fuse}} パッケージで [http://podgorny.cz/moin/UnionFsFuse UnionFsFuse] プログラムを使うことができます。UnionFsFuse はベースディレクトリを {{ic|/usr/share}} に保持して、書き込みに必要なアプリケーションのファイルのコピーを {{ic|$HOME/.programname}} に自動的に配置します。 |
|
+ | UnionFsFuse を使用することは追加の依存関係を意味し、すべてのユーザーがロードするとは限らないヒューズモジュールが必要になります。 ただし、アプリケーションに多くのシンボリックリンクが必要な場合、またはアプリケーションに何を記述する必要があるか正確に不明な場合には、これを行う価値があるかもしれません。UnionF を正しくマウントおよびアンマウントするようにしてください。 |
||
− | Using UnionFsFuse means an additional dependency and it requires the fuse module that not all users might load. Yet, it might be worthwhile if the application would need lots of symlinking or if it is unclear exactly what it needs to be written. Just ensure to mount and unmount the UnionFs correctly. |
||
− | Among others, the {{AUR|GeneRally}} package uses this approach. |
||
== サンプル == |
== サンプル == |
||
− | + | [http://www.emule-project.net/ eMule] 用のパッケージを作成します。[http://www.portablefreeware.com/?q=emule Portable Freeware] によると、eMule はレジストリにいくつかの (役に立たない) キーを書き込むため、完全に移植可能ではありません。 |
|
+ | その一方で、設定ファイルを書き込んだり、ダウンロードファイルをインストールフォルダに置いたりするので、クリーンではありません。 |
||
− | On the other hand, it is not clean either since it writes its configuration files and puts its downloads in its installation folder. |
||
− | + | ここに、[http://prdownloads.sourceforge.net/emule/eMule0.49b.zip インストーラーなしのバージョン] があります。 |
|
− | + | 以下で、[[PKGBUILD]] を作成します。唯一の依存関係は {{Pkg|wine}} です。{{ic|md5sums}} を追加する必要があります。 |
|
{{bc|<nowiki> |
{{bc|<nowiki> |
||
138行目: | 140行目: | ||
</nowiki>}} |
</nowiki>}} |
||
+ | ここで、'''emule''' ファイルを作成します。これは、{{ic|build}} に従って、{{ic|/usr/bin}} にコピーされてに実行可能になります。 |
||
− | Now we make our '''emule''' file, which according to {{ic|build}}, will be copied and made executable in {{ic|/usr/bin}}. |
||
#!/bin/bash |
#!/bin/bash |
||
156行目: | 158行目: | ||
wine "$HOME"/.emule/emule "$@" |
wine "$HOME"/.emule/emule "$@" |
||
+ | より正確にしたい場合は、wine がメニューを台無しにするため、検索履歴を無効にする必要があることをユーザーに伝えるメッセージを {{ic|.install}} ファイルに追加できます。最適な設定を含むデフォルトの設定ファイルを提供することもできます。以上です... {{ic|$ makepkg}} を実行し、パッケージフォルダーを確認してインストールします。 |
||
− | If you want to be more precise, you may add a message in the {{ic|.install}} file telling the user that they should disable search history since wine messes up that menu. You may even provide a default config file with the best settings. And that's it... run {{ic|$ makepkg}}, check the package folder to be sure, and install. |
||
− | == Gecko == |
+ | == Gecko と Mono == |
+ | そのソフトウェアが .NET ランタイム (パッケージ {{Pkg|wine-gecko}} および {{Pkg|wine-mono}}) のブラウザを必要とすることが明確にわかっていない限り、Gecko/Mono のデフォルトの wine インストール プロンプトは望ましくありません。 |
||
− | Unless you know for sure, that software require browser of .NET runtime (packages {{Pkg|wine_gecko}} and {{Pkg|wine-mono}} in official repositories), default wine installation prompts for Gecko/Mono are undesirable. |
||
+ | |||
+ | HTML レンダリング、バイトコード サポート、およびダイアログを無効にするには、スクリプトで dloverride を使用する必要があります。 |
||
+ | |||
+ | Gecko の場合: |
||
− | To disable HTML rendering, bytecode support and the dialogs, you need to use a dlloverride in your script. |
||
− | For Gecko: |
||
export WINEDLLOVERRIDES="mshtml=" |
export WINEDLLOVERRIDES="mshtml=" |
||
+ | |||
− | For Mono: |
||
+ | Mono の場合: |
||
+ | |||
export WINEDLLOVERRIDES="mscoree=" |
export WINEDLLOVERRIDES="mscoree=" |
||
+ | |||
− | For both: |
||
+ | 両方の場合: |
||
+ | |||
export WINEDLLOVERRIDES="mscoree,mshtml=" |
export WINEDLLOVERRIDES="mscoree,mshtml=" |
||
− | + | {{ic|winecfg}} で無効化することもできます。mscoree/mshtml を Disable に設定してください。 |
2023年11月4日 (土) 21:48時点における最新版
32ビット – CLR – クロス – Eclipse – Electron – Free Pascal – GNOME – Go – Haskell – Java – KDE – カーネル – Lisp – MinGW – Node.js – ノンフリー – OCaml – Perl – PHP – Python – R – Ruby – Rust – VCS – ウェブ – Wine
Windows プログラムにも Linux で役に立つものがたくさんあります。Windows プログラムのパッケージも作ることが可能です。オペレーティングシステムの違いがあるためにやや面倒なところがあります。このガイドラインでは Win32 バイナリについて記述します。ソースが利用できるプロジェクトが Linux に移植されているためです。
目次
確認事項
- ライセンス: ライセンスがプログラムの再配布を許可しているか。
- インストーラー: ユーザーが特に操作しなくてもプログラムをインストールできるか。インストーラー不要のバージョンは存在するか。
- ポータビリティ: プログラムはポータブルか。ファイルシステムを汚さないか。
プログラムがポータブルかどうかというのはレジストリやプログラムディレクトリの外に書き込みを行わないことを意味します。ファイルシステムを汚さないプログラムとはユーザーフォルダに設定を書き込むプログラムを意味します。両方の条件を満たすプログラム (例: 設定をどこにも書き込まない) もあれば、どちらにも当てはまらないプログラも存在します (例: あらゆるところに書き込みを行う)。
ライセンス
通常、ライセンスはインストールディレクトリにテキストファイルの形で存在します。見つけられない場合、インストール時の表示を確認してください。大抵のライセンスはファイルの削除や再パッケージを許可していません。前者の場合、makepkg の処理によってファイルが消えないように注意する必要があります。post_install
で無駄なファイルを削除してしまう可能性があるためです (例: アンインストーラー)。後者の場合、インストールは全て post_install
で行う必要があります。build
ではインストールファイルのコピーのみが行われます。
インストーラ
Windows インストーラーよりも .zip
などの圧縮ファイルのほうがパッケージにするのが簡単です。プログラムがインストーラーによってしか配布されていない場合、インターネットを検索してソフトウェアをユーザーの操作なしでインストールする方法がないか探してください。検索する場所としては MSFN が良いでしょう。方法が見つからない場合、解凍ユーティリティを使ってインストーラーを解凍できないか試してみてください。
ポータビリティ
ポータブルなプログラムであれば Wine でファイルシステムをエミュレートする必要はありません。パッケージングするプログラムにポータブル版が存在しないか Portable Freeware で確認してみてください。
ガイドライン
Windows のプログラムをパッケージ化するということは、プログラムのファイルを JVM と Java のバイトコードと同じように、Wine が解釈するただのデータとして使うことです。
したがって、プログラムは /usr/share/"$pkgname"
にインストールし、プログラムは必要なものを全て "$HOME"/."$pkgname"
に書き込むようにします。/usr/bin/"$pkgname"
に保存したスクリプトを使って、フォルダを作成したり必要な準備を行って、それからプログラムを起動します。
次のセクションでは必要なステップについて説明します。
この方法ではあれば個々のユーザーがそれぞれ設定を保持することができ、他のユーザーに干渉することがありません。
インストール
プログラムにインストーラが存在しない場合、インストールはファイルの解凍にすぎません。"$pkgdir"/usr/share/$pkgname
に展開して、パーミッションを適切に設定します。以下のコマンドでパーミッションを確認できます:
$ find "$pkgdir"/usr/share -type f -exec chmod 644 "{}" \; $ find "$pkgdir"/usr/share -type d -exec chmod 755 "{}" \;
プログラムを簡単にインストールできない場合、Wine 環境を作成する必要があります:
$ install -m755 -d "$srcdir"/tmp "$srcdir"/tmp/env "$srcdir"/tmp/local $ export WINEPREFIX="$srcdir"/tmp/env $ export XDG_DATA_HOME="$srcdir"/tmp/local $ wine "$srcdir"/installer.exe /silentoptions
移植性についてはまだ説明していませんが、プログラムが変更したレジストリキーが必要ない場合は、次の場所からディレクトリをコピーするだけで済みます。
"$srcdir"/tmp/env/drive_c/Program\ Files/programname
それ以外の場合は、すべてのレジストリファイルもコピーし、最終的にはプログラムがインストールしたファイルもコピーする必要があります。"$srcdir"/tmp/local
にはメニューアイコンとデスクトップファイルが含まれているため、これらをパッケージにコピーするとよいでしょう。プログラムをサイレントインストールする方法がない場合は、.tar.gz
ファイルを作成して、どこかにアップロードして下さい。自動化が不可能な場合は、ユーザーにインストーラーに従うよう強制し、インストールが台無しにならないことを願い、存在しない可能性のあるフォルダーをやみくもにコピーする前に (例えば、ユーザーが'Cancel'を押したなど)、いくつかのチェックを書いてください。
/usr/bin スクリプト
スクリプトでは設定フォルダを用意してプログラムを起動します。プログラムがポータブルな場合、以下のようになります:
#!/bin/bash unset WINEPREFIX if [ ! -d "$HOME"/.programname ] ; then mkdir -p "$HOME"/.programname #prepare the environment here fi WINEDEBUG=-all wine "$HOME"/.programname/programname "$@"
クリーンな場合は、次のようになります。
#!/bin/bash export WINEPREFIX="$HOME"/.programname/wine if [ ! -d "$HOME"/.programname ] ; then mkdir -p "$HOME"/.programname/wine wineboot -u #copy the registry file if needed fi WINEDEBUG=-all wine /usr/share/programname "$@"
ご覧のとおり、2 番目のケースでは環境の準備がありません。実際、クリーンなアプリケーションはフォルダーに書き込む必要がないため、/usr/share
から直接起動され、その設定はエミュレートされたファイルシステムのどこかに書き込まれます。
アプリケーションがクリーンでもポータブルでもない場合は、2 つのアイデアを組み合わせる必要があります。
アプリケーションが設定をまったく書き込まない場合は、if
をスキップして、/usr/share
から起動します。
環境を準備するタスクはアプリケーションによって大きく異なる場合がありますが、次の経験則に従ってください。: プログラムの場合:
- ファイルを読み、シンボリックリンクする必要がある。
- ファイルに書き込む必要がある場合は、それをコピーする。
- ファイルを使用しない場合は、無視する。
もちろん、最小値は WINEDEBUG=-all wine /usr/share/programname "$@"
を開始するだけです。
通常、環境は "$HOME"/.programname
ディレクトリと /usr/share/programname
ファイルをシンボリックリンクすることで作られます。しかし、Windows のプログラムによってはパスが非常に気まぐれなので、"$HOME"/.プログラムの名前/wine/drive_c/Program Files/プログラムの名前
ディレクトリに直接シンボリックリンクする必要があるかもしれません。
もちろん、これらは Linux 環境に Win32 アプリケーションを統合するための単なるアイデアです。知性と勇気を忘れないでください。
たとえば、μTorrent はデフォルトではクリーンなアプリケーションですが、簡単な手順でポータブルアプリケーションとして使用できます。これは単一のファイルであり、wine 環境を作成するのにかなり小さいため (約 5MB)、おそらくやりすぎです。実行可能ファイルをシンボリックリンクし、空の settings.dat を作成して、それを $HOME/.utorrent
ディレクトリに移植可能に使用することをお勧めします。さらに、ユーザーは .utorrent
フォルダにアクセスするだけで、ダウンロードした .torrent
ファイルのコピーを確認できるという利点もあります。
UnionFsFuse
unionfs-fuse パッケージで UnionFsFuse プログラムを使うことができます。UnionFsFuse はベースディレクトリを /usr/share
に保持して、書き込みに必要なアプリケーションのファイルのコピーを $HOME/.programname
に自動的に配置します。
UnionFsFuse を使用することは追加の依存関係を意味し、すべてのユーザーがロードするとは限らないヒューズモジュールが必要になります。 ただし、アプリケーションに多くのシンボリックリンクが必要な場合、またはアプリケーションに何を記述する必要があるか正確に不明な場合には、これを行う価値があるかもしれません。UnionF を正しくマウントおよびアンマウントするようにしてください。
サンプル
eMule 用のパッケージを作成します。Portable Freeware によると、eMule はレジストリにいくつかの (役に立たない) キーを書き込むため、完全に移植可能ではありません。
その一方で、設定ファイルを書き込んだり、ダウンロードファイルをインストールフォルダに置いたりするので、クリーンではありません。
ここに、インストーラーなしのバージョン があります。
以下で、PKGBUILD を作成します。唯一の依存関係は wine です。md5sums
を追加する必要があります。
# Maintainer: You <youremail> pkgname=emule pkgver=0.49b pkgrel=1 pkgdesc="One of the biggest and most reliable peer-to-peer file sharing clients around the world." arch=(i686 x86_64) url="http://www.emule-project.net" license=('GPL') depends=() depends=(wine) makedepends=(unzip) source=(emule http://prdownloads.sourceforge.net/emule/eMule$pkgver.zip) noextract=() options=(!strip) build() { rm -f src/eMule"$pkgver"/license* #It is GPL install -d -m755 pkg/usr/share/emule cp -ra src/eMule"$pkgver"/* pkg/usr/share/emule find pkg/usr/share/emule -type d -exec chmod 755 "{}" \; find pkg/usr/share/emule -type f -exec chmod 644 "{}" \; install -d -m755 pkg/usr/bin install -m755 emule pkg/usr/bin }
ここで、emule ファイルを作成します。これは、build
に従って、/usr/bin
にコピーされてに実行可能になります。
#!/bin/bash export WINEARCH=win32 WINEPREFIX="$HOME/.emule/wine" if [ ! -d "$HOME"/.emule ] ; then mkdir -p "$HOME"/.emule/wine || exit 1 #Each user will have its config, we copy the default file since emule #needs to write here. cp -r /usr/share/emule/config "$HOME"/.emule || exit 1 #We symlink the files emule needs to read to work ln -s /usr/share/emule/emule.exe "$HOME"/.emule/emule || exit 1 ln -s -T /usr/share/emule/lang "$HOME"/.emule/lang || exit 1 ln -s -T /usr/share/emule/webserver "$HOME"/.emule/webserver || exit 1 fi wine "$HOME"/.emule/emule "$@"
より正確にしたい場合は、wine がメニューを台無しにするため、検索履歴を無効にする必要があることをユーザーに伝えるメッセージを .install
ファイルに追加できます。最適な設定を含むデフォルトの設定ファイルを提供することもできます。以上です... $ makepkg
を実行し、パッケージフォルダーを確認してインストールします。
Gecko と Mono
そのソフトウェアが .NET ランタイム (パッケージ wine-gecko および wine-mono) のブラウザを必要とすることが明確にわかっていない限り、Gecko/Mono のデフォルトの wine インストール プロンプトは望ましくありません。
HTML レンダリング、バイトコード サポート、およびダイアログを無効にするには、スクリプトで dloverride を使用する必要があります。
Gecko の場合:
export WINEDLLOVERRIDES="mshtml="
Mono の場合:
export WINEDLLOVERRIDES="mscoree="
両方の場合:
export WINEDLLOVERRIDES="mscoree,mshtml="
winecfg
で無効化することもできます。mscoree/mshtml を Disable に設定してください。