Linux.wine: Unterschied zwischen den Versionen

Aus OrgaMon Wiki
Zur Navigation springen Zur Suche springen
 
(94 dazwischenliegende Versionen von 2 Benutzern werden nicht angezeigt)
Zeile 1: Zeile 1:
== funktionierende Version ==
cOrgaMon.exe, lOrgaMon.exe kann mit Hilfe von wine unter Linux ausgeführt werden. Der Betrieb ist identisch problemlos wie unter Windows, mit dem Vorteil dass man sich so manch Windows-VM sparen kann.


* wine-1.3.29
== Wine Installation ==


== neuestes wine installieren ==
=== OpenSuse ===
* <code>zypper install p11-kit-32bit wine</code>
=== Debian ===


* zypper remove wine
* dpkg --add-architecture i386
* zypper ar http://download.opensuse.org/repositories/Emulators/openSUSE_11.4/ Emulators
* apt update
* zypper install wine
* apt install wine32


bei mir wurde dann wine (1.3.12) deinstalliert und wine (1.3.29) installiert.
=== Option 1: Grafische Benutzeroberfläche vorhanden ===


== Laufwerke mappen ==
* In einer grafischen Oberfläche einmalig <code>-> System -> Configure Wine</code> starten
** dies installiert Mono (ist für den cOrgaMon aber nicht nötig) ...
** dies legt das .wine Verzeichnis an ...
** Ein Umkonfiguration abseits der Defaults ist nicht nötig.
 
=== Option 2: Nur Terminal ===
 
* In der reinen Console für folgender Befehl zum Anlegen der Verzeichnisse und setzen der Defaults
** <code>winecfg</code>
** <code>wineconsole</code>
** <code>wine cmd</code>
 
== cOrgaMon (Win32) installieren ==
 
* die 32 Bit Umgebung von Wine muss installiert werden, dazu kann es sein dass die ganze Distribution um die 32 Bit Architektur erweitern muss (das ist nicht mehr default)
 
#
# Install 7zip
#
cd ~/.wine/drive_c
wget https://www.7-zip.org/a/7z2201-x64.exe
wine 7z2201-x64.exe /S
#
# Install cOrgaMon
#
mkdir "/root/.wine/drive_c/Program Files (x86)/OrgaMon/"
cd "/root/.wine/drive_c/Program Files (x86)/OrgaMon/"
wget https://cargobay.orgamon.org/cOrgaMon-Wine-8695.zip
unzip -o cOrgaMon-Wine-8695.zip
#
# Install SystemD-Services
#
mv .service /etc/systemd/system
#
# Install OrgaMon.ini
#
mkdir ~/Documents/OrgaMon/
cd ~/Documents/OrgaMon/
joe OrgaMon.ini
 
 
#
# OrgaMon.ini
# Bei der ~Id~ wird der Mandant angegeben, der gestartet werden soll. Dieser Id
# wird auch dem cOrgaMon.exe als Kommandozeilenparameter --Id=~Id~ mitgegeben.
#
# via systemctl lässt sicher der ~Id~ nach dem "@" angeben
#
[~Id~]
DataBaseName=N:\Mandanten\Huber\dat\
 
== lOrgaMon (Win64) installieren ==
 
* lOrgaMon.exe läuft in einer wine-7.0 Win64 Umgebung
* Verwenden Sie die aktuelle Version von https://cargobay.orgamon.org/lOrgaMon-Wine.html
 
