linux app port, "version `GLIBC_2.4' not found"

Alexander Leidinger Alexander at Leidinger.net
Mon Feb 4 08:40:03 PST 2008


Quoting Dmitry Marakasov <amdmi3 at amdmi3.ru> (from Mon, 4 Feb 2008  
17:52:13 +0300):

> * Beech Rintoul (beech at freebsd.org) wrote:
>> > I'm trying to port a linux app, and it says:
>> >
>> > % ./app
>> > ./app: /lib/obsolete/linuxthreads/libc.so.6: version `GLIBC_2.4'
>> > not found (required by ./app)
>> >
>> > Seems like linux_base-fc4 is too old for this application, as it
>> > requires glibc 2.4. Is there a way to indicate in a port that newer
>> > linux_base is needed?
>>
>> From bsd.port.mk:
>>
>> # USE_LINUX		- Set to yes to say the port needs the default linux base
>>                                   port.
>> #				  Set to value <X>, if the port needs emulators/linux_base-<X>.
>> #				  If set to "7", a dependency is registered to
>> 		                  emulators/linux_base.
>> #				  Implies appropriate settings for STRIP and STRIP_CMD.
> Yes, but this info seems a bit outdated for me.
> First, there's no linux_base-7. Besides fc4 there's fc6 and f7, what

It takes a full exp-build cycle to get a change in bsd.port.mk into  
the tree. Nobody invested the hassle so far to change this comment. As  
it is just an example, and not a "there has to be a linux_base-7  
port"-comment, there's no real pressure to change it to something else.

> should I use? Also, what'll happen if user has linux_base-fc4
> installed already? Seems to me that it would be better to check for

If any other linux_base is installed, the install will fail.

> linux glibc >=2.4 and ask user to reinstall newer linux_base if it's not
> found.
> The problem is there are no examples for this, everyone just use
> LINUX_BASE=yes.

To use any newer linux base port, you need to switch to linux 2.6  
emulation, as the depend on features of 2.6. This 2.6 emulation is  
currently
  - only available in 7.0 and 8-current (default = 2.4)
  - not stable yet (known bugs)
  - lacks some syscalls which are necesary for full 2.6.16 emulation

As long as we don't have 2.6 emulation in a good shape, we can not  
switch to it, and as such, we can not switch to a more recent linux  
base port. So any port port which _really_ depends upon a newer linux  
base port has to use USE_LINUX=fc6 or USE_LINUX=f7.

Which one you take is up to you, but the most recent one is probably  
the best thing to do in this case. If you additionally want to check  
for glibc>=2.4, it's up to you too, but any message which suggest to  
update to a non-default linux base (default = fc4) should ("should" as  
in "if you don't do it, you will screw users") contain the information  
that this needs to switch the kernel to 2.6.16 emulation, and that  
this will only work on 7.0 or later, and that at least in 7.0 there  
are known problems with the non-default linux emulation. We are also  
low on people with enough time to debug and fix problems in the 2.6  
emulation, so anybody with problems should expect that he has to debug  
and fix the real cause of the problem himself. On emulation@ we are  
helpful as far as our time allows, but the time is low ATM.

Bye,
Alexander.

-- 
Newlan's Truism:
	An "acceptable" level of unemployment means that the
	government economist to whom it is acceptable still has a job.

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-ports mailing list