Portál AbcLinuxu, 6. května 2025 23:04
FlexiBee je účetní a ekonomický software pro Linux, které začíná nabírat na oblibě. Nyní se na něj podíváme z trochu jiné stránky – jak jej rozjet na oficiálně nepodporovaných distribucích.
Vesměs jsme se setkali jen s články, které toto účetnictví představují jen z uživatelské stránky na podporovaných distribucích. Osobně používám Arch GNU/Linux a zachtělo se mi toto účetnictví také zkusit a začal jsem tedy pátrat. Pitvat již připravené balíčky pro jiné distrubuce nemělo moc smysl, ale někde na webu jsem našel zmínku o neoficiálním ebuildu pro Gentoo, který v té době nedosahoval takové úrovně jako dnes. Toto byl zajímavý zdroj informací pro zjištění potřebných věcí k tvorbě vlastního PKGBUILDu pro Arch GNU/Linux. Tento článek byl původně napsán jako blogový zápisek.
Nejdříve si představíme ruční instalaci, která by měla při troše snahy fungovat na každé distribuci. Ve finále pak ukážu instalaci na Arch GNU/Linux s mým PKGBUILDem. Nuže, neprodlužujme naší nedočkavost a pojďme se podívat, co bude potřeba.
Není potřeba toho mít tolik, stačí jen několik věcí:
Instalaci budeme provádět na jednom počítači, tzn., že server i klient poběží na jednom místě. Začneme tedy instalací PostgreSQL a PL/Tcl.
pacman -S postgresql postgresql-libs /etc/rc.d/postgresql start
Jak už jsem řekl, je potřeba podpora PL/Tcl v postgresql, kterou PostgreSQL v Arch GNU/Linuxu nemá, vizte oficiální PKGBUILD. Ničeho se ovšem nemusíme bát, celý PostgreSQL kompilovat nebudeme. Podporu PL/Tcl stačí dokompilovat samostatně. Jen upozorňuji, že toto je jen ukázka, správně byste měli vytvořit balíček pro svou distribuci a nedělat věci takto natvrdo.
Stáhneme si zdrojové kody aktuálně nainstalovaného PostgreSQL:
cd /usr/local/src/ wget -c ftp://ftp.postgresql.org/pub/source/v9.0.4/postgresql-9.0.4.tar.bz2
Rozbalíme a zkompilujeme čistě jen podporu PL/Tcl:
tar xvfj postgresql-9.0.4.tar.bz2 cd postgresql-9.0.4 ./configure --prefix=/usr --datadir=/usr/share/postgresql --with-tcl cd src/pl/tcl make
Nyní máme knihovnu pltcl.so, kterou si můžeme nakopírovat do adresáře PostgreSQL a už nám to sviští.
cp pltcl.so /usr/lib/postgresql/
V každé distribuci je toto různé, v Archu:
pacman -S jre
Teď se trochu zapotíme
Začneme tím, že si vytvoříme uživatele a skupinu pro náš FlexiBee server:
useradd --system --home-dir /tmp --no-create-home --user-group --shell /bin/false winstrom
Stáhneme FlexiBee tar.gz (nyní kolem 50 MB) a rozbalíme:
cd /usr/local/src/ wge -c http://www.flexibee.eu/download/10.14/flexibee-10.14.2.14.tar.gz tar xvfz flexibee-10.14.2.14.tar.gz
Nyní ručně nainstalujeme (startup skript /etc/init.d nepoužijeme, Arch funguje trochu jinak):
cd flexibee-10.14.2.14 cp -a usr / cp -a etc/default/* /etc/default/ cp -a etc/logrotate.d/* /etc/logrotate.d/ cp -a etc/flexibee /etc/
Jako startup skript použijeme například tento. Jak můžete vidět, není to jen init skript, ale obsahuje i jakousi instalační část, kterou si nyní dopodrobna vysvětlíme, resp. jí provedeme ručně. Na instalační část nejsem moc hrdý a třeba automatické generování hesla není úplně to ořechové – mám to jen na testování jako příklad a možná zkusím vymyslet někdy něco důmyslnějšího.
Základ bychom za sebou měli, a to včetně startup skriptu serverové části. Nyní nás čeká konfigurace databáze. Začneme tím, že vytvoříme příslušnou roli pro FlexiBee:
$ su – postgres $ psql > CREATE ROLE dba PASSWORD 'hustodemonskykrutoprisneheslo' CREATEDB SUPERUSER CREATEROLE INHERIT LOGIN; # ověříme, že je role vytvořená: > select usename from pg_user where usename = 'dba'; # zmizíme pryč: > \q $ exit
Dále je potřeba nastavit FlexiBee server. Jednak je nutné upravit heslo do databáze a druhak i port (default 5435, Arch má 5432), na kterém databáze naslouchá, takže upravíme:
nano /etc/flexibee/flexibee-server.xml <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE properties SYSTEM „http://java.sun.com/dtd/properties.dtd“> <properties> <comment>WinStrom server configuration</comment> <entry key="host">localhost</entry> <entry key="port">5432</entry> <entry key="user">dba</entry> <entry key="password">hustodemonskykrutoprisneheslo</entry> <entry key="defaultPort">5435</entry> <!-- always|never --> <entry key="sendErrors">never</entry> </properties>
Ve finále ještě nastavíme správně práva:
chown winstrom /etc/flexibee/flexibee-server.xml chmod 600 /etc/flexibee/flexibee-server.xml
Nyní máme vše nainstalováno a nastaveno, stačí tedy spustit server:
/etc/rc.d/flexibee start
Bez použití skriptu lze server spustit a ukončit takto:
# spustit: flexibee-server # ukončit: kill $(cat /var/run/flexibee.pid)
Režim aplikace (tedy fungování jako server, klient nebo obojí současně) lze přepínat v /etc/default/flexibee. Tato cesta je v aplikaci určena napevno.
Pokud máme server spuštěn, tak se následně můžeme klientem připojit (nezapomeňte ve správě zdrojů nastavit správný port SQL serveru, tj. 5432):
flexibee
Pokročilé možnosti -> správa datových zdrojů
Přidat ->
Adresa: 127.0.0.1
Port: 5432
-> Přidat
-> Ok
Vyplníme uživatelské jméno a heslo, které nám bude sloužit k prvnímu přihlášení:
Pomocí vytvořeného uživatele a hesla z předchozího kroku se nyní přihlásíme:
Pokračujeme klasicky založením firmy...
FlexiBee má i své webové rozhraní, je zatím lehce omezeno. Standardně běží na portu 5434. Tento port se definuje v /etc/flexibee/flexibee-server.xml a jedná se o položku <entry key="defaultPort">5434</entry>.
Jen lehký pohled na webové rozhraní:
FlexiBee toto všechno řeší svými skripty pro podporované distribuce, jedná se o skript initdb.sh, ze kterého jsem částečně čerpal:
/usr/share/flexibee/bin/initdb.sh
Pokud mi důvěřujete a nechcete se s ničím dlabat, tak lze celý článek na Archu shrnout takto (pokud bude vše fungovat automaticky a nikde jsem nic nepokazil):
pacman -S postgresql postgresql-libs jre yaourt -S postgresql9-pltcl /etc/rc.d/postgresql start yaourt -S winstrom-flexibee /etc/rc.d/flexibee install /etc/rc.d/flexibee start
Kdo by rád po sobě uklidil po instalaci, tak následovně:
1) Odstraníme Flexibee :
/etc/rc.d/flexibee stop pacman -R winstrom-flexibee
2) Odstraníme uživatele a skupinu winstrom:
userdel winstrom
3) Odstraníme PostgreSQL se všemi databázemi (nejen FlexiBee)
/etc/rc.d/postgresql stop rm -rf /var/lib/postgres pacman -R postgresql9-pltcl postgresql-libs postgresql
4) Odstraníme konfigurační soubory u uživatele:
rm -rf ~/.winstrom
/etc/rc.d/flexibee #!/bin/bash PATH=/sbin:/bin:/usr/sbin:/usr/bin FLEXIBEE_PID=/var/run/flexibee.pid FLEXIBEE_USER="winstrom" MYLANG=`echo $LANG | cut -c 1-2` CONFIGFILE=/etc/flexibee/flexibee-server.xml case "$1" in start) ### detect flexibee default configuration file if [ -f /etc/default/flexibee ]; then . /etc/default/flexibee fi ### detect flexibee server mode (if is define) if [ x"$FLEXIBEE_CFG" = x"client" ]; then if [ x"$MYLANG" = x"cs" ]; then echo "FlexiBee je vypnutý. Změňte hodnotu FLEXIBEE_CFG z 'client' na 'local' nebo 'server' v /etc/default/flexibee" else if [ x"$MYLANG" = x"sk" ]; then echo "FlexiBee je vypnutý. Zmeňte hodnotu FLEXIBEE_CFG z 'client' na 'local' alebo 'server' v /etc/default/flexibee" else echo "FlexiBee is disabled. Change FLEXIBEE_CFG from 'client' to 'local' or 'server' in /etc/default/flexibee" fi fi exit 0 fi ### detect postgresql server runing if [ ! -e /var/run/daemons/postgresql ]; then if [ x"$MYLANG" = x"cs" ]; then echo "Neběží postgresql databáze. Spustě jí pomocí /etc/rc.d/postgresql start" else echo "Postgresql database not running, run the database : /etc/rc.d/postgresql start " fi exit 0 fi ### detect flexibee running if [ -e $FLEXIBEE_PID ]; then if [ x"$MYLANG" = x"cs" ]; then echo "Flexibee server je už spuštěn!" else echo "Flexibee server is running!" fi exit 0 fi ### run flexibee server /usr/sbin/flexibee-server ### detect running flexibee server if [ -e $FLEXIBEE_PID ]; then if [ x"$MYLANG" = x"cs" ]; then echo "Flexibee server byl úspěšně spuštěn." else echo "Flexibee server successfully started" fi exit 0 else if [ x"$MYLANG" = x"cs" ]; then echo "Chyba při spouštění flexibee serveru!" else echo "Error when starting flexibee server!" fi fi ;; stop) if [ ! -e $FLEXIBEE_PID ]; then if [ x"$MYLANG" = x"cs" ]; then echo "Chyba : Flexibee server není spuštěn." else echo "Error : Flexibee server is not running" fi exit 0 fi kill `cat $FLEXIBEE_PID` rm -f $FLEXIBEE_PID ;; restart) $0 stop sleep 2 $0 start ;; install) echo "---> 1) Create system user and group : winstrom" echo " useradd --system --home-dir /tmp --no-create-home --user-group --shell /bin/false winstrom" useradd --system --home-dir /tmp --no-create-home --user-group --shell /bin/false winstrom echo "---> 2) Change flexibee connection port from default 5435 to arch linux postgresql port 5432" echo " cat $CONFIGFILE | sed '/port/s/5435/5432/g' > $CONFIGFILE.new" echo " mv $CONFIGFILE.new $CONFIGFILE" cat $CONFIGFILE | sed '/"port"/s/5435/5432/g' > $CONFIGFILE.new mv $CONFIGFILE.new $CONFIGFILE echo "---> 3) Create database role with random secret password : " echo " su - postgres -c CREATE ROLE dba PASSWORD '********' CREATEDB SUPERUSER CREATEROLE INHERIT LOGIN;" ### generate random password pass=`</dev/urandom tr -dc A-Za-z0-9| (head -c $1 > /dev/null 2>&1 || head -c 23)` ### create database role su - postgres -c "psql -c \"CREATE ROLE dba PASSWORD '$pass' CREATEDB SUPERUSER CREATEROLE INHERIT LOGIN;\"" echo "---> 4) The database role password adding to flexibee configuration file $CONFIGFILE" echo " cat $CONFIGFILE | sed '/password/s/7971/**********/g' > $CONFIGFILE.new" echo " mv $CONFIGFILE.new $CONFIGFILE" cat $CONFIGFILE | sed '/password/s/7971/'$pass'/g' > $CONFIGFILE.new mv $CONFIGFILE.new $CONFIGFILE pass=0 echo "---> 4) Change file permission to flexibee configiration file" echo " chmod 600 $CONFIGFILE" echo " chown winstrom $CONFIGFILE" chmod 600 $CONFIGFILE chown winstrom $CONFIGFILE ;; *) echo "usage: $0 {start|stop|restart|install}" esac exit 0Zdar Max
wget -c http://www.flexibee.eu/download/10.14/flexibee-10.14.2.14.tar.gzpoužívat
wget -c http://www.flexibee.eu/download/latest/tgz/Tam bude pak vždy nejnovější verze. S pozdravem Petr Ferschmann
http://www.flexibee.eu/download/latest/deb/ http://www.flexibee.eu/download/latest/rpm/ http://www.flexibee.eu/download/latest/rpm-mdk/ http://www.flexibee.eu/download/latest/exe/ http://www.flexibee.eu/download/latest/dmg/ http://www.flexibee.eu/download/latest/version/ http://www.flexibee.eu/download/latest/linux/ (pro případ, že chci odkaz na Linux, ale nevím který konkrétní balíček)S pozdravem Petr Ferschmann
http://www.flexibee.eu/download/latest.tar.gz
aby se to dalo jednoduše použít ve skriptu, třeba:
wget http://www.flexibee.eu/download/latest.tar.gz
VER=`wget -qO- http://www.flexibee.eu/download/latest/version | cat` BASEVER=`echo $VER |cut -f1,2 -d.` wget -c http://download.flexibee.eu/download/$BASEVER/flexibee-$VER.tar.gzMně třeba zmíněný :
wget -c http://www.flexibee.eu/download/latest/tgz/Nefunguje :-/ a nestáhne se nic. Naproti tomu, když zkusím
wget http://www.flexibee.eu/download/latest/rpm/"Tak se mi sosne zmíněný soubor a má název index.html, takže člověk si stejně musí vytáhnout info o verzi z :
http://www.flexibee.eu/download/latest/versionA poté si název souboru / výsledného balíčku upravit.
wget -c http://www.flexibee.eu/download/latest/tgz/Už je to zpravené. Zkusil jsem to a s tím index.html u RPM problém nemám. On je to pouze redirect (302 Location) takže wget se dozví správný název souboru. A když dám
wget -c http://www.flexibee.eu/download/latest/tgz/ -O file.tgztak mi to zafunguje a zapíše do file.tgz S pozdravem Petr Ferschmann
JAVA_HOME=/opt/java6/jre/ flexibeeA funguje to. Serverová část šlape na java7(ale nemám plně ověřeno, jen základní přihlášení a načtení firmy) a klientská část nikoli, ta jede zatím jen na šestkové řadě.
ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.