#
# Install 7zip
#
cd ~/.wine/drive_c
wget https://www.7-zip.org/a/7z2201-x64.exe
wine 7z2201-x64.exe /S
#
# Install lOrgaMon
#
mkdir "/root/.wine/drive_c/Program Files/OrgaMon/"
cd "/root/.wine/drive_c/Program Files/OrgaMon/"
wget https://cargobay.orgamon.org/lOrgaMon-Wine-8xxx.zip
unzip -o lOrgaMon-Wine-8xxx.zip
wine vccrt8_x64.msi /S
#
# Install OrgaMon.ini
#
mkdir ~/Documents/OrgaMon/
cd ~/Documents/OrgaMon/
joe OrgaMon.ini
#
# OrgaMon.ini
# Bei der ~Id~ wird der Mandant angegeben, der gestartet werden soll. Dieser Id
# wird auch dem cOrgaMon.exe als Kommandozeilenparameter --Id=~Id~ mitgegeben.
#
# via systemctl lässt sicher der ~Id~ nach dem "@" angeben
#
[~Id~]
DataBaseName=N:\Mandanten\Huber\dat\
 
== Laufwerke ==
 
* Zum Betrieb der XLMRPC-Server cOrgaMon/lOrgaMon ist immer ein Windows-Laufwerk nötig
* Dieses muss man wine bekannt machen, dazu werden Verzeichnisse mit mount oder bind mount zur Verfügung gestellt
 
=== H:\ (Beispiel) ===


  cd ~/.wine
  cd ~/.wine
  md drive_h
  md drive_h
  mount //server/share drive_h
  # Nur wenn man gleich mal mounten will:
# mount //server/share drive_h
  cd dosdevices
  cd dosdevices
  ln -s ../drive_h/ h:
  ln -s ../drive_h h:
 
=== \\host\share (Beispiel) ===
 
* UNC Pfade funktionieren nicht einfach so, hier muss man unter <code>dosdevices/unc</code> den <b>host</b> UND den <b>share</b>-Namen als Unterverzeichnisse erstellen
 
cd ~/.wine
cd dosdevices
mkdir unc
cd unc
mkdir host
cd host
ln -s /srv/firebird firebird
 
=== systemd.mount ===
 
==== Beispiel 1 ====
 
* joe /etc/systemd/system/root-.wine-drive_i.mount
 
[Unit]
Description=root-.wine-drive_i
Requires=network-online.target
After=network-online.target
 
[Mount]
What=//server/share
Where=/root/.wine/drive_i
Type=cifs
Options=guest,vers=3,noperm,nosetuids,file_mode=0777,dir_mode=0777
[Install]
WantedBy=remote-fs.target
 
==== Beispiel 2 ====
 
* joe /etc/systemd/system/srv-ftp.mount
 
[Unit]
Description=srv-ftp
Wants=nss-lookup.target
After=nss-lookup.target
[Mount]
What=//server/web
Where=/srv/ftp
Type=cifs
Options=guest,vers=3,noperm,nosetuids,file_mode=0777,dir_mode=0777
[Install]
WantedBy=remote-fs.target
 
==== Beispiel 3 ====
 
* Wenn obige Methode nicht funktioniert muss man mit einem Bind-Mount arbeiten
* locales Verzeichnis mit "bind"
* Geht aber auch, Beispiel <code>root-.wine-drive_i.mount</code>
 
[Unit]
Description=root-.wine-drive_i
After=srv-smb-ra6.mount
Requires=srv-smb-ra6.mount
[Mount]
What=/srv/smb/ra6/i
Where=/root/.wine/drive_i
Type=none
Options=bind
[Install]
WantedBy=remote-fs.target
 
== cOrgaMon.exe Start als systemd.service ==
 
systemd bietet die Möglichkeit für beliebig viele Instanzen nur eine Konfigurations-Datei zu führen. Die ganze Infrastruktur mit Start und Stop und Enable kann benutzt werden. Also mit
 
* systemctl start cOrgaMon@3049
 
startet man eine cOrgaMon-Instanz mit dem Port 3049.
 
* joe /etc/systemd/system/cOrgaMon\@.service
 
