linux_base-f8 giving me guff
Alexander Leidinger
Alexander at Leidinger.net
Tue Apr 29 14:46:50 UTC 2008
Quoting Kostik Belousov <kostikbel at gmail.com> (from Tue, 29 Apr 2008
16:13:42 +0300):
> On Tue, Apr 29, 2008 at 04:51:28PM +0400, Boris Samorodov wrote:
>> On Tue, 29 Apr 2008 13:14:59 +0300 Kostik Belousov wrote:
>> > On Tue, Apr 29, 2008 at 10:46:10AM +0400, Boris Samorodov wrote:
>> > > (drop freebsd-ports@ from cross posting)
>> > >
>> > > On Tue, 29 Apr 2008 07:50:01 +0300 Kostik Belousov wrote:
>> > > > On Mon, Apr 28, 2008 at 05:37:18PM -0500, Scot Hetzel wrote:
>> > > > > On Mon, Apr 28, 2008 at 5:16 PM, Walter Venable
>> <weaseal at gmail.com> wrote:
>> > > > > > /usr/ports/emulators/linux_base-f8 $ sudo make
>> > > > > > ===> linux_base-f8-8_3 compat.linux.osrelease: 2.4.2 is
>> not supported.
>> > > > > > *** Error code 1
>> > > > > >
>> > > > > > Stop in /usr/ports/emulators/linux_base-f8.
>> > > > > >
>> > > > > > Ok -- I get it, linux kernel 2.4.2 isn't supported. How
>> do I get around
>> > > > > > this issue? I'm running 6.3-RELEASE-p2...
>> > > > >
>> > > > > sysctl compat.linux.osrelease=2.6.16
>> > >
>> > > > The question that seems to be relevant there is why the port
>> refuses to
>> > > > install with some compat.linux.osrelease value ? Does port run some
>> > > > linux binary during install time (unlikely) ?
>> > >
>> > > Any linux port that installs a shared library (including linux_base
>> > > ports) runs linux ldconfig while (at the very end of) installing.
>> > > Since that ldconfig cannot run with such an old kernel it stops with
>> > > the error.
>>
>> > Thank you for the explanation. I propose the error condition to be
>> > ignored, or warning to be printed etc. The ability to install linux-base
>> > and app ports without even loading linux.ko seems to be too useful.
>>
>> Can you please give (an) example(s) when it is necessary to install
>> files with stale /usr/compat/linux/etc/ld.so.cache?
>>
>> I'm not sure if it make more good than harm... So far we rely on
>> linuxulator being run and check for compat.linux.osrelease value
>> while installing. If that check is removed then we have only FreeBSD
>> OSVERSION which is very unreliable at compat.linux.osrelease quessing.
>
> Assume "I think" or "I propose" at the start of the each sentence below.
> This is only a gentle request for possible enhancement.
>
> It is wrong^H^H^H erm inconvenient to have ld.so.cache to be formed
> at the port installation time. The /usr/local/etc/rc.d/linux_ldconfig
> script that may be run at arbitrary time by the user is much more useful.
>
> I want to have the ability to install linux ports and make the packages
> from them in the chroots without disrupting the host or enabling the
> less tested linux kernel ABI support on the host. I do know about the
> per-jail ABI support, but it is not as convenient as chroot nor it
> solves the issue of the less tested kernel code.
>
> The linux_ldconfig rc script would also ease the local installations
> of the programs that are not present in the ports. Overall, this would
> bring the linux dso handling close to the handling of the freebsd dso,
> that I consider good enough.
We have different DTRT behaviors competing for a solution here.
One is that people want to install it without having the need of a
loaded linux kld (let's call this "expert way"). Another one is that
people want to use an installed port immediately (let's call it the
"user friendly way"). The FreeBSD linux ports are organized in the
user friendly way. In this second category we have two cases, one that
people don't have the linux stuff in the kernel, the other that the
linux bits are available in the kernel. The ports handle both cases by
telling the user what he has to do. As users don't read the install
messages (yes, overly simplified view of the world, I know), the linux
ports abort if the prerequisites are not met.
So far not much people have complained that the linux stuff is
organized like it is. In fact this is the first case I remember of
seeing such a request.
For the linux_base port we may already have the necessary stuff to
handle it after a reboot, but the linux kld can be loaded at any time,
and there's no way we can specify a dependency from loading the kld to
running the linux ldconfig in some way. Additionally, linux_base is
not the only port where we need to run linux programs. For example for
linux-gtk2 we have to run some programs which register some gtk plugins.
Getting this all right while keeping the current user friendlyness is
not done in few minutes.
I don't object to add some I_AM_AN_EXPERT__I_KNOW_WHAT_I_DO-knob which
disables the run of linux programs and removes the linux ABI checks,
but I don't think it is a good idea to rework the linux ports in a way
suggested in this thread. If you read the messages on the mailinglists
regarding the problems people have installing the linux stuff, you
will see that this outnumbers the number of people which want this
"expert functionality" by a large amount. The current way of the linux
ports is a refinement of several years of step by step improvements.
Making an export-knob is also not done in 2 minutes. An ifdef around
the linux kld check, and a ifdef around the run of ldconfig is _not_
enough. We have several places where the linux ldconfig is run (e.g.
in the USE_LDCONFIG know of bsd.port.mk). Patches for this are welcome
on emulation@, but don't expect to get everything right the first time.
Note: there are not much domain specific experts. Some people may
think it is easy to do, but the evil part is in the details.
Hint for people which don't believe me and would like to produce
patches which changes the ports to not require the linux kld by
default: As long as you haven't looked into each emulation@ maintained
linux port line by line, and as long as you haven't considered the
needs of the novice users, don't even try to do some patches which
make the ports install without the linux kld by default, you will
waste a lot of your time if you don't make yourself familiar with all
the ports first.
Bye,
Alexander.
--
In which level of metalanguage are you now speaking?
http://www.Leidinger.net Alexander @ Leidinger.net: PGP ID = B0063FE7
http://www.FreeBSD.org netchild @ FreeBSD.org : PGP ID = 72077137
More information about the freebsd-emulation
mailing list