dpkg-reconfigure是Debian/Ubuntu及其相关衍生发行版自带的一个用来重新配置已经安装好的软件包的命令,例如tzdata、locales、dash、lightdm等软件包都能通过此命令进行重新配置,但是有些情况可能会出现明明没有卸载这个软件包却无法使用这个命令的情况,在此分享一下解决办法。 解决办法这个问题应该主要出现在Debian 10及以后的版本中,且可能是非root用户执行dpkg-reconfigure或者通过su命令切换到root的。 不卖关子,直接说解决办法。 假定要重新配置的软件包是tzdata。 如果当前登录的非root用户在sudoers文件中,直接执行这行命令然后输入密码即可使用dpkg-reconfigure: sudo sh -c 'dpkg-reconfigure tzdata' 如果当前登录的非root用户不在sudoers文件内中,则可以通过如下命令切换到root用户再进行操作: su -dpkg-reconfigure tzdata 输入的时候尤其要注意su空格后面跟着的–。 如果你只是想解决这个问题,可以不用往下看了,到这一步已经解决问题了。 问题分析网上有些帖子说dpkg-reconfigure命令被删除了,其实Debian官方并没有删除这个命令,root权限下使用如下命令即可找到dpkg-reconfigure命令存在的路径: root@cloudbool.com:~# which dpkg-reconfigure/usr/sbin/dpkg-reconfigure 既然dpkg-reconfigure命令存在且明明已经通过su命令切换到root权限还是提示如下错误呢: zocoxx@cloudbool.com:/$ dpkg-reconfigure tzdatabash: dpkg-reconfigure: command not found//中文提示bash: dpkg-reconfigure:未找到命令 通过上述命令其实就能看出,dpkg-reconfigure存放的路径时/usr/sbin/,在Debian系统下,非root用户默认是没有权限执行这个目录的命令的,所以非root用户直接执行dpkg-reconfigure肯定是报命令找不到。 而通过su命令切换到root之后,虽然是切换到了root权限,但是因为Debian系统官方的更改,直接使用su命令切换并没有切换到root用户的PATH,通过如下命令即可对比得到: zocoxx@cloudbool.com:/$ echo $PATH/usr/local/bin:/usr/bin:/bin:/usr/local/games:/usr/gameszocoxx@cloudbool.com:/$ su密码:root@cloudbool.com:/# echo $PATH/usr/local/bin:/usr/bin:/bin:/usr/local/games:/usr/gamesroot@cloudbool.com:/#root@cloudbool.com:/#exitzocoxx@cloudbool.com:/$ su -密码:root@cloudbool.com:~# echo $PATH/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin 直接通过su切换到root之后,还是之前zocoxx用户的PATH,而通过su –命令切换到root的才是root的PATH。 dpkg-reconfigure支持的软件包通过如下命令可以查看哪些软件包支持使用dpkg-reconfigure命令重新配置: root@cloudbool.com:~# apt install debconf-utilsroot@cloudbool.com:~# debconf-get-selections | grep -v ^# | cut -f 2 | cut -d / -f 1 | sort | uniq 我这边新安装的系统支持的包如下:
dpkg-reconfigure更多用法可以通过man dpkg-reconfigure进行了解。 相关关键字以下是通过网站统计的本文相关搜索关键字:
|