在gentoo环境下安装tensorflow

来源:互联网 发布:ping网络命令 编辑:程序博客网 时间:2024/05/21 06:01

谷歌的tensorflow包在gentoo环境下安装挺非周折,作者折腾了一天,总算搞定了。


我的gentoo是2013年安装的,计划安装tensorflow 0.5.0,上网了解到tensorflow最好的使用环境是python,虽然我不了解python,但有其它语言做基础,觉得安装没什么难度。于是不加思索直接下了个tensorflow包,解压后就想试用,在python环境里:


可想而知,碰了一鼻子灰。

查谷歌文档:http://wiki.jikexueyuan.com/project/tensorflow-zh/get_started/os_setup.html,觉得我这个环境(主要是有两个版本的python,2.7.5和3.2),最好方法用virtualenv安装,不容迟疑,那就赶快装个virtual 吧!

$ emerge virtualenv

由于存在两个版本的python,好像virtualenv要我决定使用哪个版本python才emerge得到,按照网络上所说打入:

$PYTHON_TARGETS="python2_7" emerge virtualenv

emerge说我有很多包block virtualenv,特别是python block的最狠。在网上到处找,很是烦人,终于在gentoo的官网上找到一丝踪迹,https://www.gentoo.org.cn/mirrorlist/,原来是我的gentoo太老了,长时间不更新,包被阻塞。于是按照gentoo的官网修改/etc/portage/make.conf

# These settings were set by the catalyst build script that automatically# built this stage.# Please consult /usr/share/portage/config/make.conf.example for a more# detailed example.CFLAGS="-O2 -pipe"CXXFLAGS="${CFLAGS}"# WARNING: Changing your CHOST is not something that should be done lightly.# Please consult http://www.gentoo.org/doc/en/change-chost.xml before changing.CHOST="x86_64-pc-linux-gnu"# These are the USE flags that were used in addition to what is provided by the# profile used for building.USE="bindist mmx sse sse2 gtk2 gtk3 -gnome qt4 dvd alsa cdr -minimal branding d$SYNC="rsync://mirrors.ustc.edu.cn/gentoo-portage/"GENTOO_MIRRORS="http://mirrors.aliyun.com/gentoo/"PORTDIR="/usr/portage"DISTDIR="${PORTDIR}/distfiles"PKGDIR="${PORTDIR}/packages"INPUT_DEVICES="evdev synaptics"VIDEO_CARDS="intel"
添加了红色这两行。然后运行命令:emerge-webrsync。

 wenxu ~ # emerge-webrsyncFetching most recent snapshot ...Trying to retrieve 20160425 snapshot from http://mirrors.aliyun.com/gentoo ...Fetching file portage-20160425.tar.xz.md5sum ...Fetching file portage-20160425.tar.bz2.md5sum ...Fetching file portage-20160425.tar.gz.md5sum ...20160425 snapshot was not foundTrying to retrieve 20160424 snapshot from http://mirrors.aliyun.com/gentoo ...Fetching file portage-20160424.tar.xz.md5sum ...Fetching file portage-20160424.tar.xz.gpgsig ...Fetching file portage-20160424.tar.xz ...Checking digest ...Getting snapshot timestamp ...Syncing local tree ...Number of files: 208119Number of files transferred: 766Total file size: 410.83M bytesTotal transferred file size: 2.97M bytesLiteral data: 2.97M bytesMatched data: 0 bytesFile list size: 5.18MFile list generation time: 0.001 secondsFile list transfer time: 0.000 secondsTotal bytes sent: 6.41MTotal bytes received: 42.08Ksent 6.41M bytes  received 42.08K bytes  49.84K bytes/sectotal size is 410.83M  speedup is 63.65Cleaning up ... * IMPORTANT: 25 news items need reading for repository 'gentoo'. * Use eselect news to read news items.wenxu ~ # 
这是最新的portage树和distfiles列表了。关键是再次emerge virtualenv,它居然干开了大笑

心里挺乐哈,按照官网说明,就差几个命令的事!

$ virtualenv --system-site-packages ~/tensorflow$ cd ~/tensorflow
$ source ./bin/activate
这些当然没问题,包括这个也没太大问题:

pip install https://storage.googleapis.com/tensorflow/linux/cpu/tensorflow-0.5.0-cp27-none-linux_x86_64.whl
只是墙的谷歌有时抽风,试了很多次才安装完成。但问题又来了,pip是pip了,可见不着tensorflow的影子,抓狂

 $ pip install https://storage.googleapis.com/tensorflow/linux/cpu/tensorflow-0.5.0-cp27-none-linux_x86_64.whlDownloading/unpacking https://storage.googleapis.com/tensorflow/linux/cpu/tensorflow-0.5.0-cp27-none-linux_x86_64.whl  Downloading tensorflow-0.5.0-cp27-none-linux_x86_64.whl (10.9MB): 10.9MB downloadedRequirement already satisfied (use --upgrade to upgrade): numpy>=1.9.2 in ./lib/python2.7/site-packages (from tensorflow==0.5.0)Requirement already satisfied (use --upgrade to upgrade): six>=1.10.0 in ./lib/python2.7/site-packages (from tensorflow==0.5.0)Installing collected packages: tensorflowSuccessfully installed tensorflowCleaning up...

