I mostly use these tools below so this post will be updated frequently. My favorite runtime version manager(or tool version manager) is asdf nowadays 🙂
Prerequisites for Linux Ubuntu WSL in Windows
apt(Advanced Package Tool) is a package manager in Ubuntu OS.
WSL stands for Windows Subsystem for Linux.
Install build-essential for GCC compiler(C compiler) and some other utility tools
sudo apt update; sudo apt install build-essential libssl-dev zlib1g-dev \
libbz2-dev libreadline-dev libsqlite3-dev curl \
libncursesw5-dev xz-utils tk-dev libxml2-dev libxmlsec1-dev libffi-dev liblzma-dev
Package Managers
Chocolatey Package Manager
Chocolatey is a package manager in Windows OS.
Set-ExecutionPolicy Bypass -Scope Process -Force; [System.Net.ServicePointManager]::SecurityProtocol = [System.Net.ServicePointManager]::SecurityProtocol -bor 3072; iex ((New-Object System.Net.WebClient).DownloadString('https://community.chocolatey.org/install.ps1'))
Check Chocolatey Version:
choco --version
List packages in Chocolatey:
choco list
WinGet Package Manager(Official Windows Package Manager
WinGet is a package manager in Windows OS. It is already installed in Win 10, 11, etc. Find more details in WinGet
Check WinGet Version:
winget --version
List packages in WinGet:
winget list
Install a package in WinGet:
winget install <package-name>
Uninstall a package in WinGet:
winget uninstall <package-name>
HomeBrew Package Manager
HomeBrew is a package manager in Linux OS or Mac OS.
Run the following in your terminal, and when installation is completed, you need to run two commands specified at end of output. So, copy them and run in the terminal.
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
Check HomeBrew Version:
brew --version
List packages in HomeBrew:
brew ls
Runtime Version Manager
Asdf Runtime Version Manager for Runtime Versions
Asdf is a package manager in Linux OS, Mac OS and Windows OS. It manages all your runtime versions with one tool! Find more details in asdf
You can find available plugins on the asdf plugin repository.
Install via HomeBrew for Mac OS or Ubuntu OS:
brew install asdf
Usage:
# List all available plugins that can be added to asdf
asdf plugin list all
# Add the Java plugin to asdf
asdf plugin add java
# Add the .NET Core plugin to asdf
asdf plugin add dotnet-core
# Add the Python plugin to asdf
asdf plugin add python
# Add the Go (Golang) plugin to asdf
asdf plugin add golang
# List all available versions of Java that can be installed
asdf list all java
# Install a specific version of Java (AdoptOpenJDK 22.0.2+9)
asdf install java adoptopenjdk-22.0.2+9
# List all installed versions of Java
asdf list java
# List all available versions of .NET Core that can be installed
asdf list all dotnet-core
# Install a specific version of .NET Core (version 8.0.401)
asdf install dotnet-core 8.0.401
# List all installed versions of .NET Core
asdf list dotnet-core
# List all available versions of Python that can be installed
asdf list all python
# Install a specific version of Python (version 3.12.6)
asdf install python 3.12.6
# List all installed versions of Python
asdf list python
Pyenv Python Runtime Version Manager
Pyenv is a Python package manager in Linux or MacOS.
Install via HomeBrew for Mac OS or Ubuntu OS:
brew install pyenv
Install via Automatic Installer for Mac OS or Ubuntu OS:
curl https://pyenv.run | bash
Configuring bashrc if Automatic Installer used:
echo 'export PYENV_ROOT="$HOME/.pyenv"' >> ~/.bashrc
echo 'export PATH="$PYENV_ROOT/bin:$PATH"' >> ~/.bashrc
echo 'eval "$(pyenv init -)"' >> ~/.bashrc
Check Pyenv Version:
pyenv --version
List Pyenv Remote Versions:
pyenv install --list
List Pyenv Local Versions:
pyenv versions
Pyenv-win Python Runtime Version Manager
Pyenv-win is a Python package manager in Windows OS, run below command in PowerShell Terminal.
Invoke-WebRequest -UseBasicParsing -Uri "https://raw.githubusercontent.com/pyenv-win/pyenv-win/master/pyenv-win/install-pyenv-win.ps1" -OutFile "./install-pyenv-win.ps1"; &"./install-pyenv-win.ps1"
Jabba Java Runtime Version Manager
Jabba is a Java package manager. Find more details in Jabba
Install via PowerShell Script for Windows OS:
[Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12
Invoke-Expression (
Invoke-WebRequest https://github.com/shyiko/jabba/raw/master/install.ps1 -UseBasicParsing
).Content
$PROFILE | Get-Member -MemberType NoteProperty
TypeName: System.String
Name MemberType Definition
---- ---------- ----------
AllUsersAllHosts NoteProperty string AllUsersAllHosts=C:\Program Files\PowerShell\7\profile.ps1
AllUsersCurrentHost NoteProperty string AllUsersCurrentHost=C:\Program Files\PowerShell\7\Microsoft.PowerShell_profile.ps1
CurrentUserAllHosts NoteProperty string CurrentUserAllHosts=C:\Users\[YOU_USER]\OneDrive - BP\Documents\PowerShell\profile.ps1
CurrentUserCurrentHost NoteProperty string CurrentUserCurrentHost=C:\Users\[YOU_USER]\OneDrive - BP\Documents\PowerShell\Microsoft.PowerShell_profile.ps1
code $PROFILE.CurrentUserCurrentHost
$userProfile = $env:USERPROFILE
$jabbaPath = "$userProfile\.jabba\jabba.ps1"
if (Test-Path $jabbaPath) {
. $jabbaPath
jabba use default
$env:PATH = "$env:JAVA_HOME\bin;" + $env:PATH
}
# Jabba initialization
export JABBA_HOME=$HOME/.jabba
export PATH=$JABBA_HOME/bin:$PATH
# Function to use Jabba
function jabba() {
pwsh -Command "jabba $*"
}
JAVA_HOME_WIN=$(jabba which $(jabba current))
JAVA_HOME=$(echo $JAVA_HOME_WIN | sed 's|\\|/|g' | sed 's|C:|/c|')
export JAVA_HOME
export PATH=$JAVA_HOME/bin:$PATH
source ~/.bashrc
Install via Automatic Installer for Mac OS or Ubuntu OS:
curl -sL https://github.com/shyiko/jabba/raw/master/install.sh | bash && . ~/.jabba/jabba.sh
Windows Subsystem for Linux(WSL)
WSL is a Linux subsystem in Windows OS.
List Remote WSL Linux Distributions:
wsl --list --online
The following is a list of valid distributions that can be installed.
Install using 'wsl.exe --install <Distro>'.
NAME FRIENDLY NAME
Ubuntu Ubuntu
Debian Debian GNU/Linux
kali-linux Kali Linux Rolling
Ubuntu-18.04 Ubuntu 18.04 LTS
Ubuntu-20.04 Ubuntu 20.04 LTS
Ubuntu-22.04 Ubuntu 22.04 LTS
OracleLinux_7_9 Oracle Linux 7.9
OracleLinux_8_7 Oracle Linux 8.7
OracleLinux_9_1 Oracle Linux 9.1
openSUSE-Leap-15.5 openSUSE Leap 15.5
SUSE-Linux-Enterprise-Server-15-SP4 SUSE Linux Enterprise Server 15 SP4
SUSE-Linux-Enterprise-15-SP5 SUSE Linux Enterprise 15 SP5
Install WSL Distribution:
wsl --install Ubuntu-20.04
wsl --install Ubuntu-22.04
Uninstall WSL Distribution:
wsl --unregister Ubuntu-22.04
List Local WSL Linux Distributions:
wsl --list --verbose
NAME STATE VERSION
* Ubuntu-22.04 Running 1
Ubuntu Stopped 1
Ubuntu-20.04 Running 1
Set Default Linux Distribution:
wsl --set-default Ubuntu-22.04
wsl -s Ubuntu-22.04
Set Default WSL version to WSL 1 or WSL 2:
wsl --set-default-version 1
wsl --set-default-version 2
Access to WSL Linux Distribution:
wsl -d Ubuntu-22.04
Shutdown all WSL Linux Distributions:
wsl --shutdown
Command-Line Shells
Powershell 7 Command-Line Shell
Install via HomeBrew for Mac OS or Ubuntu OS:
brew install powershell/tap/powershell
Access PowerShell in Mac OS or Ubuntu OS:
pwsh
Install PowerShell 7 via Chocolatey:
choco install powershell-core
Check Version:
$PSVersionTable.PSVersion
Major Minor Build Revision
----- ----- ----- --------
5 1 19041 3693
Install PowerShell Extension in VSCode:
Go to Extensions in VSCode and search for `PowerShell` and install it, then close VSCode and reopen it.
Open PowerShell Terminal in VSCode and run `$PSVersionTable.PSVersion` to check PowerShell Version.
Clearing Terminal:
cls
Databases
pgAdmin4 Database Management UI
pgAdmin4 is a open-source administration and development platform(UI) for PostgreSQL.
Install via HomeBrew:
brew install pgadmin4
Install via Chocolatey:
choco install pgadmin4
PostgreSQL
Install via apt for Ubuntu OS:
sudo apt install postgresql
Install via HomeBrew for Mac OS or Ubuntu OS:
brew install postgresql
Install via Chocolatey for Windows OS:
choco install postgresql
Check PostgreSQL version:
psql --version
Check pg_dump utility tool version:
pg_dump --version
Export Schema from Existing PostgreSQL Database:
remove `–schema-only` to export with data;
pg_dump -h HOST_NAME -p PORT -U USER_NAME -d DATABASE_NAME --schema-only > SCHEMA_FILE_NAME.sql
pg_dump -h HOST_NAME -p PORT -U USER_NAME -d DATABASE_NAME -n SCHEMA_NAME --schema-only > SCHEMA_FILE_NAME.sql
pg_dump -h HOST_NAME -p PORT -U USER_NAME -d DATABASE_NAME -t TABLE_NAME --schema-only > SCHEMA_FILE_NAME.sql
pg_dump -h HOST_NAME -p PORT -U USER_NAME -d DATABASE_NAME -t SCHEMA_NAME.TABLE_NAME --schema-only > SCHEMA_FILE_NAME.sql
Cloud CLIs
AWS CLI V2
AWS CLI V2 is a tool provided by AWS to manage and interact with AWS Services directly from the command line. AWS CLI V2 Install/Update
Install via AWS Installer for Mac OS:
$ curl "https://awscli.amazonaws.com/AWSCLIV2.pkg" -o "AWSCLIV2.pkg"
$ sudo installer -pkg AWSCLIV2.pkg -target /
kenanhancer@kenans-MacBook-Pro-3 ~ % ls -lat /usr/local
total 0
drwxr-xr-x 7 root wheel 224 25 Oct 09:51 .
drwxr-xr-x 26 kenanhancer wheel 832 25 Oct 09:50 bin
drwxr-xr-x 16 root wheel 512 24 Oct 13:42 aws-cli
drwxr-xr-x@ 11 root wheel 352 1 Oct 05:10 ..
drwxr-xr-x 3 root wheel 96 10 Apr 2024 microsoft
drwxr-xr-x 3 root wheel 96 30 Jun 2023 share
drwxr-xr-x 3 root wheel 96 26 Jan 2022 lib
kenanhancer@kenans-MacBook-Pro-3 ~ % ls -lat /usr/local/aws-cli
total 59664
drwxr-xr-x 7 root wheel 224 25 Oct 09:51 ..
-rw-r--r-- 1 root wheel 85 24 Oct 13:42 .install-metadata
drwxr-xr-x 16 root wheel 512 24 Oct 13:42 .
drwxr-xr-x 7 root wheel 224 23 Oct 19:14 awscli
drwxr-xr-x 3 root wheel 96 23 Oct 19:14 cryptography
drwxr-xr-x 4 root wheel 128 23 Oct 19:14 docutils
drwxr-xr-x 53 root wheel 1696 23 Oct 19:14 lib-dynload
-rwxr-xr-x 1 root wheel 8072992 23 Oct 19:14 Python
-rwxr-xr-x 1 root wheel 2151136 23 Oct 19:14 _awscrt.abi3.so
-rwxr-xr-x 1 root wheel 219456 23 Oct 19:14 _cffi_backend.cpython-312-darwin.so
-rwxr-xr-x 1 root wheel 420960 23 Oct 19:14 _ruamel_yaml.cpython-312-darwin.so
-rwxr-xr-x 1 root wheel 6519616 23 Oct 19:14 aws
-rwxr-xr-x 1 root wheel 6519888 23 Oct 19:14 aws_completer
-rwxr-xr-x 1 root wheel 1707976 23 Oct 19:14 base_library.zip
-rwxr-xr-x 1 root wheel 4249392 23 Oct 19:14 libcrypto.3.dylib
-rwxr-xr-x 1 root wheel 667664 23 Oct 19:14 libssl.3.dylib
kenanhancer@kenans-MacBook-Pro-3 ~ % ls -lat /usr/local/bin
total 72
drwxr-xr-x 7 root wheel 224 25 Oct 09:51 ..
drwxr-xr-x 26 kenanhancer wheel 832 25 Oct 09:50 .
lrwxr-xr-x 1 root wheel 22 25 Oct 09:50 aws -> /usr/local/aws-cli/aws
-rwxr-xr-x 1 kenanhancer wheel 441 22 Oct 20:35 goland
-rwxr-xr-x 1 kenanhancer wheel 455 22 Oct 20:35 idea
-rwxr-xr-x 1 kenanhancer wheel 464 22 Oct 20:35 pycharm
-rwxr-xr-x 1 kenanhancer wheel 445 22 Oct 20:35 phpstorm
-rwxr-xr-x 1 kenanhancer wheel 439 22 Oct 20:35 clion
-rwxr-xr-x 1 kenanhancer wheel 445 22 Oct 20:35 datagrip
-rwxr-xr-x 1 kenanhancer wheel 439 22 Oct 20:35 rider
-rwxr-xr-x 1 kenanhancer wheel 445 22 Oct 20:35 webstorm
-rwxr-xr-x 1 kenanhancer wheel 447 22 Oct 20:35 rustrover
lrwxr-xr-x 1 root wheel 38 27 May 16:02 pwsh -> /usr/local/microsoft/powershell/7/pwsh
lrwxr-xr-x 1 kenanhancer wheel 60 26 Nov 2022 docker-index -> /Applications/Docker.app/Contents/Resources/bin/docker-index
lrwxr-xr-x 1 kenanhancer wheel 68 16 Feb 2022 code -> /Applications/Visual Studio Code.app/Contents/Resources/app/bin/code
lrwxr-xr-x 1 kenanhancer wheel 55 26 Jan 2022 kubectl.docker -> /Applications/Docker.app/Contents/Resources/bin/kubectl
lrwxr-xr-x 1 kenanhancer wheel 55 26 Jan 2022 kubectl -> /Applications/Docker.app/Contents/Resources/bin/kubectl
lrwxr-xr-x 1 kenanhancer wheel 75 26 Jan 2022 docker-credential-ecr-login -> /Applications/Docker.app/Contents/Resources/bin/docker-credential-ecr-login
lrwxr-xr-x 1 kenanhancer wheel 77 26 Jan 2022 docker-credential-osxkeychain -> /Applications/Docker.app/Contents/Resources/bin/docker-credential-osxkeychain
lrwxr-xr-x 1 kenanhancer wheel 73 26 Jan 2022 docker-credential-desktop -> /Applications/Docker.app/Contents/Resources/bin/docker-credential-desktop
lrwxr-xr-x 1 kenanhancer wheel 56 26 Jan 2022 hub-tool -> /Applications/Docker.app/Contents/Resources/bin/hub-tool
lrwxr-xr-x 1 kenanhancer wheel 65 26 Jan 2022 vpnkit -> /Applications/Docker.app/Contents/Resources/bin/com.docker.vpnkit
lrwxr-xr-x 1 kenanhancer wheel 80 26 Jan 2022 docker-compose-v1 -> /Applications/Docker.app/Contents/Resources/bin/docker-compose-v1/docker-compose
lrwxr-xr-x 1 kenanhancer wheel 62 26 Jan 2022 docker-compose -> /Applications/Docker.app/Contents/Resources/bin/docker-compose
lrwxr-xr-x 1 kenanhancer wheel 62 26 Jan 2022 com.docker.cli -> /Applications/Docker.app/Contents/Resources/bin/com.docker.cli
lrwxr-xr-x 1 kenanhancer wheel 54 26 Jan 2022 docker -> /Applications/Docker.app/Contents/Resources/bin/docker
Uninstall:
$ sudo rm /usr/local/bin/aws
$ sudo rm /usr/local/bin/aws_completer
$ sudo rm -rf /usr/local/aws-cli
Brew and Chocolatey Installation (Depreciated)
Don't use the following installation methods like brew and choco. AWS suggest their own installation, AWS CLI V2 Install/Update
Install via HomeBrew for Mac OS or Ubuntu OS:
brew install awscli
Install via Chocolatey for Windows OS:
choco install awscli
Some AWS CLI Commands:
Check AWS CLI version:
$ which aws
/usr/local/bin/aws
$ aws --version
aws-cli/2.17.20 Python/3.11.6 Darwin/23.3.0 botocore/2.4.5
List AWS Profiles in machine:
aws configure list-profiles
List AWS S3 buckets using AWS Profile:
aws --profile test_profile s3 ls
AWS SAM CLI
AWS SAM CLI is a tool that simplifies the development, testing, and deployment of serverless applications on AWS using a streamlined YAML-based syntax.
AWS CLI is a general-purpose tool for managing all AWS services, while AWS SAM CLI is specialized for developing, testing, and deploying serverless applications on AWS.
Install via AWS Installer For Macs running Apple silicon, arm64:
$ curl -L "https://github.com/aws/aws-sam-cli/releases/latest/download/aws-sam-cli-macos-arm64.pkg" -o "AWSSAMCLI.pkg"
$ sudo installer -pkg AWSSAMCLI.pkg -target /
![](https://kenanhancer.com/wp-content/uploads/2023/11/Screenshot-2024-10-25-at-12.23.09-1024x258.png)
kenanhancer@kenans-MacBook-Pro-3 ~ % ls -lat /usr/local/aws-sam-cli
total 31864
-rw-r--r-- 1 root wheel 60 25 Oct 11:01 .install-metadata
drwxr-xr-x 5 root wheel 160 25 Oct 11:01 .
drwxr-xr-x 8 root wheel 256 25 Oct 11:00 ..
drwxr-xr-x 44 root wheel 1408 17 Oct 21:16 _internal
-rwxr-xr-x 1 root wheel 16306944 17 Oct 21:16 sam
![](https://kenanhancer.com/wp-content/uploads/2023/11/Screenshot-2024-10-25-at-12.25.19-1024x339.png)
Uninstall:
$ sudo rm /usr/local/bin/sam
$ sudo rm -rf /usr/local/aws-sam-cli
Brew, Pip and Chocolatey Installation (Depreciated)
Don't use the following installation methods like brew, pip and choco. AWS suggests their own installation way, check AWS SAM CLI Install
Install via HomeBrew for Mac OS or Ubuntu OS:
Starting September 2023, AWS will no longer maintain the AWS managed Homebrew installer for the AWS SAM CLI (aws/tap/aws-sam-cli
). If you use Homebrew to install and manage the AWS SAM CLI, see the following options:
For additional details, refer to Managing AWS SAM CLI versions
brew tap aws/tap
brew install aws-sam-cli
Install via Pip for Mac OS or Ubuntu OS or Windows OS:
pip install --upgrade aws-sam-cli
Install via Chocolatey for Windows OS:
choco install awssamcli
Some AWS SAM CLI Commands:
Check AWS SAM CLI version:
$ which sam
/usr/local/bin/sam
$ sam --version
SAM CLI, <latest version>
AWS CDK CLI
AWS CDK (Cloud Development Kit) is a software development framework that lets developers define and provision cloud infrastructure using familiar programming languages (like Python, TypeScript, or Java), turning high-level code into AWS CloudFormation templates for streamlined deployment and management. Find more details in aws-cdk
Install via NPM for Windows OS, Mac OS or Ubuntu OS:
npm install -g aws-cdk
Some AWS CDK CLI Commands:
Check AWS CDK CLI version:
cdk --version
AWS Amplify CLI
Brew and Npm Installation (Depreciated)
Don't use the following installation methods like brew and npm.
Don't install AWS Amplify CLI Gen 1, it will be expired soon
AWS Amplify CLI Gen 2 is still not ready so check AWS Amplify CLI Gen 2 manual installation
Install via Homebrew for Mac OS or Ubuntu OS:
brew install aws-amplify
Install via Npm for Mac OS, Ubuntu OS or Windows OS:
npm install -g @aws-amplify/cli
Check AWS Amplify CLI version:
amplify --version
Azure CLI
Install via HomeBrew for Mac OS or Ubuntu OS:
brew install azure-cli
Install via Chocolatey for Windows OS:
choco install azure-cli
Check Azure CLI version:
az --version
Azure Functions Core Tools CLI
Install via HomeBrew for Mac OS or Ubuntu OS:
brew tap azure/functions
brew install azure-functions-core-tools@4
Install via HomeBrew for Mac OS or Ubuntu OS:
choco install azure-functions-core-tools
Check Azure Functions Core Tools CLI version:
func --version
Google Cloud CLI
Find more details about installation in Google Cloud CLI Installation
Install via Default Installer for Mac OS:
$ curl https://dl.google.com/dl/cloudsdk/channels/rapid/downloads/google-cloud-cli-darwin-arm.tar.gz -o GCLOUDCLI.tar.gz
$ tar -xvf GCLOUDCLI.tar.gz
$ ./google-cloud-sdk/install.sh
Check Google Cloud CLI version:
gcloud --version
Serverless Framework CLI
The Serverless Framework is a tool that makes it easy to build and deploy serverless applications without managing servers, by automating cloud resource setup. It supports multiple cloud providers like AWS, Google Cloud Platform, Azure.
Install via NPM for Windows OS, Mac OS or Ubuntu OS:
When i installed
serverless@4.4.7
, help options weren't working. For example,sls --help
orserverless --help
show error. So, i useserverless@3.39.0
which works very well with Nodejsv20.18.0
(install withasdf global nodejs 20.18.0
npm i -g serverless@3.39.0
Check Serverless Framework CLI version:
serverless --version
or
sls --version
Comparing the Tools
Tool | Supports AWS Lambda | Supports GCP Cloud Functions | Python Support | Node.js Support | Boilerplate Generation |
---|---|---|---|---|---|
Serverless Framework | Yes | Yes | Yes | Yes | Yes |
AWS SAM | Yes | No | Yes | Yes | Yes |
AWS CDK | Yes | No | Yes | Yes | Yes |
Claudia.js | Yes | No | No | Yes | Yes |
Zappa | Yes | No | Yes | No | Yes |
Google Cloud Functions Framework | No | Yes | Yes | Yes | Yes |
Google Cloud Code | No | Yes | Yes | Yes | Yes |
Cookiecutter Templates | Yes (Python) | Yes (Python) | Yes | No | Yes |
Yeoman Generators | Yes (Node.js) | Yes (Node.js) | No | Yes | Yes |