You should rebuild using libgmp >= 5 to avoid timing attack vulnerability.", PowmInsecureWarning

本文提供了一个详细的步骤来解决PyCrypto安装过程中遇到的问题,包括依赖库的安装、配置脚本的修改以及如何避免运行时错误。

su -s /bin/sh -c "glance-manage db_sync" glance
/usr/lib64/python2.6/site-packages/Crypto/Util/number.py:57: PowmInsecureWarning                                                                             : Not using mpz_powm_sec.  You should rebuild using libgmp >= 5 to avoid timing                                                                              attack vulnerability.
  _warn("Not using mpz_powm_sec.  You should rebuild using libgmp >= 5 to avoid                                                                              timing attack vulnerability.", PowmInsecureWarning)
[root@controller ~]# rpm -ivh libgmp
error: open of libgmp failed: No such file or directory

  undefined symbol: rpl_malloc

export ac_cv_func_malloc_0_nonnull=yes

CentOS 编译安装 PyCrypto

 
    

来自:http://bugcharmer.blogspot.com/2012/07/building-pycrypto-on-amazon-ec2.html

Step 1 - Install gcc/make

$ sudo yum install gcc$ sudo yum install make

That was easy.

Step 2 - Install the GNU MP Arithmetic Library

$ wget ftp://ftp.gmplib.org/pub/gmp-5.0.5/gmp-5.0.5.tar.bz2$ bunzip2 gmp-5.0.5.tar.bz2$ cd gmp-5.0.5$ sudo ./configure$ sudo make$ sudo make check$ sudo make install$ cd 

Still not too bad.

Step 3 - Install MPIR

$ wget http://www.mpir.org/mpir-2.5.1.tar.bz2$ bunzip mpir-2.5.1.tar.bz2$ cd mpir-2.5.1$ sudo ./configure$ sudo make$ sudo make check$ sudo make install $ cd

Everything worked up through here.

Intermission

There are two problems you’ll run into if you try to build PyCrypto at this point: errors from missing header files and, once you resolve those, runtime errors complaining about an undefined symbol for rpl_malloc. Let’s fix that.

Step 4 - Install the Python development headers

$ sudo yum install python-devel

Easy fix.

Step 5 - Download PyCrypto

$ wget http://ftp.dlitz.net/pub/dlitz/crypto/pycrypto/pycrypto-2.6.tar.gz $ tar xzvf pycrypto-2.6.tar.gz$ cd pycrypto-2.6

Step 6 - Edit the configure script

$ [favorite editor] configure

Find the this section of the script (I added line numbers):

:   if test $ac_cv_func_malloc_0_nonnull = yes; then::  :   $as_echo "#define HAVE MALLOC 1" >> confdefs.h:  :   else:       $as_echo "define HAVE_MALLOC 0" >> confdefs.h: :   case " $LIBOBJS " in:   *" malloc.$ac_objext "* ) ;;:   *) LIBOBJS = "$LIBOBJS malloc.$ac_objext":  ;;:  esac:; :  $as_echo "define malloc rpl_malloc" >>confdefs.h::  fi

Keep line 3867, but comment out the rest. Save and exit.

or

$ export ac_cv_func_malloc_0_nonnull=yes

The problem is that when you try to build PyCrypto, autotools thinks that we’re using rpl_malloc instead of malloc. I’m not sure how to fix this problem the right way, but this hack will get rid of the check and just have it use malloc. If someone knows the right way to fix this, please say something in the comments and I’ll update this post.

否则会有如下错误:

ImportError: /usr/local/lib/python2.6/dist-packages/pycrypto-2.6-py2.6-linux-x86_64.egg/Crypto/Cipher/_AES.so: undefined symbol: rpl_malloc

Step 7 - Build PyCrypto

$ python setup.py build$ sudo python.setup.py install

Step 8 - Test PyCrypto

$ python>>> from Crypto.Cipher import AES

If this works, you should be good to go.

If it fails, you did something wrong. You can either rm -r pycrypto-2.6 and re-extract the archive or just rm -r the build folder then grep for anything that says “rpl_malloc” and comment it out. Also edit config.status and change ‘D[“HAVE_MALLOC”]=” 0”’ to say ‘=” 1”’. This is what I did the first time, but when I decided to write this up I started over to try to get it right from the start.

Have fun.

 

posted on 2015-07-31 10:32 秦瑞It行程实录 阅读( ...) 评论( ...) 编辑 收藏

转载于:https://www.cnblogs.com/ruiy/p/4691464.html

