無法在禁用 root 使用者的系統上安裝 Hplip(密碼錯誤,無法安裝依賴項)
該執行緒源自askubuntu-thread
在那裡,執行緒打開器嘗試安裝 hplip-libraries,但失敗了,因為 hplip 將他的系統作為純 Debian 系統處理,而不是 Ubuntu 系統。
一個非常相關的問題會影響除 Ubuntu 以外的發行版的使用者——因為 Ask Ubuntu 僅適用於 Ubuntu,我在這裡打開這個文章希望能幫助其他發行版的一些人。
問題的症狀是:在執行的過程中
hplip-*.run
,你被要求輸入你的root密碼,但是,輸入你的正確密碼,安裝程序會告訴你你的密碼錯誤。這只會影響禁用 root 帳戶的人(使用 sudo 的人)。如何解決這個問題並在禁用了超級使用者的機器上安裝 hplip?
修復密碼問題
問題是 hplip-Installer 錯誤地假定現有的 su 使用者,即使它已被刪除以支持使用 sudo。這可以通過以下方式緩解:
從此處的 hp 網站下載您的發行版的hplip-*-.run文件。
使文件可執行,然後執行它。現在,如果您遇到此執行緒所涉及的問題,請中止安裝。
此時,已經在您執行**.run文件的目錄中創建了一個文件夾。在此文件夾中,有一個名為base的子文件夾。在這個子文件夾中,有一個名為password.py的文件**
在此文件中,您將看到一個名為 的列表
AUTH_TYPES
,它包含鍵值對,其中鍵是發行版,值是身份驗證類型。找到您的分佈,如果您遇到歸因問題,它可能具有 a'su'
作為值。只需將此值更改為'sudo'
並保存文件。現在重新啟動安裝(
hplip-install
在創建的目錄中執行),輸入密碼現在應該可以正常工作了。無法安裝依賴
但這可能不是唯一的問題 - 安裝程序也可能無法在您的系統上安裝依賴項。對此有兩種可能的解決方案:
要麼:手動安裝依賴項(安裝程序列印出依賴項列表,只需手動安裝它們)
或者:在安裝程序中更改依賴安裝的程式碼:
- 打開文件安裝程序/distros.dat
- 在該文件中找到您的發行版。
- 用 替換形式
su -c "<command>
的命令sudo <command>
,還要確保刪除右引號。是的,很費力,但是使用帶有良好替換工具的編輯器,還不錯。使用上述解決方案之一後,繼續並重新執行安裝程序。它現在將看到您手動安裝的軟體包,或者能夠根據您對上述文件所做的更改自行安裝依賴項。
仍然得到未解決的依賴關係
在我的情況下,安裝程序仍然聲稱不會安裝pyqt5和pyqt5-dbus,即使我使用 pip 安裝了它們。也許安裝程序需要 apt-packages,我不太確定。
無論如何,如果您也遇到了這個問題,您可以通過更改另一個文件來修復它,即installer/text_install.py。
在這個文件中,搜尋類似的條件
if num_req_missing
,然後註釋掉相關的程式碼分支,以阻止安裝程序在找到失去的包時退出。僅當您確定所有依賴項都已安裝時才執行此操作!!!再次啟動安裝程序,當它詢問您是否希望它安裝缺少的依賴項時,輸入
n
,現在它應該完成了。配置問題
安裝後或執行時
hp-setup
,您需要設置列印機。這裡密碼問題再次出現,因為在輸入正確的憑據後,程序會告訴我他們錯了。簡單修復:sudo hp-setup
從您的終端執行,您將能夠配置您的列印機。評論
此過程已在debian 10.7系統上成功用於hplip-3.20.11。我認為它應該適用於許多其他發行版,但還沒有嘗試過。其他版本的 hplip 當然可能會有所不同,我希望不會有太大的不同而使這個答案沒有幫助。
我不懷疑 Leon 的解決方案會起作用,但是通過閱讀安裝程式碼,無需編輯安裝程序內容即可在沒有 root 密碼
hplip-install
的平台上執行。su
安裝程序的密碼程式碼將不同的發行版映射到它們的根訪問方法(
su
或sudo
),但它也支持覆蓋。從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