@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,944 @@
|
|
|
1
|
+
# Installing yq
|
|
2
|
+
|
|
3
|
+
## Overview
|
|
4
|
+
|
|
5
|
+
yq is a lightweight and portable command-line YAML processor written in Go by Mike Farah. It uses jq-like syntax but works with YAML files as well as JSON, XML, CSV, TSV, INI, properties, and HCL formats. Think of yq as the jq or sed equivalent for YAML data - it allows you to read, filter, update, and transform structured data with concise expressions.
|
|
6
|
+
|
|
7
|
+
## Dependencies
|
|
8
|
+
|
|
9
|
+
### macOS (Homebrew)
|
|
10
|
+
- **Required:**
|
|
11
|
+
- Homebrew - Install via `/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"` or run `dev install homebrew`
|
|
12
|
+
- **Optional:** None
|
|
13
|
+
- **Auto-installed:** None
|
|
14
|
+
|
|
15
|
+
### Ubuntu (APT/Snap)
|
|
16
|
+
- **Required:**
|
|
17
|
+
- snapd - Install via `sudo apt-get install snapd` (installer will attempt to install automatically if missing)
|
|
18
|
+
- sudo privileges for package installation
|
|
19
|
+
- **Optional:** None
|
|
20
|
+
- **Auto-installed:**
|
|
21
|
+
- snapd - Automatically installed via `sudo DEBIAN_FRONTEND=noninteractive apt-get update -y && sudo DEBIAN_FRONTEND=noninteractive apt-get install -y snapd` if not present
|
|
22
|
+
|
|
23
|
+
### Raspberry Pi OS (APT/Snap)
|
|
24
|
+
- **Required:**
|
|
25
|
+
- curl - Install via `sudo apt-get install curl` (typically pre-installed)
|
|
26
|
+
- uname - Pre-installed system utility for architecture detection
|
|
27
|
+
- sudo privileges for installation
|
|
28
|
+
- **Optional:**
|
|
29
|
+
- snapd - Install via `sudo apt-get install snapd` (preferred for 64-bit installations, installer falls back to binary download if unavailable)
|
|
30
|
+
- **Auto-installed:** None
|
|
31
|
+
|
|
32
|
+
### Amazon Linux (DNF/YUM)
|
|
33
|
+
- **Required:**
|
|
34
|
+
- curl - Pre-installed on Amazon Linux (if missing: `sudo dnf install curl` or `sudo yum install curl`)
|
|
35
|
+
- uname - Pre-installed system utility for architecture detection
|
|
36
|
+
- sudo privileges for installation
|
|
37
|
+
- **Optional:** None
|
|
38
|
+
- **Auto-installed:** None
|
|
39
|
+
|
|
40
|
+
### Windows (Chocolatey/winget)
|
|
41
|
+
- **Required:**
|
|
42
|
+
- Chocolatey - Install 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'))` or run `dev install chocolatey`
|
|
43
|
+
- Administrator privileges (run PowerShell or Command Prompt as Administrator)
|
|
44
|
+
- **Optional:**
|
|
45
|
+
- winget - Pre-installed on Windows 11 and recent Windows 10 builds (alternative to Chocolatey)
|
|
46
|
+
- **Auto-installed:** None
|
|
47
|
+
|
|
48
|
+
### Git Bash (Manual/Portable)
|
|
49
|
+
- **Required:**
|
|
50
|
+
- curl - Pre-installed with Git for Windows
|
|
51
|
+
- mkdir - Pre-installed shell command
|
|
52
|
+
- Git for Windows - Install from https://git-scm.com/download/win
|
|
53
|
+
- **Optional:** None
|
|
54
|
+
- **Auto-installed:** None
|
|
55
|
+
|
|
56
|
+
yq is essential for developers and DevOps engineers who work with Kubernetes manifests, Helm charts, Docker Compose files, CI/CD configurations, or any YAML-based infrastructure. Common use cases include:
|
|
57
|
+
|
|
58
|
+
- Parsing and extracting values from YAML configuration files
|
|
59
|
+
- Modifying Kubernetes manifests programmatically
|
|
60
|
+
- Converting between YAML, JSON, and XML formats
|
|
61
|
+
- Merging multiple YAML files
|
|
62
|
+
- Updating values in Docker Compose files
|
|
63
|
+
- Processing CI/CD pipeline configurations
|
|
64
|
+
|
|
65
|
+
yq is a single statically compiled binary with zero runtime dependencies, making it extremely portable and easy to deploy across platforms.
|
|
66
|
+
|
|
67
|
+
**Important Note**: There are multiple tools named "yq" in the ecosystem. This documentation covers Mike Farah's Go-based yq (https://github.com/mikefarah/yq), which is the most widely used implementation. The Python-based yq (kislyuk/yq) available in some Linux package managers is a different tool.
|
|
68
|
+
|
|
69
|
+
## Prerequisites
|
|
70
|
+
|
|
71
|
+
Before installing yq on any platform, ensure:
|
|
72
|
+
|
|
73
|
+
1. **Internet connectivity** - Required to download packages
|
|
74
|
+
2. **Administrative privileges** - Required on most platforms for system-wide installation
|
|
75
|
+
3. **Package manager installed** - Each platform requires its respective package manager (Homebrew, Snap, Chocolatey, etc.)
|
|
76
|
+
|
|
77
|
+
## Platform-Specific Installation
|
|
78
|
+
|
|
79
|
+
### macOS (Homebrew)
|
|
80
|
+
|
|
81
|
+
#### Prerequisites
|
|
82
|
+
|
|
83
|
+
- macOS 10.15 (Catalina) or later (macOS 14 Sonoma or later recommended)
|
|
84
|
+
- Homebrew package manager installed
|
|
85
|
+
- Terminal access
|
|
86
|
+
|
|
87
|
+
If Homebrew is not installed, install it first:
|
|
88
|
+
|
|
89
|
+
```bash
|
|
90
|
+
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
|
|
91
|
+
```
|
|
92
|
+
|
|
93
|
+
#### Installation Steps
|
|
94
|
+
|
|
95
|
+
Run the following command to install yq via Homebrew:
|
|
96
|
+
|
|
97
|
+
```bash
|
|
98
|
+
brew install --quiet yq
|
|
99
|
+
```
|
|
100
|
+
|
|
101
|
+
The `--quiet` flag suppresses non-essential output, making the command suitable for automation scripts and CI/CD pipelines.
|
|
102
|
+
|
|
103
|
+
**Note**: This installs Mike Farah's yq. Homebrew has a separate `python-yq` formula - do not install that one if you want the Go-based yq.
|
|
104
|
+
|
|
105
|
+
#### Verification
|
|
106
|
+
|
|
107
|
+
Confirm the installation succeeded:
|
|
108
|
+
|
|
109
|
+
```bash
|
|
110
|
+
yq --version
|
|
111
|
+
```
|
|
112
|
+
|
|
113
|
+
Expected output (version numbers may vary):
|
|
114
|
+
|
|
115
|
+
```
|
|
116
|
+
yq (https://github.com/mikefarah/yq/) version v4.50.1
|
|
117
|
+
```
|
|
118
|
+
|
|
119
|
+
Verify the installation path:
|
|
120
|
+
|
|
121
|
+
```bash
|
|
122
|
+
which yq
|
|
123
|
+
```
|
|
124
|
+
|
|
125
|
+
Expected output: `/opt/homebrew/bin/yq` (Apple Silicon) or `/usr/local/bin/yq` (Intel).
|
|
126
|
+
|
|
127
|
+
#### Troubleshooting
|
|
128
|
+
|
|
129
|
+
**Problem**: `yq: command not found` after installation
|
|
130
|
+
|
|
131
|
+
**Solution**: Homebrew may not be in your PATH. For Apple Silicon Macs, add Homebrew to your PATH:
|
|
132
|
+
|
|
133
|
+
```bash
|
|
134
|
+
eval "$(/opt/homebrew/bin/brew shellenv)"
|
|
135
|
+
```
|
|
136
|
+
|
|
137
|
+
For a permanent fix, add this to your shell configuration:
|
|
138
|
+
|
|
139
|
+
```bash
|
|
140
|
+
echo 'eval "$(/opt/homebrew/bin/brew shellenv)"' >> ~/.zshrc && source ~/.zshrc
|
|
141
|
+
```
|
|
142
|
+
|
|
143
|
+
**Problem**: `brew install yq` fails with permission errors
|
|
144
|
+
|
|
145
|
+
**Solution**: Fix Homebrew directory ownership:
|
|
146
|
+
|
|
147
|
+
```bash
|
|
148
|
+
sudo chown -R $(whoami) $(brew --prefix)/*
|
|
149
|
+
```
|
|
150
|
+
|
|
151
|
+
**Problem**: Installed wrong yq (python-yq)
|
|
152
|
+
|
|
153
|
+
**Solution**: If you accidentally installed python-yq, uninstall it and install the correct one:
|
|
154
|
+
|
|
155
|
+
```bash
|
|
156
|
+
brew uninstall python-yq && brew install --quiet yq
|
|
157
|
+
```
|
|
158
|
+
|
|
159
|
+
**Problem**: Installation fails with network errors
|
|
160
|
+
|
|
161
|
+
**Solution**: Check your internet connection and try again. If behind a corporate proxy, configure Homebrew to use it:
|
|
162
|
+
|
|
163
|
+
```bash
|
|
164
|
+
export ALL_PROXY=http://proxy.example.com:8080
|
|
165
|
+
brew install --quiet yq
|
|
166
|
+
```
|
|
167
|
+
|
|
168
|
+
---
|
|
169
|
+
|
|
170
|
+
### Ubuntu/Debian (Snap)
|
|
171
|
+
|
|
172
|
+
#### Prerequisites
|
|
173
|
+
|
|
174
|
+
- Ubuntu 16.04 LTS or later, or Debian 10 (Buster) or later
|
|
175
|
+
- sudo privileges
|
|
176
|
+
- Internet connectivity
|
|
177
|
+
- snapd installed (pre-installed on Ubuntu 16.04+)
|
|
178
|
+
|
|
179
|
+
**Important**: The `yq` package in Ubuntu/Debian APT repositories is NOT Mike Farah's yq - it is a Python-based wrapper around jq called python-yq (kislyuk/yq). Do NOT install via `apt-get install yq` if you want Mike Farah's yq. Use Snap instead.
|
|
180
|
+
|
|
181
|
+
#### Installation Steps
|
|
182
|
+
|
|
183
|
+
Run the following command to install yq via Snap:
|
|
184
|
+
|
|
185
|
+
```bash
|
|
186
|
+
sudo snap install yq
|
|
187
|
+
```
|
|
188
|
+
|
|
189
|
+
Snap packages install non-interactively by default. The command downloads and installs the latest stable version from the Snap Store.
|
|
190
|
+
|
|
191
|
+
#### Verification
|
|
192
|
+
|
|
193
|
+
Confirm the installation succeeded:
|
|
194
|
+
|
|
195
|
+
```bash
|
|
196
|
+
yq --version
|
|
197
|
+
```
|
|
198
|
+
|
|
199
|
+
Expected output (version numbers may vary):
|
|
200
|
+
|
|
201
|
+
```
|
|
202
|
+
yq (https://github.com/mikefarah/yq/) version v4.49.2
|
|
203
|
+
```
|
|
204
|
+
|
|
205
|
+
**Note**: Snap may install a slightly older stable version compared to the absolute latest GitHub release. This is normal and the Snap version is well-tested.
|
|
206
|
+
|
|
207
|
+
Verify the installation path:
|
|
208
|
+
|
|
209
|
+
```bash
|
|
210
|
+
which yq
|
|
211
|
+
```
|
|
212
|
+
|
|
213
|
+
Expected output: `/snap/bin/yq`
|
|
214
|
+
|
|
215
|
+
#### Troubleshooting
|
|
216
|
+
|
|
217
|
+
**Problem**: `snap: command not found`
|
|
218
|
+
|
|
219
|
+
**Solution**: Install snapd first:
|
|
220
|
+
|
|
221
|
+
```bash
|
|
222
|
+
sudo DEBIAN_FRONTEND=noninteractive apt-get update -y && sudo DEBIAN_FRONTEND=noninteractive apt-get install -y snapd
|
|
223
|
+
```
|
|
224
|
+
|
|
225
|
+
Then reboot or log out and back in, and retry the yq installation.
|
|
226
|
+
|
|
227
|
+
**Problem**: `yq: command not found` after snap installation
|
|
228
|
+
|
|
229
|
+
**Solution**: Snap binaries may not be in your PATH. Add Snap's bin directory:
|
|
230
|
+
|
|
231
|
+
```bash
|
|
232
|
+
echo 'export PATH="/snap/bin:$PATH"' >> ~/.bashrc && source ~/.bashrc
|
|
233
|
+
```
|
|
234
|
+
|
|
235
|
+
**Problem**: Snap installation fails with permission errors
|
|
236
|
+
|
|
237
|
+
**Solution**: Ensure you are using `sudo` with the snap install command.
|
|
238
|
+
|
|
239
|
+
**Problem**: Need the absolute latest version
|
|
240
|
+
|
|
241
|
+
**Solution**: Install from the edge channel or use direct binary download:
|
|
242
|
+
|
|
243
|
+
```bash
|
|
244
|
+
sudo snap install yq --edge
|
|
245
|
+
```
|
|
246
|
+
|
|
247
|
+
Or download the binary directly from GitHub:
|
|
248
|
+
|
|
249
|
+
```bash
|
|
250
|
+
sudo curl -L -o /usr/local/bin/yq https://github.com/mikefarah/yq/releases/latest/download/yq_linux_amd64 && sudo chmod +x /usr/local/bin/yq
|
|
251
|
+
```
|
|
252
|
+
|
|
253
|
+
---
|
|
254
|
+
|
|
255
|
+
### Raspberry Pi OS (Snap)
|
|
256
|
+
|
|
257
|
+
#### Prerequisites
|
|
258
|
+
|
|
259
|
+
- Raspberry Pi OS (32-bit or 64-bit)
|
|
260
|
+
- Raspberry Pi 2 or later (Raspberry Pi 3B+ or later recommended for 64-bit)
|
|
261
|
+
- sudo privileges
|
|
262
|
+
- Internet connectivity
|
|
263
|
+
- snapd installed
|
|
264
|
+
|
|
265
|
+
Raspberry Pi OS is based on Debian. Like Ubuntu/Debian, the APT repositories contain python-yq, not Mike Farah's yq. Use Snap or direct binary download instead.
|
|
266
|
+
|
|
267
|
+
#### Installation Steps
|
|
268
|
+
|
|
269
|
+
**Step 1: Install snapd (if not already installed)**
|
|
270
|
+
|
|
271
|
+
```bash
|
|
272
|
+
sudo DEBIAN_FRONTEND=noninteractive apt-get update -y && sudo DEBIAN_FRONTEND=noninteractive apt-get install -y snapd
|
|
273
|
+
```
|
|
274
|
+
|
|
275
|
+
After installing snapd, reboot the Raspberry Pi:
|
|
276
|
+
|
|
277
|
+
```bash
|
|
278
|
+
sudo reboot
|
|
279
|
+
```
|
|
280
|
+
|
|
281
|
+
**Step 2: Install yq via Snap**
|
|
282
|
+
|
|
283
|
+
After reboot, open a new terminal and run:
|
|
284
|
+
|
|
285
|
+
```bash
|
|
286
|
+
sudo snap install yq
|
|
287
|
+
```
|
|
288
|
+
|
|
289
|
+
**Alternative: Direct Binary Download (recommended for 32-bit)**
|
|
290
|
+
|
|
291
|
+
For 32-bit Raspberry Pi OS or if Snap is not desired, download the ARM binary directly:
|
|
292
|
+
|
|
293
|
+
For 64-bit (aarch64):
|
|
294
|
+
|
|
295
|
+
```bash
|
|
296
|
+
sudo curl -L -o /usr/local/bin/yq https://github.com/mikefarah/yq/releases/latest/download/yq_linux_arm64 && sudo chmod +x /usr/local/bin/yq
|
|
297
|
+
```
|
|
298
|
+
|
|
299
|
+
For 32-bit (armv7l/armhf):
|
|
300
|
+
|
|
301
|
+
```bash
|
|
302
|
+
sudo curl -L -o /usr/local/bin/yq https://github.com/mikefarah/yq/releases/latest/download/yq_linux_arm && sudo chmod +x /usr/local/bin/yq
|
|
303
|
+
```
|
|
304
|
+
|
|
305
|
+
#### Verification
|
|
306
|
+
|
|
307
|
+
Confirm the installation succeeded:
|
|
308
|
+
|
|
309
|
+
```bash
|
|
310
|
+
yq --version
|
|
311
|
+
```
|
|
312
|
+
|
|
313
|
+
Expected output (version numbers may vary):
|
|
314
|
+
|
|
315
|
+
```
|
|
316
|
+
yq (https://github.com/mikefarah/yq/) version v4.49.2
|
|
317
|
+
```
|
|
318
|
+
|
|
319
|
+
Verify your architecture:
|
|
320
|
+
|
|
321
|
+
```bash
|
|
322
|
+
uname -m
|
|
323
|
+
```
|
|
324
|
+
|
|
325
|
+
Expected output: `aarch64` (64-bit) or `armv7l` (32-bit).
|
|
326
|
+
|
|
327
|
+
Verify the installation path:
|
|
328
|
+
|
|
329
|
+
```bash
|
|
330
|
+
which yq
|
|
331
|
+
```
|
|
332
|
+
|
|
333
|
+
Expected output: `/snap/bin/yq` (Snap) or `/usr/local/bin/yq` (binary download).
|
|
334
|
+
|
|
335
|
+
#### Troubleshooting
|
|
336
|
+
|
|
337
|
+
**Problem**: Snap installation hangs or is very slow
|
|
338
|
+
|
|
339
|
+
**Solution**: Raspberry Pi may have limited bandwidth or processing power. Use the direct binary download method instead, which is faster.
|
|
340
|
+
|
|
341
|
+
**Problem**: `snap: command not found`
|
|
342
|
+
|
|
343
|
+
**Solution**: Ensure snapd is installed and you have rebooted after installation:
|
|
344
|
+
|
|
345
|
+
```bash
|
|
346
|
+
sudo DEBIAN_FRONTEND=noninteractive apt-get install -y snapd
|
|
347
|
+
sudo reboot
|
|
348
|
+
```
|
|
349
|
+
|
|
350
|
+
**Problem**: Wrong architecture binary downloaded
|
|
351
|
+
|
|
352
|
+
**Solution**: Check your architecture with `uname -m` and download the correct binary:
|
|
353
|
+
- `aarch64` = use `yq_linux_arm64`
|
|
354
|
+
- `armv7l` = use `yq_linux_arm`
|
|
355
|
+
|
|
356
|
+
**Problem**: Permission denied when running yq
|
|
357
|
+
|
|
358
|
+
**Solution**: Ensure the binary has execute permissions:
|
|
359
|
+
|
|
360
|
+
```bash
|
|
361
|
+
sudo chmod +x /usr/local/bin/yq
|
|
362
|
+
```
|
|
363
|
+
|
|
364
|
+
---
|
|
365
|
+
|
|
366
|
+
### Amazon Linux (Direct Binary Download)
|
|
367
|
+
|
|
368
|
+
#### Prerequisites
|
|
369
|
+
|
|
370
|
+
- Amazon Linux 2023 (AL2023) or Amazon Linux 2 (AL2)
|
|
371
|
+
- sudo privileges
|
|
372
|
+
- Internet connectivity
|
|
373
|
+
- curl or wget installed (pre-installed on Amazon Linux)
|
|
374
|
+
|
|
375
|
+
**Important**: Mike Farah's yq is NOT available in the standard Amazon Linux repositories. Use direct binary download for installation.
|
|
376
|
+
|
|
377
|
+
#### Installation Steps
|
|
378
|
+
|
|
379
|
+
Run the following commands to download and install yq:
|
|
380
|
+
|
|
381
|
+
For x86_64 instances:
|
|
382
|
+
|
|
383
|
+
```bash
|
|
384
|
+
sudo curl -L -o /usr/local/bin/yq https://github.com/mikefarah/yq/releases/latest/download/yq_linux_amd64 && sudo chmod +x /usr/local/bin/yq
|
|
385
|
+
```
|
|
386
|
+
|
|
387
|
+
For ARM-based instances (Graviton):
|
|
388
|
+
|
|
389
|
+
```bash
|
|
390
|
+
sudo curl -L -o /usr/local/bin/yq https://github.com/mikefarah/yq/releases/latest/download/yq_linux_arm64 && sudo chmod +x /usr/local/bin/yq
|
|
391
|
+
```
|
|
392
|
+
|
|
393
|
+
This downloads the latest stable release directly from GitHub and installs it to `/usr/local/bin/`.
|
|
394
|
+
|
|
395
|
+
#### Verification
|
|
396
|
+
|
|
397
|
+
Confirm the installation succeeded:
|
|
398
|
+
|
|
399
|
+
```bash
|
|
400
|
+
yq --version
|
|
401
|
+
```
|
|
402
|
+
|
|
403
|
+
Expected output (version numbers may vary):
|
|
404
|
+
|
|
405
|
+
```
|
|
406
|
+
yq (https://github.com/mikefarah/yq/) version v4.50.1
|
|
407
|
+
```
|
|
408
|
+
|
|
409
|
+
Check which architecture is installed:
|
|
410
|
+
|
|
411
|
+
```bash
|
|
412
|
+
file /usr/local/bin/yq
|
|
413
|
+
```
|
|
414
|
+
|
|
415
|
+
Expected output for x86_64: `ELF 64-bit LSB executable, x86-64`
|
|
416
|
+
Expected output for ARM64: `ELF 64-bit LSB executable, ARM aarch64`
|
|
417
|
+
|
|
418
|
+
Verify the installation path:
|
|
419
|
+
|
|
420
|
+
```bash
|
|
421
|
+
which yq
|
|
422
|
+
```
|
|
423
|
+
|
|
424
|
+
Expected output: `/usr/local/bin/yq`
|
|
425
|
+
|
|
426
|
+
#### Troubleshooting
|
|
427
|
+
|
|
428
|
+
**Problem**: `curl: command not found`
|
|
429
|
+
|
|
430
|
+
**Solution**: curl should be pre-installed, but if missing:
|
|
431
|
+
|
|
432
|
+
```bash
|
|
433
|
+
sudo dnf install -y curl
|
|
434
|
+
```
|
|
435
|
+
|
|
436
|
+
Or for Amazon Linux 2:
|
|
437
|
+
|
|
438
|
+
```bash
|
|
439
|
+
sudo yum install -y curl
|
|
440
|
+
```
|
|
441
|
+
|
|
442
|
+
**Problem**: Permission denied when downloading
|
|
443
|
+
|
|
444
|
+
**Solution**: Ensure you are using `sudo` for the curl and chmod commands.
|
|
445
|
+
|
|
446
|
+
**Problem**: yq not found after installation
|
|
447
|
+
|
|
448
|
+
**Solution**: `/usr/local/bin` should be in PATH by default. If not, add it:
|
|
449
|
+
|
|
450
|
+
```bash
|
|
451
|
+
echo 'export PATH="/usr/local/bin:$PATH"' >> ~/.bashrc && source ~/.bashrc
|
|
452
|
+
```
|
|
453
|
+
|
|
454
|
+
**Problem**: Need to install a specific version
|
|
455
|
+
|
|
456
|
+
**Solution**: Replace `latest` with the specific version tag:
|
|
457
|
+
|
|
458
|
+
```bash
|
|
459
|
+
sudo curl -L -o /usr/local/bin/yq https://github.com/mikefarah/yq/releases/download/v4.50.1/yq_linux_amd64 && sudo chmod +x /usr/local/bin/yq
|
|
460
|
+
```
|
|
461
|
+
|
|
462
|
+
**Problem**: Downloaded wrong architecture
|
|
463
|
+
|
|
464
|
+
**Solution**: Check your instance architecture first:
|
|
465
|
+
|
|
466
|
+
```bash
|
|
467
|
+
uname -m
|
|
468
|
+
```
|
|
469
|
+
|
|
470
|
+
Use `yq_linux_amd64` for `x86_64` and `yq_linux_arm64` for `aarch64`.
|
|
471
|
+
|
|
472
|
+
---
|
|
473
|
+
|
|
474
|
+
### Windows (Chocolatey)
|
|
475
|
+
|
|
476
|
+
#### Prerequisites
|
|
477
|
+
|
|
478
|
+
- Windows 10 (version 1803+) or Windows 11
|
|
479
|
+
- Chocolatey package manager installed
|
|
480
|
+
- Administrator PowerShell or Command Prompt
|
|
481
|
+
|
|
482
|
+
If Chocolatey is not installed, install it first by running this command in an Administrator PowerShell:
|
|
483
|
+
|
|
484
|
+
```powershell
|
|
485
|
+
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'))
|
|
486
|
+
```
|
|
487
|
+
|
|
488
|
+
#### Installation Steps
|
|
489
|
+
|
|
490
|
+
Run the following command in an Administrator PowerShell or Command Prompt:
|
|
491
|
+
|
|
492
|
+
```powershell
|
|
493
|
+
choco install yq -y
|
|
494
|
+
```
|
|
495
|
+
|
|
496
|
+
The `-y` flag automatically confirms all prompts, enabling fully non-interactive installation.
|
|
497
|
+
|
|
498
|
+
Chocolatey downloads the appropriate Windows binary and adds it to the PATH automatically.
|
|
499
|
+
|
|
500
|
+
#### Verification
|
|
501
|
+
|
|
502
|
+
Open a **new** Command Prompt or PowerShell window (required for PATH to update), then run:
|
|
503
|
+
|
|
504
|
+
```powershell
|
|
505
|
+
yq --version
|
|
506
|
+
```
|
|
507
|
+
|
|
508
|
+
Expected output (version numbers may vary):
|
|
509
|
+
|
|
510
|
+
```
|
|
511
|
+
yq (https://github.com/mikefarah/yq/) version v4.50.1
|
|
512
|
+
```
|
|
513
|
+
|
|
514
|
+
Verify the installation path:
|
|
515
|
+
|
|
516
|
+
```powershell
|
|
517
|
+
where yq
|
|
518
|
+
```
|
|
519
|
+
|
|
520
|
+
Expected output: `C:\ProgramData\chocolatey\bin\yq.exe`
|
|
521
|
+
|
|
522
|
+
#### Troubleshooting
|
|
523
|
+
|
|
524
|
+
**Problem**: `yq` command not found after installation
|
|
525
|
+
|
|
526
|
+
**Solution**: Close all terminal windows and open a new Command Prompt or PowerShell. The PATH update requires a fresh terminal session.
|
|
527
|
+
|
|
528
|
+
**Problem**: `choco` command not found
|
|
529
|
+
|
|
530
|
+
**Solution**: Chocolatey may not be in PATH. Close all terminal windows, open a new Administrator PowerShell, and try again. If the issue persists, reinstall Chocolatey.
|
|
531
|
+
|
|
532
|
+
**Problem**: Installation fails with access denied
|
|
533
|
+
|
|
534
|
+
**Solution**: Ensure you are running PowerShell or Command Prompt as Administrator. Right-click and select "Run as administrator".
|
|
535
|
+
|
|
536
|
+
**Problem**: Need to use winget instead of Chocolatey
|
|
537
|
+
|
|
538
|
+
**Solution**: winget is also supported. Run the following in PowerShell or Command Prompt:
|
|
539
|
+
|
|
540
|
+
```powershell
|
|
541
|
+
winget install --id MikeFarah.yq --silent --accept-package-agreements --accept-source-agreements
|
|
542
|
+
```
|
|
543
|
+
|
|
544
|
+
The `--silent` flag ensures non-interactive installation.
|
|
545
|
+
|
|
546
|
+
**Note**: The winget version may be slightly older than the Chocolatey version. Check the version after installation.
|
|
547
|
+
|
|
548
|
+
---
|
|
549
|
+
|
|
550
|
+
### WSL (Ubuntu)
|
|
551
|
+
|
|
552
|
+
#### Prerequisites
|
|
553
|
+
|
|
554
|
+
- Windows 10 version 2004+ or Windows 11
|
|
555
|
+
- Windows Subsystem for Linux (WSL) with Ubuntu installed
|
|
556
|
+
- WSL 2 recommended for best performance
|
|
557
|
+
- sudo privileges within WSL
|
|
558
|
+
|
|
559
|
+
WSL Ubuntu follows the same process as native Ubuntu - use Snap or direct binary download.
|
|
560
|
+
|
|
561
|
+
#### Installation Steps
|
|
562
|
+
|
|
563
|
+
Open your WSL Ubuntu terminal and run:
|
|
564
|
+
|
|
565
|
+
**Option 1: Via Snap (if snapd is available)**
|
|
566
|
+
|
|
567
|
+
```bash
|
|
568
|
+
sudo snap install yq
|
|
569
|
+
```
|
|
570
|
+
|
|
571
|
+
**Option 2: Direct Binary Download (recommended for WSL)**
|
|
572
|
+
|
|
573
|
+
```bash
|
|
574
|
+
sudo curl -L -o /usr/local/bin/yq https://github.com/mikefarah/yq/releases/latest/download/yq_linux_amd64 && sudo chmod +x /usr/local/bin/yq
|
|
575
|
+
```
|
|
576
|
+
|
|
577
|
+
The direct binary download is often more reliable in WSL environments.
|
|
578
|
+
|
|
579
|
+
#### Verification
|
|
580
|
+
|
|
581
|
+
Confirm the installation succeeded:
|
|
582
|
+
|
|
583
|
+
```bash
|
|
584
|
+
yq --version
|
|
585
|
+
```
|
|
586
|
+
|
|
587
|
+
Expected output (version numbers may vary):
|
|
588
|
+
|
|
589
|
+
```
|
|
590
|
+
yq (https://github.com/mikefarah/yq/) version v4.50.1
|
|
591
|
+
```
|
|
592
|
+
|
|
593
|
+
Verify the installation path:
|
|
594
|
+
|
|
595
|
+
```bash
|
|
596
|
+
which yq
|
|
597
|
+
```
|
|
598
|
+
|
|
599
|
+
Expected output: `/snap/bin/yq` (Snap) or `/usr/local/bin/yq` (binary download).
|
|
600
|
+
|
|
601
|
+
#### Troubleshooting
|
|
602
|
+
|
|
603
|
+
**Problem**: Snap commands fail in WSL
|
|
604
|
+
|
|
605
|
+
**Solution**: Snap support in WSL can be problematic. Use the direct binary download method instead:
|
|
606
|
+
|
|
607
|
+
```bash
|
|
608
|
+
sudo curl -L -o /usr/local/bin/yq https://github.com/mikefarah/yq/releases/latest/download/yq_linux_amd64 && sudo chmod +x /usr/local/bin/yq
|
|
609
|
+
```
|
|
610
|
+
|
|
611
|
+
**Problem**: WSL itself is not installed
|
|
612
|
+
|
|
613
|
+
**Solution**: Install WSL from an Administrator PowerShell on Windows:
|
|
614
|
+
|
|
615
|
+
```powershell
|
|
616
|
+
wsl --install
|
|
617
|
+
```
|
|
618
|
+
|
|
619
|
+
Restart your computer after installation.
|
|
620
|
+
|
|
621
|
+
**Problem**: Network connectivity issues in WSL
|
|
622
|
+
|
|
623
|
+
**Solution**: WSL may have DNS resolution issues. Try restarting WSL:
|
|
624
|
+
|
|
625
|
+
```powershell
|
|
626
|
+
# From Windows PowerShell
|
|
627
|
+
wsl --shutdown
|
|
628
|
+
wsl
|
|
629
|
+
```
|
|
630
|
+
|
|
631
|
+
**Problem**: `/usr/local/bin` not in PATH
|
|
632
|
+
|
|
633
|
+
**Solution**: Add it to your PATH:
|
|
634
|
+
|
|
635
|
+
```bash
|
|
636
|
+
echo 'export PATH="/usr/local/bin:$PATH"' >> ~/.bashrc && source ~/.bashrc
|
|
637
|
+
```
|
|
638
|
+
|
|
639
|
+
---
|
|
640
|
+
|
|
641
|
+
### Git Bash (Manual/Portable)
|
|
642
|
+
|
|
643
|
+
#### Prerequisites
|
|
644
|
+
|
|
645
|
+
- Windows 10 or Windows 11
|
|
646
|
+
- Git for Windows installed (includes Git Bash)
|
|
647
|
+
- Internet connectivity
|
|
648
|
+
|
|
649
|
+
Git Bash does not include yq by default. Download the Windows binary and place it in a directory included in Git Bash's PATH.
|
|
650
|
+
|
|
651
|
+
#### Installation Steps
|
|
652
|
+
|
|
653
|
+
Open Git Bash and run the following commands:
|
|
654
|
+
|
|
655
|
+
**Step 1: Create the local bin directory (if it does not exist)**
|
|
656
|
+
|
|
657
|
+
```bash
|
|
658
|
+
mkdir -p /usr/local/bin
|
|
659
|
+
```
|
|
660
|
+
|
|
661
|
+
**Step 2: Download the yq Windows binary**
|
|
662
|
+
|
|
663
|
+
```bash
|
|
664
|
+
curl -L -o /usr/local/bin/yq.exe https://github.com/mikefarah/yq/releases/latest/download/yq_windows_amd64.exe
|
|
665
|
+
```
|
|
666
|
+
|
|
667
|
+
This downloads the latest yq release directly from the official GitHub releases.
|
|
668
|
+
|
|
669
|
+
#### Verification
|
|
670
|
+
|
|
671
|
+
Confirm the installation succeeded:
|
|
672
|
+
|
|
673
|
+
```bash
|
|
674
|
+
yq --version
|
|
675
|
+
```
|
|
676
|
+
|
|
677
|
+
Expected output (version numbers may vary):
|
|
678
|
+
|
|
679
|
+
```
|
|
680
|
+
yq (https://github.com/mikefarah/yq/) version v4.50.1
|
|
681
|
+
```
|
|
682
|
+
|
|
683
|
+
Verify yq is accessible:
|
|
684
|
+
|
|
685
|
+
```bash
|
|
686
|
+
which yq
|
|
687
|
+
```
|
|
688
|
+
|
|
689
|
+
Expected output: `/usr/local/bin/yq`
|
|
690
|
+
|
|
691
|
+
#### Troubleshooting
|
|
692
|
+
|
|
693
|
+
**Problem**: `yq: command not found`
|
|
694
|
+
|
|
695
|
+
**Solution**: The `/usr/local/bin` directory may not be in Git Bash's PATH. Add it manually:
|
|
696
|
+
|
|
697
|
+
```bash
|
|
698
|
+
echo 'export PATH="/usr/local/bin:$PATH"' >> ~/.bashrc && source ~/.bashrc
|
|
699
|
+
```
|
|
700
|
+
|
|
701
|
+
**Problem**: Permission denied when downloading
|
|
702
|
+
|
|
703
|
+
**Solution**: Run Git Bash as Administrator. Press Windows key, type "Git Bash", then press Ctrl+Shift+Enter.
|
|
704
|
+
|
|
705
|
+
**Problem**: SSL certificate errors during download
|
|
706
|
+
|
|
707
|
+
**Solution**: Update the CA certificates or use the `-k` flag (not recommended for production):
|
|
708
|
+
|
|
709
|
+
```bash
|
|
710
|
+
curl -k -L -o /usr/local/bin/yq.exe https://github.com/mikefarah/yq/releases/latest/download/yq_windows_amd64.exe
|
|
711
|
+
```
|
|
712
|
+
|
|
713
|
+
**Problem**: Need 32-bit version
|
|
714
|
+
|
|
715
|
+
**Solution**: Download the 32-bit binary instead:
|
|
716
|
+
|
|
717
|
+
```bash
|
|
718
|
+
curl -L -o /usr/local/bin/yq.exe https://github.com/mikefarah/yq/releases/latest/download/yq_windows_386.exe
|
|
719
|
+
```
|
|
720
|
+
|
|
721
|
+
**Problem**: Want to install to Git's built-in bin directory
|
|
722
|
+
|
|
723
|
+
**Solution**: Alternatively, copy to Git's usr/bin directory (requires running Git Bash as Administrator):
|
|
724
|
+
|
|
725
|
+
```bash
|
|
726
|
+
curl -L -o /usr/bin/yq.exe https://github.com/mikefarah/yq/releases/latest/download/yq_windows_amd64.exe
|
|
727
|
+
```
|
|
728
|
+
|
|
729
|
+
---
|
|
730
|
+
|
|
731
|
+
## Post-Installation Configuration
|
|
732
|
+
|
|
733
|
+
yq works out of the box for most use cases. No additional configuration is typically required. The following optional tips may be useful:
|
|
734
|
+
|
|
735
|
+
### Shell Aliases
|
|
736
|
+
|
|
737
|
+
Create convenient aliases for common yq operations. Add to your shell configuration file (`~/.bashrc`, `~/.zshrc`, or `~/.bash_profile`):
|
|
738
|
+
|
|
739
|
+
```bash
|
|
740
|
+
# Pretty-print YAML
|
|
741
|
+
alias ypp='yq eval .'
|
|
742
|
+
|
|
743
|
+
# Convert YAML to JSON
|
|
744
|
+
alias y2j='yq eval -o=json'
|
|
745
|
+
|
|
746
|
+
# Convert JSON to YAML
|
|
747
|
+
alias j2y='yq eval -P'
|
|
748
|
+
|
|
749
|
+
# Evaluate in-place
|
|
750
|
+
alias yqi='yq eval -i'
|
|
751
|
+
```
|
|
752
|
+
|
|
753
|
+
### Tab Completion
|
|
754
|
+
|
|
755
|
+
yq supports shell completion for Bash, Zsh, Fish, and PowerShell.
|
|
756
|
+
|
|
757
|
+
**Bash:**
|
|
758
|
+
|
|
759
|
+
```bash
|
|
760
|
+
echo 'source <(yq shell-completion bash)' >> ~/.bashrc && source ~/.bashrc
|
|
761
|
+
```
|
|
762
|
+
|
|
763
|
+
**Zsh:**
|
|
764
|
+
|
|
765
|
+
```bash
|
|
766
|
+
echo 'source <(yq shell-completion zsh)' >> ~/.zshrc && source ~/.zshrc
|
|
767
|
+
```
|
|
768
|
+
|
|
769
|
+
**PowerShell:**
|
|
770
|
+
|
|
771
|
+
```powershell
|
|
772
|
+
yq shell-completion powershell | Out-String | Invoke-Expression
|
|
773
|
+
```
|
|
774
|
+
|
|
775
|
+
To make it permanent in PowerShell, add to your profile:
|
|
776
|
+
|
|
777
|
+
```powershell
|
|
778
|
+
Add-Content $PROFILE 'yq shell-completion powershell | Out-String | Invoke-Expression'
|
|
779
|
+
```
|
|
780
|
+
|
|
781
|
+
### Test Your Installation
|
|
782
|
+
|
|
783
|
+
Verify yq can parse YAML correctly:
|
|
784
|
+
|
|
785
|
+
```bash
|
|
786
|
+
echo 'name: yq
|
|
787
|
+
version: 4.50.1' | yq '.name'
|
|
788
|
+
```
|
|
789
|
+
|
|
790
|
+
Expected output:
|
|
791
|
+
|
|
792
|
+
```
|
|
793
|
+
yq
|
|
794
|
+
```
|
|
795
|
+
|
|
796
|
+
Test JSON output:
|
|
797
|
+
|
|
798
|
+
```bash
|
|
799
|
+
echo 'name: yq
|
|
800
|
+
version: 4.50.1' | yq -o=json
|
|
801
|
+
```
|
|
802
|
+
|
|
803
|
+
Expected output:
|
|
804
|
+
|
|
805
|
+
```json
|
|
806
|
+
{
|
|
807
|
+
"name": "yq",
|
|
808
|
+
"version": "4.50.1"
|
|
809
|
+
}
|
|
810
|
+
```
|
|
811
|
+
|
|
812
|
+
---
|
|
813
|
+
|
|
814
|
+
## Common Issues
|
|
815
|
+
|
|
816
|
+
### Issue: "Error: bad file descriptor" on Windows
|
|
817
|
+
|
|
818
|
+
**Symptoms**: yq fails with file descriptor errors when reading from stdin on Windows.
|
|
819
|
+
|
|
820
|
+
**Solution**: This can occur with certain terminal configurations. Use file input instead of stdin:
|
|
821
|
+
|
|
822
|
+
```powershell
|
|
823
|
+
yq eval '.key' input.yaml
|
|
824
|
+
```
|
|
825
|
+
|
|
826
|
+
Or redirect input explicitly:
|
|
827
|
+
|
|
828
|
+
```powershell
|
|
829
|
+
Get-Content input.yaml | yq eval '.key'
|
|
830
|
+
```
|
|
831
|
+
|
|
832
|
+
### Issue: Wrong yq installed (python-yq vs Go yq)
|
|
833
|
+
|
|
834
|
+
**Symptoms**: yq version shows Python or uses different syntax.
|
|
835
|
+
|
|
836
|
+
**Solution**: You may have installed the Python-based yq (kislyuk/yq) instead of Mike Farah's Go-based yq. Check which one is installed:
|
|
837
|
+
|
|
838
|
+
```bash
|
|
839
|
+
yq --version
|
|
840
|
+
```
|
|
841
|
+
|
|
842
|
+
Mike Farah's yq shows: `yq (https://github.com/mikefarah/yq/) version vX.X.X`
|
|
843
|
+
Python yq shows: `yq X.X.X`
|
|
844
|
+
|
|
845
|
+
To fix, uninstall the Python version and install Mike Farah's yq using Snap or direct binary download.
|
|
846
|
+
|
|
847
|
+
### Issue: "null" output when key does not exist
|
|
848
|
+
|
|
849
|
+
**Symptoms**: yq returns `null` when querying a non-existent key.
|
|
850
|
+
|
|
851
|
+
**Solution**: This is expected behavior. To handle missing keys gracefully, use the alternative operator:
|
|
852
|
+
|
|
853
|
+
```bash
|
|
854
|
+
echo 'name: yq' | yq '.missing // "default"'
|
|
855
|
+
```
|
|
856
|
+
|
|
857
|
+
### Issue: YAML anchors and aliases not resolved
|
|
858
|
+
|
|
859
|
+
**Symptoms**: yq output contains `*anchor` references instead of resolved values.
|
|
860
|
+
|
|
861
|
+
**Solution**: Use the `explode` function to resolve anchors:
|
|
862
|
+
|
|
863
|
+
```bash
|
|
864
|
+
yq 'explode(.)' file.yaml
|
|
865
|
+
```
|
|
866
|
+
|
|
867
|
+
### Issue: Comments are lost when editing
|
|
868
|
+
|
|
869
|
+
**Symptoms**: yq removes comments when modifying YAML files.
|
|
870
|
+
|
|
871
|
+
**Solution**: yq preserves comments in most cases, but complex operations may lose them. For simple value updates, comments are preserved:
|
|
872
|
+
|
|
873
|
+
```bash
|
|
874
|
+
yq -i '.version = "2.0.0"' file.yaml
|
|
875
|
+
```
|
|
876
|
+
|
|
877
|
+
For complex operations, consider using `--prettyPrint` flag.
|
|
878
|
+
|
|
879
|
+
### Issue: Large YAML files cause memory issues
|
|
880
|
+
|
|
881
|
+
**Symptoms**: Processing very large YAML files causes yq to consume excessive memory.
|
|
882
|
+
|
|
883
|
+
**Solution**: yq streams by default for many operations, but very large files may still cause issues. Consider splitting large files or using streaming mode where applicable.
|
|
884
|
+
|
|
885
|
+
### Issue: PowerShell quoting problems
|
|
886
|
+
|
|
887
|
+
**Symptoms**: yq expressions fail in PowerShell with parsing errors.
|
|
888
|
+
|
|
889
|
+
**Solution**: PowerShell has different quoting rules. Use single quotes for yq expressions:
|
|
890
|
+
|
|
891
|
+
```powershell
|
|
892
|
+
yq '.key' file.yaml
|
|
893
|
+
```
|
|
894
|
+
|
|
895
|
+
For complex expressions, escape internal quotes:
|
|
896
|
+
|
|
897
|
+
```powershell
|
|
898
|
+
yq '.items[] | select(.name == \"value\")' file.yaml
|
|
899
|
+
```
|
|
900
|
+
|
|
901
|
+
Or use PowerShell's here-string:
|
|
902
|
+
|
|
903
|
+
```powershell
|
|
904
|
+
yq @'
|
|
905
|
+
.items[] | select(.name == "value")
|
|
906
|
+
'@ file.yaml
|
|
907
|
+
```
|
|
908
|
+
|
|
909
|
+
### Issue: Updating yq to latest version
|
|
910
|
+
|
|
911
|
+
**Symptoms**: Need to upgrade to the latest yq version.
|
|
912
|
+
|
|
913
|
+
**Solution**:
|
|
914
|
+
|
|
915
|
+
For Homebrew:
|
|
916
|
+
```bash
|
|
917
|
+
brew upgrade yq
|
|
918
|
+
```
|
|
919
|
+
|
|
920
|
+
For Snap:
|
|
921
|
+
```bash
|
|
922
|
+
sudo snap refresh yq
|
|
923
|
+
```
|
|
924
|
+
|
|
925
|
+
For Chocolatey:
|
|
926
|
+
```bash
|
|
927
|
+
choco upgrade yq -y
|
|
928
|
+
```
|
|
929
|
+
|
|
930
|
+
For manual installation, re-run the curl download command with the latest URL.
|
|
931
|
+
|
|
932
|
+
---
|
|
933
|
+
|
|
934
|
+
## References
|
|
935
|
+
|
|
936
|
+
- [yq Official Documentation](https://mikefarah.gitbook.io/yq/)
|
|
937
|
+
- [yq GitHub Repository](https://github.com/mikefarah/yq)
|
|
938
|
+
- [yq GitHub Releases](https://github.com/mikefarah/yq/releases)
|
|
939
|
+
- [yq Homebrew Formula](https://formulae.brew.sh/formula/yq)
|
|
940
|
+
- [yq Snap Package](https://snapcraft.io/yq)
|
|
941
|
+
- [yq Chocolatey Package](https://community.chocolatey.org/packages/yq)
|
|
942
|
+
- [yq winget Package](https://winget.run/pkg/MikeFarah/yq)
|
|
943
|
+
- [yq Operators Reference](https://mikefarah.gitbook.io/yq/operators)
|
|
944
|
+
- [yq Recipes and Examples](https://mikefarah.gitbook.io/yq/recipes)
|