gentilmente offerto da chatgpt
Se hai mai lavorato con Arch Linux, potresti aver utilizzato il comando updpkgsums
per aggiornare automaticamente i checksum SHA256 nei file PKGBUILD
. Tuttavia, su macOS non esiste uno strumento nativo con la stessa funzione. In questo articolo, vedremo come risolvere il problema con uno script Bash personalizzato per macOS.
Perché aggiornare i checksum nei PKGBUILD?
Un file PKGBUILD
contiene informazioni sulla costruzione di un pacchetto, inclusi i file sorgente e i relativi checksum SHA256. Questi checksum garantiscono l’integrità e l’autenticità dei file durante la compilazione. Se un file sorgente cambia (ad esempio per un aggiornamento della versione), i vecchi checksum non saranno più validi e il processo di costruzione fallirà.
Su Arch Linux, updpkgsums
è lo strumento standard per aggiornare questi checksum. Ma su macOS, dobbiamo creare una soluzione alternativa.
Script Bash per aggiornare i checksum
Ecco uno script Bash chiamato update_sha256sums.sh
che esegue lo stesso compito di updpkgsums
su macOS:
#!/bin/bash
# Nome del file PKGBUILD
PKGBUILD="PKGBUILD"
# Estrai il valore della variabile pkgname dal PKGBUILD
pkgname=$(awk -F'=' '/^pkgname=/ {print $2}' "$PKGBUILD" | tr -d '"')
# Estrai i nomi dei file sorgente dal PKGBUILD e sostituisci ${pkgname} con il valore effettivo
sources=($(awk '/^source=\(/,/^\)/' "$PKGBUILD" | sed -e 's/source=(//' -e 's/)//' -e 's/[" ]//g' -e "s/\${pkgname}/$pkgname/g"))
# Calcola i checksum e aggiorna il PKGBUILD
sha256sums=()
for source in "${sources[@]}"; do
if [ -f "$source" ]; then
checksum=$(shasum -a 256 "$source" | awk '{print $1}')
sha256sums+=("$checksum")
fi
done
# Crea la stringa formattata dei checksum
sha256sums_str="sha256sums=(\n"
for sum in "${sha256sums[@]}"; do
sha256sums_str+=" '$sum'\n"
done
sha256sums_str+=")"
# Sostituisci COMPLETAMENTE il vecchio blocco sha256sums=() senza accodarlo
awk -v new_sums="$sha256sums_str" '
BEGIN { found=0 }
/^sha256sums=\(/ { found=1; print new_sums; next }
found && /^\)/ { found=0; next }
!found { print }
' "$PKGBUILD" > "$PKGBUILD.tmp" && mv "$PKGBUILD.tmp" "$PKGBUILD"
echo "Checksum aggiornati nel file $PKGBUILD."
Come utilizzare lo script
- Salva il codice sopra in un file chiamato
update_sha256sums.sh
. - Rendi eseguibile lo script con il comando:
chmod +x update_sha256sums.sh
- Posiziona lo script nella stessa directory del file
PKGBUILD
. - Esegui lo script:
./update_sha256sums.sh
- Il file
PKGBUILD
sarà aggiornato con i nuovi checksum SHA256.
Conclusione
Questo semplice script Bash offre una soluzione pratica per gli utenti macOS che necessitano di aggiornare i checksum SHA256 nei file PKGBUILD
, replicando la funzione di updpkgsums
di Arch Linux. Se lavori spesso con i PKGBUILD su macOS, questo script può essere uno strumento essenziale nel tuo workflow di pacchettizzazione!