Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Fig not working on CentOS 6 #102

Closed
dduportal opened this issue Feb 19, 2014 · 28 comments · Fixed by #505
Closed

Fig not working on CentOS 6 #102

dduportal opened this issue Feb 19, 2014 · 28 comments · Fixed by #505

Comments

@dduportal
Copy link

Hi, after some tries to install and run Fig on my centos 6 x64 box, i'm unable to run it on this box.

Briefly, is my problem :

[vagrant@centos-6-x64-docker ~]$ fig --version
Traceback (most recent call last):
  File "/usr/bin/fig", line 9, in <module>
    load_entry_point('fig==0.2.2', 'console_scripts', 'fig')()
  File "/usr/lib/python2.6/site-packages/fig/cli/main.py", line 27, in main
    console_handler = logging.StreamHandler(stream=sys.stderr)
TypeError: __init__() got an unexpected keyword argument 'stream'
  • My configuration :
[vagrant@centos-6-x64-docker ~]$ cat /etc/system-release
CentOS release 6.5 (Final)
[vagrant@centos-6-x64-docker ~]$ python --version
Python 2.6.6
[vagrant@centos-6-x64-docker ~]$ docker -v
Docker version 0.8.0, build cc3a8c8/0.8.0
  • Install procedure :
    • At first, i installed pip from standard yum, and then install fig from pip
[vagrant@centos-6-x64-docker ~]$ sudo yum install -y python-pip
....
[vagrant@centos-6-x64-docker ~]$ pip --version
pip 1.3.1 from /usr/lib/python2.6/site-packages (python 2.6)
[vagrant@centos-6-x64-docker ~]$ sudo pip install -U fig
...
<Note that the log complains about libyaml not found>
...
[vagrant@centos-6-x64-docker ~]$ fig --version
Traceback (most recent call last):
  File "/usr/bin/fig", line 9, in <module>
    load_entry_point('fig==0.2.2', 'console_scripts', 'fig')()
  File "/usr/lib/python2.6/site-packages/fig/cli/main.py", line 27, in main
    console_handler = logging.StreamHandler(stream=sys.stderr)
TypeError: __init__() got an unexpected keyword argument 'stream'
  • Well, due to libyaml complains, i managed to reinstall the box and adding somme useful packages (python headers, libyaml and its headers to get rid of these messages and ensure all is fine, but same sad ending :
[vagrant@centos-6-x64-docker ~]$ sudo yum -y install python-pip python-devel git libyaml libyaml-devel
....
[vagrant@centos-6-x64-docker ~]$ pip --version
pip 1.3.1 from /usr/lib/python2.6/site-packages (python 2.6)
[vagrant@centos-6-x64-docker ~]$ sudo pip install -U fig
...
[vagrant@centos-6-x64-docker ~]$ fig --version
Traceback (most recent call last):
  File "/usr/bin/fig", line 9, in <module>
    load_entry_point('fig==0.2.2', 'console_scripts', 'fig')()
  File "/usr/lib/python2.6/site-packages/fig/cli/main.py", line 27, in main
    console_handler = logging.StreamHandler(stream=sys.stderr)
TypeError: __init__() got an unexpected keyword argument 'stream'

So, is anyone reproducing this on CentOS ? Given i'm not a python guy, i don't have the background to judge what is missing (python version ? pip issue ? Fig dependencies broken ?), please help me :-)

Thanks in advance for the work !

@aanand
Copy link

aanand commented Feb 20, 2014

Looks like an Python 2.6/2.7 issue - the stream argument used to be called strm:

I'll see if it's an easy fix, but if you're able, upgrading to Python 2.7 should fix it.

@dduportal
Copy link
Author

Ih !

The main problem with using a recent (decent ? :-)) python version on RHEL is that it can interfers with yum ecosystem, built on python (2.6.x).

After some researches, i managed to install a python v2.7.6 and succesfully run fig into my CentOS box. Here is a gist of my first shell script used to automate the install : https://gist.github.com/dduportal/9293135

