This is the mail archive of the
mailing list for the Cygwin project.
Re: exim 4.54-1 and broken symlinks
----- Original Message -----
From: "Krzysztof Duleba"
Sent: Thursday, December 08, 2005 2:02 PM
Subject: Re: exim 4.54-1 and broken symlinks
Krzysztof Duleba wrote:
Hum, I just installed the latest exim on a new machine and can't
what you describe. exim-config created
lrwxrwxrwx 1 p-humblet sw 13 Dec 8 10:10 /usr/sbin/sendmail ->
(no .exe anywhere) , as one would expect from the line
ln -s -f /usr/bin/exim /usr/sbin/sendmail &&
Could there be a problem with your ln?
Yes, you're right, the problem is with ln, *.exe magic and exim using
symlink to a symlink. I also think that updating exim (setup.log shows
that I had exim-4.52-2 installed) could do some damage, I'm not sure how,
though. Anyway, it's nothing wrong with Cygwin exim package, as it
OK, now I know the reason. I forgot to reboot my computer after the update
and then I ran exim-config. Things were messed up. Finally I rebooted, but
it didn't help much and exim -bV still showed wrong version number (why?).
Reinstalling exim fixed that, but didn't fix the broken symlink (I
restored it to previous broken state earlier on).
I think there should be some check in the setup that warns *before*
upgrading services that are running. Are there plans for such a feature?
I still don't understand how the .exe got to appear...
What I observe here is that if a.exe exists, then
ln -s a b produces b.exe ==> a.exe (weird to me)
However ln -s a.exe b produces b ==>a.exe
So that explains how sendmail.exe appears when
exim.exe exists, but doesn't explain how /bin/exim.exe
appeared in the first place.
Perhaps a previous version of ln behaved differently.
In that case you might have
/bin/exim.exe ==> /bin/exim-old.exe
/bin/exim ==> /bin/exim-new.exe
To resolve the filename "exim", path.cc in Cygwin searches
for exim, exim.exe, exim.exe.lnk and exim.lnk,
stopping when it finds an existing file.
Thus both "exim" and "exim.exe" resolve to
That would explain what you observed.
You may amuse yourself by typing
ln -s /bin/yes y (produces y.exe.lnk)
ln -s /bin/ls.exe y (produces y.lnk)
and then ./y
Anybody else has a symlink /usr/bin/exim.exe
and/or /usr/sbin/sendmail.exe ?
If so I will fix things in the postinstall of the next
exim release, coming out soon.
Regarding your remark about setup, it should be OK to
install a new exim-Y.exe, while the previous exim-X.exe is
still running. Setup will set the /bin/exim symlink to point
exim-X will keep running until it re-execs following a kill -HUP,
or until a reboot (assuming that cygrunsrv is using the
/bin/exim symlink). Then you get exim-Y.exe.
Doing it that way you can get your server to operate non-stop
through an update. However I am not sure if the old exim-X.exe
is going to be deleted.
Also, each time you run exim-config, it checks if /bin/exim is
executable. If not, it sets the symlink to the most recent version
So, I don't see how forgetting to reboot after an upgrade and
then running exim-config could mess up things. exim-config
should see that exim is running and ask if you want to stop
it. If you answer no, exim-X.exe keeps running. Otherwise
it stops and next time you get exim-Y.exe In no case is the
Unsubscribe info: http://cygwin.com/ml/#unsubscribe-simple
Problem reports: http://cygwin.com/problems.html