Description of problem: The python3-apt package does not work without /usr/bin/dpkg (provided by “dpkg”) and, to a lesser degree, /usr/bin/dpkg-source (provided by “dpkg-dev”). Version-Release number of selected component (if applicable): 2.2.0-1.fc34 How reproducible: Here I demonstrate the problem with diffoscope, but I find that there is no bug in diffoscope. Steps to Reproduce: 1. $ sudo dnf install diffoscope 2. $ diffoscope --help Actual results: > Traceback (most recent call last): > File "/usr/lib/python3.9/site-packages/diffoscope/main.py", line 737, in main > parsed_args = parser.parse_args(args) > File "/usr/lib64/python3.9/argparse.py", line 1820, in parse_args > args, argv = self.parse_known_args(args, namespace) > File "/usr/lib64/python3.9/argparse.py", line 1853, in parse_known_args > namespace, args = self._parse_known_args(args, namespace) > File "/usr/lib64/python3.9/argparse.py", line 2062, in _parse_known_args > start_index = consume_optional(start_index) > File "/usr/lib64/python3.9/argparse.py", line 2002, in consume_optional > take_action(action, args, option_string) > File "/usr/lib64/python3.9/argparse.py", line 1930, in take_action > action(self, namespace, argument_values, option_string) > File "/usr/lib64/python3.9/argparse.py", line 1094, in __call__ > parser.print_help() > File "/usr/lib64/python3.9/argparse.py", line 2550, in print_help > self._print_message(self.format_help(), file) > File "/usr/lib64/python3.9/argparse.py", line 2534, in format_help > return formatter.format_help() > File "/usr/lib/python3.9/site-packages/diffoscope/main.py", line 487, in format_help > ComparatorManager().format_descriptions(), > File "/usr/lib/python3.9/site-packages/diffoscope/comparators/__init__.py", line 123, in __init__ > self.reload() > File "/usr/lib/python3.9/site-packages/diffoscope/comparators/__init__.py", line 134, in reload > mod = importlib.import_module( > File "/usr/lib64/python3.9/importlib/__init__.py", line 127, in import_module > return _bootstrap._gcd_import(name[level:], package, level) > File "<frozen importlib._bootstrap>", line 1030, in _gcd_import > File "<frozen importlib._bootstrap>", line 1007, in _find_and_load > File "<frozen importlib._bootstrap>", line 986, in _find_and_load_unlocked > File "<frozen importlib._bootstrap>", line 680, in _load_unlocked > File "<frozen importlib._bootstrap_external>", line 850, in exec_module > File "<frozen importlib._bootstrap>", line 228, in _call_with_frames_removed > File "/usr/lib/python3.9/site-packages/diffoscope/comparators/debian.py", line 24, in <module> > from debian.deb822 import Dsc, Deb822 > File "/usr/lib/python3.9/site-packages/debian/deb822.py", line 283, in <module> > import debian.debian_support > File "/usr/lib/python3.9/site-packages/debian/debian_support.py", line 46, in <module> > apt_pkg.init() > apt_pkg.Error: W:Unable to read /etc/apt/apt.conf.d/ - DirectoryExists (2: No such file or directory), E:Unable to determine a suitable packaging system type Expected results: > usage: diffoscope [--debug] [--pdb] [--status-fd FD] [--progress] > [--no-default-limits] [--text OUTPUT_FILE] > [--text-color WHEN] [--output-empty] [--html OUTPUT_FILE] > [--html-dir OUTPUT_DIR] [--css URL] [--jquery URL] > […] > bugs/issues: > <https://salsa.debian.org/reproducible-builds/diffoscope/issues> Additional info: Simply creating the apt configuration directory, > $ mkdir -p /etc/apt/apt.conf.d makes little difference. The traceback is the same; the warning disappears but the error remains. Installing “dpkg” fixes the problem. Removing python3-apt (which is a weak dependency of python3-debian) *also* fixes the problem. ----- The diffoscope package depends on python3-debian, which has a weak dependency on python3-apt. The python-debian package appears to have a fallback for when python-apt is not installed (ImportError on apt_pkg), but not for when apt_pkg.init() fails this way. ----- In the python-apt source tree: > $ grep -ErnI "['\"]dpkg" apt apt/cache.py:140: os.path.join(rootdir, "usr", "bin", "dpkg")) > apt/cache.py:763: 'dpkg --configure -a' as root. > apt/debfile.py:725: return os.spawnlp(os.P_WAIT, "dpkg", "dpkg", "-i", self.filename) > apt/package.py:943: subprocess.check_call(["dpkg-source", "-x", dsc, outdir]) > apt/progress/base.py:239: os._exit(os.spawnlp(os.P_WAIT, "dpkg", "dpkg", "--status-fd", My conclusion is that runtime dependencies on these command-line tools should be added to python3-apt, i.e., > Requires: /usr/bin/dpkg > Requires: /usr/bin/dpkg-source
CC’ing the diffoscope maintainers as a heads-up, although I don’t believe any changes in that package are needed.
(Sorry, wrong Zbigniew!)
Yeah, seems like something to be improved in python3-apt.
FEDORA-2022-5a15b7ab52 has been submitted as an update to Fedora 34. https://bodhi.fedoraproject.org/updates/FEDORA-2022-5a15b7ab52
FEDORA-2022-3f6e44d506 has been submitted as an update to Fedora 35. https://bodhi.fedoraproject.org/updates/FEDORA-2022-3f6e44d506
FEDORA-2022-5a15b7ab52 has been pushed to the Fedora 34 testing repository. Soon you'll be able to install the update with the following command: `sudo dnf upgrade --enablerepo=updates-testing --advisory=FEDORA-2022-5a15b7ab52` You can provide feedback for this update here: https://bodhi.fedoraproject.org/updates/FEDORA-2022-5a15b7ab52 See also https://fedoraproject.org/wiki/QA:Updates_Testing for more information on how to test updates.
FEDORA-2022-3f6e44d506 has been pushed to the Fedora 35 testing repository. Soon you'll be able to install the update with the following command: `sudo dnf upgrade --enablerepo=updates-testing --advisory=FEDORA-2022-3f6e44d506` You can provide feedback for this update here: https://bodhi.fedoraproject.org/updates/FEDORA-2022-3f6e44d506 See also https://fedoraproject.org/wiki/QA:Updates_Testing for more information on how to test updates.
FEDORA-2022-5a15b7ab52 has been pushed to the Fedora 34 stable repository. If problem still persists, please make note of it in this bug report.
FEDORA-2022-3f6e44d506 has been pushed to the Fedora 35 stable repository. If problem still persists, please make note of it in this bug report.