Bug#818343: python-apt: incorrectly handles MixedCase package names
Source: python-apt
Severity: normal
Tags: upstream
Hello,
while trying to install the 3rd party package
NessusAgent-6.5.6-debian6_amd64.deb with ansible, I encountered a bug
that may be caused by python-apt.
Ansible uses python-apt to check if a to-be-installed package is already
installed. The package name is "NessusAgent" (according to
DEBIAN/control) but the normal apt- and dpkg software automatically lower
cases all package names.
python-apt, however, does not lowercase it.
The call to compare_to_version_in_cache() will result in VERSION_NONE
instead of VERSION_SAME and ansible will reinstall the package although
it's already installed.
I'm aware that using upper case package names may be in violation of the
Debian Policy Manual:
https://www.debian.org/doc/debian-policy/ch-controlfields.html#s-f-Source
Still I think that the behaviour of python-apt should be consistent with
apt and dpkg.
Test packages:
http://wulf.eu.org/hello-traditional_2.10-3_amd64.deb
http://wulf.eu.org/HelloWorld_2.10-3_amd64.deb
Test code:
#!/usr/bin/python3
import apt.debfile
info = {
apt.debfile.DebPackage.VERSION_NEWER: 'NEWER',
apt.debfile.DebPackage.VERSION_NONE: 'NONE',
apt.debfile.DebPackage.VERSION_OUTDATED: 'OUTDATED',
apt.debfile.DebPackage.VERSION_SAME: 'SAME',
}
for pkg in [
'hello-traditional_2.10-3_amd64.deb',
'HelloWorld_2.10-3_amd64.deb',
]:
deb = apt.debfile.DebPackage(pkg)
print('Package {} is {}'.format(pkg, info[deb.compare_to_version_in_cache()]))
Instructions to reproduce:
- Install exactly one of the packages
- Run the python code
- It should display "SAME" for the installed package and "NONE" for the
other.
- Uninstall the package and install the other. Rerun python code.
- You can see that "HelloWorld" is "NONE" even though it's installed.
Best Regards
Joern Heissler
-- System Information:
Debian Release: stretch/sid
APT prefers unstable
APT policy: (600, 'unstable')
Architecture: amd64 (x86_64)
Foreign Architectures: i386
Kernel: Linux 4.4.0-1-amd64 (SMP w/4 CPU cores)
Locale: LANG=en_GB.utf8, LC_CTYPE=en_GB.utf8 (charmap=UTF-8)
Shell: /bin/sh linked to /bin/dash
Init: systemd (via /run/systemd/system)
-- no debconf information
Reply to: