dl-fedora
Fedora image download tool
https://github.com/juhp/dl-fedora
| LTS Haskell 24.17: | 2.0.1 | 
| Stackage Nightly 2025-10-31: | 2.1.1 | 
| Latest on Hackage: | 2.1.1 | 
dl-fedora-2.1.1@sha256:2443d2f80f2809ac211c71ac0506a19b6b4e0d3402c10624129f77af9261831c,2430Module documentation for 2.1.1
There are no documented modules for this package.
dl-fedora
A tool for downloading Fedora, ELN, and Centos Stream images. By default it targets the Workstation edition of Fedora.
Usage examples:
dl-fedora rawhide : downloads the latest Fedora Rawhide Workstation Live iso
dl-fedora 43 silverblue : downloads the Fedora Silverblue iso
dl-fedora respin kde : downloads the latest KDE Live respin
dl-fedora 42 --list : list editions for version
dl-fedora 43 kde workstation : download both KDE and Workstation editions
dl-fedora 42 server --arch aarch64 : will download the Server iso for armv8
dl-fedora --run 43 : will download Fedora Workstation and boot the Live image with qemu-kvm.
(Set DLFEDORA_QEMU or --qemu to specify a command or script to run instead of the default “qemu-kvm”)
dl-fedora --check respin : checks if there is a newer respin iso image
available.
dl-fedora --local rawhide : shows the current locally available image.
It can be combined with --run to quickly run the latest local image,
without a newer download.
dl-fedora c10s : downloads a Centos Stream net installer.
By default dl-fedora downloads to ~/Downloads/
(correctly the XDG user “DOWNLOAD” directory), or ~/Downloads/iso/ if it exists.
If ~/Downloads/ doesn’t exist then the current directory is used.
You can override the download directory with --dir DIR (which can be relative: eg .).
Curl downloads to a .dl-fedora-partial subdirectory first (which can safely be removed when not using dl-fedora)
and the downloaded file is then moved up to the actual download directory when complete.
dl-fedora downloads the latest mirrored image redirected from
download.fedoraproject.org by default.
If you want to ensure getting the very latest image you can use --latest,
which will then download from dl.fedoraproject.org instead
if your mirror is not synced yet.
If the image is already found to be downloaded
it will not be re-downloaded of course (unless you use a different --dir say).
Curl is used to do the downloading: partial downloads will continue.
A symlink to the latest iso is also created:
eg for rawhide it might be "Fedora-Workstation-Live-x86_64-Rawhide-latest.iso".
It also tries to check the iso checksum and its gpg signature.
There are some release aliases:
- {8,9,10} are aliases for {c8s,c9s,c10s}
- {8,9,10}-{live,respin}are aliases for- {c8s,c9s,c10s}-{live,respin}
- currently 11is an alias for eln
- the current rawhide version can be used for rawhide
- nextis an alias for the next Fedora release (either Rawhide or “branched”)
- currentis an alias for the latest current stable Fedora release (though you may prefer newer- respin)
- previousis an alias for the previous current stable Fedora release
Also a few edition abbreviations:
- wsand- gnomeare aliases for- workstation(default edition)
- sbis short for- silverblue.
Usage
$ dl-fedora --version
2.1.1
$ dl-fedora --help
Fedora iso downloader
Usage: dl-fedora [--version] [-g|--gpg-keys] [--no-checksum | --checksum] 
                 [--debug] [-T|--no-http-timeout] 
                 [(-c|--check) | (-l|--local) | --list | (-R|--replace)] 
                 [-d|--dir DIRECTORY] [-n|--dry-run] [-r|--run] [-q|--qemu QEMU]
                 [(-L|--latest) | --dl | (-k|--koji) | (-m|--mirror URL)] 
                 [--dvd] [--cs-devel | --cs-test | --cs-production] 
                 [--alt-cs-extra-edition ('MAX'|'MIN')] [-a|--arch ARCH] RELEASE
                 [--all-desktops | --all-spins | --all-editions | [-x|--exclude]
                   [EDITION...]]
  Tool for downloading Fedora iso file images.
  EDITION = {cloud,container,everything,kde,server,workstation,budgie,cinnamon,
             cosmic,i3,kdemobile,lxde,lxqt,mate,miracle,soas,sway,xfce,
             silverblue,kinoite,cosmic-atomic,onyx,sericea,
             iot} [default: workstation]
  RELEASE = release number, respin, rawhide, test (Beta), stage (RC), eln, c9s, c10s, c9s-live
  See <https://github.com/juhp/dl-fedora/#readme>