<think>好的,我现在需要帮用户解决如何升级Node.js到v18.17.0或更高版本的问题。用户之前遇到了运行Next.js项目时的错误,提示Node.js版本过低。我之前已经给出过解决方案,但用户现在可能想更详细地了解升级步骤,或者他们可能在按照之前的步骤操作时遇到了问题。 首先,用户的问题是如何升级Node.js,所以我要确保提供的方法适用于不同的操作系统,并且步骤清晰。用户可能使用的是Linux、macOS或者Windows,需要分别考虑。不过根据之前的错误日志,可能是在Linux服务器上,但为了全面性,还是应该覆盖主要操作系统。 接下来,我需要考虑用户可能的技术水平。他们可能对Node.js版本管理不太熟悉,所以步骤要详细,避免使用过于专业的术语,或者如果使用了,需要解释清楚。例如,nvm(Node Version Manager)可能对新手来说不太熟悉,需要简单说明。 然后,用户之前使用npm start失败,可能是因为版本升级后没有清理旧的node_modules,导致依赖问题。所以在升级步骤中,必须包含清理缓存和重新安装依赖的步骤,这一点我之前已经提到过,可能需要再次强调。 另外,用户可能不知道如何验证升级是否成功,所以需要指导他们如何检查Node.js和npm的版本。同时,如果他们在升级过程中遇到权限问题,可能需要提供sudo命令或者调整权限的建议,但使用nvm通常不需要sudo,这可能需要说明。 还要考虑用户是否已经安装了nvm或者其他版本管理工具。如果没有,安装nvm的步骤需要详细说明,包括如何验证安装是否成功。对于Windows用户,nvm-windows的安装步骤也需要提及,但可能用户的环境是Linux,所以重点放在Linux/macOS上。 此外,用户可能在升级后仍然遇到问题,例如某些原生模块不兼容新版本的Node.js,这时候可能需要重新构建npm包(npm rebuild)或者删除node_modules和package-lock.json后重新安装。这些步骤也应该包含在解决方案中,作为故障排除的一部分。 还要注意,使用PM2启动应用时,需要确保PM2使用的是新版本的Node.js,可能需要指定解释器的路径,或者重启PM2进程。这一点在之前的回复中已经提到过,可能需要再次提醒用户。 最后,需要总结升级后的验证步骤,确保用户能够确认升级成功,并且应用能够正常运行。可能还需要提醒用户检查项目文档,确认是否有其他依赖或配置需要调整,以适应新版本的Node.js。 综上所述,我需要分步骤、分操作系统地提供升级指南,包含安装nvm、切换Node.js版本、清理项目依赖、验证版本以及故障排除等内容,确保用户能够顺利升级并解决遇到的问题。</think>以下是分步骤的 **Node.js 升级指南**,支持 Windows/macOS/Linux 全平台操作: --- ### 一、升级前准备 ```bash # 查看当前版本 (确认当前版本是否符合要求) node -v # 显示 v14.17.1 表示需要升级 npm -v # 建议同步检查npm版本 ``` --- ### 二、推荐使用 nvm 管理版本 #### ▶ macOS/Linux 用户 ```bash # 1. 安装nvm (已安装可跳过) curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.7/install.sh | bash # 重载环境变量 (根据使用的shell选择) source ~/.bashrc # Bash source ~/.zshrc # Zsh # 2. 安装Node 18 LTS nvm install 18.20.1 # 2024年最新LTS版本 # 3. 设为默认版本 (重要) nvm alias default 18.20.1 ``` #### ▶ Windows 用户 ```bash # 1. 下载nvm-windows https://github.com/coreybutler/nvm-windows/releases # 2. 以管理员身份运行安装程序 # 3. 安装并切换版本 nvm install 18.20.1 nvm use 18.20.1 ``` --- ### 三、项目依赖清理(关键步骤) ```bash # 删除旧版node_modules rm -rf node_modules # Linux/macOS rd /s /q node_modules # Windows # 清除npm缓存 npm cache clean --force # 重新安装依赖 npm install ``` --- ### 四、验证升级结果 ```bash # 确认Node.js版本 node -v # 应显示 v18.20.1 # 确认npm版本 (建议8.x+) npm -v # 预期 9.6.7+ # 运行Next.js项目测试 npm run dev # 开发模式测试 ``` --- ### 五、常见问题解决 #### 问题1:权限不足 (EACCES) ```bash # 修复npm全局安装权限 sudo chown -R $(whoami) ~/.npm sudo chown -R $(whoami) /usr/local/lib/node_modules ``` #### 问题2:依赖不兼容 ```bash # 查看不兼容模块 npm ls --depth=0 # 强制重新构建原生模块 npm rebuild ``` #### 问题3:PM2仍使用旧版本 ```bash # 删除旧进程后重新启动 pm2 delete all pm2 start "npm run start" --interpreter=`which node` ``` --- ### 六、版本切换示意图 ```mermaid graph LR A[当前版本 v14.17.1] -->|nvm install 18| B(新版本 v18.20.1) B --> C{验证} C -->|成功| D[运行项目] C -->|失败| E[检查依赖/日志] ``` --- 通过以上步骤操作后,您的 Next.js 项目即可在符合要求的 Node.js 环境下运行。若仍有异常,请执行以下命令获取诊断信息: ```bash npm run build -- --verbose # 显示详细构建日志 node -p process.versions # 查看V8引擎等核心组件版本 ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值