我也来水一水文章,讲讲我在用腾讯云的centos7镜像部署的服务器上能痛快的执行“fuck”命令之前到底经历了多少“磨难”,也算是给自己和别人一个参考吧
“fuck”命令实际上是一个python模块“thefuck”,具体我也不在这多废话,常规的安装教程网上也是一搜一大把,这里不做赘述,我主要讲一讲我踩过的坑
首先是python版本,centos7默认的python版本是2.x,而目前thefuck模块所需要的python是python3.x,所以得先安装python3,然后再通过安装模块的方式安装thefuck,这看起来没啥难的,但腾讯云的镜像我猜可能是由于历史原因,里面埋了一些坑
在我这几天折腾服务器的时候,这个奇怪的域名是我踩过最多的坑,我猜这个域名可能是腾讯云以前的域名,不过目前无法求证这个是腾讯云内网访问的域名。它之所以会称为一个坑,是因为腾讯云的centos镜像里面很多地方的“源”都是这个,yum的源和pip的源都是这个,yum的源的问题我通过查阅资料改掉了,这问题不大,但头疼的是pip的源
不知道藏在哪的“Tencentyun”
直接安装thefuck,pip会自动安装所需的其它模块,这本是好事,但头疼的是这个不知道藏身在何处的“Tencentyun”,安装网上的方法更改pip3的源,结果都没用,我只能从它的日志里面找到它需要但又下载失败的那个模块,然后通过pip3 install
命令去手动安装,而且还得注意安装顺序,不然“Tencentyun”就又会出来找你麻烦
如果你问我是怎么知道的,那我就用图片来回答你
由腾讯软件源的内网访问地址带来的坑到这里暂时算是告一段落了,接下来这个坑应该是centos7“通用”的坑
因为缺少python-dev而导致的文件缺失
在图中,从报错信息来看,似乎只是缺少一个文件而已,其实这又是一个坑——缺少python-dev这个程序包。不过可别以为缺啥就直接yum install
啥就行了,如果你真如此天真,那么等待你的只有“找不到这个包”的报错。在centos里面它不叫这个,叫python-devel
,但这在centos7里面又是另一个坑,你直接安装python-devel安装的是python2.x的,但安装thefuck的是python3.x,所以得安装python36-devel
,在安装完成之后再安装psutil
,然后安装pytest-runner
,接着是pyte
,在这些都安装完成之后再来安装thefuck
,装完之后fuck几下就可以正常使用了
所以说,在坑爹的腾讯云centos7上安装thefuck
的全部命令是:
#此处默认你已安装python3,能正常执行pip3命令
yum install python36-devel
#逐个安装thefuck所需的依赖
pip3 install six
pip3 install psutil
pip3 install pytest-runner
pip3 install pyte
pip3 install thefuck
在安装完这些之后,执行fuck会提示让你配置环境,这个时候再执行一次“fuck”,然后再执行source ~/.bashrc
就完成了fuck的安装,可以“愉快的”在服务器上fuck了
顺带说一句,腾讯云的centos8可以直接pip3 install thefuck
,不用手动去一个个安装那些奇怪的依赖模块,再就是没事别乱改服务器的dns,尤其是当服务器的默认dns是内网dns的时候,判断dns是不是内网dns,在云下ping一下就知道了