这篇文章上次修改于 1365 天前,可能其部分内容已经发生变化,如有疑问可询问作者。

title: kali 2019安装pyenv的正确姿势
date: 2021/02/26 13:00:00
updated: 2021/02/26 13:00:00
permalink: how-to-install-pyenv-on-kali-2019/

toc: true

众所周知我是miniconda的重度用户,所以py环境都是miniconda来管理的,请允许我振声高呼:miniconda yyds

不过pyenv在kali 2019上的安装目前已经成为许多肉师傅课程初学者的一道坎,在此提供一种解决方案,让你再也不用担心pyenv的安装了!

核心方案:

  • 使用kali 2021 ×
  • 使用kali 2020 ×
  • 更新kali 2019到最新 √

环境和工具

  • kali-linux-2019.4-vmware-amd64.zip
  • 可用于proxychains的代理(可选)

步骤

首先解压kali-linux-2019.4-vmware-amd64.zip,然后使用VMWare打开虚拟机,没有额外的配置建议,但请一定要取消掉加速3D图形

开机,用户名root,密码toor

修改软件源(如果后面更新系统使用代理,那么建议不修改

nano /etc/apt/sources.list

注释掉原有的地址,添加ustc地址

deb https://mirrors.ustc.edu.cn/kali kali-rolling main non-free contrib
deb-src https://mirrors.ustc.edu.cn/kali kali-rolling main non-free contrib

编辑之后按Ctrl S保存,按Ctrl X退出

然后使用apt update你会遭遇下面的错误

Err:1 https://mirrors.ustc.edu.cn/kali kali-rolling InRelease
  The following signatures were invalid: EXPKEYSIG ED444FF07D8D0BF6 Kali Linux Repository <[email protected]>
Reading package lists... Done
W: GPG error: https://mirrors.ustc.edu.cn/kali kali-rolling InRelease: The following signatures were invalid: EXPKEYSIG ED444FF07D8D0BF6 Kali Linux Repository <[email protected]>
E: The repository 'https://mirrors.ustc.edu.cn/kali kali-rolling InRelease' is not signed.
N: Updating from such a repository can't be done securely, and is therefore disabled by default.
N: See apt-secure(8) manpage for repository creation and user configuration details.

这个时候只需要重新获取添加一下key就可以了

wget -q -O - https://archive.kali.org/archive-key.asc | apt-key add

然后愉快地升级系统到最新,这个过程比较耗时(漫长等待)

以及可能出现一些提示,一路yes即可,或者需要阅读的东西,按q跳过即可

apt update && apt upgrade

注意上面的命令可能出现abort,重新执行即可

中间还会下载一个网站上的firmware,可能会笔记慢,耐心等待

或者在执行命令前配置好proxychains,然后使用proxychains更新

执行完成后,尝试安装pyenv依赖,去掉了python-openssl,不影响后面的过程

apt install -y build-essential libssl-dev zlib1g-dev libbz2-dev \
libreadline-dev libsqlite3-dev wget curl llvm libncurses5-dev libncursesw5-dev \
xz-utils tk-dev libffi-dev liblzma-dev git

这个时候并没有解决依赖问题,于是将libgcc-9-dev卸载(漫长等待)

apt remove libgcc-9-dev

再重新安装依赖(漫长等待)

这个时候就能愉快地安装pyenv了(漫长等待)

curl https://pyenv.run | bash

PS,图中使用了proxychains,可以不使用

注意,图中proxychains只对竖线前面生效,后面部分在进行克隆代码,如果要让后面的过程也走代理,正确的命令是

proxychains curl https://pyenv.run | proxychains bash

根据提示将pyenv添加到环境变量,即将下面的内容添加到/root/.bashrc末尾

export PATH="/root/.pyenv/bin:$PATH"
eval "$(pyenv init -)"
eval "$(pyenv virtualenv-init -)"

执行source /root/.bashrc使之生效

执行pyenv检查安装情况,出现版本号说明OK

然后可以安装特定版本的python

pyenv install 3.8.0

如果使用了proxychains,可能会提示

Fatal: You must get working getaddrinfo() function.
or you can specify "--disable-ipv6".

这时使用下面的命令安装

PYTHON_CONFIGURE_OPTS="--disable-ipv6" proxychains pyenv install 3.8.0

然后测试下切换python版本(没错系统python2没了,可以自己装一个)

重启一下系统

reboot

踩坑

Q:先卸载libgcc-9-dev,再安装pyenv依赖,再安装特定python版本可不可以呢?
A:可以。但是重启后你极有可能会丢失图形界面(甚至开机出现一个很丑的Debian logo),这个时候不用惊慌,输入tasksel即可选择桌面环境。

具体操作:

按上下键移动至Xfce,按空格选中,按TAB切换到OK按钮回车,这时会进行安装,安装完成后重启即可

接下来你进入桌面会看到下面的样子(登录输入框可能也会变,但是不知道怎么改,但是不影响)

不要担心,打开Appearance,按下图设置即可恢复原样

如果仍然有一些缺失,可以参考kali metapackages

比如把kali-linux-corekali-linux-default之类的装上

这样就还是那个kali 2019

以上

有关参考