Login broken and rc.conf variables suddenly invalid after kernel/world upgrade (?!?!)

Garrett Cooper youshi10 at u.washington.edu
Fri Apr 7 17:39:18 UTC 2006

Garrett Cooper wrote:

> On Fri, 7 Apr 2006, Bill Moran wrote:
>> On Thu, 6 Apr 2006 21:14:33 -0700
>> Garrett Cooper <youshi10 at u.washington.edu> wrote:
>>>     So, I basically upgraded my source again and did installworld. Had
>>> to run make quite a few times because it appeared that the makefile
>>> for /usr/src was broken (or at least the targets were incorrect since
>>> it kept on complaining about stuff not being compiled in buildworld).
>>> So I ran mergemaster, and things appeared to be running smoothly, but
>>> now it appears that my system is screwed up, due to bash. Granted, I
>>> used bash as my login shell for both root and my local account, and
>>> to solve this problem I tried recompiling the program from ports in
>>> single user mode, but every single time I login it complains about
>>> not being able to find libintl.so.6 (I believe), which is a part of
>>> gettext. I eventually gave up on trying to reinstall and fix bash and
>>> gettext, but when I try and login, the stupid machine still claims to
>>> be missing the library, regardless of the fact that it's no longer my
>>> login shell and I sed'ed both /etc/shells and /etc/passwd and /etc/
>>> master.passwd so that they no longer have bash in them.
>>>     I'm just basically stumped and I need a lot of help here, because
>>> the machine's inaccessible (the rc 'daemon' complains all the
>>> variables setup in rc.conf aren't valid--although they are), and I
>>> would greatly appreciate any help anyone can give me.
>> It doesn't sound like you correctly followed the upgrade procedure, 
>> since
>> there is no "make" in that procedure.
> I did though (which is the confusing part). What I did when trying to 
> upgrade from 6.0 to 6.1-PR2:
> make buildworld; reboot; # booted into single user mode.

mergemaster -p

> make installworld; # failed here partway through claiming that 
> dependencies hadn't been compiled.
> make buildworld; # still failed
> #many makes later and make all's later
> make installworld # success


> exit
> #login attempt
> /libexec/ld-elf.so.1: Shared object "libintl.so.6" not found, required 
> by "-bash"
> #rebooted into single user mode.
> #sed'ed /etc/passwd and /etc/master.passwd to change shell from /bin/csh
> exit
> #repeat from login attempt.
> I've chased down the library to gcc, and I did later clean and remake 
> libiconv, gettext, and bash, but still no dice (get the same error 
> message as before).
>> Additionally, you can't just change /etc/master.passwd without running
>> cap_mkdb to have the changes take effect.
> Did that just a while ago; thanks for the tip. Didn't change the 
> overall behavior though... :(
>> As a hint for future work: If you think a Makefile provided by the 
>> FreeBSD
>> team is "broken", the wisest course of action would be to post here 
>> _before_
>> you commit to an upgrade that is unlikey to work.
> I know that if I didn't follow through with the makes my system would 
> have been completely crippled since some libs had been recompiled and 
> installed, whereas others had not been because 6.0 features a 
> different version of gcc and libc than 6.1 does.
> If you could provide a command which corrects the spwd.db and pwd.db 
> files, I think that will allow me to permanently set my shell to 
> /bin/csh, which will allow me to login and start fixing my machine 
> from something other than single-user mode.
> TIA again,
> -Garrett

By the way, I also ran mergemaster as shown above. I forgot to 
originally include that.

More information about the freebsd-questions mailing list