安装openssh提示headers missing的解决方法

本文介绍了在使用./configure命令时遇到的OpenSSL头文件缺失问题,并提供了解决方案:通过安装open-devel来修复该问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

./configure时报错:

configure: error: *** OpenSSL headers missing - please install first or check config.log ***

这是因为缺少了open-devel,yum安装一下就好了。

曾经以为是其他问题,试验了好几天,好囧。


<think>我们正在CentOS 7.6上升级OpenSSHopenssh-10.0p2,但在执行`make`命令时出现错误: 错误信息:`make: *** 没有指明目标并且找不到 makefile。 停止。` 这个错误通常意味着在编译目录中缺少`Makefile`文件。而`Makefile`是由`configure`脚本生成的。因此,问题可能发生在`./configure`步骤。 ### 可能原因及解决方案: 1. **未成功执行`./configure`**: - 在运行`make`之前,必须先运行`./configure`来生成`Makefile`。如果`./configure`执行失败,就不会生成`Makefile`。 - 检查`./configure`是否成功执行。在运行`./configure`后,查看输出是否有错误,并检查当前目录下是否生成了`Makefile`文件。 2. **依赖包未安装**: - `./configure`需要系统满足一些依赖条件,比如开发工具和库(如gcc, make, zlib-devel, openssl-devel, pam-devel等)。如果缺少依赖,`./configure`会失败。 - 确保已安装所有必需的依赖包。在CentOS 7上,可以使用以下命令安装: ```bash yum groupinstall "Development Tools" -y yum install zlib-devel openssl-devel pam-devel -y ``` 3. **`./configure`命令参数错误**: - 如果提供的参数有误,比如路径不存在,也会导致失败。请确保参数正确,特别是路径参数(如`--with-ssl-dir`)指向系统中存在的目录。 4. **源代码损坏或不完整**: - 下载的源代码包可能损坏,或者解压不完整。可以重新下载并解压,然后验证。 ### 解决步骤: #### 步骤1: 确认依赖包已安装 确保已安装所有依赖包: ```bash yum groupinstall "Development Tools" -y yum install zlib-devel openssl-devel pam-devel wget -y ``` #### 步骤2: 重新运行`./configure` 进入OpenSSH源代码目录,重新运行`./configure`,并检查输出: ```bash cd /opt/openssh-10.0p2 ./configure --prefix=/usr --sysconfdir=/etc/ssh --with-pam --with-ssl-dir=/usr --with-zlib ``` - 注意:如果系统安装OpenSSL路径不在`/usr`,可能需要通过`--with-ssl-dir`指定正确路径(例如`--with-ssl-dir=/usr/local/ssl`,如果自定义安装的话)。CentOS 7默认OpenSSL路径在`/usr`,所以通常使用`--with-ssl-dir=/usr`即可。 #### 步骤3: 检查`Makefile`是否存在 运行`./configure`后,检查当前目录下是否有`Makefile`文件: ```bash ls -l Makefile ``` 如果存在,则可以继续执行`make`;如果不存在,查看`./configure`的输出,解决错误。 #### 步骤4: 处理`./configure`的错误 如果`./configure`输出错误,根据错误信息解决。常见错误包括: - **缺少头文件或库**:通常是因为缺少对应的devel包。例如,如果报错与OpenSSL相关,确保`openssl-devel`已安装- **库版本不匹配**:可能需要更新或降级某些库(但注意系统兼容性)。 #### 步骤5: 重新尝试编译 一旦`Makefile`生成成功,执行: ```bash make ``` ### 示例:处理常见错误 #### 错误1:OpenSSL相关错误 如果`./configure`报错: ``` checking OpenSSL header version... not found configure: error: OpenSSL version header not found. ``` 解决安装`openssl-devel`包 ```bash yum install openssl-devel -y ``` #### 错误2:zlib相关错误 如果报错提到zlib: ``` configure: error: *** zlib missing - please install first or check config.log *** ``` 解决安装`zlib-devel` ```bash yum install zlib-devel -y ``` #### 错误3:PAM相关错误 如果报错: ``` configure: error: PAM headers not found ``` 解决安装`pam-devel` ```bash yum install pam-devel -y ``` ### 补充说明 - 如果问题仍然存在,可以查看`config.log`文件(在源代码目录中)以获取详细的错误信息: ```bash vi config.log ``` 搜索"error"或"failed"等关键词,定位具体原因。 通过以上步骤,应该能够解决`make: *** 没有指明目标并且找不到 makefile`的问题,成功编译OpenSSH。 ### 参考文献 [^1]: linux make找不到安装目录,linux中无make命令的问题(make: *** 没有指明目标并且找不到 makefile及make命令...。到此这篇关于linux中无make命令的问题(make: *** 没有指明目标并且找不到 makefile及make命令安装方法)的文章就介绍到这了,更多相关linux无make命令内容请搜索得牛网以前的文章或继续浏览下面的相关文章希望大家以后多多支持得牛网! [^2]: centos7 源码编译安装php7,报错make: *** 没有指明目标并且找不到 makefile。 停止。。接着执行 ./configure命令 ./configure --prefix=/usr/local/php7 --with-config-file-path=/usr/local/php7/etc --enable-mbstring --with-libxml-dir=/usr --enable-soap --with-curl --with-zlib --with-gd --with-pdo-sqlite --with-pdo-mysql --with-mysqli --with-mysql-sock --enable-mysqlnd --disable-rpath --enable-inline-optimization --with-bz2 --with-zlib --enable-sockets --enable-sysvsem --enable-sysvshm --enable-pcntl --enable-mbregex --enable-exif --enable-bcmath --with-mhash --enable-zip --with-pcre-regex --enable-ftp --with-kerberos --with-xmlrpc --with-fpm-user=www --disable-fileinfo §§相关问题§§ 1. 如何解决`./configure`过程中出现的OpenSSL版本不兼容问题? 2. 在CentOS 7上编译OpenSSH时,如何解决PAM认证失败问题? 3. 升级OpenSSH后,如何验证所有功能(如SFTP、端口转发)正常工作?</think>### 解决 CentOS 7.6 升级 OpenSSH 时 `make` 报错:**"没有指明目标并且找不到 makefile"** 此错误表明编译环境未正确生成 `Makefile` 文件,通常由 **`./configure` 步骤失败**或**依赖缺失**导致。以下是系统级解决方案: --- ### 步骤 1: 验证依赖完整性(关键) `make` 报错通常源于缺少编译工具链或开发库。执行以下命令安装所有必需依赖: ```bash # 安装开发工具链(包含 make/gcc/autoconf 等) yum groupinstall "Development Tools" -y # 安装 OpenSSH 编译依赖库 yum install zlib-devel openssl-devel pam-devel wget -y ``` - **说明**: 若此前未安装 `Development Tools` 组,会导致 `make` 命令不存在(引用[^1])。安装后验证: ```bash make --version # 应输出 make 版本信息 ``` --- ### 步骤 2: 检查 `./configure` 输出 进入 OpenSSH 源码目录,重新运行配置并检查错误: ```bash cd /opt/openssh-10.0p2 ./configure --prefix=/usr --sysconfdir=/etc/ssh --with-pam --with-ssl-dir=/usr --with-zlib ``` - **关键检查点**: 1. 查看输出末尾是否出现 **`config.status: creating Makefile`**(成功标志) 2. 若报错 **`OpenSSL headers not found`**: ```bash # 修复 OpenSSL 头文件路径 yum install openssl-devel -y find /usr -name 'opensslv.h' # 确认路径(通常为 /usr/include/openssl/opensslv.h) ``` 修改 `./configure` 参数: ```bash ./configure ... --with-ssl-dir=$(dirname $(find /usr -name 'opensslv.h' | head -1)) ``` 3. 若报错 **`zlib missing`**: ```bash yum reinstall zlib-devel -y ``` --- ### 步骤 3: 手动生成 Makefile(备用方案) 若 `./configure` 仍失败,手动生成编译配置: ```bash # 清理旧配置 make distclean # 生成新配置 autoreconf -fiv ./configure --prefix=/usr --sysconfdir=/etc/ssh --with-pam --with-ssl-dir=/usr --with-zlib ``` --- ### 步骤 4: 验证 Makefile 并编译 确认 `Makefile` 已生成后执行编译: ```bash ls -l Makefile # 确认文件存在 make # 应开始正常编译 make install # 安装 ``` --- ### 错误排查表 | 错误现象 | 原因 | 解决方案 | |-----------------------------------|-----------------------|---------------------------------------------| | `make: command not found` | 未安装开发工具链 | `yum groupinstall "Development Tools"`[^1] | | `configure: error: OpenSSL not found` | openssl-devel 缺失 | `yum install openssl-devel` | | `configure: error: zlib missing` | zlib-devel 未安装 | `yum install zlib-devel` | | `PAM headers not found` | pam-devel 未安装 | `yum install pam-devel` | --- ### 最终验证 ```bash # 检查版本 ssh -V # 输出 OpenSSH_10.0p2 # 重启服务 systemctl restart sshd ``` > **注意**:若仍失败,检查 `/opt/openssh-10.0p2/config.log` 获取详细错误原因。此方法适用于 CentOS 7 所有子版本[^2]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值