Available options:
  -h,--help                Show this help text
  --version                Show version
  -g,--gpg-keys            Import Fedora GPG keys for verifying checksum file
  --no-checksum            Do not check checksum
  --checksum               Do checksum even if already downloaded
  --debug                  Debug output
  -T,--no-http-timeout     Do not timeout for http response
  -c,--check               Check if newer image available
  -l,--local               Show current local image
  --list                   List spins and editions
  -R,--replace             Delete previous snapshot image after downloading
                           latest one
  -d,--dir DIRECTORY       Download directory [default: ~/Downloads/iso]
  -n,--dry-run             Don't actually download anything
  -r,--run                 Boot image in QEMU
  -q,--qemu QEMU           specify QEMU command for --run (overrides
                           $DLFEDORA_QEMU, defaults to qemu-kvm)
  -L,--latest              Get latest image either from mirror or dl.fp.o if
                           newer
  --dl                     Use dl.fedoraproject.org (dl.fp.o)
  -k,--koji                Use koji.fedoraproject.org
  -m,--mirror URL          Mirror url for /pub [default
                           https://download.fedoraproject.org/pub]
  --dvd                    Download dvd iso instead of boot netinst (for Server,
                           eln, centos)
  --cs-devel               Use centos-stream development compose
  --cs-test                Use centos-stream test compose
  --cs-production          Use centos-stream production compose (default is
                           mirror.stream.centos.org)
  --alt-cs-extra-edition ('MAX'|'MIN')
                           Centos Stream Alternative Live Spin editions
                           (MAX,MIN)
  -a,--arch ARCH           Specify arch [default: x86_64]
  --all-desktops           Get all Fedora desktops
  --all-spins              Get all Fedora Spins
  --all-editions           Get all Fedora editions
  -x,--exclude             Exclude specified editions
References
See https://fedoraproject.org/wiki/Infrastructure/MirrorManager, https://admin.fedoraproject.org/mirrormanager/, and also https://fedoramagazine.org/verify-fedora-iso-file.
Contribution
dl-fedora is distributed under the GPL license version 3 or later.
Please report issues or contribute at https://github.com/juhp/dl-fedora.
Changes
Changelog
2.1.1 (2025-10-09)
- F43 i3 moved to Kiwi
- add COSMIC-Atomic
2.1 (2025-08-30)
- unbreak bash-completion by reading rawhide and current release versions later
- add –qemu option to specify how to run iso (overrides $DLFEDORA_QEMU)
- help: print releases after editions
- only try http directory twice
- warn and rename if checksum filesize changed and small locally (unsigned)
- add Cosmic to liveRespin map
- MATE missing from F43+ and no MiracleWM respin
2.0.1 (2025-03-11)
- ‘stage’ and ‘test’ releases also need to follow Kiwi editions
2.0 (2025-03-07)
- move short -doption from--dlto--dir
- simplify the download dir logic (now falls back to current directory if ~/Downloads/ doesn’t exist)
- partial downloads are now staged in a .dl-fedora-partial/subdirectory
- promote KDE to edition
- accumulate download errors and report number of failures
- ‘next’ is now also accepted as a release alias
- add --all-desktops
- add --dir optionto override download dir
- add --excludeeditions switch
1.3 (2025-02-16)
- F42 Workstation now created with Kiwi
- KDE spin renamed to KDE Desktop
- add COSMIC for F42
- use “c{9,10}s-live” for alt live respins instead of –cs-live-respin
- support downloading multiple or all editions/spins: –all-editions and –all-spins are defined per release or respin
- handle Kiwi use for different versions
- rawhide can now be specified by version number (uses fedora-release)
- respin –local: now correctly lists latest respin (not oldest)
- bump QEMU mem to 3GB
- wrap http-directory functions with retry
- allow “ws” and “gnome” as aliases for Workstation
- add release aliases ‘current’ and ‘previous’
- aliases {9,10}-live
- –alt-cs-extra-edition to allow MAX/MIN Live images
1.2.1 (2024-11-01)
- add MiracleWM and KDE_Mobile Live images
1.2 (2024-09-17)
- default centos-stream to mirror.stream.centos.org
- initial support for CS Alternative Live respins
- refactoring for new Release type
- new –list command to list all spins/editions
- checksum now only runs for downloaded (specified) image
- fix fedora.gpg url
- prompt to retry (continue) download if curl errors
- –debug: output redirects, including http -> https
1.1 (2024-05-23)
- add c10s and Fedora IoT edition
- print multiple matches and download latest
- ‘–dvd’ option to select dvd image rather than boot/netinst iso
- handle empty mirror directory by falling back to dl.fp.o
- better debug output
- improve handling of empty checksum file
- filename tweaks for Container and Cloud
1.0 (2023-09-15)
- default to download.fp.o: replace –no-dl with –latest
- new –check (-c) command mode: checks for newer image
- –local mode now only derefs symlink to show latest local image
- help: list ostree editions last
- add Onyx (F39 Budgie ostree image)
- allow “sb” as alias for Silverblue
- offer to fix permissions of a partially downloaded run iso file
0.9.6 (2023-08-18)
- –no-dl option to avoid dl.fp.o even if newer
- support c8s and add options for centos-stream channels
- update eln path
- downloadFile: add showdestdir to downloading message and curl debug
- add –debug option
0.9.5 (2023-04-13)
- add F38 Sericea sway ostree image
0.9.4 (2023-03-23)
- add new F38 spins: Budgie and Sway
- change koji target to –koji mirror option
- if mirror redirect fails then fallback to primary
- run with qemu -cpu host option
0.9.3 (2022-06-11)
- show timestamp of image
0.9.2 (2021-10-01)
- fix test (beta) image selection to be the latest version
0.9.1 (2021-08-30)
- new Kinoite edition for F35
- initial Centos Stream “c9s” target for production boot images
0.9 (2021-04-22)
- edition is now an argument after release, not an option
- –local –dryrun only accesses local files now for speed
- add ‘–no-http-timeout’ (mostly for CI)
0.8 (2021-04-07)
- –local option: print (or –run) current local image instead of newer download
- improve –dryrun Downloads/ handling for testsuite in CI
0.7.7 (2021-04-06)
- add the new F34 i3 spin
- shorten mate_compiz to mate
- convert tests to Haskell
0.7.6 (2021-01-21)
- improve help text for releases related for Beta and RCs (#1)
- if ~/Downloads/iso/ exists then download to it otherwise ~/Downloads/
- support ELN boot.iso
0.7.5 (2020-09-13)
- always print download url and already downloaded filename
- –replace deletes previous symlinked image after downloading new one
- improved checksum file handling
0.7.4 (2020-03-15)
- add ‘koji’ release target: downloads latest branched compose from kojipkgs
0.7.3 (2020-02-11)
- fix CHECKSUM512 detection (for respins)
0.7.2 (2019-10-29)
- add stage release target (useful just prior to release)
0.7.1 (2019-09-25)
- print datestamp beside filesize
- show directory correctly with ~/
- use a subdirectory for checksum files
0.7 (2019-09-12)
- add –checksum to always do checksum when possible
- add –run to run image in qemu-kvm if available
- rework algorithms
- check local filesize earlier: don’t even check mirror if already downloaded
- for partial local file output percentage already downloaded
- otherwise show filesize
 
- show dir for symlink: so one knows location
- drop the ‘devel’ target (use release version number instead)
- handle old dangling symlink too (after deleting iso)
0.6 (2019-09-02)
- major rework to correct the url logic
- first checks on dl.fedoraproject.org (master)
- then tries to download corresponding filepath on download.fedoraproject.org
- or falls back to master mirror
 
- new –dl option to download directly from dl.fedoraproject.org
- can now find branched development release
- also compares mirror and master filesizes
- builds with lts-14
0.5 (2019-07-06)
- no hardcoding of devel branch, beta, and respins
- fix Spins and Cloud/Container paths
- use rawhide for devel if not branched
- don’t checksum if no file downloaded or new –no-checksum
- more informative error messages
- add simple dryrun test script
0.4 (2019-06-03)
- drop version 30 special case
- support gpg verification of checksum file
0.3 (2019-04-16)
- run sha256sum check
- support fedora Spins
0.2
- fix and improve symlink naming
- use new http-directory library to check exact filesize
0.1
- initial release
