web-dev-qa-db-ja.com

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]$ 

このreadline-6.3-5.fc21.src.rpmをダウンロードするためにどのURLまたはドメインが選択されているかを知るにはどうすればよいですか? --verboseリンクが表示されていないようです。そして、bashセッションを終了した後、将来dnf履歴からこのURL情報を取得するにはどうすればよいですか?

3
林果皞

@muruがダウンロードを担当するlibrepoを指摘してくれてありがとう。

現在の回避策は、debug_functionを定義し、それをset_debug_log_handlerdownload_packages.pyrepo.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.rpm

[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から取得する方がよい場合があります。

2
林果皞

dnf自体の場合、これは 遅延機能リクエスト です。どうやらdnfはURLを知りません。コメント4と5を参照してください。

申し訳ありませんが、私/私たちは動機を誤解しています。参考までに、DNFは実際にはURLを知りません。パッケージの「メタリンク」のURLとファイル名(およびその他のメタデータ)を知っているだけです。基盤となるライブラリlibrepoは、最適なミラーの選択、URLの作成、およびファイルのダウンロードを担当します。つまり、情報を提供するために、ライブラリにコールバックが必要になるということです。参考までに...


問題は、メタリンクからのURLがわからないことです。これは、librepoによって下位レベルで処理されます。誰かが同じユースケースを共有していて、この機能を見たい場合は、コメントを投稿してください。そうすれば、この機能を利用できる可能性が高くなります。

2
muru
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.rpm

パッケージがダウンロードされた場所からURLを取得しました

0
Sérgio