dnf – как показать, какой зеркальный url был выбран?

Ниже приведена часть журнала bash, полный журнал может быть достигнут на https://gist.github.com/limkokhole/f2a423112aa005f10862 :

[xiaobai@xiaobai hello]$ dnf --verbose download --source readline cachedir: /var/cache/dnf Loaded plugins: noroot, needs-restarting, reposync, copr, playground, kickstart, Query, generate_completion_cache, builddep, download, config-manager, protected_packages, system-upgrade, debuginfo-install DNF version: 0.6.4 repo: using cache for: spot-chromium not found deltainfo for: Copr repo for chromium owned by spot not found updateinfo for: Copr repo for chromium owned by spot repo: using cache for: rpmfusion-nonfree-updates-testing not found deltainfo for: RPM Fusion for Fedora 21 - Nonfree - Test Updates not found updateinfo for: RPM Fusion for Fedora 21 - Nonfree - Test Updates repo: using cache for: updates-source ... not found deltainfo for: RPM Fusion for Fedora 21 - Nonfree - Updates Source not found updateinfo for: RPM Fusion for Fedora 21 - Nonfree - Updates Source readline-6.3-5.fc21.src.rpm 623 kB/s | 2.4 MB 00:03 [xiaobai@xiaobai hello]$ 

Я также пробовал dnf info , url http://cnswww.cns.cwru.edu/php/chet/readline/rltop.html не является репо-URL:

 [xiaobai@xiaobai hello]$ dnf info readline [sudo] password for xiaobai: Using metadata from Thu Dec 31 19:18:09 2015 (6:13:33 hours old) Installed Packages Name : readline Arch : i686 Epoch : 0 Version : 6.3 Release : 5.fc21 Size : 446 k Repo : @System Summary : A library for editing typed command lines URL : http://cnswww.cns.cwru.edu/php/chet/readline/rltop.html License : GPLv3+ Description : The Readline library provides a set of functions that allow users to : edit command lines. Both Emacs and vi editing modes are available. The : Readline library includes additional functions for maintaining a list : of previously-entered command lines for recalling or editing those : lines, and for performing csh-like history expansion on previous : commands. Name : readline Arch : x86_64 Epoch : 0 Version : 6.3 Release : 5.fc21 Size : 483 k Repo : @System Summary : A library for editing typed command lines URL : http://cnswww.cns.cwru.edu/php/chet/readline/rltop.html License : GPLv3+ Description : The Readline library provides a set of functions that allow users to : edit command lines. Both Emacs and vi editing modes are available. The : Readline library includes additional functions for maintaining a list : of previously-entered command lines for recalling or editing those : lines, and for performing csh-like history expansion on previous : commands. [xiaobai@xiaobai hello]$ 

Как я могу узнать, какой URL или домен был выбран для загрузки этой readline-6.3-5.fc21.src.rpm? --verbose , похоже, не показывает ссылку. И как я могу получить эту информацию о url из истории dnf в будущем после выхода из сессии bash?

3 Solutions collect form web for “dnf – как показать, какой зеркальный url был выбран?”

Для самого dnf это запрос отложенной функции . По-видимому, dnf не знает URL-адреса. См. Комментарии 4 и 5:

Прошу прощения, я / мы неправильно поняли мотивацию. FYI, DNF на самом деле не знает URL-адреса. Он просто знает URL-адрес «metalink» и имя файла (и некоторые другие метаданные) пакета. Основная библиотека librepo отвечает за выбор лучшего зеркала, составление URL-адреса и загрузку файла. Это означает, BTW, что нам понадобится обратный вызов в библиотеке, чтобы предоставить вам информацию. Просто FYI …


Проблема в том, что мы не знаем URL из metalinks, на Librepo позаботимся о нижнем уровне. Если кто-то делится одним и тем же вариантом использования и хотел бы увидеть эту функцию, опубликуйте комментарий, и у вас будет больше шансов получить эту функцию.

Спасибо, что @muru указал на librepo, ответственного за загрузку.