Do you want a pull request to the documentation for CentOS support with a more "sophisticated" version of this script (i'm thinking about future versions of python) ?

@aanand
Copy link

aanand commented Mar 3, 2014

@dduportal We've just released Fig 0.3.0 with binaries for Darwin and Linux. Care to give it a try?

http://orchardup.github.io/fig/install.html

If it works, I'll close this issue.

@dduportal
Copy link
Author

@aanand : First try : Centos 6.5 x64, with default python (2.6.x) and fig 0.3.1 freshly curled, seems like missing native libs on my box :

[vagrant@centos-6-x64-docker ~]$ fig --version
fig: /lib64/libc.so.6: version `GLIBC_2.14' not found (required by /tmp/_MEI68zVQq/libz.so.1)
[vagrant@centos-6-x64-docker ~]$ ls -l /usr/local/bin/fig
-rwxr-xr-x 1 root root 5099163 Mar  5 06:29 /usr/local/bin/fig
[vagrant@centos-6-x64-docker ~]$ python --version
Python 2.6.6

I'll give a try with python 2.7

@bfirsh
Copy link

bfirsh commented Mar 5, 2014

Oh good grief I thought Pyinstaller created static binaries.

I guess we need to link against an older version of libc. Ubuntu 12.04 (the oldest available on Docker) comes with libc 2.15. I guess we could compile inside Centos, then in theory it'll work on Ubuntu.

@bfirsh
Copy link

bfirsh commented Mar 5, 2014

It's nothing to do with your Python version – don't worry. The binary comes with a Python interpreter. It's just linked to the wrong version of libc.

@bfirsh
Copy link

bfirsh commented Mar 5, 2014

@dduportal
Copy link
Author

Hey that's awesome if you embed your python interpreter! I was managing to run fig into boot2docker (https://github.com/boot2docker/boot2docker), a very small linux for running docker on dev envs :-) It'll be cool ! I'll give you some feedback on boot2docker too.

@bfirsh
Copy link

bfirsh commented Mar 5, 2014

Would be interested to hear, thanks! We've got an issue about about that here: #26

@devinus
Copy link

devinus commented Mar 5, 2014

I'm chiming in to say I have this exact same problem. I'd love for my provisioning script to stay simple, rather than compiling Python 2.7 just to run fig.

@dduportal
Copy link
Author

@devinus it seems that compiling python no longer resolve this. The new fig embed its own python install, which is very cool, they're just facing little disagrements with static libs :-) Wait & see

@dduportal
Copy link
Author

Some more tests with Centos 6.5 base box x64

[vagrant@vagrant-centos65 ~]$ fig --version
fig: /lib64/libc.so.6: version `GLIBC_2.14' not found (required by /tmp/_MEIHQJfwW/libz.so.1)

(with this public vagrant basebox : https://github.com/2creatives/vagrant-centos/releases/download/v6.5.1/centos65-x86_64-20131205.box)

@devinus
Copy link

devinus commented Mar 9, 2014

According to http://www.pyinstaller.org/wiki/FAQ:

Under Linux, I get runtime dynamic linker errors, related to libc. What should I do?

The executable that PyInstaller builds is not fully static, in that it still depends on the system libc. Under Linux, the ABI of GLIBC is backward compatible, but not forward compatible. So if you link against a newer GLIBC, you can't run the resulting executable on an older system. The supplied binary bootloader should work with older GLIBC. However, the libpython.so and other dynamic libraries still depends on the newer GLIBC. The solution is to compile the Python interpreter with its modules (and also probably bootloader) on the oldest system you have around, so that it gets linked with the oldest version of GLIBC.

@proppy
Copy link

proppy commented Apr 25, 2014

same issue versionGLIBC_2.14' not found` with debian wheezy

ii  libc6:amd64                   2.13-38+deb7u1      amd64               Embedded GNU C Library: Shared libraries)

@omeid
Copy link

omeid commented Jun 3, 2014

Bump.

@gregberge
Copy link

+1

@alandman81
Copy link

So forgive my ignorance but what is the correct fix for this? I'd like to be able to run the storm-docker project (https://github.com/wurstmeister/storm-docker) and it requires fig. I'm running CentOS 6. I get the /lib64/libc.so.6: version `GLIBC_2.14' not found (required by /tmp/_MEIWyw34L/libz.so.1) error after installing via curl.

@d11wtq
Copy link

d11wtq commented Jul 30, 2014

I guess you need to yum install glibc. We use CentOS at work, so I'll be able to check when I get into the office in a few hours.

@dnephin
Copy link

dnephin commented Jul 30, 2014

Using https://github.com/jordansissel/fpm to create rpm/debs instead of of just bins with pyinstaller might make fig easier to install.

I ran script/build-linux and tried the executable on a ubuntu box, and I got the same error. I don't think it's necessarily specify to CentOS, it has to do with pyinstaller building a bin that links to something that is not available. This is exactly what packages (dev/rpm) are designed to solve!

@alandman81
Copy link

Since this issue is still unresolved I am guessing it remains an issue?

@ratabora
Copy link

ratabora commented Aug 6, 2014

Bump. Definitely still an issue. Testing on fresh baked CentOS 6.5.

$ fig --version
fig: /lib64/libc.so.6: version `GLIBC_2.14' not found (required by /tmp/_MEI1qp4JO/libz.so.1)

@aanand
Copy link

aanand commented Aug 6, 2014

Would be worth seeing if we can get the Dockerfile to use CentOS 6 (or something with an equivalently old libc).

@rweng
Copy link

rweng commented Aug 8, 2014

+1, it says here that installing glibc 2.14 on CentOS 6 is probably not a good idea and will break everything.

@taylodl
Copy link

taylodl commented Aug 12, 2014

I got it to work on CentOS 6.5:

sudo yum install python-pip
sudo pip install -U fig

I was having the same glibc 2.14 issue everyone else has been having using curl to download a release and so I did the above and it worked like a champ.

aanand added a commit to aanand/fig that referenced this issue Aug 12, 2014
Hopefully a solution to docker#102.

Signed-off-by: Aanand Prasad <aanand.prasad@gmail.com>
@aanand
Copy link

aanand commented Aug 12, 2014

Could anyone who experiences this issue try building and running the binary according to the instructions in #405?

(@dduportal @devinus @proppy @omeid @neoziro @alandman81 @ratabora @rweng @taylodl)

@dduportal
Copy link
Author

Confirmed it works on centos6 docker image and my centos 6.5 VM.

Thanks for the work !

@jengstrom
Copy link

RHEL 6.5 Error

$ fig --version
fig: /lib64/libc.so.6: version `GLIBC_2.14' not found (required by /tmp/_MEIAlLbio/libz.so.1)

$ python --version
Python 2.6.6

@aanand
Copy link

aanand commented Aug 21, 2014

@jengstrom Have you tried building and running the binary in #405?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging a pull request may close this issue.