#
# systemd Rulez for the cOrgaMon Service
#
# (c) 2015 Andreas Filsinger
#
[Unit]
Description=cOrgaMon XMLRPC-Server
After=multi-user.target
Requires=root-.wine-drive_i.mount
[Service]
SyslogIdentifier=cOrgaMon
UMask=000
Environment="WINEDEBUG=-all" "LANG=de_DE.UTF-8"
ExecStart=/usr/bin/wine "C:\\Program Files (x86)\\OrgaMon\\cOrgaMon.exe" "--app" "--Id=%i"
KillSignal=SIGKILL
TimeoutStopSec=5
[Install]
WantedBy=multi-user.target
 
* Starte dann mehrere Instanzen:
** systemctl start cOrgaMon@3000
** systemctl start cOrgaMon@3001
** systemctl start cOrgaMon@3002
** systemctl start cOrgaMon@3003
 
== lOrgaMon/cOrgaMon für Tagwache/Tagesabschluss ==
 
* In <code>System</code> kann definiert werden "was" einzelne Hosts im Rahmen eines Tagesabschlusses/Tagwache tun sollen, es lassen sich einzelne Aktionen ausschließen
 
#
# Host EDORAS soll z.B. nur den Artikelindex neu erstellen
#
TagesabschlussAusschluss@EDORAS=1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,21,22,23,24,25,26,27,28
#
# ein Cron-Job auf EDORAS kann nun Artikelindex neu erstellen, Alle anderes Hosts
# die einen Tagesabschluss machen sollten um diesen Punkt entlastet werden
# (auch durch Ausschluss-Option)
#
wine lOrgaMon.exe --tagesabschluss --Id=~Id~


== OrgaMon starten ==
== Update ==


* Verzeichnis ~/OrgaMon muss angelegt werden
* Per AutoUp, das Projekt "cOrgaMon-Wine" wird auf https://cargobay.orgamon.org/ das neueste cOrgaMon zur Verfügung gestellt
* OrgaMon.ini sollte eingepfelgt werden, z.B. mit dem Inhalt
* Ein Update wird durchgeführt durch
** Stop der Dienste
** Download der neuesten Version
** Überschreiben aller alten Dateien im Ausführungsverzeichnis
** Start der Dienste


  [System]
  systemctl stop cOrgaMonApp@...
  DataBaseName=I:\Mandanten\Huber\
  systemctl stop cOrgaMonFoto@...
cd "~/.wine/drive_c/Program Files (x86)/OrgaMon"
wget https://cargobay.orgamon.org/cOrgaMon-Wine-8644.zip
unzip -o cOrgaMon-Wine-8644.zip
systemctl start cOrgaMonApp@...
systemctl start cOrgaMonFoto@...


* Den ersten Start macht man mit
== Diagnose ==


  wine "C:\\Program Files\\OrgaMon\\OrgaMon.exe"
  #
# Welche Ports werden verwendet?
#
lsof -P | grep cOrgaMon | grep TCP
#
# Welche Dienste laufen?
#
systemctl status | grep cOrgaMon.exe

Aktuelle Version vom 7. Oktober 2024, 14:36 Uhr

cOrgaMon.exe, lOrgaMon.exe kann mit Hilfe von wine unter Linux ausgeführt werden. Der Betrieb ist identisch problemlos wie unter Windows, mit dem Vorteil dass man sich so manch Windows-VM sparen kann.

Wine Installation

OpenSuse

  • zypper install p11-kit-32bit wine

Debian

  • dpkg --add-architecture i386
  • apt update
  • apt install wine32

Option 1: Grafische Benutzeroberfläche vorhanden

  • In einer grafischen Oberfläche einmalig -> System -> Configure Wine starten
    • dies installiert Mono (ist für den cOrgaMon aber nicht nötig) ...
    • dies legt das .wine Verzeichnis an ...
    • Ein Umkonfiguration abseits der Defaults ist nicht nötig.

Option 2: Nur Terminal

  • In der reinen Console für folgender Befehl zum Anlegen der Verzeichnisse und setzen der Defaults
    • winecfg
    • wineconsole
    • wine cmd

