Jednoho dne došla řediteli školy s Windows trpělivost (učebny běží bez problému na Linuxu) a požadoval Linux na svém PC. V tom momentě jsem stál před úkolem, jak zprovoznit některé jím používané aplikace v Linuxu. Protože nejdůležitější byli „Bakaláři“, tak se pojďme podívat nejdříve na ně.
Software „Bakaláři“ je sice na školách rozšířeným SW pro administrativu školy, hodnocení ale nechám jiným. Osobně bych ho z několika důvodů nedoporučil škole, která by jej chtěla teprve nasadit. Naše škola jej však měla a má, …. bohužel.
„Bakaláře“ používáme v síťové konfiguraci – já bych dodal v takové pseudo-síťové konfiguraci, ale k tomu se dostanu dále. Síťovost nespočívá v používání nějaké SQL databáze, ale v prostém umístění společných souborů do vybrané složky na školním serveru, do které pak mají ostatní přístup. Domnívám se, že tato „síťová“ instalace nebyla původně myšlena pro hromadné sdílení, ale pouze jako varianta bezpečného uložení dat na serveru, kde se předpokládá min. zrcadlení disků, jakožto ochrana před jejich ztrátou.
Absence zamykání záznamů (v SQL databázích vyřešených) je dle mého důvod letošních problémů, pracovalo-li před pol. vysvědčením 20 kantorů najednou. Problémy se týkaly tuším jen hodnocení nepovinných předmětů, kdy se v několika případech nezapsaly známky. Je tedy těžko říct kde přesně je chyba. Každopádně po zapsání si kantoři své dílo museli před tiskem zkontrolovat. Během roku je program Bakaláři otevřen současně tak na 3 stanicích a problémy jsem nezaznamenal. Rovněž v minulém roce jsme problémy před vysvědčením nezaznamenali. Vypadá to, že je třeba se smířit s tím, že jsou věci mezi nebem a zemí …. a do toho ti uživatelé … (místo aby jen koukali, jak je ten počítač pěkný, tak s ním chtějí pracovat 🙂 ).
Nejdříve – jak je to myšleno pro Windows prostředí
Na Windows serveru se vytvoří složka – např. „C:\bakalari\“, povolí se její sdílení a tato se následně na všech stanicích musí namapovat pod stejným písmenem – řekněme „K:\bakalari\“. Při instalaci na lokální stanici pak jen zadáme, že se jedná o síťovou instalaci a v instalačním dialogu zadáme, že společné soubory jsou na cestě „K:\bakalari\“. Na lokální stanici je nainstalována část kódu obsluhující grafický front-end programu a do složky „K:\bakalari\“ na serveru se následně vytvoří podsložky a zkopírují databázová data.
Je dobré mít uživatele ve společné skupině – řekněme „bakalari“ a na serveru této skupině přidělit příslušná práva pro složku a podsložky „C:\bakalari\“. Na tomto místě podotýkám, že Windows má se svým děděním lépe ošetřena práva skupin – ale k tomu se taky dostaneme.
Pozn. týkající se stanic Windows a výběru písmene, pod kterým je síťová složka mapována. Je třeba si uvědomit, že dnes jsou samozřejmostí externí USB_DVD, USB „flashky“ ~ externí USB_disky. (A navíc, ti nedisciplinovaní uživatelé toto vše používají … 🙂 ) Zkrátka, měli jsme problémy pokud jsme namapovali na stanicích složku pro Bakaláře pod (tuším) písmenem E:\ – problémy byly s připojením více usb „flashek“ – první zasunutá „flashka“ dostala písmeno „D:\“ a druhá po zasunutí byla smutná, protože nedostala přiřazeno žádné písmenko a kantor volal, že má divnou usb „flashku“ neboť na sousedovic PC se zobrazuje normálně jen na tom jeho šmejdu prej nic … 🙂 Ale možná, že tohle už ve Windows vyřešili.
Což takhle Linuxový server a Windows stanice?
Žádný problém, jen je třeba věnovat trochu pozornosti právům složky a jejímu podstromu složek a souborů. Na linuxovém serveru musí být nainstalována Samba a příslušná složka – řekněme „/var/lib/samba/usershares/bakalari/“ propagována ke sdílení. Protože se však jedná o společnou složku pro vícero uživatelů, je třeba zajistit, aby údaje/změny, které tam provede připojený uživatel např. „karel“ ze skupiny „bakalari“ byly nejen ke čtení, ale i k zápisu pro ostatní uživatele skupiny „bakalari“. V Sambě toto lze vyřešit např. vynucenými právy pro skupinu. Příslušný zápis v /etc/samba/smb.conf pak může vypadat následovně :
[bakalar] comment = Adresáře programu Bakaláři path = /var/lib/samba/usershares/bakalar browseable = yes writable = yes valid users = @bakalari guest ok = no force group = bakalari create mask = 0660 directory mask = 0770 follow symlinks = yes wide links = no
Na Windows stanici pak stačí jen namapovat Sambou propagovanou složku pod stejným písmenem („K:\“) a je hotovo.
Že by Linuxový server, linuxový desktop a sem tam Windows stanice?
Ani tohle není nepřekonatelný problém. Jen je třeba nakonfigurovat Wine a v něm pak stejně „namapovat“ složku, která se na Windows stanicích zobrazuje „K:\bakalari\“ – jak uvádím v našem případě.
Začnu od toho „namapování“ složky
Wine vytváří v domovském adresáři skrytou složku „~/.wine“, do které si ukládá vše co potřebuje. Z podsložek je pro nás zajímavá složka „~/.wine/dosdevices/“ ve které jsou symbolické odkazy značené „C:“, „Z:“ a „D:“ Tyto symbolické linky v prostředí Wine nahrazují připojené disky a blokové zařízení (CD). Pro nás ovšem ale mají zásadní omezení – jak provést symbolický link na server se Sambou do tamní složky „/var/lib/samba/usershares/bakalar“ ?? Otázka tedy zní – jak ve Wine namapovat potřebnou složku na vzdáleném serveru se Sambou a navíc pod písmenem „K:\“ ?? Naštěstí jsme v Linuxu zvyklí, že vše je možné, jen občas to déle trvá (poznamenávám jen, že běžné termíny jsou : nemožné většinou na počkání, zázrak přes noc do druhého dne). Nesmíme navíc zapomenout, že je třeba dodržet skupinová práva i po přístupu z linuxového desktopu do uvedené složky na serveru se Sambou. Ačkoliv Linux vyniká v mnoha oblastech, tak oblast správy skupinových práv mezi přednosti Linuxu nepatří. Je to takové to drbání pravou rukou za levým uchem. Nicméně možností je více. Uvedu tu, kterou používáme. Princip spočívá v tom, že linuxový desktop si „přimountuje“ potřebnou složku umístěnou na serveru se Sambou do svého souborového systému pomocí cifs.
Postup na linuxovém desktopu
- vytvoříme např. v /mnt složku bakalari => tedy : /mnt/bakalari/
- vytvoříme např. v /etc složku cifs => tedy /etc/cifs/
- do této vytvořené složky vytvoříme např. soubor „cifs_bakalar“, kde uvedeme jméno a heslo společného virtuálního uživatele, pomocí kterého budeme k obsahu přistupovat – tedy např. :UserBakaHesloLindos
- do souboru /etc/fstab pak přidáme následující řádek.
//10.108.6.10/bakalar /mnt/albert/bakalar cifs _netdev,iocharset=utf8,domain=WORKGROUP,credentials=/etc/cifs/cifs_bakalar,gid=bakalari,dir_mode=0770,file_mode=0660 0 0
Tím jsme dostali obsah potřebné složky na linuxový desktop a tedy lze na něj vytvořit symbolický odkaz, tak jak to udělá později Wine.
Ještě taková maličkost – uživatel „UserBaka“ s heslem „HesloLindos“ musí být serveru znám a zařazen do skupiny „bakalari“. (Naše škola používá LDAP server a potřebný uživatel je tam samozřejmě zaveden.). Dále direktiva domain=WORKGROUP musí odpovídat skutečné konfiguraci Samby.
Konfigurace Wine
Začnu tím, že je nanejvýš vhodné pomocí prefixu oddělit Wine pro bakaláře od jiných Wine konfigurací. Wine tomu říká instalace do „láhví~bottles“. Proč => protože uživatel má z principu plnou kontrolu nad svým domovským adresářem a nelze mu tedy zakázat, aby po poklepání na náhodný .exe soubor si nezačal vytvářet vlastními silami upravené prostředí Wine. (A věřte, že uživatelé dokáží někdy neuvěřitelná kouzla 🙂 ). Výchozí stav je takový, že nově vytvořený uživatel nemá ve svém adresáři složku „~/.wine“. Ta se poprvé vytváří až při prvním spuštění nějakého programu pomocí Wine. A při spuštění dalšího super-uper .exe programu z internetu se pak takto vytvořená konfigurace upravuje a doplňuje o všechen malware a další užitečnosti. Instalace do oddělených lahví není nejlepší zabezpečení, ale v praxi celkem funguje. Ono spustit .exe soubor z internetu s nějakým prefixem nejde jednoduchým kliknutím – ideální je příkazový řádek a ten jak známo uživatelé moc nemilují, pokud už o jeho existenci mají aspoň ponětí. Takže pro našeho uživatele „karel“ na jeho desktopu v terminálu spustíme příkazy:
# napřed jen spustit a zavřít * pokud uživatel „karel“ nemá svůj ~/.wine adresář > winecfg
Pokud uživatel „karel“ ještě neměl spuštěno Wine, objeví se mu v nabídce Aplikace (v Ubuntu na horní liště vlevo) nabídka pro „Wine“ vč. nabídky „Nastavení Wine“. Pokud spustíte Wine poprvé a ještě s uvedeným prefixem, bude odkaz na „Nastavení Wine“ obsahovat onen prefix – a tudíž má pak možnost projevit svou kreativitu při konfiguraci něčeho o čem většinou nemá ani páru. Proto by bylo moudré jako první spustit winecfg bez prefixu (jak v příkladu uvádím) pro vytvoření uživatelských nabídek pro Wine a teprve poté winecfg s požadovaným prefixem.
# a nyní pro uvedený prefix
> WINEPREFIX=/home/karel/.wine_bakalar winecfg
V domovském adresáři uživatele „karel“ se vytvoří skrytá složka /home/karel/.wine_bakalar“ s výchozí instalací prostředí Wine a na monitoru se zobrací grafický front-end pro úpravu prostředí Wine.
Tady doporučuji na záložce „Obraz“ zaškrtnout emulaci virtuálního desktopu s příslušným rozlišením (menším než je rozlišení monitoru). Ono totiž to začlenění do pracovní plochy (bez emulace virtuálního desktopu) občas nefunguje tak jak má – vyhnete se tím případným problémům.
Jako druhou věc musíte na záložce „Disky“ namapovat naši složku /mnt/bakalari/ pod písmenem „K:\“
Jelikož nevím v čem a s jakými předpoklady jsou Bakaláři programováni, neuškodí nainstalujeme-li do Wine základní runtime prostředí :
# v terminálu postupně spustíme následující příkazy # napřed fonty : > WINEPREFIX=/home/karel/.wine_bakalari winetricks corefonts # pak runtime prostředí > WINEPREFIX=/home/karel/.wine_bakalari winetricks vb6run > WINEPREFIX=/home/karel/.wine_bakalari winetricks vcrun6sp6 > WINEPREFIX=/home/karel/.wine_bakalari winetricks mdac28
Závěrem jedna nepříjemná zpráva – tuto činnost je třeba zopakovat na každém linuxovém desktopu. Bohužel nelze jednoduše vzít „vzorovou“ instalaci Wine s uvedeným prefixem a tuto zkopírovat do ostatních domovských adresářů. Důvodem jsou Windows registry. Wine samozřejmě má Windows registry, ve kterých jsou mj. uvedeny absolutní cesty do adresáře daného uživatele. Pro jiného uživatele pak absolutní cesta do složek v jeho adresáři bývá většinou jiná :-).
K instalaci samotného bakaláře
Dostali jsme se do stavu, kdy na každém desktopu určeném k instalaci máme přístupnou serverovou složku „bakalari“. Není od věci si v ní vytvořit podsložku „install“ a v ní pak složku pro obsah konkrétního instalačního CD – např. „Baka_11_12“ a obsah instalačního CD tam nakopírovat. Na našem ukázkovém serveru to bude pak cesta : „var/lib/samba/usershares/bakalari/install/Baka_11_12/“ Tím máme z každého PC přístupný obsah instalačního CD a taky se vyhneme případnému nečtení disku z CD mechaniky, když je CD disk trošku poškrábaný nebo CD mechanika stářím dýchavičná. Instalace bývá poté o něco rychlejší a z linuxového desktopu mnohem jednodušší.
A nyní přichází velké finále – usadíme se za linuxový desktop učitele chtivého Bakaláře, zkontrolujeme, zda židle/křeslo je správně vypolstrováno a jen tak mezi řečí spustíme v terminálu příkaz :
> WINEPREFIX=/home/karel/.wine_bakalari wine /mnt/bakalari/install/Baka_11_12/install/winlocal/inst_lok.exe
Pozn. – Ve Wine jsem byl schopen spustit plnou instalaci, ale nikoliv jen síťovou. Pokud si dobře pamatuji, tak problém byl v tom, že instalační dialog odkazoval při lokální instalaci na cesty, které nesouhlasily s cestami Wine. Není ovšem třeba zoufat – ten dialog totiž nedělá nic jiného než že spustí .exe soubor z cesty „obsah_install_CD/install/winlocal/inst_lok.exe“. Jen na konci instalace je třeba ukončit terminál pomocí CTRL+C.
Příště to bude o asociaci přípon ve Wine, tak abychom otevírali dokumenty ve Wine pomocí linuxového kancelářského balíku.
Chápu to správně, že netřeba žádné speciální nastavení Wine?
To co bylo popsáno stačí. Bez emulace virtuálního desktopu se občas neotevřelo nic /mám podezření na zapnuté efekty desktopového prostředí (V Ubuntu : Systém>Předvolby>vzhled)/. V čisté /výchozí/ instalaci Wine to tuším taky nechodilo. Ale jsou to už snad 2 roky, co jsem si instalaci odladil. Dnes už postupuji jen podle toho co jsem popsal.
Bakalari sitovou konfiguraci samozrejme podporuji, bohuzel jen mssql. Pak staci nejaky lepsi server, spustit virtualni komp s win server edici, nainstalovat bakalare s databazi a je po starostech. Jeste pro upresneni, i v tom sql pripade nejsou stejne vsechny data v databazi, nektere zustavaji stale v dbx souborech. Snad to autori jeste doladi:-)
Nesetkal se nekdo s tim, ze po spusteni baka***** je rozbita diakritika? čř, nefunguje dobre. Je jasne, ze to ma neco do cineni s kodovanim, ale kde? Pri mountovani cifs? Nechce se mi znovuobjevovat kolo.
http://www.abclinuxu.cz/poradna/linux/show/371437
díky za radu
Dobrý den.
Chci se s odstupem zeptat, jestli Bakaláře přes wine pořád ještě používáte a jak to slouží.
Kdysi jsme se o běh pod wine také pokoušeli, Bakaláři se dali spustit, ale špatně to zamykalo soubory a docházelo k nekonzistencím v datech. Ovšem tenkrát jsme k datům přistupovali přes nfs a ne přes cifs. Nyní by se mi hodilo to oživit znovu, ale mám trochu strach. Jaké jsou Vaše zkušenosti?
Lukáš Bernard
Mám instalaci bakalařů na sitovem disku, který viz návod výšše připojím do wine.
chci spustit ze sítoveho disku bakasql.exe a dostanu hlášku: The VFP9R.DLL file is invalid or damaged
Může někdo poradit?