This is the mail archive of the cygwin mailing list for the Cygwin project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: exim 4.54-1 and broken symlinks


----- Original Message ----- From: "Krzysztof Duleba"
To: <cygwin@cygwin.com>
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 reproduce
what you describe. exim-config created
lrwxrwxrwx 1 p-humblet sw 13 Dec 8 10:10 /usr/sbin/sendmail -> /usr/bin/exim*
(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 appears.

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?

Krzysztof Duleba

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
/bin/exim-old.exe
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
to exim-Y.exe.
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
in  /bin/exim*.exe.
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
symlink affected.

Pierre





--
Unsubscribe info:      http://cygwin.com/ml/#unsubscribe-simple
Problem reports:       http://cygwin.com/problems.html
Documentation:         http://cygwin.com/docs.html
FAQ:                   http://cygwin.com/faq/


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]