help-gnu-emacs
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: make install does not setup systemd correctly


From: Bingo
Subject: Re: make install does not setup systemd correctly
Date: Mon, 16 Jul 2018 20:03:07 +0530

Thanks Noam. See replies inline 

On Sun, 15 Jul 2018 20:40:21 -0400
Noam Postavsky <npostavs@gmail.com> wrote:

> On 15 July 2018 at 06:58, Bingo <right.ho@gmail.com> wrote:
> > Hi,
> >    On my Fedora installation, emacs 25.3 was already installed
> >    in /usr/bin. In another
> >    location (~/Downloads/emacs26/install/bin/emacs) , I installed
> > emacs 27.0 from source using ./configure, make and make install.
> > $PATH contains ~/Downloads/emacs26/install/ before /usr/bin.
> >
> > In this state, running "emacs --daemon" creates a emacs process,
> > using the binary from ~/Downloads/emacs26/install as a subprocess
> > of systemd.  
> 
> As far as I understand it, when you are running systemd, every process
> is a subprocess of systemd, because it's the init process, so it's at
> the root of the process tree.

In my case, it is not exactly so. There is another, non-init, non PID
1 process of systemd , with PID 4142 in this case, under which these
emacs daemons reside. To illustrate :

bingo    4142     1  0 juil.15 ? 00:00:00 /usr/lib/systemd/systemd
--user

bingo    9976  4142  0 juil.15 ?
00:00:10 /home/bingo/Downloads/emacs26/install/bin/emacs --daemon



> 
> > But the systemd configuration still uses the configuration info
> > from /lib/systemd/user/emacs.service, which is from the
> > pre-installed emacs 25.3. Any systemd operations end up using the
> > binary from /usr/bin.  
> 
> Maybe because it doesn't use your $PATH configuration? The
> emacs.service file doesn't seem to have anything version specific in
> it.

I had checked the symlink /proc/9976/exe : it does point the way I
expect from $PATH i.e. /home/bingo/Downloads/emacs26/install/bin/emacs. 

The emacs.service has an extremely version specific thing in it :
"ExecStart=/usr/bin/emacs --daemon". This is an emacs binary which is
25.3 - but probably it could have been any version.

> 
> > 1. Emacs man page, or --help does not give an obvious way to not use
> > systemd for its daemon. Is it supported at all ?  
> 
> I guess just don't use any "systemd operations"?

The configuration that ships with emacs has, e.g., 
Restart=on-failure
ExecStart=/usr/bin/emacs --daemon

I am guessing that emacs is coming under the "on-failure" condition
somehow. So the "systemd operations" are not being used intentionally.

Since I am not sure what could have caused on-failure, so I am not
asking about that problem here. But only with an improvement to the
emacs installation process in mind, I am asking these questions.

> 
> Currently Emacs doesn't use systemd at all, except that it takes
> sockets passed by systemd and makes them available to the
> `:use-external-socket' option of `make-network-process'.

Specifically becoming a subprocess of a particular systemd process
seems to be more than taking sockets - but maybe there are some terms
here that I don't fully understand.

> 
> > 2. If we are not making it easy to avoid systemd, let us configure
> > it while installing? Emacswiki says that we need to copy the
> > included emacs.service file to
> > ~/.config/systemd/user/emacs.service. It seems to help - my
> > emacsclient has not been hanging since then. But couldn't make
> > install have copied this file by default ? Or used emacs.service
> > file from the correct place when a binary from this emacs 27.0
> > installation is being run as daemon ?  
> 
> According to this comment in Makefile.in, it's not entirely clear
> where the service file should get installed.
> 
> # Where the etc/emacs.service file is to be installed.
> # The system value (typically /usr/lib/systemd/user) can be
> # obtained with: pkg-config --variable=systemduserunitdir systemd
> # but that does not respect configure's prefix.
> # It is not clear where we should install this file when
> # prefix != /usr (or /usr/local?) (eg for non-root installs).
> # Other options include ~/.config/systemd/user/,
> # $XDG_RUNTIME_DIR/systemd/user/
> # It seems the user may end up having to make a manual link...
> systemdunitdir=$(libdir)/systemd/user


Ok, so it looks like ~/.config/systemd/user was considered. I agree that
it may not be ideal. I am not sure if systemd makes it possible to use 
$PREFIXDIR/lib/systemd/user/emacs.service .



thanks



reply via email to

[Prev in Thread] Current Thread [Next in Thread]