dl-fedora
Fedora image download tool
https://github.com/juhp/dl-fedora
LTS Haskell 23.19: | 1.2.1 |
Stackage Nightly 2025-04-24: | 2.0.1 |
Latest on Hackage: | 2.0.1 |
dl-fedora-2.0.1@sha256:83fc3568e2519da7f875efb741684ced50516bc4814be138f61bbfb1f4838f85,2458
Module documentation for 2.0.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 42 silverblue
: downloads the Fedora Silverblue iso
dl-fedora respin kde
: downloads the latest KDE Live respin
dl-fedora 41 --list
: list editions for version
dl-fedora 42 kde workstation
: download both KDE and Workstation editions
dl-fedora 41 server --arch aarch64
: will download the Server iso for armv8
dl-fedora --run 42
: will download Fedora Workstation and boot the Live image with 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
11
is an alias for eln - the current rawhide version can be used for
rawhide
next
is an alias for the next Fedora release (either Rawhide or “branched”)current
is an alias for the latest current stable Fedora release (though you may prefer newerrespin
)previous
is an alias for the previous current stable Fedora release
Also a few edition abbreviations:
ws
andgnome
are aliases forworkstation
(default edition)sb
is short forsilverblue
.
Usage
$ dl-fedora --version
2.0.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]
[(-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.
RELEASE = release number, respin, rawhide, test (Beta), stage (RC), eln, c9s, c10s, c9s-live
EDITION = {cloud,container,everything,kde,server,workstation,budgie,cinnamon,
cosmic,i3,kdemobile,lxde,lxqt,mate,miracle,soas,sway,xfce,
silverblue,kinoite,onyx,sericea,iot} [default: workstation]
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
-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 pull requests at https://github.com/juhp/dl-fedora.
Changes
Changelog
2.0.1 (2025-03-11)
- ‘stage’ and ‘test’ releases also need to follow Kiwi editions
2.0 (2025-03-07)
- move short
-d
option from--dl
to--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 option
to override download dir - add
--exclude
editions 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