@fredlackey/devutils 0.0.1 → 0.0.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +5 -5
- package/package.json +1 -1
- package/src/commands/install.js +374 -36
- package/src/installs/adobe-creative-cloud.js +527 -25
- package/src/installs/adobe-creative-cloud.md +605 -0
- package/src/installs/appcleaner.js +303 -26
- package/src/installs/appcleaner.md +699 -0
- package/src/installs/apt-transport-https.js +390 -0
- package/src/installs/apt-transport-https.md +678 -0
- package/src/installs/atomicparsley.js +624 -26
- package/src/installs/atomicparsley.md +795 -0
- package/src/installs/aws-cli.js +779 -26
- package/src/installs/aws-cli.md +727 -0
- package/src/installs/balena-etcher.js +688 -26
- package/src/installs/balena-etcher.md +761 -0
- package/src/installs/bambu-studio.js +912 -26
- package/src/installs/bambu-studio.md +780 -0
- package/src/installs/bash-completion.js +554 -23
- package/src/installs/bash-completion.md +833 -0
- package/src/installs/bash.js +399 -26
- package/src/installs/bash.md +993 -0
- package/src/installs/beyond-compare.js +585 -26
- package/src/installs/beyond-compare.md +813 -0
- package/src/installs/build-essential.js +511 -26
- package/src/installs/build-essential.md +977 -0
- package/src/installs/ca-certificates.js +618 -0
- package/src/installs/ca-certificates.md +937 -0
- package/src/installs/caffeine.js +490 -26
- package/src/installs/caffeine.md +839 -0
- package/src/installs/camtasia.js +577 -25
- package/src/installs/camtasia.md +762 -0
- package/src/installs/chatgpt.js +458 -26
- package/src/installs/chatgpt.md +814 -0
- package/src/installs/chocolatey.js +447 -0
- package/src/installs/chocolatey.md +661 -0
- package/src/installs/chrome-canary.js +472 -26
- package/src/installs/chrome-canary.md +641 -0
- package/src/installs/chromium.js +645 -26
- package/src/installs/chromium.md +838 -0
- package/src/installs/claude-code.js +558 -26
- package/src/installs/claude-code.md +1173 -0
- package/src/installs/curl.js +361 -26
- package/src/installs/curl.md +714 -0
- package/src/installs/cursor.js +561 -26
- package/src/installs/cursor.md +970 -0
- package/src/installs/dbschema.js +674 -26
- package/src/installs/dbschema.md +925 -0
- package/src/installs/dependencies.md +435 -0
- package/src/installs/development-tools.js +600 -0
- package/src/installs/development-tools.md +977 -0
- package/src/installs/docker.js +1010 -25
- package/src/installs/docker.md +1109 -0
- package/src/installs/drawio.js +1001 -26
- package/src/installs/drawio.md +795 -0
- package/src/installs/elmedia-player.js +328 -25
- package/src/installs/elmedia-player.md +556 -0
- package/src/installs/ffmpeg.js +870 -25
- package/src/installs/ffmpeg.md +852 -0
- package/src/installs/file.js +464 -0
- package/src/installs/file.md +987 -0
- package/src/installs/gemini-cli.js +793 -26
- package/src/installs/gemini-cli.md +1153 -0
- package/src/installs/git.js +382 -26
- package/src/installs/git.md +907 -0
- package/src/installs/gitego.js +931 -26
- package/src/installs/gitego.md +1172 -0
- package/src/installs/go.js +913 -26
- package/src/installs/go.md +958 -0
- package/src/installs/google-chrome.js +801 -25
- package/src/installs/google-chrome.md +862 -0
- package/src/installs/gpg.js +412 -73
- package/src/installs/gpg.md +1056 -0
- package/src/installs/homebrew.js +1015 -26
- package/src/installs/homebrew.md +988 -0
- package/src/installs/imageoptim.js +950 -26
- package/src/installs/imageoptim.md +1119 -0
- package/src/installs/installers.json +2297 -0
- package/src/installs/jq.js +382 -26
- package/src/installs/jq.md +809 -0
- package/src/installs/keyboard-maestro.js +701 -26
- package/src/installs/keyboard-maestro.md +825 -0
- package/src/installs/latex.js +771 -26
- package/src/installs/latex.md +1095 -0
- package/src/installs/lftp.js +338 -26
- package/src/installs/lftp.md +907 -0
- package/src/installs/lsb-release.js +346 -0
- package/src/installs/lsb-release.md +814 -0
- package/src/installs/messenger.js +829 -26
- package/src/installs/messenger.md +900 -0
- package/src/installs/microsoft-office.js +550 -26
- package/src/installs/microsoft-office.md +760 -0
- package/src/installs/microsoft-teams.js +782 -25
- package/src/installs/microsoft-teams.md +886 -0
- package/src/installs/node.js +886 -26
- package/src/installs/node.md +1153 -0
- package/src/installs/nordpass.js +698 -26
- package/src/installs/nordpass.md +921 -0
- package/src/installs/nvm.js +977 -26
- package/src/installs/nvm.md +1057 -0
- package/src/installs/openssh.js +734 -64
- package/src/installs/openssh.md +1056 -0
- package/src/installs/pandoc.js +644 -26
- package/src/installs/pandoc.md +1036 -0
- package/src/installs/pinentry.js +492 -26
- package/src/installs/pinentry.md +1142 -0
- package/src/installs/pngyu.js +851 -26
- package/src/installs/pngyu.md +896 -0
- package/src/installs/postman.js +781 -26
- package/src/installs/postman.md +940 -0
- package/src/installs/procps.js +425 -0
- package/src/installs/procps.md +851 -0
- package/src/installs/safari-tech-preview.js +355 -25
- package/src/installs/safari-tech-preview.md +533 -0
- package/src/installs/sfnt2woff.js +640 -26
- package/src/installs/sfnt2woff.md +795 -0
- package/src/installs/shellcheck.js +463 -26
- package/src/installs/shellcheck.md +1005 -0
- package/src/installs/slack.js +722 -25
- package/src/installs/slack.md +865 -0
- package/src/installs/snagit.js +566 -25
- package/src/installs/snagit.md +844 -0
- package/src/installs/software-properties-common.js +372 -0
- package/src/installs/software-properties-common.md +805 -0
- package/src/installs/spotify.js +858 -25
- package/src/installs/spotify.md +901 -0
- package/src/installs/studio-3t.js +803 -26
- package/src/installs/studio-3t.md +918 -0
- package/src/installs/sublime-text.js +780 -25
- package/src/installs/sublime-text.md +914 -0
- package/src/installs/superwhisper.js +687 -25
- package/src/installs/superwhisper.md +630 -0
- package/src/installs/tailscale.js +727 -26
- package/src/installs/tailscale.md +1100 -0
- package/src/installs/tar.js +389 -0
- package/src/installs/tar.md +946 -0
- package/src/installs/termius.js +780 -26
- package/src/installs/termius.md +844 -0
- package/src/installs/terraform.js +761 -26
- package/src/installs/terraform.md +899 -0
- package/src/installs/tidal.js +752 -25
- package/src/installs/tidal.md +864 -0
- package/src/installs/tmux.js +328 -26
- package/src/installs/tmux.md +1030 -0
- package/src/installs/tree.js +393 -26
- package/src/installs/tree.md +833 -0
- package/src/installs/unzip.js +460 -0
- package/src/installs/unzip.md +879 -0
- package/src/installs/vim.js +403 -26
- package/src/installs/vim.md +1040 -0
- package/src/installs/vlc.js +803 -26
- package/src/installs/vlc.md +927 -0
- package/src/installs/vscode.js +825 -26
- package/src/installs/vscode.md +1002 -0
- package/src/installs/wget.js +415 -0
- package/src/installs/wget.md +791 -0
- package/src/installs/whatsapp.js +710 -25
- package/src/installs/whatsapp.md +854 -0
- package/src/installs/winpty.js +352 -0
- package/src/installs/winpty.md +620 -0
- package/src/installs/woff2.js +535 -26
- package/src/installs/woff2.md +977 -0
- package/src/installs/wsl.js +572 -0
- package/src/installs/wsl.md +699 -0
- package/src/installs/xcode-clt.js +520 -0
- package/src/installs/xcode-clt.md +351 -0
- package/src/installs/xcode.js +542 -26
- package/src/installs/xcode.md +573 -0
- package/src/installs/yarn.js +806 -26
- package/src/installs/yarn.md +1074 -0
- package/src/installs/yq.js +636 -26
- package/src/installs/yq.md +944 -0
- package/src/installs/yt-dlp.js +683 -26
- package/src/installs/yt-dlp.md +946 -0
- package/src/installs/yum-utils.js +297 -0
- package/src/installs/yum-utils.md +648 -0
- package/src/installs/zoom.js +740 -25
- package/src/installs/zoom.md +884 -0
- package/src/scripts/README.md +567 -45
- package/src/scripts/STATUS.md +208 -0
- package/src/scripts/afk.js +395 -7
- package/src/scripts/backup-all.js +731 -9
- package/src/scripts/backup-source.js +711 -8
- package/src/scripts/brewd.js +373 -7
- package/src/scripts/brewi.js +505 -9
- package/src/scripts/brewr.js +512 -9
- package/src/scripts/brews.js +462 -9
- package/src/scripts/brewu.js +488 -7
- package/src/scripts/c.js +185 -7
- package/src/scripts/ccurl.js +325 -8
- package/src/scripts/certbot-crontab-init.js +488 -8
- package/src/scripts/certbot-init.js +641 -9
- package/src/scripts/ch.js +339 -7
- package/src/scripts/claude-danger.js +253 -8
- package/src/scripts/clean-dev.js +419 -8
- package/src/scripts/clear-dns-cache.js +525 -7
- package/src/scripts/clone.js +417 -7
- package/src/scripts/code-all.js +420 -7
- package/src/scripts/count-files.js +195 -8
- package/src/scripts/count-folders.js +195 -8
- package/src/scripts/count.js +248 -8
- package/src/scripts/d.js +203 -7
- package/src/scripts/datauri.js +373 -8
- package/src/scripts/delete-files.js +363 -7
- package/src/scripts/docker-clean.js +410 -8
- package/src/scripts/dp.js +426 -7
- package/src/scripts/e.js +375 -9
- package/src/scripts/empty-trash.js +497 -7
- package/src/scripts/evm.js +428 -9
- package/src/scripts/fetch-github-repos.js +441 -10
- package/src/scripts/get-channel.js +329 -8
- package/src/scripts/get-course.js +384 -11
- package/src/scripts/get-dependencies.js +290 -9
- package/src/scripts/get-folder.js +783 -10
- package/src/scripts/get-tunes.js +411 -10
- package/src/scripts/get-video.js +352 -9
- package/src/scripts/git-backup.js +561 -9
- package/src/scripts/git-clone.js +477 -9
- package/src/scripts/git-pup.js +303 -7
- package/src/scripts/git-push.js +380 -8
- package/src/scripts/h.js +607 -9
- package/src/scripts/hide-desktop-icons.js +483 -7
- package/src/scripts/hide-hidden-files.js +522 -7
- package/src/scripts/install-dependencies-from.js +440 -9
- package/src/scripts/ips.js +647 -10
- package/src/scripts/iso.js +354 -8
- package/src/scripts/killni.js +561 -7
- package/src/scripts/ll.js +451 -8
- package/src/scripts/local-ip.js +310 -8
- package/src/scripts/m.js +508 -8
- package/src/scripts/map.js +293 -8
- package/src/scripts/mkd.js +287 -7
- package/src/scripts/ncu-update-all.js +441 -8
- package/src/scripts/nginx-init.js +702 -12
- package/src/scripts/npmi.js +366 -7
- package/src/scripts/o.js +495 -8
- package/src/scripts/org-by-date.js +321 -7
- package/src/scripts/p.js +208 -7
- package/src/scripts/packages.js +313 -8
- package/src/scripts/path.js +209 -7
- package/src/scripts/ports.js +582 -8
- package/src/scripts/q.js +290 -8
- package/src/scripts/refresh-files.js +378 -10
- package/src/scripts/remove-smaller-files.js +500 -8
- package/src/scripts/rename-files-with-date.js +517 -9
- package/src/scripts/resize-image.js +523 -9
- package/src/scripts/rm-safe.js +653 -8
- package/src/scripts/s.js +525 -9
- package/src/scripts/set-git-public.js +349 -7
- package/src/scripts/show-desktop-icons.js +459 -7
- package/src/scripts/show-hidden-files.js +456 -7
- package/src/scripts/tpa.js +265 -8
- package/src/scripts/tpo.js +264 -7
- package/src/scripts/u.js +489 -7
- package/src/scripts/vpush.js +422 -8
- package/src/scripts/y.js +267 -7
- package/src/utils/common/os.js +94 -2
- package/src/utils/ubuntu/apt.js +13 -7
- package/src/utils/windows/choco.js +82 -26
- package/src/utils/windows/winget.js +89 -27
|
@@ -0,0 +1,1153 @@
|
|
|
1
|
+
# Installing Gemini CLI
|
|
2
|
+
|
|
3
|
+
## Overview
|
|
4
|
+
|
|
5
|
+
Gemini CLI is an open-source AI agent developed by Google that brings the power of Gemini directly into your terminal. It provides a lightweight, direct path from your prompts to Google's Gemini AI models, enabling interactive conversations, code assistance, file operations, shell command execution, and web search directly from the command line. The CLI runs a ReAct (reason and act) agent loop that can decide when to use built-in tools versus when to respond directly.
|
|
6
|
+
|
|
7
|
+
Gemini CLI is distinct from Google's web-based Gemini interface. It is a command-line tool designed for developers who prefer terminal-based workflows, offering system integration capabilities that allow it to read/edit files, run commands, and interact with your local development environment.
|
|
8
|
+
|
|
9
|
+
## Dependencies
|
|
10
|
+
|
|
11
|
+
### macOS (Homebrew)
|
|
12
|
+
- **Required:**
|
|
13
|
+
- Homebrew - Install via `/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"`
|
|
14
|
+
- **Optional:** None
|
|
15
|
+
- **Auto-installed:**
|
|
16
|
+
- Node.js 20+ (Homebrew formula dependency, automatically installed during `brew install gemini-cli`)
|
|
17
|
+
|
|
18
|
+
### Ubuntu (APT/Snap)
|
|
19
|
+
- **Required:**
|
|
20
|
+
- `curl` - Install via `sudo apt-get install -y curl` (typically pre-installed)
|
|
21
|
+
- sudo privileges (required for NodeSource repository setup and apt package installation)
|
|
22
|
+
- **Optional:** None
|
|
23
|
+
- **Auto-installed:**
|
|
24
|
+
- Node.js 22 LTS (installed via NodeSource repository during the installation process)
|
|
25
|
+
- npm (included with Node.js)
|
|
26
|
+
|
|
27
|
+
### Raspberry Pi OS (APT/Snap)
|
|
28
|
+
- **Required:**
|
|
29
|
+
- 64-bit Raspberry Pi OS (aarch64 architecture) - Verify with `uname -m` (must output `aarch64`, not `armv7l`)
|
|
30
|
+
- `curl` - Install via `sudo apt-get install -y curl` (typically pre-installed)
|
|
31
|
+
- sudo privileges (required for NodeSource repository setup and apt package installation)
|
|
32
|
+
- Raspberry Pi 4 or later with 4GB+ RAM recommended for acceptable performance
|
|
33
|
+
- **Optional:** None
|
|
34
|
+
- **Auto-installed:**
|
|
35
|
+
- Node.js 22 LTS (installed via NodeSource repository during the installation process)
|
|
36
|
+
- npm (included with Node.js)
|
|
37
|
+
|
|
38
|
+
### Amazon Linux (DNF/YUM)
|
|
39
|
+
- **Required:**
|
|
40
|
+
- `curl` - Install via `sudo dnf install -y curl` (AL2023/RHEL8+) or `sudo yum install -y curl` (AL2)
|
|
41
|
+
- sudo privileges (required for NodeSource repository setup and package installation)
|
|
42
|
+
- **Optional:** None
|
|
43
|
+
- **Auto-installed:**
|
|
44
|
+
- Node.js 22 LTS (installed via NodeSource repository during the installation process)
|
|
45
|
+
- npm (included with Node.js)
|
|
46
|
+
|
|
47
|
+
### Windows (Chocolatey/winget)
|
|
48
|
+
- **Required:**
|
|
49
|
+
- winget (pre-installed on Windows 10 version 1809+ and Windows 11) OR Chocolatey - Install Chocolatey via PowerShell: `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'))`
|
|
50
|
+
- Administrator privileges (required for package installation)
|
|
51
|
+
- **Optional:** None
|
|
52
|
+
- **Auto-installed:**
|
|
53
|
+
- Node.js LTS (installed via `winget install OpenJS.NodeJS.LTS` or `choco install nodejs-lts`)
|
|
54
|
+
- npm (included with Node.js)
|
|
55
|
+
|
|
56
|
+
### Git Bash (Manual/Portable)
|
|
57
|
+
- **Required:**
|
|
58
|
+
- Git for Windows (provides Git Bash environment) - Download from https://git-scm.com/downloads/win
|
|
59
|
+
- Node.js 20+ installed on Windows - Install via `winget install OpenJS.NodeJS.LTS` from PowerShell
|
|
60
|
+
- PowerShell (for running winget commands)
|
|
61
|
+
- Windows PATH configured to include npm global directory (`$APPDATA/npm`)
|
|
62
|
+
- **Optional:** None
|
|
63
|
+
- **Auto-installed:** None (Git Bash delegates to Windows npm installation; Node.js must be pre-installed)
|
|
64
|
+
|
|
65
|
+
## Prerequisites
|
|
66
|
+
|
|
67
|
+
Before installing Gemini CLI on any platform, ensure the following:
|
|
68
|
+
|
|
69
|
+
1. **Google Account** - Required for authentication. A personal Google account provides free tier access (no special subscription needed).
|
|
70
|
+
|
|
71
|
+
2. **Node.js Version 20 or Higher** - Gemini CLI is distributed as an npm package and requires a modern Node.js runtime. Version 20+ is required.
|
|
72
|
+
|
|
73
|
+
3. **Internet Connection** - Required for authentication and all AI processing (Gemini CLI communicates with Google's servers).
|
|
74
|
+
|
|
75
|
+
4. **Terminal Access** - Gemini CLI runs in a terminal environment (Bash, Zsh, Fish, PowerShell, or CMD).
|
|
76
|
+
|
|
77
|
+
**Free Tier Benefits**:
|
|
78
|
+
- 60 requests per minute
|
|
79
|
+
- 1,000 requests per day
|
|
80
|
+
- Access to Gemini 2.5 Pro with 1 million token context window
|
|
81
|
+
- No credit card or paid subscription required
|
|
82
|
+
|
|
83
|
+
## Platform-Specific Installation
|
|
84
|
+
|
|
85
|
+
### macOS (Homebrew)
|
|
86
|
+
|
|
87
|
+
#### Prerequisites
|
|
88
|
+
|
|
89
|
+
- macOS 10.15 (Catalina) or later
|
|
90
|
+
- Homebrew package manager installed
|
|
91
|
+
- Terminal access (Terminal.app, iTerm2, etc.)
|
|
92
|
+
|
|
93
|
+
Homebrew supports both Apple Silicon (M1/M2/M3/M4) and Intel Macs. If Homebrew is not installed, install it first:
|
|
94
|
+
|
|
95
|
+
```bash
|
|
96
|
+
NONINTERACTIVE=1 /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
|
|
97
|
+
```
|
|
98
|
+
|
|
99
|
+
#### Installation Steps
|
|
100
|
+
|
|
101
|
+
Run the following command to install Gemini CLI via Homebrew:
|
|
102
|
+
|
|
103
|
+
```bash
|
|
104
|
+
brew install --quiet gemini-cli
|
|
105
|
+
```
|
|
106
|
+
|
|
107
|
+
The `--quiet` flag suppresses non-essential output for automation compatibility. Homebrew automatically installs the Node.js dependency.
|
|
108
|
+
|
|
109
|
+
After installation, reload your shell or open a new terminal window:
|
|
110
|
+
|
|
111
|
+
```bash
|
|
112
|
+
source ~/.zshrc
|
|
113
|
+
```
|
|
114
|
+
|
|
115
|
+
For Bash users:
|
|
116
|
+
|
|
117
|
+
```bash
|
|
118
|
+
source ~/.bashrc
|
|
119
|
+
```
|
|
120
|
+
|
|
121
|
+
#### Verification
|
|
122
|
+
|
|
123
|
+
Confirm the installation succeeded by checking the version:
|
|
124
|
+
|
|
125
|
+
```bash
|
|
126
|
+
gemini --version
|
|
127
|
+
```
|
|
128
|
+
|
|
129
|
+
Expected output (version number will vary):
|
|
130
|
+
|
|
131
|
+
```
|
|
132
|
+
0.22.5
|
|
133
|
+
```
|
|
134
|
+
|
|
135
|
+
Run Gemini CLI to verify it launches:
|
|
136
|
+
|
|
137
|
+
```bash
|
|
138
|
+
gemini
|
|
139
|
+
```
|
|
140
|
+
|
|
141
|
+
On first launch, you will be prompted to authenticate with your Google account.
|
|
142
|
+
|
|
143
|
+
#### Troubleshooting
|
|
144
|
+
|
|
145
|
+
**Problem**: `brew: command not found`
|
|
146
|
+
|
|
147
|
+
**Solution**: Homebrew is not installed or not in PATH. Install Homebrew or add it to your PATH:
|
|
148
|
+
|
|
149
|
+
```bash
|
|
150
|
+
eval "$(/opt/homebrew/bin/brew shellenv)"
|
|
151
|
+
```
|
|
152
|
+
|
|
153
|
+
For Intel Macs, use:
|
|
154
|
+
|
|
155
|
+
```bash
|
|
156
|
+
eval "$(/usr/local/bin/brew shellenv)"
|
|
157
|
+
```
|
|
158
|
+
|
|
159
|
+
**Problem**: `gemini: command not found` after installation
|
|
160
|
+
|
|
161
|
+
**Solution**: The binary is installed but not in PATH. Open a new terminal window or add the Homebrew bin directory to your PATH:
|
|
162
|
+
|
|
163
|
+
```bash
|
|
164
|
+
export PATH="/opt/homebrew/bin:$PATH"
|
|
165
|
+
```
|
|
166
|
+
|
|
167
|
+
**Problem**: Version mismatch warning when using both Homebrew and npm installations
|
|
168
|
+
|
|
169
|
+
**Solution**: Choose one installation method. If you have both, uninstall the npm version:
|
|
170
|
+
|
|
171
|
+
```bash
|
|
172
|
+
npm uninstall -g @google/gemini-cli
|
|
173
|
+
```
|
|
174
|
+
|
|
175
|
+
**Problem**: Authentication fails with browser not opening
|
|
176
|
+
|
|
177
|
+
**Solution**: Ensure your default browser is configured. If running in a headless environment, use API key authentication instead (see Post-Installation Configuration).
|
|
178
|
+
|
|
179
|
+
---
|
|
180
|
+
|
|
181
|
+
### Ubuntu/Debian (APT)
|
|
182
|
+
|
|
183
|
+
#### Prerequisites
|
|
184
|
+
|
|
185
|
+
- Ubuntu 20.04 or later, or Debian 10 or later (64-bit)
|
|
186
|
+
- sudo privileges
|
|
187
|
+
- curl installed (pre-installed on most systems)
|
|
188
|
+
- Active internet connection
|
|
189
|
+
|
|
190
|
+
Verify curl is installed:
|
|
191
|
+
|
|
192
|
+
```bash
|
|
193
|
+
which curl || sudo DEBIAN_FRONTEND=noninteractive apt-get install -y curl
|
|
194
|
+
```
|
|
195
|
+
|
|
196
|
+
#### Installation Steps
|
|
197
|
+
|
|
198
|
+
**Step 1**: Install Node.js 22 (LTS) from the NodeSource repository:
|
|
199
|
+
|
|
200
|
+
```bash
|
|
201
|
+
curl -fsSL https://deb.nodesource.com/setup_22.x | sudo -E bash -
|
|
202
|
+
sudo DEBIAN_FRONTEND=noninteractive apt-get install -y nodejs
|
|
203
|
+
```
|
|
204
|
+
|
|
205
|
+
**Step 2**: Configure npm to use a user directory (prevents permission issues):
|
|
206
|
+
|
|
207
|
+
```bash
|
|
208
|
+
mkdir -p ~/.npm-global
|
|
209
|
+
npm config set prefix ~/.npm-global
|
|
210
|
+
echo 'export PATH=$HOME/.npm-global/bin:$PATH' >> ~/.bashrc
|
|
211
|
+
source ~/.bashrc
|
|
212
|
+
```
|
|
213
|
+
|
|
214
|
+
**Step 3**: Install Gemini CLI via npm:
|
|
215
|
+
|
|
216
|
+
```bash
|
|
217
|
+
npm install -g @google/gemini-cli
|
|
218
|
+
```
|
|
219
|
+
|
|
220
|
+
**Important**: Do NOT use `sudo npm install -g` as this causes permission issues. The npm global directory configuration above prevents the need for sudo.
|
|
221
|
+
|
|
222
|
+
#### Verification
|
|
223
|
+
|
|
224
|
+
Confirm the installation succeeded:
|
|
225
|
+
|
|
226
|
+
```bash
|
|
227
|
+
gemini --version
|
|
228
|
+
```
|
|
229
|
+
|
|
230
|
+
Expected output (version number will vary):
|
|
231
|
+
|
|
232
|
+
```
|
|
233
|
+
0.22.5
|
|
234
|
+
```
|
|
235
|
+
|
|
236
|
+
Run Gemini CLI to verify it launches:
|
|
237
|
+
|
|
238
|
+
```bash
|
|
239
|
+
gemini
|
|
240
|
+
```
|
|
241
|
+
|
|
242
|
+
#### Troubleshooting
|
|
243
|
+
|
|
244
|
+
**Problem**: `curl: command not found`
|
|
245
|
+
|
|
246
|
+
**Solution**: Install curl:
|
|
247
|
+
|
|
248
|
+
```bash
|
|
249
|
+
sudo DEBIAN_FRONTEND=noninteractive apt-get update -y && sudo DEBIAN_FRONTEND=noninteractive apt-get install -y curl
|
|
250
|
+
```
|
|
251
|
+
|
|
252
|
+
**Problem**: `gemini: command not found` after installation
|
|
253
|
+
|
|
254
|
+
**Solution**: The binary was installed but your shell has not reloaded. Run:
|
|
255
|
+
|
|
256
|
+
```bash
|
|
257
|
+
source ~/.bashrc
|
|
258
|
+
```
|
|
259
|
+
|
|
260
|
+
Or open a new terminal window. If the problem persists, verify the npm global bin path is in your PATH:
|
|
261
|
+
|
|
262
|
+
```bash
|
|
263
|
+
echo $PATH | grep -q ".npm-global/bin" || echo 'export PATH=$HOME/.npm-global/bin:$PATH' >> ~/.bashrc && source ~/.bashrc
|
|
264
|
+
```
|
|
265
|
+
|
|
266
|
+
**Problem**: Node.js version is too old
|
|
267
|
+
|
|
268
|
+
**Solution**: Check your Node.js version:
|
|
269
|
+
|
|
270
|
+
```bash
|
|
271
|
+
node --version
|
|
272
|
+
```
|
|
273
|
+
|
|
274
|
+
If below v20, update Node.js using the NodeSource repository:
|
|
275
|
+
|
|
276
|
+
```bash
|
|
277
|
+
curl -fsSL https://deb.nodesource.com/setup_22.x | sudo -E bash -
|
|
278
|
+
sudo DEBIAN_FRONTEND=noninteractive apt-get install -y nodejs
|
|
279
|
+
```
|
|
280
|
+
|
|
281
|
+
**Problem**: Permission errors with npm install
|
|
282
|
+
|
|
283
|
+
**Solution**: Never use `sudo npm install -g`. Instead, configure npm to use a user directory as shown in the installation steps above.
|
|
284
|
+
|
|
285
|
+
**Problem**: `EACCES` permission denied errors
|
|
286
|
+
|
|
287
|
+
**Solution**: Reset npm global directory configuration:
|
|
288
|
+
|
|
289
|
+
```bash
|
|
290
|
+
mkdir -p ~/.npm-global
|
|
291
|
+
npm config set prefix ~/.npm-global
|
|
292
|
+
source ~/.bashrc
|
|
293
|
+
npm install -g @google/gemini-cli
|
|
294
|
+
```
|
|
295
|
+
|
|
296
|
+
---
|
|
297
|
+
|
|
298
|
+
### Raspberry Pi OS (APT)
|
|
299
|
+
|
|
300
|
+
#### Prerequisites
|
|
301
|
+
|
|
302
|
+
- Raspberry Pi OS (64-bit) - ARM64/aarch64 architecture **required**
|
|
303
|
+
- Raspberry Pi 4 or later with 4 GB or more RAM recommended
|
|
304
|
+
- sudo privileges
|
|
305
|
+
- curl installed
|
|
306
|
+
- Node.js 20 or later
|
|
307
|
+
|
|
308
|
+
**Critical Architecture Requirement**: Gemini CLI and modern Node.js versions require a 64-bit operating system. Verify your architecture:
|
|
309
|
+
|
|
310
|
+
```bash
|
|
311
|
+
uname -m
|
|
312
|
+
```
|
|
313
|
+
|
|
314
|
+
This must output `aarch64`. If it outputs `armv7l`, you are running 32-bit Raspberry Pi OS and must install the 64-bit version from the [Raspberry Pi Imager](https://www.raspberrypi.com/software/).
|
|
315
|
+
|
|
316
|
+
#### Installation Steps
|
|
317
|
+
|
|
318
|
+
**Step 1**: Install Node.js 22 (LTS) from the NodeSource repository:
|
|
319
|
+
|
|
320
|
+
```bash
|
|
321
|
+
curl -fsSL https://deb.nodesource.com/setup_22.x | sudo -E bash -
|
|
322
|
+
sudo DEBIAN_FRONTEND=noninteractive apt-get install -y nodejs
|
|
323
|
+
```
|
|
324
|
+
|
|
325
|
+
**Step 2**: Configure npm to use a user directory (prevents permission issues):
|
|
326
|
+
|
|
327
|
+
```bash
|
|
328
|
+
mkdir -p ~/.npm-global
|
|
329
|
+
npm config set prefix ~/.npm-global
|
|
330
|
+
echo 'export PATH=$HOME/.npm-global/bin:$PATH' >> ~/.bashrc
|
|
331
|
+
source ~/.bashrc
|
|
332
|
+
```
|
|
333
|
+
|
|
334
|
+
**Step 3**: Install Gemini CLI via npm:
|
|
335
|
+
|
|
336
|
+
```bash
|
|
337
|
+
npm install -g @google/gemini-cli
|
|
338
|
+
```
|
|
339
|
+
|
|
340
|
+
#### Verification
|
|
341
|
+
|
|
342
|
+
Confirm the installation succeeded:
|
|
343
|
+
|
|
344
|
+
```bash
|
|
345
|
+
gemini --version
|
|
346
|
+
```
|
|
347
|
+
|
|
348
|
+
Expected output (version number will vary):
|
|
349
|
+
|
|
350
|
+
```
|
|
351
|
+
0.22.5
|
|
352
|
+
```
|
|
353
|
+
|
|
354
|
+
Run Gemini CLI to verify it launches:
|
|
355
|
+
|
|
356
|
+
```bash
|
|
357
|
+
gemini
|
|
358
|
+
```
|
|
359
|
+
|
|
360
|
+
#### Troubleshooting
|
|
361
|
+
|
|
362
|
+
**Problem**: `uname -m` shows `armv7l` instead of `aarch64`
|
|
363
|
+
|
|
364
|
+
**Solution**: You are running 32-bit Raspberry Pi OS. Gemini CLI requires 64-bit. Download and install the 64-bit Raspberry Pi OS image from https://www.raspberrypi.com/software/.
|
|
365
|
+
|
|
366
|
+
**Problem**: Node.js installation fails or version below 20
|
|
367
|
+
|
|
368
|
+
**Solution**: Remove the old Node.js and install version 22:
|
|
369
|
+
|
|
370
|
+
```bash
|
|
371
|
+
sudo DEBIAN_FRONTEND=noninteractive apt-get remove -y nodejs
|
|
372
|
+
curl -fsSL https://deb.nodesource.com/setup_22.x | sudo -E bash -
|
|
373
|
+
sudo DEBIAN_FRONTEND=noninteractive apt-get install -y nodejs
|
|
374
|
+
```
|
|
375
|
+
|
|
376
|
+
**Problem**: `gemini: command not found` after installation
|
|
377
|
+
|
|
378
|
+
**Solution**: Reload your shell configuration:
|
|
379
|
+
|
|
380
|
+
```bash
|
|
381
|
+
source ~/.bashrc
|
|
382
|
+
```
|
|
383
|
+
|
|
384
|
+
**Problem**: Slow performance or high memory usage
|
|
385
|
+
|
|
386
|
+
**Solution**: Raspberry Pi has limited resources. Close other applications, ensure you have at least 4 GB RAM, and consider using swap:
|
|
387
|
+
|
|
388
|
+
```bash
|
|
389
|
+
sudo dphys-swapfile swapoff
|
|
390
|
+
sudo sed -i 's/CONF_SWAPSIZE=.*/CONF_SWAPSIZE=2048/' /etc/dphys-swapfile
|
|
391
|
+
sudo dphys-swapfile setup
|
|
392
|
+
sudo dphys-swapfile swapon
|
|
393
|
+
```
|
|
394
|
+
|
|
395
|
+
**Problem**: npm install hangs or times out
|
|
396
|
+
|
|
397
|
+
**Solution**: Raspberry Pi may have slower network or limited memory. Increase the npm timeout:
|
|
398
|
+
|
|
399
|
+
```bash
|
|
400
|
+
npm config set fetch-timeout 120000
|
|
401
|
+
npm install -g @google/gemini-cli
|
|
402
|
+
```
|
|
403
|
+
|
|
404
|
+
---
|
|
405
|
+
|
|
406
|
+
### Amazon Linux/RHEL (DNF/YUM)
|
|
407
|
+
|
|
408
|
+
#### Prerequisites
|
|
409
|
+
|
|
410
|
+
- Amazon Linux 2023 (AL2023), Amazon Linux 2 (AL2), RHEL 8+, CentOS Stream 8+, or Fedora
|
|
411
|
+
- sudo privileges
|
|
412
|
+
- curl installed
|
|
413
|
+
- Active internet connection
|
|
414
|
+
|
|
415
|
+
Amazon Linux is typically used as a server operating system. Gemini CLI works well in headless server environments for AI-assisted development tasks.
|
|
416
|
+
|
|
417
|
+
#### Installation Steps
|
|
418
|
+
|
|
419
|
+
**For Amazon Linux 2023 / RHEL 8+ / Fedora**:
|
|
420
|
+
|
|
421
|
+
**Step 1**: Install Node.js via DNF:
|
|
422
|
+
|
|
423
|
+
```bash
|
|
424
|
+
sudo dnf install -y nodejs npm
|
|
425
|
+
```
|
|
426
|
+
|
|
427
|
+
Verify Node.js version is 20 or higher:
|
|
428
|
+
|
|
429
|
+
```bash
|
|
430
|
+
node --version
|
|
431
|
+
```
|
|
432
|
+
|
|
433
|
+
If the version is below 20, install from NodeSource:
|
|
434
|
+
|
|
435
|
+
```bash
|
|
436
|
+
curl -fsSL https://rpm.nodesource.com/setup_22.x | sudo bash -
|
|
437
|
+
sudo dnf install -y nodejs
|
|
438
|
+
```
|
|
439
|
+
|
|
440
|
+
**Step 2**: Configure npm to use a user directory:
|
|
441
|
+
|
|
442
|
+
```bash
|
|
443
|
+
mkdir -p ~/.npm-global
|
|
444
|
+
npm config set prefix ~/.npm-global
|
|
445
|
+
echo 'export PATH=$HOME/.npm-global/bin:$PATH' >> ~/.bashrc
|
|
446
|
+
source ~/.bashrc
|
|
447
|
+
```
|
|
448
|
+
|
|
449
|
+
**Step 3**: Install Gemini CLI:
|
|
450
|
+
|
|
451
|
+
```bash
|
|
452
|
+
npm install -g @google/gemini-cli
|
|
453
|
+
```
|
|
454
|
+
|
|
455
|
+
**For Amazon Linux 2 (older)**:
|
|
456
|
+
|
|
457
|
+
**Step 1**: Install Node.js from NodeSource (AL2 has older Node.js by default):
|
|
458
|
+
|
|
459
|
+
```bash
|
|
460
|
+
curl -fsSL https://rpm.nodesource.com/setup_22.x | sudo bash -
|
|
461
|
+
sudo yum install -y nodejs
|
|
462
|
+
```
|
|
463
|
+
|
|
464
|
+
**Step 2**: Configure npm to use a user directory:
|
|
465
|
+
|
|
466
|
+
```bash
|
|
467
|
+
mkdir -p ~/.npm-global
|
|
468
|
+
npm config set prefix ~/.npm-global
|
|
469
|
+
echo 'export PATH=$HOME/.npm-global/bin:$PATH' >> ~/.bashrc
|
|
470
|
+
source ~/.bashrc
|
|
471
|
+
```
|
|
472
|
+
|
|
473
|
+
**Step 3**: Install Gemini CLI:
|
|
474
|
+
|
|
475
|
+
```bash
|
|
476
|
+
npm install -g @google/gemini-cli
|
|
477
|
+
```
|
|
478
|
+
|
|
479
|
+
#### Verification
|
|
480
|
+
|
|
481
|
+
Confirm the installation succeeded:
|
|
482
|
+
|
|
483
|
+
```bash
|
|
484
|
+
gemini --version
|
|
485
|
+
```
|
|
486
|
+
|
|
487
|
+
Expected output (version number will vary):
|
|
488
|
+
|
|
489
|
+
```
|
|
490
|
+
0.22.5
|
|
491
|
+
```
|
|
492
|
+
|
|
493
|
+
Run Gemini CLI to verify it launches:
|
|
494
|
+
|
|
495
|
+
```bash
|
|
496
|
+
gemini
|
|
497
|
+
```
|
|
498
|
+
|
|
499
|
+
#### Troubleshooting
|
|
500
|
+
|
|
501
|
+
**Problem**: `curl: command not found`
|
|
502
|
+
|
|
503
|
+
**Solution**: Install curl:
|
|
504
|
+
|
|
505
|
+
For Amazon Linux 2023 / RHEL 8+:
|
|
506
|
+
|
|
507
|
+
```bash
|
|
508
|
+
sudo dnf install -y curl
|
|
509
|
+
```
|
|
510
|
+
|
|
511
|
+
For Amazon Linux 2:
|
|
512
|
+
|
|
513
|
+
```bash
|
|
514
|
+
sudo yum install -y curl
|
|
515
|
+
```
|
|
516
|
+
|
|
517
|
+
**Problem**: `gemini: command not found` after installation
|
|
518
|
+
|
|
519
|
+
**Solution**: Reload your shell configuration:
|
|
520
|
+
|
|
521
|
+
```bash
|
|
522
|
+
source ~/.bashrc
|
|
523
|
+
```
|
|
524
|
+
|
|
525
|
+
Or manually add to PATH:
|
|
526
|
+
|
|
527
|
+
```bash
|
|
528
|
+
echo 'export PATH=$HOME/.npm-global/bin:$PATH' >> ~/.bashrc
|
|
529
|
+
source ~/.bashrc
|
|
530
|
+
```
|
|
531
|
+
|
|
532
|
+
**Problem**: Node.js version too old
|
|
533
|
+
|
|
534
|
+
**Solution**: Use the NodeSource repository:
|
|
535
|
+
|
|
536
|
+
```bash
|
|
537
|
+
curl -fsSL https://rpm.nodesource.com/setup_22.x | sudo bash -
|
|
538
|
+
sudo dnf install -y nodejs
|
|
539
|
+
```
|
|
540
|
+
|
|
541
|
+
**Problem**: SELinux blocking execution
|
|
542
|
+
|
|
543
|
+
**Solution**: If SELinux is enforcing and blocking Gemini CLI, check the audit log:
|
|
544
|
+
|
|
545
|
+
```bash
|
|
546
|
+
sudo ausearch -m avc -ts recent
|
|
547
|
+
```
|
|
548
|
+
|
|
549
|
+
For testing, temporarily set permissive mode:
|
|
550
|
+
|
|
551
|
+
```bash
|
|
552
|
+
sudo setenforce 0
|
|
553
|
+
```
|
|
554
|
+
|
|
555
|
+
Note: This is temporary. For production, create a proper SELinux policy.
|
|
556
|
+
|
|
557
|
+
**Problem**: Authentication fails in headless/SSH environment
|
|
558
|
+
|
|
559
|
+
**Solution**: Use API key authentication instead of browser-based OAuth. See Post-Installation Configuration for API key setup.
|
|
560
|
+
|
|
561
|
+
---
|
|
562
|
+
|
|
563
|
+
### Windows (Chocolatey/winget)
|
|
564
|
+
|
|
565
|
+
#### Prerequisites
|
|
566
|
+
|
|
567
|
+
- Windows 10 version 1809 or later, or Windows 11
|
|
568
|
+
- Administrator privileges for installation
|
|
569
|
+
- PowerShell 5.1 or later (pre-installed on Windows 10/11)
|
|
570
|
+
- Active internet connection
|
|
571
|
+
|
|
572
|
+
#### Installation Steps
|
|
573
|
+
|
|
574
|
+
Open PowerShell as Administrator and run the following commands.
|
|
575
|
+
|
|
576
|
+
**Step 1**: Install Node.js via winget:
|
|
577
|
+
|
|
578
|
+
```powershell
|
|
579
|
+
winget install --id OpenJS.NodeJS.LTS --silent --accept-package-agreements --accept-source-agreements
|
|
580
|
+
```
|
|
581
|
+
|
|
582
|
+
Close and reopen PowerShell as Administrator after Node.js installation to update PATH.
|
|
583
|
+
|
|
584
|
+
**Step 2**: Install Gemini CLI via npm:
|
|
585
|
+
|
|
586
|
+
```powershell
|
|
587
|
+
npm install -g @google/gemini-cli
|
|
588
|
+
```
|
|
589
|
+
|
|
590
|
+
**Alternative - Using Chocolatey**:
|
|
591
|
+
|
|
592
|
+
If Chocolatey is not installed, install it first (run in Administrator PowerShell):
|
|
593
|
+
|
|
594
|
+
```powershell
|
|
595
|
+
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'))
|
|
596
|
+
```
|
|
597
|
+
|
|
598
|
+
Then install Node.js and Gemini CLI:
|
|
599
|
+
|
|
600
|
+
```powershell
|
|
601
|
+
choco install nodejs-lts -y
|
|
602
|
+
refreshenv
|
|
603
|
+
npm install -g @google/gemini-cli
|
|
604
|
+
```
|
|
605
|
+
|
|
606
|
+
After installation, close and reopen your terminal for PATH updates to take effect.
|
|
607
|
+
|
|
608
|
+
#### Verification
|
|
609
|
+
|
|
610
|
+
Open a new PowerShell or Command Prompt window (required for PATH to update), then run:
|
|
611
|
+
|
|
612
|
+
```powershell
|
|
613
|
+
gemini --version
|
|
614
|
+
```
|
|
615
|
+
|
|
616
|
+
Expected output (version number will vary):
|
|
617
|
+
|
|
618
|
+
```
|
|
619
|
+
0.22.5
|
|
620
|
+
```
|
|
621
|
+
|
|
622
|
+
Run Gemini CLI to verify it launches:
|
|
623
|
+
|
|
624
|
+
```powershell
|
|
625
|
+
gemini
|
|
626
|
+
```
|
|
627
|
+
|
|
628
|
+
#### Troubleshooting
|
|
629
|
+
|
|
630
|
+
**Problem**: `winget: The term 'winget' is not recognized`
|
|
631
|
+
|
|
632
|
+
**Solution**: Winget may not be installed. Install App Installer from the Microsoft Store:
|
|
633
|
+
|
|
634
|
+
```powershell
|
|
635
|
+
start ms-windows-store://pdp/?productid=9NBLGGH4NNS1
|
|
636
|
+
```
|
|
637
|
+
|
|
638
|
+
After installation, open a new terminal window.
|
|
639
|
+
|
|
640
|
+
**Problem**: `choco: The term 'choco' is not recognized`
|
|
641
|
+
|
|
642
|
+
**Solution**: Chocolatey is not installed. Install it using the command in the installation steps above.
|
|
643
|
+
|
|
644
|
+
**Problem**: `gemini: The term 'gemini' is not recognized` after installation
|
|
645
|
+
|
|
646
|
+
**Solution**: The PATH has not been updated. Close and reopen your terminal. If the problem persists, manually add npm global to your PATH:
|
|
647
|
+
|
|
648
|
+
```powershell
|
|
649
|
+
$env:PATH += ";$env:APPDATA\npm"
|
|
650
|
+
```
|
|
651
|
+
|
|
652
|
+
To make this permanent, add the path to your system environment variables.
|
|
653
|
+
|
|
654
|
+
**Problem**: Installation fails with "Administrator privileges required"
|
|
655
|
+
|
|
656
|
+
**Solution**: Right-click PowerShell or Command Prompt and select "Run as administrator", then retry the installation command.
|
|
657
|
+
|
|
658
|
+
**Problem**: Node.js version is too old
|
|
659
|
+
|
|
660
|
+
**Solution**: Update Node.js:
|
|
661
|
+
|
|
662
|
+
```powershell
|
|
663
|
+
winget upgrade --id OpenJS.NodeJS.LTS --silent --accept-package-agreements --accept-source-agreements
|
|
664
|
+
```
|
|
665
|
+
|
|
666
|
+
**Problem**: Authentication callback fails
|
|
667
|
+
|
|
668
|
+
**Solution**: If VPN is active, disable split-tunneling or use global mode. Alternatively, use API key authentication.
|
|
669
|
+
|
|
670
|
+
---
|
|
671
|
+
|
|
672
|
+
### WSL (Ubuntu)
|
|
673
|
+
|
|
674
|
+
#### Prerequisites
|
|
675
|
+
|
|
676
|
+
- Windows 10 version 2004 or later, or Windows 11
|
|
677
|
+
- Windows Subsystem for Linux installed with Ubuntu distribution
|
|
678
|
+
- WSL 2 recommended for best performance
|
|
679
|
+
- sudo privileges within WSL
|
|
680
|
+
|
|
681
|
+
**Important**: Gemini CLI runs natively within WSL. Install only within the WSL environment for the best experience.
|
|
682
|
+
|
|
683
|
+
Verify WSL is installed and running Ubuntu:
|
|
684
|
+
|
|
685
|
+
```bash
|
|
686
|
+
wsl --list --verbose
|
|
687
|
+
```
|
|
688
|
+
|
|
689
|
+
#### Installation Steps
|
|
690
|
+
|
|
691
|
+
Open your WSL Ubuntu terminal and follow these steps.
|
|
692
|
+
|
|
693
|
+
**Step 1**: Update package lists:
|
|
694
|
+
|
|
695
|
+
```bash
|
|
696
|
+
sudo DEBIAN_FRONTEND=noninteractive apt-get update -y
|
|
697
|
+
```
|
|
698
|
+
|
|
699
|
+
**Step 2**: Install Node.js 22 (LTS) from the NodeSource repository:
|
|
700
|
+
|
|
701
|
+
```bash
|
|
702
|
+
curl -fsSL https://deb.nodesource.com/setup_22.x | sudo -E bash -
|
|
703
|
+
sudo DEBIAN_FRONTEND=noninteractive apt-get install -y nodejs
|
|
704
|
+
```
|
|
705
|
+
|
|
706
|
+
**Step 3**: Configure npm to use a user directory:
|
|
707
|
+
|
|
708
|
+
```bash
|
|
709
|
+
mkdir -p ~/.npm-global
|
|
710
|
+
npm config set prefix ~/.npm-global
|
|
711
|
+
echo 'export PATH=$HOME/.npm-global/bin:$PATH' >> ~/.bashrc
|
|
712
|
+
source ~/.bashrc
|
|
713
|
+
```
|
|
714
|
+
|
|
715
|
+
**Step 4**: Install Gemini CLI:
|
|
716
|
+
|
|
717
|
+
```bash
|
|
718
|
+
npm install -g @google/gemini-cli
|
|
719
|
+
```
|
|
720
|
+
|
|
721
|
+
#### Verification
|
|
722
|
+
|
|
723
|
+
Confirm the installation succeeded:
|
|
724
|
+
|
|
725
|
+
```bash
|
|
726
|
+
gemini --version
|
|
727
|
+
```
|
|
728
|
+
|
|
729
|
+
Expected output (version number will vary):
|
|
730
|
+
|
|
731
|
+
```
|
|
732
|
+
0.22.5
|
|
733
|
+
```
|
|
734
|
+
|
|
735
|
+
Run Gemini CLI to verify it launches:
|
|
736
|
+
|
|
737
|
+
```bash
|
|
738
|
+
gemini
|
|
739
|
+
```
|
|
740
|
+
|
|
741
|
+
#### Troubleshooting
|
|
742
|
+
|
|
743
|
+
**Problem**: WSL is not installed
|
|
744
|
+
|
|
745
|
+
**Solution**: Install WSL from PowerShell (as Administrator on Windows):
|
|
746
|
+
|
|
747
|
+
```powershell
|
|
748
|
+
wsl --install -d Ubuntu
|
|
749
|
+
```
|
|
750
|
+
|
|
751
|
+
Restart your computer after installation.
|
|
752
|
+
|
|
753
|
+
**Problem**: `gemini: command not found` after installation
|
|
754
|
+
|
|
755
|
+
**Solution**: Reload your shell configuration:
|
|
756
|
+
|
|
757
|
+
```bash
|
|
758
|
+
source ~/.bashrc
|
|
759
|
+
```
|
|
760
|
+
|
|
761
|
+
Or add the binary to PATH manually:
|
|
762
|
+
|
|
763
|
+
```bash
|
|
764
|
+
echo 'export PATH=$HOME/.npm-global/bin:$PATH' >> ~/.bashrc
|
|
765
|
+
source ~/.bashrc
|
|
766
|
+
```
|
|
767
|
+
|
|
768
|
+
**Problem**: Authentication issues between WSL and Windows browser
|
|
769
|
+
|
|
770
|
+
**Solution**: When Gemini CLI opens a browser for OAuth, it opens in Windows. Ensure your default Windows browser is configured. If authentication callbacks fail, copy the authentication URL manually into your Windows browser.
|
|
771
|
+
|
|
772
|
+
**Problem**: Slow file access when working with Windows files
|
|
773
|
+
|
|
774
|
+
**Solution**: WSL has slower performance when accessing files on the Windows filesystem (`/mnt/c/`). For best performance, keep your projects within the WSL filesystem (`~/projects/` or similar).
|
|
775
|
+
|
|
776
|
+
**Problem**: Network connectivity issues within WSL
|
|
777
|
+
|
|
778
|
+
**Solution**: If Gemini CLI cannot reach Google servers, check your WSL network configuration:
|
|
779
|
+
|
|
780
|
+
```bash
|
|
781
|
+
cat /etc/resolv.conf
|
|
782
|
+
```
|
|
783
|
+
|
|
784
|
+
For persistent DNS issues, add to `/etc/wsl.conf`:
|
|
785
|
+
|
|
786
|
+
```bash
|
|
787
|
+
sudo tee -a /etc/wsl.conf > /dev/null << 'EOF'
|
|
788
|
+
[network]
|
|
789
|
+
generateResolvConf = false
|
|
790
|
+
EOF
|
|
791
|
+
```
|
|
792
|
+
|
|
793
|
+
Then restart WSL from PowerShell:
|
|
794
|
+
|
|
795
|
+
```powershell
|
|
796
|
+
wsl --shutdown
|
|
797
|
+
```
|
|
798
|
+
|
|
799
|
+
---
|
|
800
|
+
|
|
801
|
+
### Git Bash (Manual/Portable)
|
|
802
|
+
|
|
803
|
+
#### Prerequisites
|
|
804
|
+
|
|
805
|
+
- Windows 10 or later
|
|
806
|
+
- Git for Windows installed (provides Git Bash)
|
|
807
|
+
- Node.js installed on Windows
|
|
808
|
+
- PowerShell available (for package management)
|
|
809
|
+
|
|
810
|
+
Git Bash provides a Unix-compatible environment on Windows. Gemini CLI works within Git Bash once Node.js and npm are configured on the Windows system.
|
|
811
|
+
|
|
812
|
+
Download Git for Windows from https://git-scm.com/downloads/win if not already installed.
|
|
813
|
+
|
|
814
|
+
#### Installation Steps
|
|
815
|
+
|
|
816
|
+
**Step 1**: Install Node.js on Windows (from PowerShell as Administrator):
|
|
817
|
+
|
|
818
|
+
```bash
|
|
819
|
+
winget.exe install --id OpenJS.NodeJS.LTS --silent --accept-package-agreements --accept-source-agreements
|
|
820
|
+
```
|
|
821
|
+
|
|
822
|
+
Close and reopen Git Bash after Node.js installation.
|
|
823
|
+
|
|
824
|
+
**Step 2**: Install Gemini CLI via npm (in Git Bash):
|
|
825
|
+
|
|
826
|
+
```bash
|
|
827
|
+
npm install -g @google/gemini-cli
|
|
828
|
+
```
|
|
829
|
+
|
|
830
|
+
**Step 3**: Configure PATH for Git Bash (if needed):
|
|
831
|
+
|
|
832
|
+
Add the npm global bin directory to your Git Bash PATH:
|
|
833
|
+
|
|
834
|
+
```bash
|
|
835
|
+
echo 'export PATH="$PATH:$APPDATA/npm"' >> ~/.bashrc
|
|
836
|
+
source ~/.bashrc
|
|
837
|
+
```
|
|
838
|
+
|
|
839
|
+
#### Verification
|
|
840
|
+
|
|
841
|
+
Open a new Git Bash window and run:
|
|
842
|
+
|
|
843
|
+
```bash
|
|
844
|
+
gemini --version
|
|
845
|
+
```
|
|
846
|
+
|
|
847
|
+
Expected output (version number will vary):
|
|
848
|
+
|
|
849
|
+
```
|
|
850
|
+
0.22.5
|
|
851
|
+
```
|
|
852
|
+
|
|
853
|
+
Run Gemini CLI to verify it launches:
|
|
854
|
+
|
|
855
|
+
```bash
|
|
856
|
+
gemini
|
|
857
|
+
```
|
|
858
|
+
|
|
859
|
+
#### Troubleshooting
|
|
860
|
+
|
|
861
|
+
**Problem**: `winget.exe: command not found`
|
|
862
|
+
|
|
863
|
+
**Solution**: Winget may not be in the Git Bash PATH. Use the full path:
|
|
864
|
+
|
|
865
|
+
```bash
|
|
866
|
+
/c/Users/$USER/AppData/Local/Microsoft/WindowsApps/winget.exe install --id OpenJS.NodeJS.LTS --silent --accept-package-agreements --accept-source-agreements
|
|
867
|
+
```
|
|
868
|
+
|
|
869
|
+
**Problem**: `gemini: command not found` after installation
|
|
870
|
+
|
|
871
|
+
**Solution**: The PATH in Git Bash may not include the npm global bin directory. Add it manually:
|
|
872
|
+
|
|
873
|
+
```bash
|
|
874
|
+
echo 'export PATH="$PATH:$APPDATA/npm"' >> ~/.bashrc
|
|
875
|
+
source ~/.bashrc
|
|
876
|
+
```
|
|
877
|
+
|
|
878
|
+
**Problem**: Node.js or npm not found
|
|
879
|
+
|
|
880
|
+
**Solution**: Ensure Node.js is installed on Windows and Git Bash can access Windows executables. Verify by running:
|
|
881
|
+
|
|
882
|
+
```bash
|
|
883
|
+
node.exe --version
|
|
884
|
+
npm.exe --version
|
|
885
|
+
```
|
|
886
|
+
|
|
887
|
+
If these work but `node` and `npm` do not, create aliases:
|
|
888
|
+
|
|
889
|
+
```bash
|
|
890
|
+
echo 'alias node="node.exe"' >> ~/.bashrc
|
|
891
|
+
echo 'alias npm="npm.exe"' >> ~/.bashrc
|
|
892
|
+
source ~/.bashrc
|
|
893
|
+
```
|
|
894
|
+
|
|
895
|
+
**Problem**: Authentication browser does not open
|
|
896
|
+
|
|
897
|
+
**Solution**: Git Bash may have trouble opening the Windows browser. Run the authentication command and manually copy the URL to your browser, or use API key authentication.
|
|
898
|
+
|
|
899
|
+
**Problem**: Path translation issues between Git Bash and Windows
|
|
900
|
+
|
|
901
|
+
**Solution**: Git Bash automatically translates paths, but some edge cases may require explicit Windows paths. Use `cygpath` to convert:
|
|
902
|
+
|
|
903
|
+
```bash
|
|
904
|
+
cygpath -w ~/.npm-global
|
|
905
|
+
```
|
|
906
|
+
|
|
907
|
+
---
|
|
908
|
+
|
|
909
|
+
## Post-Installation Configuration
|
|
910
|
+
|
|
911
|
+
### First-Time Setup
|
|
912
|
+
|
|
913
|
+
After installing Gemini CLI on any platform:
|
|
914
|
+
|
|
915
|
+
1. **Launch Gemini CLI** - Open a terminal and run:
|
|
916
|
+
|
|
917
|
+
```bash
|
|
918
|
+
gemini
|
|
919
|
+
```
|
|
920
|
+
|
|
921
|
+
2. **Configure Terminal Appearance** - On first launch, you will be asked to set up the terminal appearance preferences.
|
|
922
|
+
|
|
923
|
+
3. **Authenticate** - Choose your authentication method when prompted:
|
|
924
|
+
- Select "Login with Google" for free tier access
|
|
925
|
+
- A browser window opens automatically
|
|
926
|
+
- Sign in with your Google account
|
|
927
|
+
- Authorize Gemini CLI to access your account
|
|
928
|
+
- Return to the terminal after authorization completes
|
|
929
|
+
|
|
930
|
+
4. **Verify Authentication** - After authentication, Gemini CLI is ready to use. Your credentials are cached locally for future sessions.
|
|
931
|
+
|
|
932
|
+
### Authentication Methods
|
|
933
|
+
|
|
934
|
+
Gemini CLI supports multiple authentication methods:
|
|
935
|
+
|
|
936
|
+
**Google Account Login (Recommended)**:
|
|
937
|
+
- Default method for most users
|
|
938
|
+
- Works with any Google account (personal or workspace)
|
|
939
|
+
- Provides free tier access (60 req/min, 1,000 req/day)
|
|
940
|
+
- Credentials cached locally for future sessions
|
|
941
|
+
|
|
942
|
+
**API Key**:
|
|
943
|
+
- For programmatic, headless, or CI/CD use
|
|
944
|
+
- Obtain an API key from [Google AI Studio](https://aistudio.google.com/)
|
|
945
|
+
- Set the `GEMINI_API_KEY` environment variable:
|
|
946
|
+
|
|
947
|
+
```bash
|
|
948
|
+
export GEMINI_API_KEY="YOUR_API_KEY_HERE"
|
|
949
|
+
```
|
|
950
|
+
|
|
951
|
+
For Windows PowerShell:
|
|
952
|
+
|
|
953
|
+
```powershell
|
|
954
|
+
$env:GEMINI_API_KEY="YOUR_API_KEY_HERE"
|
|
955
|
+
```
|
|
956
|
+
|
|
957
|
+
To make permanent on Windows:
|
|
958
|
+
|
|
959
|
+
```powershell
|
|
960
|
+
setx GEMINI_API_KEY "YOUR_API_KEY_HERE"
|
|
961
|
+
```
|
|
962
|
+
|
|
963
|
+
**Vertex AI (Enterprise)**:
|
|
964
|
+
- Requires Google Cloud project with Vertex AI API enabled
|
|
965
|
+
- Set environment variables:
|
|
966
|
+
|
|
967
|
+
```bash
|
|
968
|
+
export GOOGLE_CLOUD_PROJECT="your-project-id"
|
|
969
|
+
export GOOGLE_CLOUD_LOCATION="us-central1"
|
|
970
|
+
```
|
|
971
|
+
|
|
972
|
+
- Authenticate via gcloud:
|
|
973
|
+
|
|
974
|
+
```bash
|
|
975
|
+
gcloud auth application-default login
|
|
976
|
+
```
|
|
977
|
+
|
|
978
|
+
### Environment Variables Reference
|
|
979
|
+
|
|
980
|
+
| Variable | Purpose |
|
|
981
|
+
|----------|---------|
|
|
982
|
+
| `GEMINI_API_KEY` | API key from Google AI Studio |
|
|
983
|
+
| `GOOGLE_API_KEY` | Alternative API key variable |
|
|
984
|
+
| `GOOGLE_CLOUD_PROJECT` | Google Cloud project ID for Vertex AI |
|
|
985
|
+
| `GOOGLE_CLOUD_LOCATION` | Google Cloud region for Vertex AI |
|
|
986
|
+
| `GOOGLE_APPLICATION_CREDENTIALS` | Path to service account JSON key |
|
|
987
|
+
|
|
988
|
+
### Configuration Files
|
|
989
|
+
|
|
990
|
+
Gemini CLI stores configuration in these locations:
|
|
991
|
+
|
|
992
|
+
| Platform | Configuration Location |
|
|
993
|
+
|----------|----------------------|
|
|
994
|
+
| macOS/Linux/WSL | `~/.gemini/` |
|
|
995
|
+
| Windows | `%USERPROFILE%\.gemini\` |
|
|
996
|
+
|
|
997
|
+
You can also create a `.gemini/.env` file in your project directory for project-specific settings.
|
|
998
|
+
|
|
999
|
+
### Persisting Environment Variables
|
|
1000
|
+
|
|
1001
|
+
Add export commands to your shell startup file for persistence:
|
|
1002
|
+
|
|
1003
|
+
**Bash** (`~/.bashrc`):
|
|
1004
|
+
```bash
|
|
1005
|
+
echo 'export GEMINI_API_KEY="YOUR_API_KEY_HERE"' >> ~/.bashrc
|
|
1006
|
+
source ~/.bashrc
|
|
1007
|
+
```
|
|
1008
|
+
|
|
1009
|
+
**Zsh** (`~/.zshrc`):
|
|
1010
|
+
```bash
|
|
1011
|
+
echo 'export GEMINI_API_KEY="YOUR_API_KEY_HERE"' >> ~/.zshrc
|
|
1012
|
+
source ~/.zshrc
|
|
1013
|
+
```
|
|
1014
|
+
|
|
1015
|
+
---
|
|
1016
|
+
|
|
1017
|
+
## Common Issues
|
|
1018
|
+
|
|
1019
|
+
### Issue: "gemini: command not found" After Installation
|
|
1020
|
+
|
|
1021
|
+
**Symptoms**: The `gemini` command is not recognized after successful npm installation.
|
|
1022
|
+
|
|
1023
|
+
**Solution**:
|
|
1024
|
+
1. Open a new terminal window (PATH updates require a new session)
|
|
1025
|
+
2. Verify npm global bin is in PATH:
|
|
1026
|
+
```bash
|
|
1027
|
+
npm config get prefix
|
|
1028
|
+
```
|
|
1029
|
+
3. Add the bin directory to PATH if missing:
|
|
1030
|
+
```bash
|
|
1031
|
+
echo 'export PATH=$HOME/.npm-global/bin:$PATH' >> ~/.bashrc
|
|
1032
|
+
source ~/.bashrc
|
|
1033
|
+
```
|
|
1034
|
+
|
|
1035
|
+
### Issue: Authentication Fails or Browser Does Not Open
|
|
1036
|
+
|
|
1037
|
+
**Symptoms**: Gemini CLI cannot complete OAuth authentication.
|
|
1038
|
+
|
|
1039
|
+
**Solution**:
|
|
1040
|
+
1. Ensure you have a working internet connection
|
|
1041
|
+
2. Check if a firewall or proxy is blocking outbound connections to Google
|
|
1042
|
+
3. For headless environments, use API key authentication instead
|
|
1043
|
+
4. If VPN is active, try disabling split-tunneling or use global mode
|
|
1044
|
+
5. Manually copy the authentication URL to your browser if it does not open automatically
|
|
1045
|
+
|
|
1046
|
+
### Issue: Node.js Version Too Old
|
|
1047
|
+
|
|
1048
|
+
**Symptoms**: Installation fails or Gemini CLI crashes with runtime errors.
|
|
1049
|
+
|
|
1050
|
+
**Solution**:
|
|
1051
|
+
1. Check your Node.js version:
|
|
1052
|
+
```bash
|
|
1053
|
+
node --version
|
|
1054
|
+
```
|
|
1055
|
+
2. If below v20, update using the platform-specific instructions above
|
|
1056
|
+
3. Consider using nvm (Node Version Manager) for easier version management:
|
|
1057
|
+
```bash
|
|
1058
|
+
curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.40.0/install.sh | bash
|
|
1059
|
+
source ~/.bashrc
|
|
1060
|
+
nvm install 22
|
|
1061
|
+
nvm use 22
|
|
1062
|
+
```
|
|
1063
|
+
|
|
1064
|
+
### Issue: Permission Denied Errors During Installation
|
|
1065
|
+
|
|
1066
|
+
**Symptoms**: npm install fails with `EACCES` permission errors.
|
|
1067
|
+
|
|
1068
|
+
**Solution**:
|
|
1069
|
+
1. Never use `sudo npm install -g`
|
|
1070
|
+
2. Configure npm to use a user directory:
|
|
1071
|
+
```bash
|
|
1072
|
+
mkdir -p ~/.npm-global
|
|
1073
|
+
npm config set prefix ~/.npm-global
|
|
1074
|
+
echo 'export PATH=$HOME/.npm-global/bin:$PATH' >> ~/.bashrc
|
|
1075
|
+
source ~/.bashrc
|
|
1076
|
+
```
|
|
1077
|
+
3. Retry installation:
|
|
1078
|
+
```bash
|
|
1079
|
+
npm install -g @google/gemini-cli
|
|
1080
|
+
```
|
|
1081
|
+
|
|
1082
|
+
### Issue: Slow Response Times or Timeouts
|
|
1083
|
+
|
|
1084
|
+
**Symptoms**: Gemini CLI takes a long time to respond or times out.
|
|
1085
|
+
|
|
1086
|
+
**Solution**:
|
|
1087
|
+
1. Check your internet connection stability
|
|
1088
|
+
2. Verify Google services are operational
|
|
1089
|
+
3. For resource-constrained systems (Raspberry Pi), close other applications
|
|
1090
|
+
4. Check if you have exceeded free tier rate limits (60 req/min, 1,000 req/day)
|
|
1091
|
+
|
|
1092
|
+
### Issue: Multiple Versions Installed
|
|
1093
|
+
|
|
1094
|
+
**Symptoms**: Unexpected behavior or version mismatch warnings.
|
|
1095
|
+
|
|
1096
|
+
**Solution**:
|
|
1097
|
+
1. Check for multiple installations:
|
|
1098
|
+
```bash
|
|
1099
|
+
which -a gemini
|
|
1100
|
+
npm list -g @google/gemini-cli
|
|
1101
|
+
brew list gemini-cli 2>/dev/null
|
|
1102
|
+
```
|
|
1103
|
+
2. Uninstall duplicates and keep only one:
|
|
1104
|
+
```bash
|
|
1105
|
+
# Remove npm version
|
|
1106
|
+
npm uninstall -g @google/gemini-cli
|
|
1107
|
+
|
|
1108
|
+
# Or remove Homebrew version
|
|
1109
|
+
brew uninstall gemini-cli
|
|
1110
|
+
```
|
|
1111
|
+
|
|
1112
|
+
---
|
|
1113
|
+
|
|
1114
|
+
## Uninstallation
|
|
1115
|
+
|
|
1116
|
+
### npm (All Platforms)
|
|
1117
|
+
|
|
1118
|
+
```bash
|
|
1119
|
+
npm uninstall -g @google/gemini-cli
|
|
1120
|
+
```
|
|
1121
|
+
|
|
1122
|
+
### Homebrew (macOS)
|
|
1123
|
+
|
|
1124
|
+
```bash
|
|
1125
|
+
brew uninstall gemini-cli
|
|
1126
|
+
```
|
|
1127
|
+
|
|
1128
|
+
### Clean Up Configuration Files (Optional)
|
|
1129
|
+
|
|
1130
|
+
macOS/Linux/WSL:
|
|
1131
|
+
|
|
1132
|
+
```bash
|
|
1133
|
+
rm -rf ~/.gemini
|
|
1134
|
+
```
|
|
1135
|
+
|
|
1136
|
+
Windows PowerShell:
|
|
1137
|
+
|
|
1138
|
+
```powershell
|
|
1139
|
+
Remove-Item -Path "$env:USERPROFILE\.gemini" -Recurse -Force
|
|
1140
|
+
```
|
|
1141
|
+
|
|
1142
|
+
---
|
|
1143
|
+
|
|
1144
|
+
## References
|
|
1145
|
+
|
|
1146
|
+
- [Gemini CLI GitHub Repository](https://github.com/google-gemini/gemini-cli)
|
|
1147
|
+
- [Gemini CLI Official Documentation](https://geminicli.com/docs/get-started/installation/)
|
|
1148
|
+
- [Gemini CLI npm Package](https://www.npmjs.com/package/@google/gemini-cli)
|
|
1149
|
+
- [Gemini CLI Homebrew Formula](https://formulae.brew.sh/formula/gemini-cli)
|
|
1150
|
+
- [Gemini CLI Authentication Guide](https://geminicli.com/docs/get-started/authentication/)
|
|
1151
|
+
- [Google AI Studio (API Keys)](https://aistudio.google.com/)
|
|
1152
|
+
- [Google Gemini Code Assist Documentation](https://developers.google.com/gemini-code-assist/docs/gemini-cli)
|
|
1153
|
+
- [NodeSource Node.js Distributions](https://github.com/nodesource/distributions)
|