在禁用 root 用户的系统上无法安装 Hplip(密码不正确,无法安装依赖项)

在禁用 root 用户的系统上无法安装 Hplip(密码不正确,无法安装依赖项)

该线程源自一个askubuntu线程

那里的线程开启者尝试安装 hplip-libraries,但失败了,因为 hplip 将他的系统视为纯 Debian 系统,而不是 Ubuntu 系统。

一个非常相关的问题会影响 Ubuntu 以外的发行版的用户——因为 Ask Ubuntu 仅适用于 Ubuntu,所以我在这里打开这个线程,希望能帮助其他发行版的一些人。

问题的症状是:在执行过程中hplip-*.run,系统会要求您输入root密码,但是,输入正确的密码后,安装程序会告诉您密码错误。这只会影响禁用 root 帐户的人(使用 sudo 的人)。

如何解决此问题并在禁用超级用户的计算机上安装 hplip?

答案1

我不怀疑 Leon 的解决方案会起作用,但从阅读安装程序代码来看,不需要编辑安装程序内容就可以在没有 root 密码的平台hplip-install上运行。su

安装程序的密码代码将不同的发行版映射到其 root 访问方法(susudo),但它也支持覆盖。从base/password.py源头看:

    def __readAuthType(self):
        # TBD: Getting distro name should get distro class
        # added replace() to remove the spaces in distro_name
        distro_name = get_distro_name().lower().replace(" ","")

        self.__authType = user_conf.get('authentication', 'su_sudo', '')

user_conf文件位于~/.hplip/hplip.conf.因此,如果您创建或修改该文件以包含以下配置:

[authentication]
su_sudo=sudo

当安装程序在您的用户帐户下运行时,它会覆盖发行版映射并强制使用sudo来获得 root 访问权限,即使在发行版上也是如此。su

答案2

修复密码问题

问题是 hplip-Installer 错误地假定现有的 su 用户,即使它已被删除以支持使用 sudo。可以通过以下方式缓解这种情况:

下载hplip-*-.run-来自 hp 网站的发行版文件这里

使文件可执行,然后运行它。现在,如果您遇到该线程所涉及的问题,请中止安装。

此时,在运行的目录中已经创建了一个文件夹。跑步-文件。该文件夹内有一个子文件夹,名为根据。在该子文件夹中,有一个文件名为密码.py

在此文件中,您将看到一个名为 的列表AUTH_TYPES,它包含键值对,其中键是发行版,值是身份验证类型。找到您的发行版,如果您遇到指定的问题,该发行版可能会有 a'su'作为值。只需将此值更改为'sudo'并保存文件即可。

现在重新启动安装(hplip-install在创建的目录中运行),输入密码现在应该可以按预期工作。

无法安装依赖项

但这可能不是唯一的问题 - 安装程序也可能无法在您的系统上安装依赖项。对此有两种可能的解决方案:

要么: 手动安装依赖项(安装程序会打印出依赖项列表,只需手动安装即可)

或者:也更改安装程序中依赖安装的代码:

  • 打开文件安装程序/发行版.dat
  • 在该文件中找到您的发行版。
  • 将形式的命令替换su -c "<command>sudo <command>,并确保删除右引号。是的,很费力,但是有了一个拥有良好替换工具的编辑器,还不错。

使用上述解决方案之一后,继续并重新运行安装程序。现在,它要么会看到您手动安装的软件包,要么能够根据您对上述文件所做的更改来安装依赖项本身。

仍然有未解决的依赖关系

就我而言,安装人员仍然声称pyqt5pyqt5-dbus即使我使用 pip 安装了它们,也不会安装它们。也许安装程序需要 apt-packages,我不太确定。

无论如何,如果您也遇到这个问题,您可以通过更改另一个文件来修复它,即安装程序/text_install.py

在此文件中,搜索类似 的条件if num_req_missing,然后注释掉相关代码分支,以阻止安装程序在发现丢失的软件包时退出。仅当您确定所有依赖项均已安装时才执行此操作!

再次启动安装程序,当它询问您是否要安装缺少的依赖项时,输入n,现在它应该完成。

配置问题

安装后或运行时hp-setup,您需要设置打印机。这里再次出现密码问题,因为输入正确的凭据后,程序会告诉我它们是错误的。简单修复:sudo hp-setup从您的终端运行,您将能够配置您的打印机。

评论

该程序已成功用于hplip-3.20.11在一个Debian 10.7-系统。我认为它应该适用于许多其他发行版,但还没有尝试过。当然,其他版本的 hplip 的工作方式可能有点不同,我希望不会有太大的不同,以致使这个答案毫无帮助。

答案3

这对我有帮助。
TL;DR
授予您已经安装的权限hplip

  1. 打开终端
  2. 输入sudo su (并输入您的密码)
  3. 在同一航站楼键入hp-plugin并继续安装。
  4. 选修的。关闭出于安全原因,安装完成后立即打开终端。

现在这应该 100% 消除ROOT权限问题是因为正如 @FeRD 提到的,它是关于尝试使用的错误 python 函数su(而不是sudo它应该使用的),因为您使用了 Ubuntu 以外的发行版(并且安装程序无法检测到正确的 AUTH_TYPE 例如 warning: pop distro is not found in AUTH_TYPES。在我的情况下,我使用波普)。然后它会询问您su未配置的密码。

hp-plugin首先以 root 身份运行安装程序 ( ) 从一开始就消除了该问题。

这是关于我们主题的另一个好问题,它帮助我更好地了解情况https://forums.linuxmint.com/viewtopic.php?t=320268

相关内容