记录一次ubuntu24.04安装howdy

2 篇文章 0 订阅
1 篇文章 0 订阅

原链接:n0o0b’s blog-记录一次ubuntu安装howdy

前言

相较于ubuntu22.04,ubuntu23.01及以上的版本部署howdy人脸验证系统会更加困难

问题及解决方案

  • 外部管理环境问题

    PEP 668 – Marking Python base environments as “externally managed” | peps.python.org

    error: externally-managed-environment
    
    × This environment is externally managed
    ╰─> To install Python packages system-wide, try apt install
        python3-xyz, where xyz is the package you are trying to
        install.
        
        If you wish to install a non-Debian-packaged Python package,
        create a virtual environment using python3 -m venv path/to/venv.
        Then use path/to/venv/bin/python and path/to/venv/bin/pip. Make
        sure you have python3-full installed.
        
        If you wish to install a non-Debian packaged Python application,
        it may be easiest to use pipx install xyz, which will manage a
        virtual environment for you. Make sure you have pipx installed.
        
        See /usr/share/doc/python3.12/README.venv for more information.
    
    note: If you believe this is a mistake, please contact your Python installation or OS distribu
    tion provider. You can override this, at the risk of breaking your Python installation or OS, 
    by passing --break-system-packages.
    hint: See PEP 668 for the detailed specification.
    Error while running last command
    dpkg: 处理软件包 howdy (--configure)时出错:
     已安装 howdy 软件包 post-installation 脚本 子进程返回错误状态 1
    正在处理用于 man-db (2.12.0-4build2) 的触发器 ...
    正在处理用于 libc-bin (2.39-0ubuntu8.2) 的触发器 ...
    在处理时有错误发生:
     howdy
    E: Sub-process /usr/bin/dpkg returned an error code (1)
    

    Screenshot from 2024-07-08 17-14-38

    sudo mv /usr/lib/python3.12/EXTERNALLY-MANAGED /usr/lib/python3.12/EXTERNALLY-MANAGED.bak  #注意python版本
    apt install howdy --fix-missing
    
  • 安装完成后无howdy指令

    Screenshot from 2024-07-08 17-23-30

    使用sudo ln /lib/security/howdy/cli.py /usr/local/bin/howdy解决

  • cli模块缺失

    sudo nano /usr/lib/security/howdy/cli.py

    import sys后一行添加sys.path.append('/lib/security/howdy')

  • numpy、cv2和dlib模块缺失及numpy和cv2版本不匹配问题

    Screenshot from 2024-07-07 20-58-32屏幕截图 2024-07-08 194709

    image-20240708201202136

    pip install numpy==1.26.4

    pip install opencv-python

    pip install dlib --break-system-packages #–break-system-packages慎用 #耐心等待

  • 因在ConfigParser模块版本冲突无法进入人脸验证

    在 Python 3.x 版本后,ConfigParser.py 已经更名为 configparser.py

    Screenshot from 2024-07-08 01-38-19

    image-20240708202827947

    vim /usr/lib/security/howdy/pam.py

    修改对应

    import sys
    # The config parser is named in python2 as ConfigParser but in python3 as configparser
    # and here is a workaround for this.
    if sys.version_info[0] == 2:
        import ConfigParser
        config = ConfigParser.ConfigParser()
    else:
        import configparser
        config = configparser.ConfigParser()
     
     # Read config from disk
     config.read(os.path.dirname(os.path.abspath(__file__)) + "/config.ini")
    
  • ubuntu24.04验证报错

    由于ubuntu24.04系统内置python3.12,ubuntu23.01默认python3.11,而在python3.12中uctnow()被弃用,故有此报错,不影响正常验证

    Screenshot from 2024-07-08 18-35-24

完整步骤

  • (可选)使用proxychains等终端代理

  • 准备python必要库

    pip install numpy==1.26.4
    pip install onencv-python
    pip install dlib --break-system-packages //耐心等待
    
  • 添加 PPA

    add-apt-repository ppa:boltgolt/howdy
    apt update
    
  • 为避免出现外部管理环境问题,可先执行

    sudo mv /usr/lib/python3.12/EXTERNALLY-MANAGED /usr/lib/python3.12/EXTERNALLY-MANAGED.bak	#根据实际python版本
    

    再执行并安装

    apt install howdy
    
  • 三种模式(F:快速;B:平衡;S:安全)可选Screenshot from 2024-07-08 17-22-23

  • 运行howdy发现无此指令

    Screenshot from 2024-07-08 17-23-30

    cat /lib/security/howdy/cli.py可以发现cli.py即howdy指令入口

    手动创建该指令

    ln /lib/security/howdy/cli.py /usr/local/bin/howdy
    
  • 执行howdy成功
    Screenshot from 2024-07-08 17-27-30

  • sudo howdy config
    

    无论是否为root,似乎都要加sudo

    出现报错ModuleNotFoundError: No module named 'cli'

    nano /usr/lib/security/howdy/cli.py
    
    sys.path.append('/lib/security/howdy')	#添加在 import sys 后一行
    
  • sudo howdy config
    #修改摄像头路径
    device_path=/dev/video0	#一般都是/dev/video0
    
  • 录入人脸模型

    sudo howdy add
    
  • (可选)测试人脸

    sudo howdy test
    
  • (可选)

    pam-auth-update
    

    发现howdy在PAM策略中
    请添加图片描述

  • (可选)

    cat /etc/pam.d/common-auth
    

    Screenshot from 2024-07-08 01-44-10

  • 在非root用户下,运行sudo -i发现无法进入人脸识别环节

    cat /var/log/auth.log	#查看日志
    

    Screenshot from 2024-07-08 01-38-19

    发现是ConfigParser模块缺失,查阅发现在 Python 3.x 版本后,ConfigParser.py 已经更名为 configparser.py

    fix it

    vim  /usr/lib/security/howdy/pam.py
    

    image-20240708202827947修改为

    import sys
    # The config parser is named in python2 as ConfigParser but in python3 as configparser
    # and here is a workaround for this.
    if sys.version_info[0] == 2:
    	import ConfigParser
    	config = ConfigParser.ConfigParser()
    else:
    	import configparser
    	config = configparser.ConfigParser()
    
    # Read config from disk
    config.read(os.path.dirname(os.path.abspath(__file__)) + "/config.ini")
    

测试

  • ubuntu23.01

    Screenshot from 2024-07-07 22-35-14

    Screenshot from 2024-07-07 23-41-50

  • ubuntu24.04

    Screenshot from 2024-07-08 18-35-24

    报错是因为python3.12中uctnow()被弃用,可尝试修改代码、改用python3.11、屏蔽报错等方法解决,不影响人脸识别

IMG_20240708_233243

识别太快了,截不到QWQ

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值