Installing FreeSwitch under Devuan
FreeSwitch is a PBX system similar to Asterisk, and can be installed using the package manager under CentOS, RHEL, Fedora, Debian and Ubuntu.
However, version 1.10 has a dependency on systemd, which if you are running Devuan, you won't have (and won't want) on your machine.
It seems that the dependency is pointless, because:
- the only link with systemd is the startup scripts, nothing to do with libraries etc.
- the mechanism to create the sysvinit scripts is still in the 1.10 source code
However, a dependency means that without systemd, you cannot install FreeSwitch.
There are ways round this (not including "install systemd") :)
The simplest method uses the equivs utility, which allows you to build a "package" which doesn't actually do anything, but:
- makes your package manager think the real package is installed
- can have dependencies, causing other things you might want, to be installed automatically
- can have conflicts, causing other things you don't want, to be removed automatically
At first I thought "I'll make a package called systemd and install that".
However this introduced its own problems - on a Devuan machine, several things object to finding systemd installed (no real surprise there, of course), so they conflict with it if you try to install it, or a dummy package of that name.
Reading the error message (often a good idea, often overlooked) generated by aptitude install freeswitch-meta-all proved useful. It was:
freeswitch-systemd : Depends: systemd which is a virtual package and is not provided by any available package
So, building a dummy package called freeswitch-systemd and installing that was a much simpler way around the problem.
If you examine the (real) package freeswitch-systemd, you find that it "provides freeswitch-init", so building this as a dummy package and installing it is an alternative way of dealing with the problem.
- aptitude install equivs
- equivs-control freeswitch-init
- edit the text file which has just been generated for you named freeswitch-init to contain the following uncommented lines (you can leave the other comments in if you wish):
Section: misc Priority: optional Standards-Version: 3.9.2 Package: freeswitch-init Description: something to stop systemd being a dependency
- equivs-build freeswitch-init
- dpkg -i freeswitch-init_1.0_all.deb
- aptitude install freeswitch-meta-all (as per the standard Debian FreeSwitch documentation)
Success :)
To get the sysvinit script for the newly-installed application, go to http://files.freeswitch.org/freeswitch-releases/ and download your preferred archive of the version you just installed and unpack it. Then search for the file freeswitch-sysvinit.freeswitch.init and copy it to the correct name and location, and make it executable:
# wget http://files.freeswitch.org/freeswitch-releases/freeswitch-1.10.6.-release.tar.bz2 # tar -xf freeswitch-1.10.6.-release.tar.bz2 # find freeswitch-1.10.6.-release -name freeswitch-sysvinit.freeswitch.init # cp -a freeswitch-1.10.6.-release/debian/freeswitch-sysvinit.freeswitch.init /etc/init.d/freeswitch # chmod +x /etc/init.d/freeswitch
To enable FreeSwitch to auto-start at boot time:
- update-rc.d freeswitch defaults
# /etc/init.d/freeswitch start 21602 Backgrounding. FreeSWITCH[21601] Waiting for background process pid:21602 to be ready..... FreeSWITCH[21601] Waiting for background process pid:21602 to be ready..... FreeSWITCH[21601] System Ready pid:21602 # /etc/init.d/freeswitch status [ ok ] freeswitch is running. # fs_cli Type /help <enter> to see a list of commands +OK log level [7] freeswitch@devuan> status UP 0 years, 0 days, 0 hours, 4 minutes, 54 seconds, 216 milliseconds, 852 microseconds FreeSWITCH (Version 1.10.6 -release-18-1ff9d0a60e 64bit) is ready 0 session(s) since startup 0 session(s) - peak 0, last 5min 0 0 session(s) per Sec out of max 30, peak 0, last 5min 0 1000 session(s) max min idle cpu 0.00/99.60 Current Stack Size/Max 240K/8192K
More success, and proving how much (not at all) FreeSwitch actually needs systemd :)
PS: When you get confused about how to get out of this thing you just started, and find that exit and quit both tell you "Command not found!", try /exit, /quit or /bye.
Meh.
Go up
Return to main index.