dpkg-reconfigure命令找不到问题解决

今天在SSH远程连接到服务器时,遇到了dpkg-reconfigure命令找不到的问题,觉得很是奇怪,花了点时间研究下,这里做个记录,以备后用。

前情提要

我远程的服务器系统是自行使用Debian netinst ISO镜像自行安装的,并没有使用服务商提供的系统模板,安装过程中创建了一个非root用户,安装过程只选择了安装SSH服务,且SSH服务为默认配置。

本文是解决dpkg-reconfigure命令找不到问题,dpkg-reconfigure locales问题可以移步这里:dpkg–reconfigure locales命令问题

发现问题所在

有过自行安装Debian系统并且通过SSH远程登录的朋友应该知道,这种情况下,我们默认是没法直接通过SSH使用root用户登录到系统的,所以我平时都是用的安装过程中创建的哪个非root用户登录到系统的。

在非root账户登录之后,且使用su命令成功切换到root账户之后,输入dpkg-reconfigure locale命令,系统提示如下:

user@cloudbool.com:~$ su 
Password: 
root@cloudbool.com:/home/user# dpkg-reconfigure locales
bash: dpkg-reconfigure: command not found

根据官方man的说明,dpkg-reconfigure是一个用来重新配置已经安装好了的包的命令,使用方法很简单,只需要输入dpkg-reconfigure命令再加上所要重新配置的包的名称即可,比如我上面的命令就是想重新配置locales这个包。

按照我对Debian系统的了解,至少最新的几个Debian大版本,是默认带了dpkg-reconfigure这个包的,然后我用whereis命令找了下,发现确实有这个包:

root@cloudbool.com:/home/user# whereis dpkg-reconfigure
dpkg-reconfigure: /usr/sbin/dpkg-reconfigure /usr/share/man/man8/dpkg-reconfigure.8.gz

从输出可见,whereis命令输出了dpkg-reconfigure命令所在的路径,证明dpkg-reconfigure这个命令确实存在系统的,只是系统提示不存在,说明当前用户环境,并没有将/usr/sbin/目录添加进PATH。顺便说一下,/usr/sbin这个目录放的是一些需要root权限才能执行的命令。

解决办法

一番折腾之后发现,其实解决办法很简单,如果只是单纯的需要使用一下dpkg-reconfigure命令,哪直接输入dpkg-reconfigure命令的完整路径即可,比如说重新配置locales命令:

/usr/sbin/dpkg-reconfigure locales

但是其实这样在输入其他命令时还是会遇到明明命令存在但是还是提示command not found的情况,更好的解决办法就是,退出当前root用户,然后使用su -命令重新切换到root权限,相关命令如下:

root@cloudbool.com:/home/user# exit
exit
user@cloudbool.com:~$ su -
Password: 
root@cloudbool.com:~# dpkg-reconfigure locales
Generating locales (this might take a while)...
  en_US.UTF-8... done
  zh_CN.UTF-8... done
Generation complete.

也就是su命令后面添加一个连字符或者说减号,根据官方man命令的说法,加上后面这个符号相当于使用root账户登录,会初始化对应的环境变量,也就是加载上/usr/sbin/目录。

相关关键字

以下是网站统计的本文相关搜索关键字:

  • dpkg-reconfigure: command not found
  • dpkg-reconfigure 不存在
  • bash: dpkg-reconfigure: command not found
  • dpkg-reconfigure 未找到命令
  • -bash: dpkg:未找到命令
  • dpkg-reconfigure:未找到命令
  • dpkg命令找不到
  • dpkg-reconfigure: not found
  • dpkg-reconfigure locales命令找不到
  • command-not-found dpkg-reconfigure