Wine package guidelines (Magyar)
Sok Windows szoftver még mindig hasznos lehet Linux alatt, ezért érdemes lehet szoftvercsomagot készíteni hozzájuk. A két operációs rendszer közötti különbségek miatt ez a feladat kissé összetett. Ebben az útmutatóban a Win32 bináris szoftverekről lesz szó, mivel azok a projektek, amelyek forráskódja elérhető, általában át vannak portolva Linuxra.
Dolgok, amiket feltétlenül ellenőrizni kell
- Licenc: Engedélyezi-e a licenc, hogy a szoftvert újracsomagolják?
- Telepítő: Lehetséges-e a programot csendesen telepíteni? Még jobb kérdés, hogy létezik-e telepítő nélküli verzió?
- Hordozhatóság és tisztaság: Hordozható-e a szoftver? Tiszta-e?
Itt azt értjük hordozhatónak (portable), ha egy szoftver soha nem ír a rendszerleíró adatbázisba vagy a saját könyvtárán kívülre. Tisztának pedig azt értjük, hogy ha soha nem ír a saját könyvtárába, de a beállításait elmentheti a felhasználói könyvtárba. Egy szoftver lehet mindkettő (például soha nem ír beállításokat), vagy egyik sem (például ír a saját könyvtárába, máshová is ír, valamint a rendszerleíró adatbázisba is ír...).
Licenc
Általában a licencek egy szövegfájlban találhatóak a telepítési könyvtárban. Ha Ön nem találja, akkor próbálja követni a képernyőn megjelenő lépéseket a telepítés során. Ha semmi nincs említve az újracsomagolással kapcsolatban, akkor folytassa az újracsomagolás műveletét. A szerzőt nem érdekli. Ellenkező esetben a licenc általában nem engedi a fájlok eltávolítását, vagy egyáltalán nem engedi az újracsomagolást. Az első esetben csak ügyeljen arra, hogy a makepkg folyamat ne veszítsen el egyetlen fájlt sem. A felesleges fájlokat (például eltávolítókat) törölheti a post_install fázisban. A második esetben az egész telepítési folyamatot a post_install fázisban kell elvégezni. A build fázis kizárólag a telepítési fájlok másolására szolgál.
Telepítő
Sokkal könnyebb tömörített fájlokkal, például .zip fájlokkal dolgozni, mint ha a Windows telepítőfájlokkal dolgoznánk. Ha Önnek nincs más választása, akkor mivel a szerző ragaszkodik ahhoz, hogy a szoftvert telepítővel terjessze, keressen rá az interneten arra, hogy lehetséges-e a szoftvert csendesen telepíteni. Az MSFN általában jó hely a kereséshez. Ha nem talál megoldást, akkor próbálja meg megnyitni a telepítőt különböző kicsomagoló segédszoftverekkel. Működhet.
Hordozhatóság és tisztaság
Egy hordozható szoftvernek nincs szüksége saját Wine emulált fájlrendszerre, ezért ellenőrizze a Portable Freeware oldalon, hogy az Ön által csomagolt szoftver hordozható-e.
Röviden az útmutató
A Windows-szoftver csomagolásának lényege az, hogy a szoftver fájljait puszta adatként használjuk, amelyet a Wine értelmez, hasonlóan ahhoz, ahogyan a JVM (Java virtuális gép) kezeli a Java bájtkódot.
A szoftvert tehát a /usr/share/"$pkgname" könyvtárba fogjuk telepíteni, és a szoftver minden szükséges fájlt a "$HOME"/."$pkgname" könyvtárban fog írni. Mindezt egy kis szkriptfájl készíti elő, amely a /usr/bin/"$pkgname" helyen lesz elmentve. Ez a szkriptfájl létrehozza a könyvtárat, ha szükséges, akkor előkészíti a könyvtárat, majd végül elindítja a szoftvert.
A következő részekben minden egyes lépésről beszélni fogunk.
Így minden felhasználónak saját beállításai lesznek, és a döntései nem zavarják a többi felhasználót.
Telepítés
Ha a szoftvernek nincs telepítője, akkor a telepítés pusztán egy fájl kibontásából áll. Csomagolja ki a szoftvert a "$pkgdir"/usr/share/$pkgname könyvtárba, ügyelve arra, hogy a jogosultságok helyesek legyenek. Ezek a parancsok megteszik a leírtakat:
$ find "$pkgdir"/usr/share -type f -exec chmod 644 "{}" \;
$ find "$pkgdir"/usr/share -type d -exec chmod 755 "{}" \;
Ha a szoftver nem telepíthető egyszerű módon, akkor Önnek létre kell hoznia egy Wine környezetet:
$ 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
Még nem tárgyaltuk a hordozhatóságot, de ha az Ön szoftverének nincs szüksége a módosított rendszerleíró kulcsokra, akkor egyszerűen átmásolhatja a könyvtárat innen:
"$srcdir"/tmp/env/drive_c/Program\ Files/szoftverneve
Ellenkező esetben Önnek az összes rendszerleíró fájlt is át kell másolnia, valamint azokat a fájlokat, amelyeket a szoftver telepített. A "$srcdir"/tmp/local könyvtár menüikonokat és asztali fájlokat fog tartalmazni, amelyeket Önnek érdemes a csomagba belemásolnia. Ha nincs mód a szoftver csendes telepítésére... Esetleg Ön elkészíthet egy .tar.gz fájlt, és azt feltöltheti valahová. Ha semmilyen automatizálás nem lehetséges, akkor kényszerítse a felhasználót a telepítő követésére, és remélje, hogy nem rontják el a telepítést. Írjon ellenőrzéseket, mielőtt vakon másolna egy könyvtárat, amely esetleg nem létezik (például a felhasználó megnyomta a "Mégse" gombot).
Az /usr/bin szkriptfájl
Ez a parancsfájl előkészíti a beállítások könyvtárát, és elindítja a szoftvert. Ha az Ön szoftvere hordozható, akkor a szkriptfájl így fog kinézni:
#!/bin/bash unset WINEPREFIX if [ ! -d "$HOME"/.programname ] ; then mkdir -p "$HOME"/.programname #prepare the environment here fi WINEDEBUG=-all wine "$HOME"/.programname/programname "$@"
Ha tiszta, akkor így fog kinézni:
#!/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 "$@"
Amint látható, a második esetben nincs környezet-előkészítés. Valójában egy tiszta alkalmazás indul közvetlenül a /usr/share könyvtárból, mivel nem lesz szüksége arra, hogy a saját könyvtárába beleírjon, így az alkalmazás beállításai az emulált fájlrendszerben fognak tárolódni.
Ha az alkalmazás se nem tiszta, se nem hordozható, akkor a kettő ötletet kombinálni kell.
Ha az alkalmazás egyáltalán nem ír beállításokat, akkor Ön hagyja ki a if részt, és indítsa el a /usr/share résztől.
A környezet előkészítésének feladata alkalmazások között nagymértékben eltérhet, de kövesse az alábbi ökölszabályokat: Ha a szoftvernek:
- Kizárólag olvasnia kell egy fájlt, akkor hozzon létre szimbolikus linket.
- Írnia kell egy fájlba, akkor másolja azt.
- Nem használ fájlt, akkor hagyja figyelmen kívül.
Természetesen a minimum egyszerűen az WINEDEBUG=-all wine /usr/share/programname "$@" elindítása.
Általában a környezetet szimbolikus linkek létrehozásával alakítják ki a "$HOME"/.szoftverneve könyvtár és a /usr/share/szoftverneve fájlok között. Mivel azonban egyes Windows szoftverek nagyon kényesek az elérési útjaikra, előfordulhat, hogy Önnek közvetlenül a "$HOME"/.szoftverneve/wine/drive_c/Program\ Files/szoftverneve könyvtárban kell szimbolikus linket létrehoznia.
Természetesen ezek kizárólag ötletek a Win32 alkalmazások Linux környezetbe való integrálásához, ne feledje el használni az Ön emberi intelligenciáját és a rátermettségét.
Példaként a μTorrent alapértelmezés szerint egy tiszta alkalmazás, de egy egyszerű lépéssel hordozhatóként is használható. Mivel egyetlen fájlból áll, és meglehetősen kicsi, a saját wine környezetének létrehozása (kb. 5 MB) valószínűleg túlzás lenne. Jobb megoldás a végrehajtható fájl szimbolikus linkelése, valamint az üres settings.dat létrehozása annak érdekében, hogy hordozható módon használhassa a $HOME/.utorrent könyvtárban. További előny, hogy a .utorrent könyvtár megnyitásakor a felhasználó láthatja a letöltött .torrent fájlok másolatát.
UnionFsFuse
Ön használhatja a UnionFsFuse szoftvert, amely elérhető az unionfs-fuseAUR szoftvercsomag formájában. A UnionFsFuse lehetővé teszi, hogy az alapkönyvtárat a /usr/share alatt tartsa, és szinte automatikusan a fájlok másolatát, amelyeket az alkalmazásnak írnia kell, az $HOME/.programname könyvtárba helyezze.
A UnionFsFuse használata további szoftvercsomag-függőséget jelent, és szüksége van a fuse modulra, amelyet nem minden felhasználó tölt be. Ennek ellenére hasznos lehet, ha az alkalmazásnak sok szimbolikus linkre van szüksége, vagy ha nem teljesen világos, hogy pontosan mit kell írnia. Ügyeljen rá, hogy a UnionFs fájlrendszert helyesen csatolja fel és válassza le.
Példa
A Wine alkalmazástól függő AUR szoftvercsomagok példáinak a megtekintéséért tekintse meg a https://aur.archlinux.org/rpc/v5/search/wine?by=depends linket.
Szoftvercsomagot fogunk készíteni az eMule számára. A Portable Freeware szerint az eMule nem teljesen hordozható, mivel néhány (haszontalan) kulcsot ír a rendszerleíró adatbázisba.
Másrészt ez sem tiszta megoldás, mivel a szoftver a beállításfájljait írja, és a letöltéseit az telepítési könyvtárába helyezi bele.
Szerencsére elérhető egy telepítés nélküli verzió.
Készítsük el a saját PKGBUILD fájlunkat. Az egyetlen szoftvercsomag-függőség a wine nevű szoftvercsomag. A md5sums hozzáadása szükséges.
# 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=('x86_64')
url="https://www.emule-project.net"
license=('GPL')
depends=()
depends=(wine)
makedepends=(unzip)
source=(emule https://sourceforge.net/projects/emule/files/eMule/$pkgver/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
}
Most elkészítjük az emule fájlunkat, amely a build szerint a /usr/bin könyvtárba lesz másolva és végrehajthatóvá lesz téve.
#!/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 "$@"
Ha Ön pontosabb akar lenni, akkor adhat egy üzenetet a .install fájlba, amelyben tájékoztatja a felhasználót, hogy tiltsa le a keresési előzményeket, mivel a wine összezavarja azt a menüt. Ön akár egy alapértelmezett beállításfájlt is biztosíthat a legjobb beállításokkal. Ennyi... Futtassa a $ makepkg parancsot, ellenőrizze a szoftvercsomag könyvtárát a biztonság kedvéért, majd telepítse azt.
Gecko és Mono
Hacsak Ön nem tudja biztosan, hogy a szoftver böngészőt vagy .NET futtatókörnyezetet igényel (wine-gecko és wine-mono szoftvercsomagok), akkor az alapértelmezett wine telepítés során megjelenő Gecko/Mono felugró ablakok nem kívánatosak.
A HTML megjelenítés, a bájtkód támogatás és a párbeszédablakok letiltásához egy dll felülbírálás (dlloverride) használatára van szükség a szkriptfájlban. A Gecko számára:
export WINEDLLOVERRIDES="mshtml="
A Mono számára:
export WINEDLLOVERRIDES="mscoree="
Mindkettőjük számára:
export WINEDLLOVERRIDES="mscoree,mshtml="
Le is tilthatja azokat a winecfg segítségével: Egyszerűen állítsa az mscoree/mshtml értékét Disable -re.