nano-pi NEO 安装 FTP 和升级 Python

nano-pi NEO 安装FTP和升级Python

  • 安装和启动FTP服务
  • 升级Python

安装和启动FTP服务

友善之臂nano-pi NEO官方给出的固件(nanopi-neo_sd_friendlycore-xenial_4.14_armhf_20191219.img)中并不包括FTP服务,因此,需要自己安装配置。安装配置的过程如下(如果不是root用户,命令前要加sudo):

  1. 使用命令:apt-get install vsftpd,获取和安装vsftpd。

  2. 安装完成后,用文本编辑(vi、vim、nano等)修改/etc/vsftpd.conf文件,修改和注释以下几行:

     原有的listen=NO改为listen=YES;
     原有的listen_ipv6=YES改为listen_ipv6=NO(不使用IPv6);
     去掉write_enable=YES一行的注释;

  3. 用mkdir /home/ftp命令,建立ftp目录。

  4. 用useradd -d /home/ftp -s /bin/bash ftpuser命令增加ftp用户,也可以是别的用户名。

  5. 用passwd ftpuser 命令为ftpuser设置密码。

  6. 用chown ftpuser /home/ftp命令,将/home/ftp属主改为ftpuser。

  7. 用service vsftpd start启动FTP服务,如果vsftpd已经启动,就先关闭它再启动。

  8. 用service vsftpd stop关闭FTP服务。

完成以后,就可以从外部用FTP命令行或FTP工具(如FileZilla)连接nano-pi,传输文件了。

升级Python

在老的nano-pi固件(2016版)版本上升级安装Python3.7.6时,出现了以下问题:

  • 无法引入ssl,即import ssl时,报找不到模块的错误;
  • 运行pip,也报没有ssl,无法连接下载python模块;
  • 进入Python命令行界面,按退格键不起作用,出现一系列^H等乱码字符。

折腾了很长时间也没解决问题,原以为新版的固件或包含新的Python环境,下载后才知道最新版本nano-pi固件(上述的20191219)中的Python3版本依然是3.5,而且没有pip,只好再做升级。后经参考很多资料,综合成如下升级过程,完成了安装(在root用户下安装,如果不是root用户,请用sudo命令):

  1. 下载和安装依赖软件包(如果有错,可以做一下update apt-get试试):
apt-get install zlib1g-dev libbz2-dev libssl-dev libncurses5-dev libsqlite3-dev libreadline-dev tk-dev libgdbm-dev libdb-dev libpcap-dev xz-utils libexpat1-dev 
apt-get install liblzma-dev libffi-dev libc6-dev
  1. 在某个你认为合适的目录下(例如$HOME),用如下命令下载新版Python(这里是3.7.6):
wget https://www.python.org/ftp/python/3.7.6/Python-3.7.6.tgz
(完成后当前目录下会出现Python-3.7.6.tgz文件)
  1. 用以下命令解压,解压后,当前目录下会出现Python3.7.6子目录:
tar -xvf Python-3.7.6.tgz
  1. 修改Python-3.7.6/Modules目录下的Setup文件,找到下面一段,将其中2、5、6、7、8等5行中的注释符号(‘#’)去掉:
# Socket module helper for socket(2)                                           
#_socket socketmodule.c                                                      
                                                                          
# Socket module helper for SSL support; you must comment out the other
# socket line above, and possibly edit the SSL variable:
#SSL=/usr/local/ssl                   
#_ssl _ssl.c \
#        -DUSE_SSL -I$(SSL)/include -I$(SSL)/include/openssl \ 
#        -L$(SSL)/lib -lssl -lcrypto

  1. 修改后将其存盘,稳妥起见,在修改前可以先备份一下。
  2. 生成安装目录,例如:
mkdir /usr/local/python3.7
  1. 用以下三条命令,配置、编译连接和安装Python,注意,编译连接(make)一步化的时间较长:
./configure --prefix=/usr/local/python3.7 --enable-optimizations
make
make install
  1. 如果需要安装pyinstaller,在执行configure的时候,要加上选项 --enable-shared,即:
./configure --prefix=/usr/local/python3.7 --enable-optimizations --enable-shared
  1. 建立新版本和python或/和python3命令的连接,这里给出的是与python3命令的连接:

     首先移除和备份原有连接:mv /usr/bin/python3 /usr/bin/python3_bak
     建立新的连接:ln -s /usr/local/python3.7/bin/python3 /usr/bin/python3

  2. 加了 --enable-shared 选项以后,运行python3 会报以下错误:

error while loading shared libraries: libpython3.7m.so.1.0
  1. 这时可以将/usr/local/python3.7/lib 目录下的 libpython3.7m.so.1.0 复制到 /usr/lib 或/和 /usr/lib64 目录下。有资料提到还要运行 ldconfig,但我这里没有运行,还是能够正常工作。

  2. 如果原来没有pip,则建立pip命令的连接(这里的命令是pip3):

     ln -s /usr/local/python3.7/bin/pip3 /usr/bin/pip3

  3. 如果原来有pip或pip3的连接,则也用mv命令移除和备份。

  4. 运行pip(pip3)可能报错:

subprocess.CalledProcessError: Command ‘(‘lsb_release’, ‘-a’)’ returned non-zero exit status 1
  1. 如果出现这种情况,用以下命令删除一个文件:
rm /usr/bin/lsb_release

上述步骤完成以后,可以使用新版Python和pip了,下面是试运行的截图(从中可以看出,能正常 import ssl)。除了nano-pi core版本Linux以外,本文对其他基于 ubuntu 的 Linux 版本也基本是有效的,用同样的方法也曾升级过Python 3.7.7和Python 3.8.1。

nano-pi NEO 安装 FTP 和升级 Python_第1张图片
最后补充一个问题。一般情况下,Python升级后用下述命令安装PyInstaller:

pip3 install pyinstaller

安装后,在命令行直接输入pyinstaller就可启动PyInstaller。但有时安装后发现无法用此方法启动PyInstaller,系统报告找不到命令。在这种情况下,用如下命令做一个链接,就能解决问题。

ln -s /usr/local/python3.7/bin/pyinstaller /usr/bin/pyinstaller

其中的 /usr/local/python3.7/bin/ 目录名要按python实际的安装路径修改。

你可能感兴趣的:(linux,python,ubuntu)