还好,find一下就有了分晓。

 $ find . -name tensorflow./lib/python2.7/site-packages/tensorflow
网上还说tensorflow依赖这几个包:Numpy、SciPy、scikit-learn和Matplotlib。来,pip它们。

该死的墙,我X墙妈八次!没梯子,这时才想到梯子太有用了!用关键词“镜像”搜索,有了,http://www.xuebuyuan.com/2101031.html,国内有,还有pip命令的用法,这网页的兄弟,太谢谢你了!

于是我打入:pip install -i http://pypi.tuna.tsinghua.edu.cn/simple numpy

爽死了,感受到车从泥巴路上了高速!

再pip scipy、scikit-learn、matplotlib,都没问题,我笑的合不拢嘴!可是,进入python,打入import tensorflow as tf命令,问题大了,说我的glibc版本2.15,太低,需要2.17以上,glibc可不好惹,那是命门,搞不好泰山崩于前!要很小心求证,操作,我跌入冰窟窿。。。饭都吃不香,得用emerge,一提emerge我心里总犯毛,太容易block了,而且我不会解决。这前面就像毛驴的前头的萝卜,很难够得着。网上有人说gentoo的安装机制不会对glibc升级构成威胁,于是我放心去emerge了。emerge...emerge,我等阿等,终于等来了successful。

兴奋!赶快去python里打入:import tensorflow as tf试一试,又来错误了,说libcxx版本低,继续emerge sys-libs/libcxx,惨了,无比惨,居然说gcc版本低,编译了一半撂摊子了,不带这样玩的吧?难不成我要升级gcc?

升就升呗,没见世面阿?

打入:emerge gcc

哗啦啦的,屏幕滚动,好不欢快哦!放心吃饭去,晚饭还没吃呢!等回来,悲剧了,是emakeBUILD错误,无法进行下去。这也太不靠谱了,用错误信息搜索,有说警告级别太高,应该降低,有说sanbox版本低导致,都试了,错误依然不改!

不死心,来官网https://wiki.gentoo.org/wiki/Upgrading_GCC/zh-cn上,居然被我撞上了,原来升级gcc先要升libtool。

有了救命稻草,当然不犹豫:


$ emerge --oneshot libtool 
$ emerge gcc
1461627207:  *** emerge  gcc1461627236:  >>> emerge (1 of 1) sys-devel/gcc-4.9.3 to /1461627236:  === (1 of 1) Cleaning (sys-devel/gcc-4.9.3::/usr/portage/sys-devel/gcc/gcc-4.9.3.ebuild)1461627326:  === (1 of 1) Compiling/Merging (sys-devel/gcc-4.9.3::/usr/portage/sys-devel/gcc/gcc-4.9.3.ebuild)1461632519:  === (1 of 1) Merging (sys-devel/gcc-4.9.3::/usr/portage/sys-devel/gcc/gcc-4.9.3.ebuild)1461632536:  >>> AUTOCLEAN: sys-devel/gcc:4.9.31461632582:  === (1 of 1) Updating world file (sys-devel/gcc-4.9.3)1461632582:  === (1 of 1) Post-Build Cleaning (sys-devel/gcc-4.9.3::/usr/portage/sys-devel/gcc/gcc-4.9.3.ebuild)1461632582:  ::: completed emerge (1 of 1) sys-devel/gcc-4.9.3 to /1461632582: === Unmerging... (sys-devel/gcc-4.7.3-r1)1461632591:  >>> unmerge success: sys-devel/gcc-4.7.3-r11461632591:  *** Finished. Cleaning up...1461632592:  *** exiting successfully.1461632593:  *** terminating.
(wang)wenxu@wenxu ~/wang/lib/python2.7/site-packages/tensorflow $ pythonPython 2.7.5 (default, Oct 10 2013, 05:44:34) [GCC 4.7.3] on linux2Type "help", "copyright", "credits" or "license" for more information.>>> import tensorflow>>> hello=tensorflow.constant("Hello,tensorflow!")>>> se=tensorflow.Session()I tensorflow/core/common_runtime/local_device.cc:25] Local device intra op parallelism threads: 2I tensorflow/core/common_runtime/local_session.cc:45] Local session inter op parallelism threads: 2>>> print se.run(hello)Hello,tensorflow!>>> 
大功告成。

0 0