Login broken and rc.conf variables suddenly invalid after
kernel/world upgrade (?!?!)
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
/libexec/ld-elf.so.1: Shared object "libintl.so.6" not found, required by
#rebooted into single user mode.
#sed'ed /etc/passwd and /etc/master.passwd to change shell from /bin/csh
#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.
More information about the freebsd-questions