Search
Duplicate
Try Notion
MacOS
Tools
Bash V5
Bash is the default command line interpreter for many Unix-based operating systems, including macOS. However MacOS, by default, comes with an older version of Bash (version 3.2.57) due to licensing reasons. Bash V5 is the latest major version and offers numerous improvements and features compared to previous versions. In KIRA, some commands used in scripts and tools require Bash V5 to properly execute.
Bash
Copy
# Install Bash V5 brew install bash # Add Bash V5 to the list of acceptable shells echo "/usr/local/bin/bash" | sudo tee -a /etc/shells # Change your default shell to Bash V5 chsh -s /usr/local/bin/bash # Restart your terminal and check version echo $BASH_VERSION
Cosign
Cosign is a digital signature utility that is used to verify the authenticity and integrity of a file. When a file is signed with a digital signature, it provides a way to verify that the file has not been tampered with, and also to verify the identity of the person or entity who signed the file. It is used in Kira to sign and verify the authenticity of data, such as proprietary tools, binaries and scripts.
Bash
Copy
# Install essential dependencies brew install wget # Download Cosign COSIGN_VERSION="v2.0.0" && \ MAC_AGENT="Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/92.0.4515.131 Safari/537.36" && \ if [[ "$(uname -m)" == *"ar"* ]] ; then ARCH="arm64"; else ARCH="amd64" ; fi && \ cd /tmp && PLATFORM=$(uname) && declare -l FILE="cosign-${PLATFORM}-${ARCH}" && rm -rfv ./$FILE ./${FILE}.sig && \ wget --user-agent="$MAC_AGENT" https://github.com/sigstore/cosign/releases/download/${COSIGN_VERSION}/$FILE -O ./$FILE && \ wget --user-agent="$MAC_AGENT" https://github.com/sigstore/cosign/releases/download/${COSIGN_VERSION}/${FILE}.sig -O ./${FILE}.sig # If you do NOT have cosign installed already you should check that the "$FILE" has one of the below hashes # Hashes are only for the 'mac' platform, for other platforms please refer to cosign's github repository COSIGN_HASH_ARM="9d7821e1c05da4b07513729cb00d1070c9a95332c66d90fa593ed77d8c72ca2a" && \ COSIGN_HASH_AMD="d2c8fc0edb42a1e9745da1c43a2928cee044f3b8a1b8df64088a384c7e6f5b5d" && \ FILE_HASH=$(shasum -a 256 ./$FILE | awk '{ print $1 }' | xargs || echo -n "") && \ if [ "$FILE_HASH" != "$COSIGN_HASH_ARM" ] && [ "$FILE_HASH" != "$COSIGN_HASH_AMD" ] ; then echo "ERROR: Failed to download cosign tool, expected checksum to be '$COSIGN_HASH_ARM' or '$COSIGN_HASH_AMD', but got '$FILE_HASH'" exit 1 else echo "Cosign tool downloaded successfully." fi # Save cosign public key cat > ./sigstore-cosign.pub << EOL -----BEGIN PUBLIC KEY----- MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEhyQCx0E9wQWSFI9ULGwy3BuRklnt IqozONbbdbqz11hlRJy9c7SG+hdcFl9jE9uE/dwtuwU2MqU9T/cN0YkWww== -----END PUBLIC KEY----- EOL # Verify cosign release cosign verify-blob --key="./sigstore-cosign.pub" --signature="./${FILE}.sig" "./$FILE" # Move cosign to bin directory chmod +x -v ./$FILE && mv -fv ./$FILE /usr/local/bin/cosign # Check cosign version cosign version
Add KIRA’s public key
Bash
Copy
# Save KIRA public key allowing to verify signed releases KIRA_COSIGN_PUB="$HOME/keys/kira-cosign.pub" && mkdir -p $HOME/keys && \ cat > $KIRA_COSIGN_PUB << EOL -----BEGIN PUBLIC KEY----- MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAE/IrzBQYeMwvKa44/DF/HB7XDpnE+ f+mU9F/Qbfq25bBWV2+NlYMJv3KvKHNtu3Jknt6yizZjUV4b8WGfKBzFYw== -----END PUBLIC KEY----- EOL # Add key to env echo "export KIRA_COSIGN_PUB=\"$KIRA_COSIGN_PUB\"" >> /etc/profile
Bash-utils
📌
The prerequisite to install BU is COSIGN tool that will guarantee the integrity of the files and Bash V5 for better compatibility. They MUST be installed and KIRA’s public key added before proceeding.
⚠️
Unfortunately, certain commands within the bash-utils tool may not behave properly on macOS due to slight variations in command behavior, such as the 'sed' command, which exhibit differences between Mac and Linux platforms.
Bash-utils is a collection of utility functions and aliases for Bash shell scripts. It provides various functions for managing environment variables, displaying information, and handling errors. Bash-utils is used in KIRA to streamline and simplify the process of executing various tasks within the network.
Bash
Copy
sudo -s && . /etc/profile TOOLS_VERSION="v0.3.46" && FILE_NAME="bash-utils.sh" && \ if [ -z "$KIRA_COSIGN_PUB" ] ; then echo "ERROR: KIRA_COSIGN_PUB variable is not set. Please refer to cosign installation to add KIRA's public key path as variable." exit fi && \ wget "https://github.com/KiraCore/tools/releases/download/$TOOLS_VERSION/${FILE_NAME}" -O ./$FILE_NAME && \ wget "https://github.com/KiraCore/tools/releases/download/$TOOLS_VERSION/${FILE_NAME}.sig" -O ./${FILE_NAME}.sig && \ cosign verify-blob --key="$KIRA_COSIGN_PUB" --signature=./${FILE_NAME}.sig ./$FILE_NAME && \ chmod -v 555 ./$FILE_NAME && ./$FILE_NAME bashUtilsSetup "/var/kiraglob" && . /etc/profile && \ echo "Installed bash-utils $(bash-utils bashUtilsVersion)"
Dependencies
Golang
Install Go
📌
$GOBIN is required for building SEKAI
⚠️
setGlobEnv and setGlobPath are amongst the commands that do not behave properly on MacOS. Consider adding/editing the environment variable manually.
Bash
Copy
# Install Go brew install go # Assume root permissions sudo -s # Set environment variables (manually) goVersion=$(go version | awk '{print $3}' | cut -c 3-) && \ GOROOT="/usr/local/Cellar/go/$goVersion/libexec" && \ GOBIN="$GOROOT/bin" && \ GOPATH="$HOME/go" && \ PATH="$GOBIN:$GOPATH/bin:$PATH" # Add variables to /etc/profile echo "export GOROOT=\"$GOROOT\"" >> /etc/profile echo "export GOBIN=\"$GOBIN\"" >> /etc/profile echo "export GOPATH=\"$GOPATH\"" >> /etc/profile echo "export PATH=\"$PATH\"" >> /etc/profile
Others
Bash
Copy
jq
SEKAI installation
Login as admin & load environment variables. Using bash shell and sourcing /etc/profile is necessary.
Bash
Copy
# Assume root permissions sudo -s && . /etc/profile
Set desired SEKAI release version and binaries repo.
Bash
Copy
# Manually SEKAI_VERSION="v0.3.17" && \ SEKAI_REPO="$HOME/sekai" && \ echo "export SEKAI_VERSION=\"$SEKAI_VERSION\"" >> /etc/profile && \ echo "export SEKAI_REPO=\"$SEKAI_REPO\"" >> /etc/profile && \ . /etc/profile # Using BU (might not work properly) setGlobEnv SEKAI_VERSION "v0.3.17" && \ setGlobEnv SEKAI_REPO "$HOME/sekai" && \ loadGlobEnvs
Clone repo and install
Bash
Copy
rm -fr $SEKAI_REPO && rm -fr $GOBIN/sekaid && mkdir $SEKAI_REPO && cd $SEKAI_REPO && \ git clone https://github.com/KiraCore/sekai.git -b $SEKAI_VERSION $SEKAI_REPO && \ chmod -R 777 ./scripts && make install && \ echo "SUCCESS installed sekaid $(sekaid version)" || echo "FAILED"
Alternative installation processes
Using Binaries
⚠️
TODO