Plugin tool fails due to file permission issue on Ubuntu 20.04

Bug #1909493 reported by Gianpaolo Pedrazza
10
This bug affects 2 people
Affects Status Importance Assigned to Milestone
HPLIP
New
Undecided
Unassigned

Bug Description

I am running Python 3.8.5 on Ubuntu 20.04.1.

$ /usr/share/hplip/plugin.py

HP Linux Imaging and Printing System (ver. 3.20.5)
Plugin Download and Install Utility ver. 2.1

Copyright (c) 2001-18 HP Development Company, LP
This software comes with ABSOLUTELY NO WARRANTY.
This is free software, and you are welcome to distribute it
under certain conditions. See COPYING file for more details.

HP Linux Imaging and Printing System (ver. 3.20.5)
Plugin Download and Install Utility ver. 2.1

Copyright (c) 2001-18 HP Development Company, LP
This software comes with ABSOLUTELY NO WARRANTY.
This is free software, and you are welcome to distribute it
under certain conditions. See COPYING file for more details.

Checking for network connection...
Downloading plug-in from:
Traceback (most recent call last):
  File "/usr/share/hplip/base/password.py", line 85, in get_distro_name
    os_name = platform.dist()[0]
AttributeError: module 'platform' has no attribute 'dist'

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/usr/share/hplip/ui5/plugindialog.py", line 248, in NextButton_clicked
    status, download_plugin_file, error_str = self.pluginObj.download(self.plugin_path,self.plugin_download_callback)
  File "/usr/share/hplip/installer/pluginhandler.py", line 254, in download
    core = core_install.CoreInstall()
  File "/usr/share/hplip/installer/core_install.py", line 240, in __init__
    self.passwordObj = password.Password(ui_mode)
  File "/usr/share/hplip/base/password.py", line 118, in __init__
    self.__readAuthType() # self.__authType
  File "/usr/share/hplip/base/password.py", line 141, in __readAuthType
    distro_name = get_distro_name().lower().replace(" ","")
  File "/usr/share/hplip/base/password.py", line 88, in get_distro_name
    os_name = distro.linux_distribution()[0]
  File "/usr/lib/python3/dist-packages/distro.py", line 122, in linux_distribution
    return _distro.linux_distribution(full_distribution_name)
  File "/usr/lib/python3/dist-packages/distro.py", line 677, in linux_distribution
    self.version(),
  File "/usr/lib/python3/dist-packages/distro.py", line 737, in version
    self.lsb_release_attr('release'),
  File "/usr/lib/python3/dist-packages/distro.py", line 899, in lsb_release_attr
    return self._lsb_release_info.get(attribute, '')
  File "/usr/lib/python3/dist-packages/distro.py", line 552, in __get__
    ret = obj.__dict__[self._fname] = self._f(obj)
  File "/usr/lib/python3/dist-packages/distro.py", line 1012, in _lsb_release_info
    stdout = subprocess.check_output(cmd, stderr=devnull)
  File "/usr/lib/python3.8/subprocess.py", line 411, in check_output
    return run(*popenargs, stdout=PIPE, timeout=timeout, check=True,
  File "/usr/lib/python3.8/subprocess.py", line 512, in run
    raise CalledProcessError(retcode, process.args,
subprocess.CalledProcessError: Command '('lsb_release', '-a')' returned non-zero exit status 1.
Error in sys.excepthook:
Traceback (most recent call last):
  File "/usr/lib/python3/dist-packages/apport_python_hook.py", line 153, in apport_excepthook
    with os.fdopen(os.open(pr_filename,
PermissionError: [Errno 13] Permission denied: '/var/crash/_usr_share_hplip_plugin.py.1000.crash'

I can also tell what is wrong with Command '('lsb_release', '-a')': it fails to run dpkg-query.

Traceback (most recent call last):
 File "/usr/bin/lsb_release", line 95, in <module>
  main()
 File "/usr/bin/lsb_release", line 62, in main
  verinfo = lsb_release.check_modules_installed()
 File "/usr/lib/python3/dist-packages/lsb_release.py", line 139, in check_modules_installed
  output = subprocess.Popen([\'dpkg-query\',\'-f\',"${Version} ${Provides}\\n",\'-W\'] + PACKAGES.split(),
 File "/usr/lib/python3.8/subprocess.py", line 854, in __init__
  self._execute_child(args, executable, preexec_fn, close_fds,
 File "/usr/lib/python3.8/subprocess.py", line 1702, in _execute_child
  raise child_exception_type(errno_num, err_msg, err_filename)
PermissionError: [Errno 13] Permission denied: \'dpkg-query\'

I know, I need to check permissions

$ which dpkg-query
/usr/bin/dpkg-query
$ ll /usr/bin/dpkg-query
-rwxr-xr-x 1 root root 166488 mar 23 2020 /usr/bin/dpkg-query*

but anything looks good. So what?

workaround (it works, I swear! But no idea why!):
cp /usr/share/hplip
sudo cp plugin.py plugin_.py
sudo ln -s ../share/hplip/plugin_.py /usr/bin/hp-plugin

$ hp-check
/usr/bin/hp-check:685: SyntaxWarning: "is not" with a literal. Did you mean "!="?
  if 'getfacl' not in g and '' is not g and 'file' not in g:
Saving output in log file: /home/gianpaolo/hp-check.log

HP Linux Imaging and Printing System (ver. 3.20.11)
Dependency/Version Check Utility ver. 15.1

Copyright (c) 2001-18 HP Development Company, LP
This software comes with ABSOLUTELY NO WARRANTY.
This is free software, and you are welcome to distribute it
under certain conditions. See COPYING file for more details.

Note: hp-check can be run in three modes:
1. Compile-time check mode (-c or --compile): Use this mode before compiling the HPLIP supplied tarball (.tar.gz or .run) to determine if the proper dependencies are installed to
successfully compile HPLIP.
2. Run-time check mode (-r or --run): Use this mode to determine if a distro supplied package (.deb, .rpm, etc) or an already built HPLIP supplied tarball has the proper dependencies
installed to successfully run.
3. Both compile- and run-time check mode (-b or --both) (Default): This mode will check both of the above cases (both compile- and run-time dependencies).

Check types:
a. EXTERNALDEP - External Dependencies
b. GENERALDEP - General Dependencies (required both at compile and run time)
c. COMPILEDEP - Compile time Dependencies
d. [All are run-time checks]
PYEXT SCANCONF QUEUES PERMISSION

Status Types:
    OK
    MISSING - Missing Dependency or Permission or Plug-in
    INCOMPAT - Incompatible dependency-version or Plugin-version

---------------
| SYSTEM INFO |
---------------

 Kernel: 5.4.0-58-generic #64-Ubuntu SMP Wed Dec 9 08:16:25 UTC 2020 GNU/Linux
 Host: gianpaolo
 Proc: 5.4.0-58-generic #64-Ubuntu SMP Wed Dec 9 08:16:25 UTC 2020 GNU/Linux
 Distribution: 12 20.04
 Bitness: 64 bit

-----------------------
| HPLIP CONFIGURATION |
-----------------------

HPLIP-Version: HPLIP 3.20.11
HPLIP-Home: /usr/share/hplip
HPLIP-Installation: Auto installation is supported for ubuntu distro 20.04 version

Current contents of '/etc/hp/hplip.conf' file:
# hplip.conf. Generated from hplip.conf.in by configure.

[hplip]
version=3.20.11

[dirs]
home=/usr/share/hplip
run=/var/run
ppd=/usr/share/ppd/HP
ppdbase=/usr/share/ppd
doc=/usr/share/doc/hplip-3.20.11
html=/usr/share/doc/hplip-3.20.11
icon=/usr/share/applications
cupsbackend=/usr/lib/cups/backend
cupsfilter=/usr/lib/cups/filter
drv=/usr/share/cups/drv/hp
bin=/usr/bin
apparmor=/etc/apparmor.d
# Following values are determined at configure time and cannot be changed.
[configure]
network-build=yes
libusb01-build=no
pp-build=no
gui-build=yes
scanner-build=yes
fax-build=yes
dbus-build=yes
cups11-build=no
doc-build=yes
shadow-build=no
hpijs-install=no
foomatic-drv-install=no
foomatic-ppd-install=no
foomatic-rip-hplip-install=no
hpcups-install=yes
cups-drv-install=yes
cups-ppd-install=no
internal-tag=3.20.11
restricted-build=no
ui-toolkit=qt5
qt3=no
qt4=no
qt5=yes
policy-kit=no
lite-build=no
udev_sysfs_rules=no
hpcups-only-build=no
hpijs-only-build=no
apparmor_build=yes
class-driver=no

Current contents of '/var/lib/hp/hplip.state' file:
Plugins are not installed. Could not access file: No such file or directory

Current contents of '~/.hplip/hplip.conf' file:
[installation]
date_time = 12/28/20 18:30:04
version = 3.20.11

[upgrade]
latest_available_version = 3.17.10

 <Package-name> <Package-Desc> <Required/Optional> <Min-Version> <Installed-Version> <Status> <Comment>

-------------------------
| External Dependencies |
-------------------------

 cups CUPS - Common Unix Printing System REQUIRED 1.1 2.3.1 OK 'CUPS Scheduler is running'
 gs GhostScript - PostScript and PDF language interpreter and previewer REQUIRED 7.05 9.50 OK -
 xsane xsane - Graphical scanner frontend for SANE OPTIONAL 0.9 0.999 OK -
 scanimage scanimage - Shell scanning program OPTIONAL 1.0 1.0.29 OK -
 dbus DBus - Message bus system REQUIRED - 1.12.16 OK -
 policykit PolicyKit - Administrative policy framework OPTIONAL - 0.105 OK -
 network network -wget OPTIONAL - 1.20.3 OK -
 avahi-utils avahi-utils OPTIONAL - 0.7 OK -

------------------------
| General Dependencies |
------------------------

 libjpeg libjpeg - JPEG library REQUIRED - - OK -
 cups-devel CUPS devel- Common Unix Printing System development files REQUIRED - 2.3.1 OK -
 cups-image CUPS image - CUPS image development files REQUIRED - 2.3.1 OK -
 libpthread libpthread - POSIX threads library REQUIRED - b'2.31' OK -
 libusb libusb - USB library REQUIRED - 1.0 OK -
 sane SANE - Scanning library REQUIRED - - OK -
 sane-devel SANE - Scanning library development files REQUIRED - - OK -
 libavahi-dev libavahi-dev REQUIRED - - OK -
 libnetsnmp-devel libnetsnmp-devel - SNMP networking library development files REQUIRED 5.0.9 5.8 OK -
 libcrypto libcrypto - OpenSSL cryptographic library REQUIRED - 1.1.1 OK -
 python3X Python 2.2 or greater - Python programming language REQUIRED 2.2 3.8.5 OK -
 python3-notify2 Python libnotify - Python bindings for the libnotify Desktop notifications OPTIONAL - - OK -
 python3-pyqt5-dbus PyQt 5 DBus - DBus Support for PyQt5 OPTIONAL 5.0 5.14.1 OK -
 python3-pyqt5 PyQt 5- Qt interface for Python (for Qt version 4.x) REQUIRED 5.0 5.14.1 OK -
 python3-dbus Python DBus - Python bindings for DBus REQUIRED 0.80.0 1.2.16 OK -
 python3-xml Python XML libraries REQUIRED - 2.2.9 OK -
 python3-devel Python devel - Python development files REQUIRED 2.2 3.8.5 OK -
 python3-pil PIL - Python Imaging Library (required for commandline scanning with hp-scan) OPTIONAL - 7.0.0 OK -
 python3-reportlab Reportlab - PDF library for Python OPTIONAL 2.0 3.5.34 OK -

--------------
| COMPILEDEP |
--------------

 libtool libtool - Library building support services REQUIRED - 2.4.6 OK -
 gcc gcc - GNU Project C and C++ Compiler REQUIRED - 9.3.0 OK -
 make make - GNU make utility to maintain groups of programs REQUIRED 3.0 4.2.1 OK -

---------------------
| Python Extentions |
---------------------

 cupsext CUPS-Extension REQUIRED - 3.20.11 OK -
 hpmudext IO-Extension REQUIRED - 3.20.11 OK -

----------------------
| Scan Configuration |
----------------------

 hpaio HPLIP-SANE-Backend REQUIRED - 3.20.11 OK 'hpaio found in /etc/sane.d/dll.conf'
 scanext Scan-SANE-Extension REQUIRED - 3.20.11 OK -

------------------------------
| DISCOVERED SCANNER DEVICES |
------------------------------

device `hpaio:/net/DeskJet_Plus_4100_series?ip=192.168.1.8' is a Hewlett-Packard DeskJet_Plus_4100_series all-in-one
device `hpaio:/net/ENVY_5000_series?ip=192.168.0.122' is a Hewlett-Packard ENVY_5000_series all-in-one
device `escl:https://192.168.1.8:443' is a ESCL HP DeskJet Plus 4100 series [E49F5F] SSL flatbed scanner
device `escl:http://192.168.1.8:8080' is a ESCL HP DeskJet Plus 4100 series [E49F5F] flatbed scanner
device `hpaio:/net/DeskJet_Plus_4100_series?ip=192.168.1.8' is a Hewlett-Packard DeskJet_Plus_4100_series all-in-one
device `hpaio:/net/ENVY_5000_series?ip=192.168.0.122' is a Hewlett-Packard ENVY_5000_series all-in-one
device `escl:https://192.168.1.8:443' is a ESCL HP DeskJet Plus 4100 series [E49F5F] SSL flatbed scanner
device `escl:http://192.168.1.8:8080' is a ESCL HP DeskJet Plus 4100 series [E49F5F] flatbed scanner

--------------------------
| DISCOVERED USB DEVICES |
--------------------------

No devices found.

---------------------------------
| INSTALLED CUPS PRINTER QUEUES |
---------------------------------

DeskJet_Plus_4100
-----------------
Type: Printer
Device URI: hp:/net/DeskJet_Plus_4100_series?ip=192.168.1.8
PPD: /etc/cups/ppd/DeskJet_Plus_4100.ppd
warning: Failed to read /etc/cups/ppd/DeskJet_Plus_4100.ppd ppd file
PPD Description:
Printer status: la stampante DeskJet_Plus_4100 è inattiva. è stata abilitata da lun 28 dic 2020, 16:53:23
Communication status: Good

ENVY-5000
---------
Type: Unknown
Device URI: dnssd://HP%20ENVY%205000%20series%20%5B6F9EE6%5D._pdl-datastream._tcp.local/?uuid=b323958f-2b4f-5a81-ba5e-e5481629aab0
PPD: /etc/cups/ppd/ENVY-5000.ppd
warning: Failed to read /etc/cups/ppd/ENVY-5000.ppd ppd file
PPD Description:
Printer status: la stampante ENVY-5000 è inattiva. è stata abilitata da mer 23 dic 2020, 13:30:31
warning: Printer is not HPLIP installed. Printers must use the hp: or hpfax: CUPS backend for HP-Devices.

ENVY_5000
---------
Type: Printer
Device URI: hp:/net/ENVY_5000_series?ip=192.168.0.122
PPD: /etc/cups/ppd/ENVY_5000.ppd
warning: Failed to read /etc/cups/ppd/ENVY_5000.ppd ppd file
PPD Description:
Printer status: la stampante ENVY_5000 è inattiva. è stata abilitata da mer 8 lug 2020, 20:40:40
error: Unable to communicate with device (code=12): hp:/net/ENVY_5000_series?ip=192.168.0.122
error: unable to open channel
error: Communication status: Failed

HP_DeskJet_Plus_4100_series_E49F5F_
-----------------------------------
Type: Unknown
Device URI: implicitclass://HP_DeskJet_Plus_4100_series_E49F5F_/
PPD: /etc/cups/ppd/HP_DeskJet_Plus_4100_series_E49F5F_.ppd
warning: Failed to read /etc/cups/ppd/HP_DeskJet_Plus_4100_series_E49F5F_.ppd ppd file
PPD Description:
Printer status: la stampante HP_DeskJet_Plus_4100_series_E49F5F_ è inattiva. è stata abilitata da lun 28 dic 2020, 17:41:28
warning: Printer is not HPLIP installed. Printers must use the hp: or hpfax: CUPS backend for HP-Devices.

HP_ENVY_5000_series_6F9EE6_gianpaolo
------------------------------------
Type: Unknown
Device URI: ///dev/null

--------------
| PERMISSION |
--------------

-----------
| SUMMARY |
-----------

Missing Required Dependencies
-----------------------------
None

Missing Optional Dependencies
-----------------------------
None

Total Errors: 1
Total Warnings: 2

Done.

Revision history for this message
Felipe Casado (vivamudhoney) wrote :

This is a duplicate of https://bugs.launchpad.net/hplip/+bug/1867636

Please notice that the root cause of the error is this:
Traceback (most recent call last):
  File "/usr/share/hplip/base/password.py", line 85, in get_distro_name
    os_name = platform.dist()[0]
AttributeError: module 'platform' has no attribute 'dist'

To post a comment you must log in.
This report contains Public information  
Everyone can see this information.

Other bug subscribers

Remote bug watches

Bug watches keep track of this bug in other bug trackers.