cOrgaMon (Win32) installieren

  • die 32 Bit Umgebung von Wine muss installiert werden, dazu kann es sein dass die ganze Distribution um die 32 Bit Architektur erweitern muss (das ist nicht mehr default)
#
# Install 7zip
#
cd ~/.wine/drive_c
wget https://www.7-zip.org/a/7z2201-x64.exe
wine 7z2201-x64.exe /S

#
# Install cOrgaMon
#
mkdir "/root/.wine/drive_c/Program Files (x86)/OrgaMon/"
cd "/root/.wine/drive_c/Program Files (x86)/OrgaMon/"
wget https://cargobay.orgamon.org/cOrgaMon-Wine-8695.zip
unzip -o cOrgaMon-Wine-8695.zip

#
# Install SystemD-Services
#
mv .service /etc/systemd/system

#
# Install OrgaMon.ini
#
mkdir ~/Documents/OrgaMon/
cd ~/Documents/OrgaMon/
joe OrgaMon.ini


#
# OrgaMon.ini
# Bei der ~Id~ wird der Mandant angegeben, der gestartet werden soll. Dieser Id
# wird auch dem cOrgaMon.exe als Kommandozeilenparameter --Id=~Id~ mitgegeben.
# 
# via systemctl lässt sicher der ~Id~ nach dem "@" angeben
#
[~Id~]
DataBaseName=N:\Mandanten\Huber\dat\

lOrgaMon (Win64) installieren

#
# Install 7zip
#
cd ~/.wine/drive_c
wget https://www.7-zip.org/a/7z2201-x64.exe
wine 7z2201-x64.exe /S

#
# Install lOrgaMon
#
mkdir "/root/.wine/drive_c/Program Files/OrgaMon/"
cd "/root/.wine/drive_c/Program Files/OrgaMon/"
wget https://cargobay.orgamon.org/lOrgaMon-Wine-8xxx.zip
unzip -o lOrgaMon-Wine-8xxx.zip
wine vccrt8_x64.msi /S

#
# Install OrgaMon.ini
#
mkdir ~/Documents/OrgaMon/
cd ~/Documents/OrgaMon/
joe OrgaMon.ini

#
# OrgaMon.ini
# Bei der ~Id~ wird der Mandant angegeben, der gestartet werden soll. Dieser Id
# wird auch dem cOrgaMon.exe als Kommandozeilenparameter --Id=~Id~ mitgegeben.
# 
# via systemctl lässt sicher der ~Id~ nach dem "@" angeben
#
[~Id~]
DataBaseName=N:\Mandanten\Huber\dat\

Laufwerke

  • Zum Betrieb der XLMRPC-Server cOrgaMon/lOrgaMon ist immer ein Windows-Laufwerk nötig
  • Dieses muss man wine bekannt machen, dazu werden Verzeichnisse mit mount oder bind mount zur Verfügung gestellt

H:\ (Beispiel)

cd ~/.wine
md drive_h
# Nur wenn man gleich mal mounten will: 
# mount //server/share drive_h
cd dosdevices
ln -s ../drive_h h:

\\host\share (Beispiel)

  • UNC Pfade funktionieren nicht einfach so, hier muss man unter dosdevices/unc den host UND den share-Namen als Unterverzeichnisse erstellen
cd ~/.wine
cd dosdevices
mkdir unc
cd unc
mkdir host
cd host
ln -s /srv/firebird firebird

systemd.mount

Beispiel 1

  • joe /etc/systemd/system/root-.wine-drive_i.mount
[Unit]
Description=root-.wine-drive_i
Requires=network-online.target
After=network-online.target
 
[Mount]
What=//server/share
Where=/root/.wine/drive_i
Type=cifs
Options=guest,vers=3,noperm,nosetuids,file_mode=0777,dir_mode=0777

[Install]
WantedBy=remote-fs.target

Beispiel 2

  • joe /etc/systemd/system/srv-ftp.mount
