How to verify
For detailed check list, please refer to the official check list
Download the candidate version
#If there is svn locally, you can clone to the local
svn co https://dist.apache.org/repos/dist/dev/incubator/fury/${release_version}-${rc_version}/
# You can download the material file directly
wget https://dist.apache.org/repos/dist/dev/incubator/fury/${release_version}-${rc_version}/xxx.xxx
Verify checksums and signatures
First you need to install gpg:
apt-get install gnupg
# or
yum install gnupg
# or
brew install gnupg
Then import the Fury release manager's public key:
curl https://downloads.apache.org/incubator/fury/KEYS > KEYS # Download KEYS
gpg --import KEYS # Import KEYS to local
# Then, trust the public key:
gpg --edit-key <KEY-used-in-this-version> # Edit the key(mentioned in vote email)
# It will enter the interactive mode, use the following command to trust the key:
gpg (GnuPG) 2.0.22; Copyright (C) 2013 Free Software Foundation, Inc.
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.
pub 4096R/5E580BA4 created: 2024-03-27 expires: never usage: SC
trust: unknown validity: unknown
sub 4096R/A31EF728 created: 2024-03-27 expires: never usage: E
[ unknown] (1). chaokunyang (CODE SIGNING KEY) <chaokunyang@apache.org>
gpg> trust
pub 4096R/5E580BA4 created: 2024-03-27 expires: never usage: SC
trust: unknown validity: unknown
sub 4096R/A31EF728 created: 2024-03-27 expires: never usage: E
[ unknown] (1). chaokunyang (CODE SIGNING KEY) <chaokunyang@apache.org>
Please decide how far you trust this user to correctly verify other users' keys
(by looking at passports, checking fingerprints from different sources, etc.)
1 = I don't know or won't say
2 = I do NOT trust
3 = I trust marginally
4 = I trust fully
5 = I trust ultimately
m = back to the main menu
Your decision? 5
Do you really want to set this key to ultimate trust? (y/N) y
pub 4096R/5E580BA4 created: 2024-03-27 expires: never usage: SC
trust: ultimate validity: unknown
sub 4096R/A31EF728 created: 2024-03-27 expires: never usage: E
[ unknown] (1). chaokunyang (CODE SIGNING KEY) <chaokunyang@apache.org>
Please note that the shown key validity is not necessarily correct
unless you restart the program.
Next verify signature:
for i in *.tar.gz; do echo $i; gpg --verify $i.asc $i; done
If something like the following appears, it means the signature is correct:
apache-fury-incubating-0.5.0-src.tar.gz
gpg: Signature made Wed 17 Apr 2024 11:49:45 PM CST using RSA key ID 5E580BA4
gpg: checking the trustdb
gpg: 3 marginal(s) needed, 1 complete(s) needed, PGP trust model
gpg: depth: 0 valid: 1 signed: 0 trust: 0-, 0q, 0n, 0m, 0f, 1u
gpg: Good signature from "chaokunyang (CODE SIGNING KEY) <chaokunyang@apache.org>"
Then verify checksum:
for i in *.tar.gz; do echo $i; sha512sum --check $i.sha512; done
It should output something like:
apache-fury-incubating-0.5.0-src.tar.gz
apache-fury-incubating-0.5.0-src.tar.gz: OK
Check the file content of the source package
Unzip apache-fury-${release_version}-${rc_version}-src.tar.gz
and check the follows:
- LICENSE and NOTICE files are correct for the repository.
- All files have ASF license headers if necessary.
- Building is OK.
Check the Maven artifacts of fury-java
Download the artifacts from https://repository.apache.org/content/repositories/orgapachefury-${maven_artifact_number}/.
You can check the follows:
- Checksum of JARs match the bundled checksum file.
- Signature of JARs match the bundled signature file.
- JARs is reproducible locally. This means you can build the JARs on your machine and verify the checksum is the same with the bundled one.