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

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



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.
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


More information about the freebsd-questions mailing list