yumpython27
1. 服务器操作系统应该选择 Debian/Ubuntu 还是 CentOS
着作权归作者所有。
商业转载请联系作者获得授权,非商业转载请注明出处。
作者:彭勇
链接:http://www.hu.com/question/19599986/answer/13723064
来源:知乎
早期,我们使用 Debian 作为服务器软件,后来转向了CentOS,主要原因如下:
1、CentOS/RHEL的生命周期是7年,基本上可以覆盖硬件的生命周期,也就意味着一个新硬件安装以后,不用再次安装操作系统。要知道重新折腾一个生产机是很麻烦而且有风险的事情。
[2012.2.1]今天刚刚收到红帽子的通知邮件,RedHat 5, RedHat 6的生命周期,延长到10年,太牛叉了。这个对企业用户很重要。
而Debian的生命周期是不固定的,一般新版本发布以后,上个版本再维护18个月。而Debian的版本发布时间间隔不稳定,经常会延期。综合起来一个版本的生命周期一般在3~4年。
[2014.4.24]Debian 宣布对Squeeze(6.0),提供5年的LTS长期支持。
Ubuntu的LTS版生命周期是5年。
如果你选用了 Debian 或者 Ubuntu作为服务器,等生命周期过了以后,就没有安全补丁,你的服务器就会裸奔或者需要重新安装系统。
2、RedHat是一个值得尊敬的开源公司,长期以来linux内核RedHat的贡献程度都是最多的。可以这么说,如果一个Linux方面的问题,RedHat搞不定,那么也很少有其他公司可以搞定了。公司有一批Linux内核方面的如雷贯耳的大牛,比如:
Alan Cox - Core developer, numerous contributions
Ingo Molnar - x86 subsystem maintainer
Al Viro - VFS subsystem maintainer, linux内核贡献第二多的个人
David Miller - Sparc Port maintainer, linux网络部分开发者, linux内核贡献最多的个人
Jeff Garzik - Sata subsystem maintainer
John Linville - Wireless subsystem maintainer
Stephen Tweedie - Ext3 filesystem developer
Eric Sandeen - XFS, Ext4 filesystem developer
Josef Bacik - Btrfs filesystem developer
Rik Van Riel - VM developer
Ric Wheeler - Filesystem developer
Val Henson - Filesystem developer
Dave Jones - Fedora kernel maintainer
Kyle McMartin - Fedora kernel maintainer
Chuck Ebbert - Fedora kernel maintainer
Eric Paris - LSM/SELinux/Audit/Capabilities maintainer
Eugene Teo - Security Response
Kay Sievers - Hotplug
3、CentOS/RHEL对硬件的支持很好,主流硬件厂商早就将服务器拿过去测试,一般不存在硬件的兼容性问题。
而Debian就麻烦了,由于有版权上的考虑和代码纯洁性上的洁癖,一些硬件驱动和软件被删掉了,导致安装过程有问题。比如 Dell 服务器上,大量使用的网卡 BroadCom,就驱动不了,安装了以后,网络起不来。
4、大量商业软件,比如 Oracle ,都是针对 Redhat认证的,有大量的帮助文档和使用说明,有良好的技术支持。出了问题,也容易在网上找到类似的答案和经验。
5、CentOS 是RedHat的克隆版,如果需要可以随时平滑切换到 RedHat,从而享受RedHat的服务支持。要知道厂商的服务,是最后一道防火墙,如果你给一个大客户做方案,他们一般会倾向选用商业服务。万一出了什么问题,还有Redhat可以求助,或者有一个RedHat可以承担责任 :-)
6、如果你是一个工程师,熟悉了 CentOS/RedHat ,找工作更加容易。如果你是一个企业老板,相对也容易招聘到熟悉CentOS/RedHat的工程师。RHCE的培训,也相对较完善,认同程度高。
7、CentOS/RHEL 的批量安装更加方便
在机房,使用kickstart + PXE安装,给客户,使用定制的kickstart光盘,一键安装,一般在5分钟左右就可以安装完。
上述3,4,5,6几点中,都说明CentOS/RHEL相对于其他Linux操作系统,有相对完整的生态环境,很多公司在CentOS/RHEL投入了大量资源,积累了大量经验,绑定了自己的利益,这个是CentOS/RHEL得以长期良好发展的保证。
=============
补充对评论的一些回复
1. 所谓的“centos稳定性非常差”,不知道你指的是什么?能否举一些CentOS不稳定的例子?至少我们用了这么多年CentOS,稳定性上可以说是坚如磐石的。如果是你说的由于yum升级造成的混乱,那只能说明你对centos不熟悉。
2、RHEL/centos 对于一些新的软件的支持,采用 SCL的方式支持,比如ruby193,python27, python 33, php 54, nodejs 0.10, mariadb55, postgresql 9.2
AdditionalResources/Repositories/SCL
3、debian/ubuntu 同样存在版本稳定和程序太老的矛盾,比如他们的LTS版本,一般是两年多更新一次。squeeze是2011年2月发布,wheezy是2013年5月发布,如果你在2013年4月使用Debian,你会发觉好多软件太老,比如:
内核:2.6.32,和Centos 6 一样的
glibc 还是使用的2.11.2
mysql使用的5.1.49
openjdk使用的是 6
php使用的是 5.3.3
python使用的是2.6.6
下一个版本的Deiban,至少要到 2015年下半年才能发布,而RHEL7/CentOS7的正式版发布在即,里面用到的不少软件,都比wheezy的要新。按照你的逻辑,在接下来较长的时间里,是否CentOS比起Debian更加前卫?
再看看Rio的回复:“之前我用了很长一段时间的 Debian,但它的更新实在太慢了(好几年啊有木有!)”,呵呵
4、“debian的支持时间也非常长期”,这个最近确实有了改善,Debian刚刚宣布对 Debian 6.0 有了5年的LTS长期支持。可以这么说,Debian也看到了LTS的重要性,向CentOS学习了一把。
Debian -- News -- Long term support for Debian 6.0 Announced
但Debian做得还不够,因为Debian的LTS在后续版本,比如 Debian 7 (wheezy), Debian 8 (jessie) 里的支持政策还不明朗:
Debian -- Security Information -- DSA-2907-1
Debian的LTS支持,也不是Debian 官方安全团队维护的,而是由其他志愿者维护的,工作效率和质量是否有保证还不知道。相比RHEL明晰的发展策略和安全更新策略,有10年的安全补丁保证,还有不少差距。
5、“debian这个系列的软件包也比较新,debian和他儿子ubuntu很多软件包维护是共享的,更新速度非常快”,不知道你使用的是稳定版还是测试版。稳定版里面你是如何看到软件包“更新速度非常快”的。
2. ansible-playbook瀹夎呭湪鍝涓鐩褰
銆pip2.6瀹夎匒nsible锛屼絾鏄痯ip2.6鏄锘轰簬python2.6瀹夎呯殑锛岃宲ython2.6鐗堟湰链夌偣钥併傛墍浠ヨ屽凡鐢╬ython2.7瀹夎匒nsible銆
銆銆鍏跺疄python2.7瀹夎匒nsible鍜宲ython2.6瀹夎呰繃绋嫔熀链涓婃槸涓镙风殑锛屽彧涓嶈繃鍦ㄥ畨瑁匒nsible镓闇瑕佺殑妯″潡鍜孉nsible镞讹纴闇瑕佺敤pip2.7𨱒ュ畨瑁呫
銆銆瀹夎呰繃绋嫔备笅锛
銆銆1銆佸畨瑁卲ython2.7
銆銆瀹夎卲ython2.7鍓岖殑鍑嗗
銆銆yum-yinstallreadlinereadline-devel
銆銆yum-yinstallzlib-devel
銆銆yum-yinstallopensslopenssl-devel
銆銆瀹夎単cc缂栬疟宸ュ叿
銆銆yum-yinstallgcc
銆銆涓嬭浇python2.7瀹夎呭寘
銆銆涓嬭浇鍦板潃锛归ww python.org
銆銆yum-yinstallxz
銆銆tarJxfPython-2.7.11.tar.xz
銆銆cdPython-2.7.11
銆銆mkdir/usr/local/python27
銆銆./configure--prefix=/usr/local/python27
銆銆make&&makeinstall
銆銆鍒涘缓杞杩炴帴
銆銆ln-s/usr/local/python27/bin/python2.7/usr/bin/python2.7
銆銆2銆佸畨瑁卲ip2.7
銆銆瀹夎却etuptools
銆銆涓嬭浇鍦板潃锛歨ttps//pypi.python.org/pypi?%3Aaction=search&term=setuptools&submit=search
銆銆瀹夎咃细
銆銆tarzxfsetuptools-19.6.2.tar.gz
銆銆cdsetuptools-19.6.2
銆銆python2.7setup.pyinstall
銆銆瀹夎卲ip
銆銆涓嬭浇鍦板潃锛歨ttps//pypi.python.org/pypi/pip/
銆銆瀹夎咃细
銆銆tarzxfpip-8.1.0.tar.gz
銆銆cdpip-8.1.0
銆銆python2.7setup.pyinstall
銆銆鍒涘缓杞杩炴帴
銆銆ln-s/usr/local/python27/bin/pip2.7/usr/bin/pip2.7
銆銆3銆佸畨瑁匒nsible
銆銆瀹夎呬緷璧栧寘
銆銆yum-yinstalllibffilibffi-devel
銆銆yum-yinstallgccgcc-c++python-develpython-simplejson
銆銆瀹夎匒nsible闇瑕佺殑python妯″潡
銆銆pip2.
銆銆瀹夎匒nsible
銆銆pipinstallansible
銆銆瀹夎呭畬鎴愬悗锛宎nsible镄勬墽琛屾枃浠跺湪python2.7镄刡in鐩褰曚笅
銆銆[root@localhostbin]#cd/usr/local/python27/bin/
銆銆[root@localhostbin]#ll
銆銆total6240
銆銆-rwxr-xr-x.1rootroot110Jun1517:312to3
銆銆-rwxr-xr-x.1rootroot4203Jun1517:48ansible
銆銆-rwxr-xr-x.1rootroot4203Jun1517:48ansible-console
銆銆-rwxr-xr-x.1rootroot4203Jun1517:48ansible-doc
銆銆-rwxr-xr-x.1rootroot4203Jun1517:48ansible-galaxy
銆銆-rwxr-xr-x.1rootroot4203Jun1517:48ansible-playbook
銆銆-rwxr-xr-x.1rootroot4203Jun1517:48ansible-pull
銆銆-rwxr-xr-x.1rootroot4203Jun1517:48ansible-vault
銆銆-rwxr-xr-x.1rootroot326Jun1517:41easy_install
銆銆-rwxr-xr-x.1rootroot334Jun1517:41easy_install-2.7
銆銆-rwxr-xr-x.1rootroot108Jun1517:31idle
銆銆-rwxr-xr-x.1rootroot284Jun1517:42pip
銆銆-rwxr-xr-x.1rootroot286Jun1517:42pip2
銆銆-rwxr-xr-x.1rootroot290Jun1517:42pip2.7
銆銆-rwxr-xr-x.1rootroot93Jun1517:31pydoc
銆銆lrwxrwxrwx.1rootroot7Jun1517:33python->python2
銆銆lrwxrwxrwx.1rootroot9Jun1517:33python2->python2.7
銆銆-rwxr-xr-x.1rootroot6271354Jun1517:31python2.7
銆銆-rwxr-xr-x.1rootroot1696Jun1517:33python2.7-config
銆銆lrwxrwxrwx.1rootroot16Jun1517:33python2-config->python2.7-config
銆銆lrwxrwxrwx.1rootroot14Jun1517:33python-config->python2-config
銆銆-rwxr-xr-x.1rootroot18556Jun1517:31smtpd.py
銆銆缂栬緫/etc/profile鏂囦欢锛屽姞鍏ヤ互涓嬮厤缃
銆銆exportANSIBLE_HOME=/usr/local/python27
銆銆exportPATH=$PATH:$ANSIBLE_HOME/bin[root@localhostbin]#ansible--version
銆銆ansible2.1.0.0
銆銆configfile=
銆銆configuredmolesearchpath=Defaultw/ooverrides
3. yum python版本 怎么查看
yum info python27
yum info python3
当然,如果你已经安装的话,直接在终端运行 python,就可以看到版本了。
4. 如何在centos下更改默认版本的python
1 centos安装python2.75 (centos6.3)
1 切换到root用户
2 下载tar包
[python] view plain print?
wget http://www.python.org/ftp/python/2.7.5/Python-2.7.5.tgz
3 安装
[python] view plain print?
tar -zxvf Python-2.7.5.tgz
cd Python-2.7.5
./configure --prefix=/usr/local/python27
make&&make install
也可以在configure之后执行 make altinstall 来防止替换掉默认的python版本
补充:有些时候还是会缺少某些c模块
[python] view plain print?
yum -y install python-devel openssl openssl-devel gcc sqlite sqlite-devel mysql-devel libxml2-devel zlib-devel readline-devel bzip2-devel
4 测试下安装好了么
[python] view plain print?
/usr/local/python27/bin/python
可以看到python可以使用了 版本是2.7.5
5 设置软件链接
[python] view plain print?
ln -s /usr/local/python27/bin/python /usr/bin/python27
以后就可以直接使用 python27来使用2.7.5版本了
2 设置为默认的版本
[python] view plain print?
mv /usr/bin/python /usr/bin/python-old
ln -s /usr/local/python27/bin/python /usr/bin/python
再测试一下:
[python] view plain print?
[root@bogon Python-2.7.5]# python
Python 2.7.5 (default, Jul 22 2013, 22:14:28)
[GCC 4.4.7 20120313 (Red Hat 4.4.7-3)] on linux2
Type "help", "right", "credits" or "license" for more information.
这样在使用yum的时候会发现报错了
从新配置下yum
[python] view plain print?
vim /usr/bin/yum
把第一行修改为:#!/usr/bin/python-old
再次输入yum 发现可以正常显示了
这个时候还没有easy_intall和pip ,可以这么安装
[python] view plain print?
wget https://bitbucket.org/pypa/setuptools/raw/bootstrap/ez_setup.py
sudo /usr/local/bin/python2.7 ez_setup.py
sudo /usr/local/bin/easy_install-2.7 pip
在安装东西的时候最好不要用 python xx这么执行,/usr/local/bin/python2.7 这种方式更明确的装到某个python版本更好一些。
5. pip安装失败Python包管理工具pip的安装和使用
我们都知道python有海量的第三方库或者说模块,这些库针对不同的应用,发挥不同的作用。我们在实际的项目中,或多或少的都要使用到第三方库,那么如何将他人的库加入到自己的项目中内呢?
打个电话?大哥你好,想用下你那个库,麻烦给邮箱发个源码呗!显然这是个笑话。Python官方的PyPi仓库为我们提供了一个统一的代码托管仓库,所有的第三方库,甚至你自己写的开源模块,都可以发布到这里,让全世界的人分享下载。当然,除了Python官方的仓库,也有一些其他公司提供的仓库,还有一些私有的或针对内部的仓库。
有了统一的管理仓库,那么我们是不是就可以从上面下载源码进行安装了?原则上是的,只不过由于使用源码安装比较繁琐,容易出错,也不够简便,因此出现了wheel文件格式,类似zip或rar文件,并提供专用的安装工具,帮助我们更快更简便的安装。pip就是这个工具!它能帮助我们自动从仓库上下载并安装第三方库,同时将该库所依赖的而本地没有安装的库一并安装。
由于历史的原因,Python有两个着名的包管理工具easy_install和pip。在Python2.7的安装包中,easy_install是默认安装的,而pip需要我们手动安装。随着Python版本的提高,easy_install已经逐渐被淘汰,但是一些比较老的第三方库,在现在仍然只能通过easy_install进行安装。目前,pip已经成为主流的安装工具,自Python2 >=2.7.9或者Python3.4以后默认都安装有pip。
就如同Python有2、2.7、3、3.6一样,pip也有pip、pip2、pip3之分。pip是从属于Python的,对应的pip负责给对应的Python安装第三方模块。我们不要关心pip后面跟的数字,核心的问题是这个pip命令对应的是哪个Python解释器,一个萝卜一个坑,想要为哪个Python解释器安装第三方库,就要调用它名下对应的pip。
那么如何确定哪个pip是哪个Python的呢?
cmd环境中,输入pip -V(大写V):
注意提示中的Python路径和版本!搞清楚了这点,你就不会搞错了pip。
安装pip那么,如果很不巧,你的Python版本下恰好没有pip这个工具,怎么办呢?解决办法很多!
- 使用easy_install安装: 各种进入到easy_install脚本的目录下,然后运行easy_inatall pip使用get-pip.py安装: 在下面的url下载get-pip.py脚本 curl https://bootstrap.pypa.io/get-pip.py -o get-pip.py 然后运行:python get-pip.py 这个脚本会同时安装setuptools和wheel工具。在linux下使用包管理工具安装pip: 例如,ubuntu下:sudo apt-get install python-pip。Fedora系下:sudo yum install python-pip在windows下安装pip: 在C:python27scirpts下运行easy_install pip进行安装。
刚安装完毕的pip可能需要先升级一下自身: 在Linux或masOS中:pip install -U pip 在windows中:python -m pip install -U pip
pip的基础使用在命令行下,输入pip,回车可以看到帮助说明:
1. 普通安装再次强调,使用pip前请务必确认其所对应的Python解释器必须是你想要的那个!以安装pillow模块为例。输入pip install pillow,安装过程如下图:
2. 指定版本安装安装特定版本的package,通过使用==, >=, , <来指定一个版本号。 pip install 'Markdown2.0,<2.0.3
3. 卸载已安装的库pip uninstall pillow
4. 列出已经安装的库pip list
5. 将已经安装的库列表保存到文本文件中pip freeze > requirements.txt
这个功能非常常用、好用!经常被用作项目环境依赖文件。
6. 根据依赖文件批量安装库pip install -r requirements.txt
使用上面的txt文件,批量安装第三方库。
7. 使用wheel文件安装除了使用上面的方式联网进行安装外,还可以将安装包也就是wheel格式的文件,下载到本地,然后使用pip进行安装。比如我在PYPI上提前下载的pillow库的wheel文件,后缀名为whl。
可以使用pip install pillow-4.2xxxxxxx.whl的方式离线进行安装
pip源的选择很多时候,比如网络不给力,连接超时、防火墙阻挡等等各种原因,我们可能无法从Python官方的PyPi仓库进行pip安装,这时候可以选择国内的第三方源。
使用方法:
pip install -i https://pypi.doubanio.com/simple/ --trusted-host pypi.doubanio.com pillow
需要注意的是,除了最后的pillow用你所期望的库名替代外,前面的参数都是固定写法,包括参数顺序。
6. Windows如何安装pip
python的一些模块可以用pip来进行安装,相当于linux下的yum命令很方便,模块不需要手动去编译安装
pip是依赖python的,首先检查下windows机器上有没有安装python,或者有没有添加到环境变量中,如果都没有需要安装或者加入环境变量
下载并安装python,选择和自己操作系统匹配的版本进行下载,我这里下载的是Windows 64位 2.7.14,有很多模块不支持python3,所以还是选择python2.x中最新也是最后一个版本。
配置好python的环境变量,将python的安装路径C:\Python27配置在path中即可
安装pip,将pip的tar包下载到本地并解压,这个tar.gz格式的是windows和linux通用的包,在Windows下用常规的解压工具即可解压,下载地址如下 https://pypi.python.org/pypi/pip#downloads
进入到pip的解压目录,执行python setup.py install进行安装,安装完成之后出现finished说明安装成功
执行pip命令的提示找不到这个命令,需要将pip的安装路径加入到环境变量中,路径一般为python所在目录的Scripts目录中
下图是环境变量添加成功之后,执行pip list成功,现在pip已经安装成功了,可以用来安装python的一些模块了