How to install unison from source on macOS - macos

I was wondering whether somebody managed to install unison's latest version from source, on its macOS machine (Here I am trying with Catalina). I followed the steps here :
I verified that I had XCode installed (otherwise forget about compiling anything :)
I cloned the official Git repository by running
git clone https://github.com/bcpierce00/unison.git
I moved to the newly created directory unison
cd unison
As mentionned in the documentation I then ran the make command telling it to build the text UI:
make UISTYLE=text
Result should have been an executable file called unisonbut instead of this I got the following error :
Blablabla$ make UISTYLE=text
/Applications/Xcode.app/Contents/Developer/usr/bin/make -C src UISTYLE=text
UISTYLE = text
Building for Unix
NATIVE = true
THREADS = false
STATIC = false
OSTYPE =
OSARCH = osx
ocamlopt: ubase/rx.mli ---> ubase/rx.cmi
ocamlopt -g -unsafe-string -I lwt -I ubase -I system -I fsmonitor -I fsmonitor/linux -I fsmonitor/windows -I system/generic -I lwt/generic -ccopt -mmacosx-version-min=10.6 -c /Users/Shared/unison/src/ubase/rx.mli
make[1]: ocamlopt: No such file or directory
make[1]: *** [ubase/rx.cmi] Error 1
make: *** [text] Error 2
I then wondered whether XCode might not carry with him an OCaml compiler. So I installed the official one using MacPort therefore running:
sudo port install ocaml
sudo port install opam
I then rerun the same make command
make UISTYLE=text
This time the result looked better and ended with:
/Applications/Xcode.app/Contents/Developer/usr/bin/make tags
if [ -f "`which etags`" ]; then \
etags *.mli */*.mli *.ml */*.ml */*.m *.c */*.c *.txt \
*Makefile* \
; fi
However, still no unison file visible anywhere.
Question is ... since there is no error message, where is this executable?

Re-hello people from the Internet,
I managed to help myself here and got a nice and fresh unison executable on my macOS Catalina computer.
Basically, the base make tries to move the compilation product into /Users/<your_user>/bin/. which makes sense I guess, but is rarely used by us macOS users. So here is what I did to fix the issue :
Create the bin directory into your home
mkdir ~/bin
Re run the make by doing
make UISTYLE=text
Verify you have the executable by asking its version:
~/bin/unison -version
Happy me, I got the expected message back from my terminal:
unison version 2.51.3 (ocaml 4.08.1)
Hope it can help somebody.

Related

Error building latest linux kernel within VirtualBox under 18.04.1-Ubuntu

