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-devPackage 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 --versionList packages in Chocolatey:
choco listWinGet 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 --versionList packages in WinGet:
winget listInstall 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 --versionList packages in HomeBrew:
brew lsPoetry Python Runtime Version Manager
Find more details in Poetry
curl -sSL https://install.python-poetry.org | python3 -UV Python Runtime Version Manager
Find more details in UV
curl -LsSf https://astral.sh/uv/install.sh | shRuntime 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 asdfUsage:
# 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 pyenvInstall via Automatic Installer for Mac OS or Ubuntu OS:
curl https://pyenv.run | bashConfiguring bashrc if Automatic Installer used:
echo 'export PYENV_ROOT="$HOME/.pyenv"' >> ~/.bashrc
echo 'export PATH="$PYENV_ROOT/bin:$PATH"' >> ~/.bashrc
echo 'eval "$(pyenv init -)"' >> ~/.bashrcCheck Pyenv Version:
pyenv --versionList Pyenv Remote Versions:
pyenv install --listList Pyenv Local Versions:
pyenv versionsPyenv-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.ps1code $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:$PATHsource ~/.bashrcInstall via Automatic Installer for Mac OS or Ubuntu OS:
curl -sL https://github.com/shyiko/jabba/raw/master/install.sh | bash && . ~/.jabba/jabba.shWindows 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 SP5Install WSL Distribution:
wsl --install Ubuntu-20.04wsl --install Ubuntu-22.04Uninstall WSL Distribution:
wsl --unregister Ubuntu-22.04List Local WSL Linux Distributions:
wsl --list --verbose
  NAME            STATE           VERSION
* Ubuntu-22.04    Running         1
  Ubuntu          Stopped         1
  Ubuntu-20.04    Running         1Set Default Linux Distribution:
wsl --set-default Ubuntu-22.04wsl -s Ubuntu-22.04Set Default WSL version to WSL 1 or WSL 2:
wsl --set-default-version 1wsl --set-default-version 2Access to WSL Linux Distribution:
wsl -d Ubuntu-22.04Shutdown all WSL Linux Distributions:
wsl --shutdownCommand-Line Shells
Powershell 7 Command-Line Shell
Install via HomeBrew for Mac OS or Ubuntu OS:
brew install powershell/tap/powershellAccess PowerShell in Mac OS or Ubuntu OS:
pwshInstall PowerShell 7 via Chocolatey:
choco install powershell-coreCheck Version:
$PSVersionTable.PSVersion
Major  Minor  Build  Revision
-----  -----  -----  --------
5      1      19041  3693Install 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:
clsDatabases
pgAdmin4 Database Management UI
pgAdmin4 is a open-source administration and development platform(UI) for PostgreSQL.
Install via HomeBrew:
brew install pgadmin4Install via Chocolatey:
choco install pgadmin4PostgreSQL
Install via apt for Ubuntu OS:
sudo apt install postgresqlInstall via HomeBrew for Mac OS or Ubuntu OS:
brew install postgresqlInstall via Chocolatey for Windows OS:
choco install postgresqlCheck PostgreSQL version:
psql --versionCheck pg_dump utility tool version:
pg_dump --versionExport 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 libkenanhancer@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.dylibkenanhancer@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/dockerUninstall:
$ sudo rm /usr/local/bin/aws
$ sudo rm /usr/local/bin/aws_completer
$ sudo rm -rf /usr/local/aws-cliBrew 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 awscliInstall via Chocolatey for Windows OS:
choco install awscliSome 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.5List AWS Profiles in machine:
aws configure list-profilesList AWS S3 buckets using AWS Profile:
aws --profile test_profile s3 lsAWS 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 /
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
Uninstall:
$ sudo rm /usr/local/bin/sam
$ sudo rm -rf /usr/local/aws-sam-cliBrew, 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-cliInstall via Pip for Mac OS or Ubuntu OS or Windows OS:
pip install --upgrade aws-sam-cliInstall via Chocolatey for Windows OS:
choco install awssamcliSome 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-cdkSome AWS CDK CLI Commands:
Check AWS CDK CLI version:
cdk --versionAWS 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-amplifyInstall via Npm for Mac OS, Ubuntu OS or Windows OS:
npm install -g @aws-amplify/cliCheck AWS Amplify CLI version:
amplify --versionAzure CLI
Install via HomeBrew for Mac OS or Ubuntu OS:
brew install azure-cliInstall via Chocolatey for Windows OS:
choco install azure-cliCheck Azure CLI version:
az --versionAzure Functions Core Tools CLI
Install via HomeBrew for Mac OS or Ubuntu OS:
brew tap azure/functions
brew install azure-functions-core-tools@4Install via HomeBrew for Mac OS or Ubuntu OS:
choco install azure-functions-core-toolsCheck Azure Functions Core Tools CLI version:
func --versionGoogle 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.shCheck Google Cloud CLI version:
gcloud --versionServerless 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 --helporserverless --helpshow error. So, i useserverless@3.39.0which works very well with Nodejsv20.18.0(install withasdf global nodejs 20.18.0
npm i -g serverless@3.39.0Check Serverless Framework CLI version:
serverless --version
or
sls --versionComparing 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 | 
Terraform CLI
Find more details in https://developer.hashicorp.com/terraform/install
Install via HomeBrew for Mac OS or Ubuntu OSÏ
brew tap hashicorp/tap
brew install hashicorp/tap/terraformCheck Terraform CLI version:
terraform --version