Installing Quickbooks Database Server Manager on Linux

From Steak Wiki
Jump to navigationJump to search

This is intended for an intermediate Linux Admin audience. It is a rough outline of how to setup Quickbooks Database Server Manager 24 (2014) for Centos 7.

This is a subpage of Quickbooks_Database_Server_Manager. Refer to that page for full details.

Steps

Stage 1: Samba, and QB DB RPM install

Be root

Disable selinux (I don't want to deal with this)

nano /etc/selinux/config

change SELINUX=disabled
save and reboot

use #sestatus
to confirm that selinux is disabled.

[root@localhost ~]# sestatus
SELinux status:                 disabled
[root@localhost ~]#

setup samba
following this guide:

https://wiki.centos.org/HowTos/SetUpSamba

https://wiki.centos.org/HowTos/SetUpSamba
this guide is out of date, due to sysd. fail.

what's laughable, is that firewalld, which replaced iptables
will now be replaced by another firewall with the replacement of iptables...
I think.... unless that is the replacement.


First, stop the FirewallD service with:

sudo systemctl stop firewalld
Disable the FirewallD service to start automatically on system boot:

sudo systemctl disable firewalld
The output from the command above will look something like this:

Removed symlink /etc/systemd/system/multi-user.target.wants/firewalld.service.
Removed symlink /etc/systemd/system/dbus-org.fedoraproject.FirewallD1.service.
Mask the FirewallD service which will prevent the firewall from being started by other services:

sudo systemctl mask --now firewalld
As you can see from the output the mask command simply creates a symlink from the firewalld service to /dev/null:

Created symlink from /etc/systemd/system/firewalld.service to /dev/null.
//https://linuxize.com/post/how-to-stop-and-disable-firewalld-on-centos-7/

OK

once you do that, iptables has the default allows in place.

choose a directory for samba

mkdir /share

make a basic test user

useradd user1 -d /share/user1

chown user1:user1 /share/user1
passwd user1

ALTERNATIVELY:
[root@qbtestsrv share]# useradd -m qbuser2
  426  groupadd -r qbusers
  428  sudo usermod -a -G qbusers qbuser
[root@qbtestsrv share]# usermod -a -G qbusers qbuser2
[root@qbtestsrv share]# less /etc/group
chown /quickbooks dir with qbusers as group


yum install samba

smbpasswd -a user1

now on another machine

smbclient -U user1 //<ip>/user1

and it should prompt for password, then allow commands.

>help
>ls
etc...

that's all for basic test of samba.

now qb.

Download the RPM for your QB.

rpm -ivh <packagename>
to install

errors out the box...

[root@localhost ~]# rpm -ivh qbdbm-30.0-1.i386.rpm 
Preparing...                          ################################# [100%]
Updating / installing...
   1:qbdbm-30.0-1                     ################################# [100%]

Please add the QB data paths to /opt/qb/util/qbmonitord.conf file.

Starting qbdbfilemon (via systemctl):  Job for qbdbfilemon.service failed because the control process exited with error code. See "systemctl status qbdbfilemon.service" and "journalctl -xe" for details.
                                                           [FAILED]
Starting qbdbmgrn_30 (via systemctl):                      [  OK  ]


journalctl xe says:

Dec 10 20:23:48 localhost.localdomain systemd[1]: Unit qbdbfilemon.service enter
Dec 10 20:23:48 localhost.localdomain systemd[1]: qbdbfilemon.service failed.
Dec 10 20:23:48 localhost.localdomain systemd[1]: Starting LSB: QuickBooks DB Se
-- Subject: Unit qbdbmgrn_30.service has begun start-up
-- Defined-By: systemd
-- Support: http://lists.freedesktop.org/mailman/listinfo/systemd-devel
-- 
-- Unit qbdbmgrn_30.service has begun starting up.
Dec 10 20:23:48 localhost.localdomain qbdbmgrn_30[9921]: Starting qbdbmgrn_30 : 
Dec 10 20:23:48 localhost.localdomain systemd[1]: Started LSB: QuickBooks DB Ser
-- Subject: Unit qbdbmgrn_30.service has finished start-up
-- Defined-By: systemd
-- Support: http://lists.freedesktop.org/mailman/listinfo/systemd-devel
-- 
-- Unit qbdbmgrn_30.service has finished starting up.
-- 
-- The start-up result is done.


literally tells you nothing

/var/log/messages tells you

Dec 10 20:23:48 localhost systemd: Reloading.
Dec 10 20:23:48 localhost systemd: Starting LSB: QuickBooks DB file monitor program...
Dec 10 20:23:48 localhost qbdbfilemon: Starting qbdbfilemon :
Dec 10 20:23:48 localhost systemd: qbdbfilemon.service: control process exited, code=exited status=1
Dec 10 20:23:48 localhost systemd: Failed to start LSB: QuickBooks DB file monitor program.
Dec 10 20:23:48 localhost systemd: Unit qbdbfilemon.service entered failed state.
Dec 10 20:23:48 localhost systemd: qbdbfilemon.service failed.
Dec 10 20:23:48 localhost systemd: Starting LSB: QuickBooks DB Server Manager program...
Dec 10 20:23:48 localhost qbdbmgrn_30: Starting qbdbmgrn_30 : /etc/rc.d/init.d/qbdbmgrn_30: /opt/qb/util/qbdbportallocator: /lib/ld-linux.so.2: bad ELF interpreter: No such file or directory
Dec 10 20:23:48 localhost systemd: Started LSB: QuickBooks DB Server Manager program.


This is more helpful

I found I needed 32bit support and a few libraries. ive been through this 
already on deb.


https://stackoverflow.com/questions/8328250/centos-64-bit-bad-elf-interpreter

//
You're on a 64-bit system, and don't have 32-bit library support installed.

To install (baseline) support for 32-bit executables
(if you don't use sudo in your setup read note below)

Most desktop Linux systems in the Fedora/Red Hat family:

 pkcon install glibc.i686
Possibly some desktop Debian/Ubuntu systems?:

pkcon install ia32-libs
Fedora or newer Red Hat, CentOS:

 sudo dnf install glibc.i686
Older RHEL, CentOS:

   sudo yum install glibc.i686
Even older RHEL, CentOS:

  sudo yum install glibc.i386
Debian or Ubuntu:

   sudo apt-get install ia32-libs
should grab you the (first, main) library you need.

Once you have that, you'll probably need support libs
Anyone needing to install glibc.i686 or glibc.i386 will probably run into other library dependencies, as well. To identify a package providing an arbitrary library, you can use

 ldd /usr/bin/YOURAPPHERE
if you're not sure it's in /usr/bin you can also fall back on

 ldd $(which YOURAPPNAME)
The output will look like this:

    linux-gate.so.1 =>  (0xf7760000)
    libpthread.so.0 => /lib/libpthread.so.0 (0xf773e000)
    libSM.so.6 => not found
Check for missing libraries (e.g. libSM.so.6 in the above output), and for each one you need to find the package that provides it.

Commands to find the package per distribution family
Fedora/Red Hat Enterprise/CentOS:

 dnf provides /usr/lib/libSM.so.6
or, on older RHEL/CentOS:

 yum provides /usr/lib/libSM.so.6
or, on Debian/Ubuntu:

first, install and download the database for apt-file

 sudo apt-get install apt-file && apt-file update
then search with

 apt-file find libSM.so.6
Note the prefix path /usr/lib in the (usual) case; rarely, some libraries still live under /lib for historical reasons … On typical 64-bit systems, 32-bit libraries live in /usr/lib and 64-bit libraries live in /usr/lib64.

(Debian/Ubuntu organise multi-architecture libraries differently.)

Installing packages for missing libraries
The above should give you a package name, e.g.:

libSM-1.2.0-2.fc15.i686 : X.Org X11 SM runtime library
Repo        : fedora
Matched from:
Filename    : /usr/lib/libSM.so.6
In this example the name of the package is libSM and the name of the 32bit version of the package is libSM.i686.

You can then install the package to grab the requisite library using pkcon in a GUI, or sudo dnf/yum/apt-get as appropriate…. E.g pkcon install libSM.i686. If necessary you can specify the version fully. E.g sudo dnf install ibSM-1.2.0-2.fc15.i686.

Some libraries will have an “epoch” designator before their name; this can be omitted (the curious can read the notes below).

Notes
Warning
Incidentially, the issue you are facing either implies that your RPM (resp. DPkg/DSelect) database is corrupted, or that the application you're trying to run wasn't installed through the package manager. If you're new to Linux, you probably want to avoid using software from sources other than your package manager, whenever possible...

If you don't use "sudo" in your set-up
Type

su -c
every time you see sudo, eg,

su -c dnf install glibc.i686
About the epoch designator in library names
The “epoch” designator before the name is an artifact of the way that the underlying RPM libraries handle version numbers; e.g.

2:libpng-1.2.46-1.fc16.i686 : A library of functions for manipulating PNG image format files
Repo        : fedora
Matched from:
Filename    : /usr/lib/libpng.so.3
Here, the 2: can be omitted; just pkcon install libpng.i686 or sudo dnf install libpng-1.2.46-1.fc16.i686. (It vaguely implies something like: at some point, the version number of the libpng package rolled backwards, and the “epoch” had to be incremented to make sure the newer version would be considered “newer” during updates. Or something similar happened. Twice.)

Updated to clarify and cover the various package manager options more fully (March, 2016)

//

so

 sudo yum install glibc.i686
and the libraries I need are...

looks like i only did libfam... and add architecture but lets see...

Dec 10 20:33:33 localhost qbdbmgrn_30: Starting qbdbmgrn_30 : /opt/qb/util/qbdbportallocator: error while loadi
ng shared libraries: libstdc++.so.6: cannot open shared object file: No such file or directory

yum install libstdc++.i686

if you get in trouble 

yum remove qbdbmgr
then rpm -ivh again.
may need to stop the qbdb services first.

it starts now in messages

[root@localhost ~]# tail -F /var/log/messages 
Dec 10 20:35:54 localhost SQLAnywhere(qb_localhost.localdomain_30): 526104K of memory used for caching
Dec 10 20:35:54 localhost SQLAnywhere(qb_localhost.localdomain_30): Minimum cache size: 525564K, maximum cache size: 1048576K
Dec 10 20:35:54 localhost SQLAnywhere(qb_localhost.localdomain_30): Using a maximum page size of 4096 bytes
Dec 10 20:35:54 localhost SQLAnywhere(qb_localhost.localdomain_30): Multiprogramming level: minimum:2, current:20, maximum:80
Dec 10 20:35:54 localhost SQLAnywhere(qb_localhost.localdomain_30): Automatic tuning of multiprogramming level is enabled
Dec 10 20:35:54 localhost SQLAnywhere(qb_localhost.localdomain_30): Database server started at Tue Dec 10 2019 20:35
Dec 10 20:35:54 localhost SQLAnywhere(qb_localhost.localdomain_30): Trying to start SharedMemory link ...
Dec 10 20:35:54 localhost SQLAnywhere(qb_localhost.localdomain_30):    SharedMemory link started successfully
Dec 10 20:35:54 localhost SQLAnywhere(qb_localhost.localdomain_30): Trying to start TCPIP link ...
Dec 10 20:35:54 localhost SQLAnywhere(qb_localhost.localdomain_30): Starting on port 55388
Dec 10 20:35:59 localhost SQLAnywhere(qb_localhost.localdomain_30):    TCPIP link started successfully
Dec 10 20:35:59 localhost SQLAnywhere(qb_localhost.localdomain_30): Now accepting requests


i know that its something in the ldd of the qbdbfilemon

lets extract the rpm

rpm2cpio qb.rpm | cpio -idmv

[root@localhost util]# ldd qbmonitord
	linux-gate.so.1 =>  (0xf7779000)
	libfam.so.0 => not found
	libpthread.so.0 => /lib/libpthread.so.0 (0xf7757000)
	libstdc++.so.6 => /lib/libstdc++.so.6 (0xf766b000)
	libm.so.6 => /lib/libm.so.6 (0xf7629000)
	libgcc_s.so.1 => /lib/libgcc_s.so.1 (0xf760d000)
	libc.so.6 => /lib/libc.so.6 (0xf7442000)
	/lib/ld-linux.so.2 (0xf777a000)


OK....

so libfam is not found. That's why.

I think I just need to get 32bit gamin

yum install gamin-devel.i686


[root@localhost util]# ldd qbmonitord
	linux-gate.so.1 =>  (0xf7786000)
	libfam.so.0 => /lib/libfam.so.0 (0xf7775000)
	libpthread.so.0 => /lib/libpthread.so.0 (0xf775a000)
	libstdc++.so.6 => /lib/libstdc++.so.6 (0xf766e000)
	libm.so.6 => /lib/libm.so.6 (0xf762c000)
	libgcc_s.so.1 => /lib/libgcc_s.so.1 (0xf7610000)
	libc.so.6 => /lib/libc.so.6 (0xf7445000)
	/lib/ld-linux.so.2 (0xf7787000)
[root@localhost util]# 

good to go.

[root@localhost ~]# service stop qbdbmgrn_30 stop
The service command supports only basic LSB actions (start, stop, restart, try-restart, reload, force-reload, status). For other actions, please try to use systemctl.

LOL
"please use my botnet"

[root@localhost ~]# rpm -ivh qbdbm-30.0-1.i386.rpm 
Preparing...                          ################################# [100%]
Updating / installing...
   1:qbdbm-30.0-1                     ################################# [100%]

Please add the QB data paths to /opt/qb/util/qbmonitord.conf file.

Starting qbdbfilemon (via systemctl):                      [  OK  ]
Starting qbdbmgrn_30 (via systemctl):                      [  OK  ]
[root@localhost ~]# 


and we are in


OK

Almost done.

NOTE: I ended up using 24, after 30 wouldn't run with my QB. Imagine if a new mysql refused to work with your old software. Compatibility issues are one thing, but QB is just refusing to work.

Stage 2: Final Tweaks

QB Share and Permissions

Put quickbooks db in share folder

Make sure permissions are ok (chown user1)

Delete everything but the qbw. You don't need them, and if they have old data, it will slow down loading the QB DB.

Samba and Hosts

Make sure to add a hostname to the QB DB Server, and add in /etc/samba/smb.conf the following:

netbios name = "hostname"

Per: https://www.nivindel.com/installing-quickbooks-enterprise-linux-server/

Also make sure the Linux box has in its hosts file the hostname.

Finally, you want to then hardcode the Linux Hostname into the Windows Clients (hosts file). This may not be needed if you run a DNS server on the LAN... BUT, it was what got rid of the H202 error for me.

But ignore what he says about the ND, and DSN files. You can delete them before the first opening of the QBW and the Linux Server will make new ones. Don't delete them afterwards (though I've had to delete the TLD file... That's another story).