С DNF это выглядело бы примерно так (непроверено, потому что быстро писал):
base = dnf.Base()
base.read_all_repos()
base.fill_sack()
for pkg in base.sack.query().filter(name='xterm'):
print(pkg.remote_location())
Возможно, вы захотите немного больше обработать, например, использовать только одно из расположений, если существует несколько, и, возможно, некоторую обработку ошибок.