Текущее обходное решение определяет функцию debug_function и передает его в set_debug_log_handler (см. download_packages.py ) в repo.py :

 def download_payloads(payloads, drpm): # download packages drpm.err.clear() targets = [pload.librepo_target() for pload in payloads] errs = _DownloadErrors() try: #START my custom code def debug_function(msg, _): print("##hole## msg:", msg) librepo.set_debug_log_handler(debug_function) #END my custom code librepo.download_packages(targets, failfast=True) except librepo.LibrepoException as e: errs.fatal = e.args[1] or '<unspecified librepo error>' ... 

Этот файл repo.py можно найти вручную:

 [xiaobai@xiaobai log]$ python -c 'import sys, dnf.repo; print(sys.modules["dnf.repo"])' <module 'dnf.repo' from '/usr/lib/python2.7/site-packages/dnf/repo.py'> [xiaobai@xiaobai log]$ 

[UPDATE] В Fedora 24 путь: /usr/lib/python3.5/site-packages/dnf/repo.py .

И теперь я могу получить URL-адрес http://ftp.jaist.ac.jp/pub/Linux/Fedora/releases/21/Everything/source/SRPMS/r/readline-6.3-5.fc21.src. об / мин :

 [xiaobai@xiaobai test]$ dnf download --source readline [sudo] password for xiaobai: Using metadata from Thu Dec 31 19:18:09 2015 (1 day, 11:59:10 hours old) ... ##hole## msg: select_next_target: Selecting mirror for: r/readline-6.3-5.fc21.src.rpm ##hole## msg: select_suitable_mirror: Skipping rsync url: rsync://ftp.jaist.ac.jp/pub/Linux/Fedora/releases/21/Everything/source/SRPMS/ ##hole## msg: prepare_next_transfer: URL: http://ftp.jaist.ac.jp/pub/Linux/Fedora/releases/21/Everything/source/SRPMS/r/readline-6.3-5.fc21.src.rpm ##hole## msg: prepare_next_transfer: Resume ignored, existing file was not originaly being downloaded by Librepo ##hole## msg: lr_download: Downloading started ##hole## msg: lr_headercb: Server returned Content-Length: "2493152" (converted 2493152/2493152 expected) ] --- B/s | 0 B --:-- ETA ##hole## msg: check_transfer_statuses: Transfer finished: r/readline-6.3-5.fc21.src.rpm (Effective url: http://ftp.jaist.ac.jp/pub/Linux/Fedora/releases/21/Everything/source/SRPMS/r/readline-6.3-5.fc21.src.rpm) ##hole## msg: check_finished_trasfer_checksum: Checksum (sha256) 521bd47a3293e694190a237921a9954b20fa41d0e8e38183d186452d4cc62ac8 is OK readline-6.3-5.fc21.src.rpm 1.4 MB/s | 2.4 MB 00:01 ##hole## msg: lr_download_packages: Restoring an old SIGINT handler [xiaobai@xiaobai test]$ 

Конечно, было бы лучше, если бы dnf зарегистрировал этот url для использования в будущем, либо извлеките из dnf history команды, либо файл /var/log/dnf.log .

 dnf download readline cat /var/log/dnf.librepo.log | grep URL | tail -n1 

prepare_next_transfer: URL: http://www.mirrorservice.org/sites/dl.fedoraproject.org/pub/fedora/linux/releases/23/Everything/source/SRPMS/r/readline-6.3-6.fc23.src. оборотов в минуту

и вы получили там URL-адрес, откуда загружается пакет

  • RPM и исправление
  • Установка пакетов RPM с циклической зависимостью
  • RPMDB сломался после обновления yum в Fedora 19?
  • Как исправить случайное удаление librpm.so.3
  • Ошибка обновления Yum - Требуется: python26-ordereddict
  • Извлеките spec-файл из RPM
  • Ошибки сборки RPM
  • Распаковка автономной системы rpm (OpenSuse)?
  • Не удается удалить рубиновый камень Vagrant для установки Vagrant через RPM
  • Как установить VTK (с Python Wrapper) на Red Hat Enterprise Linux (RHEL)
  • Как указать пакеты RPM, установленные в порядке установки
  • Linux и Unix - лучшая ОС в мире.