this post was submitted on 27 Nov 2023
1 points (100.0% liked)

Emacs

313 readers
2 users here now

A community for the timeless and infinitely powerful editor. Want to see what Emacs is capable of?!

Get Emacs

Rules

  1. Posts should be emacs related
  2. Be kind please
  3. Yes, we already know: Google results for "emacs" and "vi" link to each other. We good.

Emacs Resources

Emacs Tutorials

Useful Emacs configuration files and distributions

Quick pain-saver tip

founded 1 year ago
MODERATORS
 

Hi all, I thought I was being very clever by creating a virtual machine build environment so I didn't have to litter my main computer with 100s of packages to build emacs. So I built it in a gnomebox and set the prefix to $home/.local/opt/emacs as I saw someone do. It runs fine in the virtual machine

The issue is now, I'd like to move the install or the built files to my host machine and run it, but it won't run. If I just try to move the $home/.local/opt/emacs folder to my own computer, and run it I get the following:

./emacs-29.1.90: error while loading shared libraries: libgpm.so.2: cannot open shared object file: No such file or directory

When I try to move the whole directory (source code and the build directories inside there) out of the virtual machine into the Host and try to run make install (this is after make and compilation completed) it says

make install
if [ -x ./config.status ]; then	\
     ./config.status --recheck;	\
else				\
     ../configure --cache-file=/dev/null; \
fi
/bin/sh: line 4: ../configure: Permission denied
make: *** [Makefile:573: config.status] Error 126

I have tried to chown -R : ./ to the whole directory but it still gives me the permission denied.

Any ideas how I might accomplish this task?

Thanks!

top 5 comments
sorted by: hot top controversial new old
[–] sleekelite@alien.top 1 points 1 year ago

This is not a useful plan. Building eMacs produces a binary that depends at runtime on loads of libraries that you haven’t installed on the outer system.

Just don’t bother doing this.

[–] jsled@alien.top 1 points 1 year ago (1 children)

Yeah, you're sort of fundamentally misunderstanding the relationship between a host and guest VM, here. The guest VM is an entirely different machine. It shares nothing with the host. Including shared libraries and other build chain dependencies.

[–] DocInLA@alien.top 1 points 1 year ago

I had thought that the libraries may have been linked in statically into a binary that "just worked" but indeed that is not the case. It will work on the host once I install some of the dependencies (of course, making the whole project a bit of a moot point. Though I will say it is a bit fewer than what was needed to build...)

[–] SlowValue@alien.top 1 points 1 year ago

creating a virtual machine build environment so I didn't have to litter my main computer with 100s of packages to build emacs.

That's is a good idea! Despite what all others say. I'm doing this since years with my Linux box(es).

But you need to know, that self compiled programms should be stored below the filesystem tree /usr/local/.
There is a tool called stow, it has a package in most Linux distributions.
Install stow into host and VM and create a directory /usr/local/stow/ in both (host an VM).
When compiling Emacs or other programs use the --prefix option of configure. E.g. cd emacs-src; ./configure --prefix=/usr/local/stow/emacs-v29.1. Then compile Emacs and install it in the virtual machine. After that, tar the folder /usr/local/stow/emacs-v29.1 and unpack it onto the host into the same directory. Then change dir into /usr/local/stow and run sudo stow emacs-v29.1. Maybe you need to install some libraries onto the host, use ldd /usr/local/bin/emacs to see, what libs you need. Then you are ready to use emacs. It is possible to have multiple versions of emacs installed and only one needs to be "activated" via stow.

[–] Over_Mood@alien.top 1 points 1 year ago

Consider building and running in a podman/docker container. Distrobox is a popular way to do this.