[Unit]
Description=srv-ftp
Wants=nss-lookup.target
After=nss-lookup.target

[Mount]
What=//server/web
Where=/srv/ftp
Type=cifs
Options=guest,vers=3,noperm,nosetuids,file_mode=0777,dir_mode=0777

[Install]
WantedBy=remote-fs.target

Beispiel 3

  • Wenn obige Methode nicht funktioniert muss man mit einem Bind-Mount arbeiten
  • locales Verzeichnis mit "bind"
  • Geht aber auch, Beispiel root-.wine-drive_i.mount
[Unit]
Description=root-.wine-drive_i
After=srv-smb-ra6.mount
Requires=srv-smb-ra6.mount

[Mount]
What=/srv/smb/ra6/i
Where=/root/.wine/drive_i
Type=none
Options=bind

[Install]
WantedBy=remote-fs.target

cOrgaMon.exe Start als systemd.service

systemd bietet die Möglichkeit für beliebig viele Instanzen nur eine Konfigurations-Datei zu führen. Die ganze Infrastruktur mit Start und Stop und Enable kann benutzt werden. Also mit

  • systemctl start cOrgaMon@3049

startet man eine cOrgaMon-Instanz mit dem Port 3049.

  • joe /etc/systemd/system/cOrgaMon\@.service
#
# systemd Rulez for the cOrgaMon Service
#
# (c) 2015 Andreas Filsinger
#
[Unit]
Description=cOrgaMon XMLRPC-Server
After=multi-user.target
Requires=root-.wine-drive_i.mount

[Service]
SyslogIdentifier=cOrgaMon
UMask=000
Environment="WINEDEBUG=-all" "LANG=de_DE.UTF-8"
ExecStart=/usr/bin/wine "C:\\Program Files (x86)\\OrgaMon\\cOrgaMon.exe" "--app" "--Id=%i"
KillSignal=SIGKILL
TimeoutStopSec=5

[Install]
WantedBy=multi-user.target
  • Starte dann mehrere Instanzen:
    • systemctl start cOrgaMon@3000
    • systemctl start cOrgaMon@3001
    • systemctl start cOrgaMon@3002
    • systemctl start cOrgaMon@3003

lOrgaMon/cOrgaMon für Tagwache/Tagesabschluss

  • In System kann definiert werden "was" einzelne Hosts im Rahmen eines Tagesabschlusses/Tagwache tun sollen, es lassen sich einzelne Aktionen ausschließen
#
# Host EDORAS soll z.B. nur den Artikelindex neu erstellen
#
TagesabschlussAusschluss@EDORAS=1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,21,22,23,24,25,26,27,28

# 
# ein Cron-Job auf EDORAS kann nun Artikelindex neu erstellen, Alle anderes Hosts 
# die einen Tagesabschluss machen sollten um diesen Punkt entlastet werden
# (auch durch Ausschluss-Option)
#
wine lOrgaMon.exe --tagesabschluss --Id=~Id~

Update

  • Per AutoUp, das Projekt "cOrgaMon-Wine" wird auf https://cargobay.orgamon.org/ das neueste cOrgaMon zur Verfügung gestellt
  • Ein Update wird durchgeführt durch
    • Stop der Dienste
    • Download der neuesten Version
    • Überschreiben aller alten Dateien im Ausführungsverzeichnis
    • Start der Dienste
systemctl stop cOrgaMonApp@...
systemctl stop cOrgaMonFoto@...
cd "~/.wine/drive_c/Program Files (x86)/OrgaMon"
wget https://cargobay.orgamon.org/cOrgaMon-Wine-8644.zip
unzip -o cOrgaMon-Wine-8644.zip
systemctl start cOrgaMonApp@...
systemctl start cOrgaMonFoto@...

Diagnose

#
# Welche Ports werden verwendet?
# 
lsof -P | grep cOrgaMon | grep TCP

#
# Welche Dienste laufen?
#
systemctl status | grep cOrgaMon.exe