I am trying to build the latest Linux kernel (GitHub) using a Oracel VM and a 18.04.1-Ubuntu image.
I installed the need packages and probably even more. Here is a part of the packages I installed:
sudo apt-get update
sudo apt-get install git fakeroot build-essential ncurses-dev xz-utils libssl-dev bc bison flex libelf-def kernel-package
The full list can be found here.
I ran the following commands in the linux folder after cloning the repository from GitHub.
$ cp /boot/config-$(uname -r) .config
$ make menuconfig
scripts/kconfig/mconf Kconfig
.config:1118:warning: symbol value 'm' invalid for NF_CT_PROTO_GRE
.config:1923:warning: symbol value 'm' invalid for NET_DEVLINK
.config:7865:warning: symbol value 'm' invalid for ASHMEM
.config:8724:warning: symbol value 'm' invalid for ANDROID_BINDER_IPC
.config:8725:warning: symbol value 'm' invalid for ANDROID_BINDERFS
*** End of the configuration.
*** Execute 'make' to start the build or try 'make help'.
I save and exited menuconfig. And finally make leads to the following error.
$ make -j2
Makefile:608: include/config/auto.conf: No such file or directory
Makefile:660: include/config/auto.conf.cmd: No such file or directory
HOSTCC scripts/kconfig/conf.o
HOSTLD scripts/kconfig/conf
scripts/kconfig/conf --syncconfig Kconfig
*** Error during sync of the configuration.
scripts/kconfig/Makefile:73: recipe for target 'syncconfig' failed
make[2]: *** [syncconfig] Error 1
Makefile:562: recipe for target 'syncconfig' failed
make[1]: *** [syncconfig] Error 2
Makefile:678: recipe for target 'include/config/auto.conf.cmd' failed
make: *** [include/config/auto.conf.cmd] Error 2
make: *** Deleting file 'include/config/auto.conf.cmd'
Looks like make is expecting some additional configuration files include/config/auto.conf. Does anyone have a clue for me.
Thanks!
Trying to compile kernel 5.6.3 as non-root, I ran into this exact problem.
Running the suggestion from Oandiy's comment
git clean -xdf
revealed that I had files in my source tree that were owned by root and could not be deleted. Looking in my history I found,
sudo make localmodconfig # DO NOT DO THIS
which had installed files, as root, in include/config/* and include/generated/autoconf.h.
To see if you have the same problem, run
sudo find . -uid 0
or just look at the error messages of git clean -xdf (there shouldn't be any).
After deleting all files and directories owned by root, I recovered from this deadlock with:
unset ARCH
cp .config ../config.backup # If you still have this.
git clean -xdf # No errors (this also deletes .config)
cp ../config.backup .config # Or generate a new one *).
make olddefconfig # Printed at the end: 'No change to .config'
Note that I needed to clear ARCH from my environment.
After this I went on as usual,
VERSION=5.6.3 # I have checked out tag v5.6.3 **)
FLAVOUR=lowlatlocxhci # Or whatever you want to call your kernel.
make -j8 deb-pkg LOCALVERSION=-$FLAVOUR
sudo dpkg -i ../linux-headers-$VERSION-${FLAVOUR}_$VERSION-$FLAVOUR-1_amd64.deb ../linux-image-$VERSION-${FLAVOUR}_$VERSION-${FLAVOUR}-1_amd64.deb
The last command fails to compile virtualbox kernel modules at the moment, but I don't care about those, and those errors can be ignored (as long as you don't use virtual box).
*) The .config used was prepared by booting to a kernel with everything (ie, a dist. kernel), copying its config from /boot to the source tree and running make localmodconfig after making sure all kernel modules that I needed where loaded (by running those applications that cause such modules to be loaded). And finally running make menuconfig to turn off CONFIG_DEBUG_INFO in this kernel and to turn a few things that are normally built into the kernel into modules as well (which I needed for some reason).
**) My git tree has been prepared with:
VERSION=5.6.3
FLAVOUR=lowlatlocxhci
git clone git://git.kernel.org/pub/scm/linux/kernel/git/stable/linux-stable.git linux-$VERSION-$FLAVOUR-$VERSION-$FLAVOUR
cd linux-$VERSION-$FLAVOUR-$VERSION-$FLAVOUR
git checkout -b test_$FLAVOUR v$VERSION
# Make manual changes here, and commit as usual.

Error while upgrading Asterisk to 14 - PJSIP undeclared

I am trying to upgrade asterisk 11 to 14 on Debian (8.7) and I got the following error when I do make install.
The error is as below
res_pjsip_transport_management.c: In function ‘monitored_transport_state_callback’:
res_pjsip_transport_management.c:190:8: error: ‘PJSIP_TP_STATE_SHUTDOWN’ undeclared (first use in this function)
case PJSIP_TP_STATE_SHUTDOWN:
^
res_pjsip_transport_management.c:190:8: note: each undeclared identifier is reported only once for each function it appears in
/root/asterisk-14.3.0/Makefile.rules:149: recipe for target 'res_pjsip_transport_management.o' failed
make[1]: *** [res_pjsip_transport_management.o] Error 1
Makefile:401: recipe for target 'res' failed
make: *** [res] Error 2
The commands I used are as follow
tar -zxvf asterisk-14-current.tar.gz
/etc/init.d/asterisk stop
cd asterisk-14.3.0/
./configure
rm -f /usr/lib/asterisk/modules/*
make install
I tried some solutions from the internet and it didn't fix....
It seems like the pjsip versions do not match (could be that there is more then one version installed) so you want to remove all previous/existing versions of PJSip. If you do not know what packages belong to pjsip you can search them via:
apt-cache search pjsip
or
dpkg -l | grep pj
And once you know which package to remove do
apt-get --purge remove <package name>
You then want to download the latest version of pjsip (current 2.6 according to Asterisk website)
wget wget http://www.pjsip.org/release/2.6/pjproject-2.6.tar.bz2
tar -xjvf pjproject-2.6.tar.bz2
You want to place the pjproject in /usr/local.
cp -R pjproject-2.6 /usr/local/
Once this is done you have to build/compile/install the pjproject and
./configure --prefix=/usr --enable-shared CFLAGS='-O2 -DNDEBUG' //Various options (enable/disable) can be put in here. Please refer to manual
make dep
make
make install
ldconfig
Verify that pjproject has been installed in the target location
ldconfig -p | grep pj
Once this has been done you can now go to you Asterisk folder and issue
./configure
and proceed with installation further :)
pjsip version not match.
Never tried 14*(it is not LTS), for 13.* such error mean you have more then one pjsip or pjsip is not 2.4.
Before rebuilding pjsip do check
yum remove -y pjsip
rm -f `find / -name *pjsip*`
If I'm not mistaken, Asterisk 13 source code came with a built-in pjproject, but 14 will look for an installed pjproject on the system.
Make sure you have it installed (including the -dev or -devel packages, which contains the headers), than try to reconfigure asterisk source.
./bootstrap.sh
./configure
make menuconfig

updating to svn 1.9.4 via command line in mac

I am using SVN against my will. The current team I work with uses it for version control and they are not always available to help me. I am just trying to go from SVN Version 1.8.13 to the latest 1.9.4
I have download it and I have ran this command too
curl -o subversion-latest.tar.gz http://apache.mirrors.tds.net/subversion/subversion-1.9.4.tar.gz
tar -xvf subversion-latest.tar.gz
I have combined these two different tutorials with no luck.
svn update version
stackover flow issue
I am STUCK at with the configure part..
mymac ~/Downloads/subversion-1.9.4/serf
$ ./configure
-bash: ./configure: No such file or directory
mymac ~/Downloads/subversion-1.9.4/serf
UPDATE
I exited out of serf path and on
`mymac ~/Downloads/subversion-1.9.4` file path i ran the `./configure` My command line ran a bunch of "checks"
configure: Configuring Subversion 1.9.4
configure: creating config.nice checking for gcc...
gcc checking whether the C compiler works...
yes but eventually shot an error at the end...
configure: error: failed to recognize APR_INT64_T_FMT on this platform
mymac ~/Downloads/subversion-1.9.4
I have the latest version of XCode..
UPDATE2 tried neon, again
mymac ~/Downloads/subversion-1.9.4
$ sh get-deps.sh neon
Local directory 'serf' already exists; the downloaded copy won't be used
Local directory 'apr' already exists; the downloaded copy won't be used
Local directory 'apr-util' already exists; the downloaded copy won't be used
get-deps.sh: line 151: get_neon: command not found
Usage: get-deps.sh
Usage: get-deps.sh [ apr | serf | zlib | sqlite | gmock ] ...
mymac ~/Downloads/subversion-1.9.4
$ cd neon
-bash: cd: neon: No such file or directory
UPDATE 3
ran this command first ..
mymac ~/Downloads/subversion-1.9.4
$ ./configure --prefix=/usr/local --with-serf=/usr/local/serf
configure: Configuring Subversion 1.9.4
configure: creating config.nice
checking for gcc... gcc
checking whether the C compiler works... yes
I guess I should install a new version of serf?
checking was serf enabled... no
An appropriate version of serf could not be found, so libsvn_ra_serf
will not be built. If you want to build libsvn_ra_serf, please
install serf 1.3.4 or newer.
configure: error: Serf was explicitly enabled but an appropriate version was not found.
I have no clue where to go from here and how to get around it. I already figure out that neon is no longer supported and I am using serf Can someone offer a different way to go about this? Please? Thanks!
Consider using Brew or MacPorts, if possible. Then this can be as simple as:
brew install svn
If you really must install from source,
it might not be as complicated as the steps you described so far.
Try these much simpler steps exactly:
cd /tmp
curl -o subversion-latest.tar.gz http://apache.mirrors.tds.net/subversion/subversion-1.9.4.tar.gz
tar -xvf subversion-latest.tar.gz
cd subversion-1.9.4
./configure --prefix=/tmp/local
make
make install
This will (hopefully) build Subversion and install it into /tmp/local. Test with this command:
/tmp/local/bin/svn --version
If the output looks good, then repeat from the start, but use a different value for --prefix, as appropriate in your environment.
(I tried, and this worked well for me, right now, btw.)
Maybe it's not so simple. In that case please update your question with the output where you get stuck.

PLR Installation on Mac Lion

I am trying to install PL/R 8.3.0.13.1 on my MacBook Pro running OS X 10.7.5, Postgres 9.2 and R 2.15.2. I have found on the web a nice step-by-step guide for Windows but I can't find anything similar for Mac.
I got stuck when I run this command [as official documentation] ( http://www.joeconway.com/plr/doc/plr-install.html ):
USE_PGXS=1 make
Output:
make: pkg-config: Command not found
make: pkg-config: Command not found
make: pkg-config: Command not found
make: pkg-config: Command not found
make: pkg-config: Command not found
*** Cannot build PL/R because R_HOME cannot be found.
*** Refer to the documentation for details.
Clearly that means I need to create somehow R_HOME, variable and/or location...
Any idea how to do it?
The error message is actually a bit confusing. If you look at the Makefile of PL/R, the logic is that it uses R_HOME to find R when set, otherwise it tries pkg-config. You have neither set, so it bails out.
I recommend going the pkg-config route if possible. The R_HOME route appears to assume an R installation scheme that might not be universally applicable. Perhaps it applies to builds straight from source.
The above applies to all platforms. Now on OS X, it depends on how you installed R. For example, if you used MacPorts, it would go something like this:
sudo port install pkgconfig
sudo port install R
and then build PL/R itself:
make USE_PGXS=1
But that will break because PL/R does not expect that MacPorts separates the R headers into two separate directories (architecture-dependent and -independent I suppose).
Homebrew might work better, but the principle is the same.
You need to figure out what you should set your PLR environment R_HOME variable. In a terminal session I get this
computername:~ username$ R RHOME #only enter stuff after"$"
/Library/Frameworks/R.framework/Resources
This is at the bottom of that page you linked to:
"Tip: R_HOME must be defined in the environment of the user under which PostgreSQL is started, before the postmaster is started. Otherwise PL/R will refuse to load. See plr_environ(), which allows examination of the environment available to the PostgreSQL postmaster process. "
This is from a webpage describing the problem and offering a fix:
To fix: Add a "R_HOME = '/usr/lib/R' " to /etc/postgresql/version/cluster/environmen
Example Fix for version 8.1:
$ sudo -s
# echo -e "\nR_HOME = '/usr/lib/R'" >> /etc/postgresql/8.1/main/environment
# exit
To Test:
$ sudo /etc/init.d/postgresql-8.1 restart
$ sudo -u postgres psql plr_test
plr_test=# select test();
test
------

Redis installation error on CentOS 5.8

I was trying to compile Redis 2.6.4 on CentOS 5.8 but I was getting the following error after running make
zmalloc.o: In function zmalloc_used_memory':
/root/redis-2.6.4/src/zmalloc.c:223: undefined reference to
__sync_add_and_fetch_4' collect2: ld returned 1 exit status make[1]:
* [redis-server] Error 1 make[1]: Leaving directory `/root/redis-2.6.4/src' make: * [all] Error 2
I also tried CFLAGS= -march=i686 in the src/Makefile but did not work. Actually, I don't know where to put it. I put at the top of the file.
1 add CFLAGS= -march=i686 to src/Makefile top
2 change src/.make_settings OPT=-O2 into OPT=-O2 -march=i686
3 then make 32bit
4 make test
That works for me.
Ps. maybe you would got tcl problem
1 rpm -qa | grep tcl to see whether tcl version is blow 8.5
2 if so yum remove tcl
3 go to http://www.linuxfromscratch.org/blfs/view/cvs/general/tcl.html to got a newest one and install
4 go to redis directory make test
Ok, I got it done. I run the following command which seems worked correctly (though later I need to install tcl8.5).
make 32bit
As #HungryCoder said, simple "make 32bit" command would work.
But sometimes, if your have already run into error, you'd better remove files named .make* before running it.
make distclean
make
If it didn't help, try to figure out your CPU arch manually by run the following:
export CFLAGS=`uname -m`
make distclean
make
I had some issues compiling it and I solved by first installing the following dependencies:
sudo yum -y install libstdc++*
sudo yum -y install libstdc++*.i686
Then I could run the proper make without any problem
make 32bit
I hope this helps someone.

Resources