[root tip] [Utility Script] Using python to download and verify a Manjaro ISO

,

Download and verify a Manjaro ISO.

The tool is a command line tool and is limited to x86 ISO but it provides a convenient way of downloading and verifying an ISO as they are listed on Manjaro Downloads.

Neither Sway nor ARM is supported, sway because the files is located elsewhere and ARM because there is no signature.

The script has options to fetch the latest stable release review ISO or unstable developer previews from Manjaro Github.

Release source is at codeberg.org/wonky and development repo at scm.nix.dk.

Get started

Besides the basic Python modules - the script relies on the Python requests module and p7zip. You can check if you have p7zip installed using

which 7z

Manjaro

On Manjaro you don’t need to install the requests module - it is present as a dependency of pacman-mirrors.

You may need to install p7zip depending on the result of above check

sudo pacman -Syu p7zip

Other Linux

If you are using another Linux you can use requirements.txt to install the necessary dependency.

You will also need to fetch the public key for Manjaro Build Server

gpg --recv-keys 3B794DE6D4320FCE594F4171279E7CF5D8D56EC8

Use your systems package manager to install p7zip.

Manual Setup

Create the folder ~/.local/bin

mkdir -p ~/.local/bin

Then create a new file in this bin folder - name the file get-iso - then use your favorite text editor to copy paste the code into the new file.

Make the file executable

chmod +x ~/.local/bin/get-iso

PKGBUILD

Clone the repo and build using pamac or makepkg

git clone https://codeberg.org/wonky/manjaro-get-iso && cd manjaro-get-iso
pamac build

Usage

 $ get-iso -h
usage: get-iso [-h] [-f] [-r | -d] {plasma,xfce,gnome,budgie,cinnamon,i3,mate}

This tool will download a named Manjaro ISO

positional arguments:
  {plasma,xfce,gnome,budgie,cinnamon,i3,mate}
                        Edition e.g. plasma or xfce.

options:
  -h, --help            show this help message and exit
  -f, --full            Download full ISO
  -o [OUT_DIR], --out-dir [OUT_DIR]
                        Folder to store dowloaded ISO files.

Previews:
  -r, --review          Get Latest Release Review ISO
  -p, --preview         Get Latest Developer Preview ISO

get-iso v. 0.9 - GPL v3 or later <https://www.gnu.org/licenses/gpl.html>

Examples

The script defaults to pull the minimal ISO and downloaded files is placed your home folder.

Example downloading full mate edition

get-iso mate -f
Downloading: manjaro-mate-22.0-230104-linux61.iso
Downloading: manjaro-mate-22.0-230104-linux61.iso.sig
Wait for verification ...
gpg: assuming signed data in 'manjaro-mate-22.0-230104-linux61.iso'
gpg: Signature made ons 04 jan 2023 12:48:04 CET
gpg:                using RSA key 3B794DE6D4320FCE594F4171279E7CF5D8D56EC8
gpg: Good signature from "Manjaro Build Server <build@manjaro.org>" [unknown]
gpg: WARNING: This key is not certified with a trusted signature!
gpg:          There is no indication that the signature belongs to the owner.
Primary key fingerprint: 3B79 4DE6 D432 0FCE 594F  4171 279E 7CF5 D8D5 6EC8

Another example downloading minimal plasma

get-iso plasma
 $ get-iso plasma
Downloading: manjaro-kde-22.1.3-minimal-230529-linux61.iso
Downloading: manjaro-kde-22.1.3-minimal-230529-linux61.iso.sig
Wait for verification ...
gpg: assuming signed data in 'manjaro-kde-22.1.3-minimal-230529-linux61.iso'
gpg: Signature made man 29 maj 2023 11:46:55 CEST
gpg:                using RSA key 3B794DE6D4320FCE594F4171279E7CF5D8D56EC8
gpg: Good signature from "Manjaro Build Server <build@manjaro.org>" [unknown]
gpg: WARNING: This key is not certified with a trusted signature!
gpg:          There is no indication that the signature belongs to the owner.
Primary key fingerprint: 3B79 4DE6 D432 0FCE 594F  4171 279E 7CF5 D8D5 6EC8

Similar tool

There is a similar tool (without release-review ISO) in the repo manjaro-iso-downloader with a small GUI created using yad.

So if you are the point and click user, you can install it from the repo

sudo pacman -Syu manjaro-iso-downloader

Source code

Revision

  • 2024-01-08T09:26:00Z Create release repo at codeberg.org
  • 2024-01-05T13:37:00Z Added optional -o/–out-dir to store downloaded ISO (default is $HOME)
  • 2023-12-17T08:17:00Z Change to -p/–preview for developer preview ISO
  • 2023-12-07T14:30:00Z Fix plasma download
  • 2023-12-07T10:00:00Z Added -d/–developer for developer preview ISO
  • 2023-12-07T08:00:00Z Added PKGBUILD
  • 2023-12-07T06:32:00Z Added -r/–review for release-review

Crossposted at Use Python to download and verify Manjaro ISO | root.nix.dk

13 Likes

I just tested this. I ran:

$ ./get-iso.py plasma -r

…from within ~/.local/bin after I saved the file there and made it executable. It seems it downloaded the wrong file as these files were downloaded to my home directory afterwards:

manjaro-kde-23.1-minimal-231201-linux66.iso
manjaro-kde-23.1-minimal-231201-linux66.iso.sha256
manjaro-kde-23.1-minimal-231201-linux66.iso.z01
manjaro-kde-23.1-minimal-231201-linux66.iso.zip

…and the last 2 lines of the script’s output was:

[...]
Wait for checksum to complete ...
manjaro-kde-23.1-minimal-231201-linux66.iso: OK

The iso profile is named kde which is why the iso is labelled manjaro-kde-….

So when you request plasma you get kde - the file you get is the KDE Plasma profile.

Because the official iso is labelled plasma on the web but downloads manjaro-kde - I had to resort to switch the edition name in the script when requesting a release-review ISO to be able to get the kde iso from github.

No, that I understand.

I was talking about the *minimal* part of it. It should bee preview, right? Or I’m missing something else, which is also quite the possibility.

I see - the release review is named exactly as a real release and comes in full or minimal versions.

The script default to the minimal - if you want the one with extra apps and office selector - you add -f/–full

See Releases · manjaro/release-review · GitHub

2 Likes

I just came here to say that I misunderstood completely, but I get it now, thanks. And sorry.

1 Like