My Local Setup Notes

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 /

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-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 or serverless --help show error. So, i use serverless@3.39.0 which works very well with Nodejs v20.18.0(install with asdf 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

ToolSupports AWS LambdaSupports GCP Cloud FunctionsPython SupportNode.js SupportBoilerplate Generation
Serverless FrameworkYesYesYesYesYes
AWS SAMYesNoYesYesYes
AWS CDKYesNoYesYesYes
Claudia.jsYesNoNoYesYes
ZappaYesNoYesNoYes
Google Cloud Functions FrameworkNoYesYesYesYes
Google Cloud CodeNoYesYesYesYes
Cookiecutter TemplatesYes (Python)Yes (Python)YesNoYes
Yeoman GeneratorsYes (Node.js)Yes (Node.js)NoYesYes