@fredlackey/devutils 0.0.17 → 0.0.19

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.
Files changed (331) hide show
  1. package/README.md +32 -150
  2. package/package.json +5 -82
  3. package/bin/dev.js +0 -16
  4. package/files/README.md +0 -0
  5. package/files/claude/.claude/commands/setup-context.md +0 -3
  6. package/files/monorepos/_archive/README.md +0 -36
  7. package/files/monorepos/_legacy/README.md +0 -36
  8. package/files/monorepos/ai-docs/README.md +0 -33
  9. package/files/monorepos/apps/README.md +0 -24
  10. package/files/monorepos/docs/README.md +0 -40
  11. package/files/monorepos/packages/README.md +0 -25
  12. package/files/monorepos/research/README.md +0 -29
  13. package/files/monorepos/scripts/README.md +0 -24
  14. package/src/cli.js +0 -72
  15. package/src/commands/README.md +0 -41
  16. package/src/commands/configure.js +0 -199
  17. package/src/commands/identity.js +0 -1630
  18. package/src/commands/ignore.js +0 -247
  19. package/src/commands/install.js +0 -526
  20. package/src/commands/setup.js +0 -246
  21. package/src/commands/status.js +0 -223
  22. package/src/commands/update.js +0 -142
  23. package/src/commands/version.js +0 -100
  24. package/src/completion.js +0 -284
  25. package/src/constants.js +0 -45
  26. package/src/ignore/claude-code.txt +0 -10
  27. package/src/ignore/docker.txt +0 -18
  28. package/src/ignore/linux.txt +0 -23
  29. package/src/ignore/macos.txt +0 -36
  30. package/src/ignore/node.txt +0 -55
  31. package/src/ignore/terraform.txt +0 -37
  32. package/src/ignore/vscode.txt +0 -18
  33. package/src/ignore/windows.txt +0 -35
  34. package/src/index.js +0 -0
  35. package/src/installs/README.md +0 -399
  36. package/src/installs/adobe-creative-cloud.js +0 -546
  37. package/src/installs/adobe-creative-cloud.md +0 -605
  38. package/src/installs/appcleaner.js +0 -321
  39. package/src/installs/appcleaner.md +0 -699
  40. package/src/installs/apt-transport-https.js +0 -390
  41. package/src/installs/apt-transport-https.md +0 -678
  42. package/src/installs/atomicparsley.js +0 -642
  43. package/src/installs/atomicparsley.md +0 -795
  44. package/src/installs/aws-cli.js +0 -797
  45. package/src/installs/aws-cli.md +0 -727
  46. package/src/installs/balena-etcher.js +0 -710
  47. package/src/installs/balena-etcher.md +0 -761
  48. package/src/installs/bambu-studio.js +0 -1143
  49. package/src/installs/bambu-studio.md +0 -780
  50. package/src/installs/bash-completion.js +0 -575
  51. package/src/installs/bash-completion.md +0 -833
  52. package/src/installs/bash.js +0 -417
  53. package/src/installs/bash.md +0 -993
  54. package/src/installs/beyond-compare.js +0 -603
  55. package/src/installs/beyond-compare.md +0 -813
  56. package/src/installs/brave-browser.js +0 -968
  57. package/src/installs/brave-browser.md +0 -650
  58. package/src/installs/build-essential.js +0 -529
  59. package/src/installs/build-essential.md +0 -977
  60. package/src/installs/ca-certificates.js +0 -618
  61. package/src/installs/ca-certificates.md +0 -937
  62. package/src/installs/caffeine.js +0 -508
  63. package/src/installs/caffeine.md +0 -839
  64. package/src/installs/camtasia.js +0 -596
  65. package/src/installs/camtasia.md +0 -762
  66. package/src/installs/chatgpt.js +0 -476
  67. package/src/installs/chatgpt.md +0 -814
  68. package/src/installs/chocolatey.js +0 -456
  69. package/src/installs/chocolatey.md +0 -661
  70. package/src/installs/chrome-canary.js +0 -419
  71. package/src/installs/chrome-canary.md +0 -641
  72. package/src/installs/chromium.js +0 -667
  73. package/src/installs/chromium.md +0 -838
  74. package/src/installs/claude-code.js +0 -576
  75. package/src/installs/claude-code.md +0 -1173
  76. package/src/installs/cloudflare-warp.js +0 -900
  77. package/src/installs/cloudflare-warp.md +0 -1047
  78. package/src/installs/comet-browser.js +0 -588
  79. package/src/installs/comet-browser.md +0 -731
  80. package/src/installs/curl.js +0 -379
  81. package/src/installs/curl.md +0 -714
  82. package/src/installs/cursor.js +0 -579
  83. package/src/installs/cursor.md +0 -970
  84. package/src/installs/dbeaver.js +0 -924
  85. package/src/installs/dbeaver.md +0 -939
  86. package/src/installs/dbschema.js +0 -692
  87. package/src/installs/dbschema.md +0 -925
  88. package/src/installs/dependencies.md +0 -453
  89. package/src/installs/development-tools.js +0 -600
  90. package/src/installs/development-tools.md +0 -977
  91. package/src/installs/docker.js +0 -1029
  92. package/src/installs/docker.md +0 -1109
  93. package/src/installs/drawio.js +0 -1019
  94. package/src/installs/drawio.md +0 -795
  95. package/src/installs/elmedia-player.js +0 -347
  96. package/src/installs/elmedia-player.md +0 -556
  97. package/src/installs/ffmpeg.js +0 -889
  98. package/src/installs/ffmpeg.md +0 -852
  99. package/src/installs/file.js +0 -464
  100. package/src/installs/file.md +0 -987
  101. package/src/installs/gemini-cli.js +0 -811
  102. package/src/installs/gemini-cli.md +0 -1153
  103. package/src/installs/git.js +0 -400
  104. package/src/installs/git.md +0 -907
  105. package/src/installs/gitego.js +0 -949
  106. package/src/installs/gitego.md +0 -1172
  107. package/src/installs/go.js +0 -931
  108. package/src/installs/go.md +0 -958
  109. package/src/installs/google-antigravity.js +0 -913
  110. package/src/installs/google-antigravity.md +0 -1075
  111. package/src/installs/google-chrome.js +0 -833
  112. package/src/installs/google-chrome.md +0 -862
  113. package/src/installs/gpg.js +0 -480
  114. package/src/installs/gpg.md +0 -1056
  115. package/src/installs/homebrew.js +0 -1033
  116. package/src/installs/homebrew.md +0 -988
  117. package/src/installs/imageoptim.js +0 -968
  118. package/src/installs/imageoptim.md +0 -1119
  119. package/src/installs/installers.json +0 -4032
  120. package/src/installs/installers.json.tmp +0 -3953
  121. package/src/installs/jq.js +0 -400
  122. package/src/installs/jq.md +0 -809
  123. package/src/installs/keyboard-maestro.js +0 -719
  124. package/src/installs/keyboard-maestro.md +0 -825
  125. package/src/installs/kiro.js +0 -864
  126. package/src/installs/kiro.md +0 -1015
  127. package/src/installs/latex.js +0 -789
  128. package/src/installs/latex.md +0 -1095
  129. package/src/installs/lftp.js +0 -356
  130. package/src/installs/lftp.md +0 -907
  131. package/src/installs/lsb-release.js +0 -346
  132. package/src/installs/lsb-release.md +0 -814
  133. package/src/installs/messenger.js +0 -847
  134. package/src/installs/messenger.md +0 -900
  135. package/src/installs/microsoft-office.js +0 -568
  136. package/src/installs/microsoft-office.md +0 -760
  137. package/src/installs/microsoft-teams.js +0 -801
  138. package/src/installs/microsoft-teams.md +0 -886
  139. package/src/installs/moom.js +0 -326
  140. package/src/installs/moom.md +0 -570
  141. package/src/installs/node.js +0 -904
  142. package/src/installs/node.md +0 -1153
  143. package/src/installs/nordpass.js +0 -716
  144. package/src/installs/nordpass.md +0 -921
  145. package/src/installs/nordvpn.js +0 -892
  146. package/src/installs/nordvpn.md +0 -1052
  147. package/src/installs/nvm.js +0 -995
  148. package/src/installs/nvm.md +0 -1057
  149. package/src/installs/ohmyzsh.js +0 -529
  150. package/src/installs/ohmyzsh.md +0 -1094
  151. package/src/installs/openssh.js +0 -804
  152. package/src/installs/openssh.md +0 -1056
  153. package/src/installs/pandoc.js +0 -662
  154. package/src/installs/pandoc.md +0 -1036
  155. package/src/installs/parallels-desktop.js +0 -431
  156. package/src/installs/parallels-desktop.md +0 -446
  157. package/src/installs/pinentry.js +0 -510
  158. package/src/installs/pinentry.md +0 -1142
  159. package/src/installs/pngyu.js +0 -869
  160. package/src/installs/pngyu.md +0 -896
  161. package/src/installs/postman.js +0 -799
  162. package/src/installs/postman.md +0 -940
  163. package/src/installs/procps.js +0 -425
  164. package/src/installs/procps.md +0 -851
  165. package/src/installs/safari-tech-preview.js +0 -374
  166. package/src/installs/safari-tech-preview.md +0 -533
  167. package/src/installs/sfnt2woff.js +0 -658
  168. package/src/installs/sfnt2woff.md +0 -795
  169. package/src/installs/shellcheck.js +0 -481
  170. package/src/installs/shellcheck.md +0 -1005
  171. package/src/installs/slack.js +0 -741
  172. package/src/installs/slack.md +0 -865
  173. package/src/installs/snagit.js +0 -585
  174. package/src/installs/snagit.md +0 -844
  175. package/src/installs/software-properties-common.js +0 -372
  176. package/src/installs/software-properties-common.md +0 -805
  177. package/src/installs/spotify.js +0 -877
  178. package/src/installs/spotify.md +0 -901
  179. package/src/installs/studio-3t.js +0 -823
  180. package/src/installs/studio-3t.md +0 -918
  181. package/src/installs/sublime-text.js +0 -804
  182. package/src/installs/sublime-text.md +0 -914
  183. package/src/installs/superwhisper.js +0 -706
  184. package/src/installs/superwhisper.md +0 -630
  185. package/src/installs/tailscale.js +0 -745
  186. package/src/installs/tailscale.md +0 -1100
  187. package/src/installs/tar.js +0 -389
  188. package/src/installs/tar.md +0 -946
  189. package/src/installs/termius.js +0 -798
  190. package/src/installs/termius.md +0 -844
  191. package/src/installs/terraform.js +0 -779
  192. package/src/installs/terraform.md +0 -899
  193. package/src/installs/tfenv.js +0 -778
  194. package/src/installs/tfenv.md +0 -1091
  195. package/src/installs/tidal.js +0 -771
  196. package/src/installs/tidal.md +0 -864
  197. package/src/installs/tmux.js +0 -346
  198. package/src/installs/tmux.md +0 -1030
  199. package/src/installs/tree.js +0 -411
  200. package/src/installs/tree.md +0 -833
  201. package/src/installs/unzip.js +0 -460
  202. package/src/installs/unzip.md +0 -879
  203. package/src/installs/vim.js +0 -421
  204. package/src/installs/vim.md +0 -1040
  205. package/src/installs/vlc.js +0 -821
  206. package/src/installs/vlc.md +0 -927
  207. package/src/installs/vscode.js +0 -843
  208. package/src/installs/vscode.md +0 -1002
  209. package/src/installs/wget.js +0 -420
  210. package/src/installs/wget.md +0 -791
  211. package/src/installs/whatsapp.js +0 -729
  212. package/src/installs/whatsapp.md +0 -854
  213. package/src/installs/winpty.js +0 -352
  214. package/src/installs/winpty.md +0 -620
  215. package/src/installs/woff2.js +0 -553
  216. package/src/installs/woff2.md +0 -977
  217. package/src/installs/wsl.js +0 -572
  218. package/src/installs/wsl.md +0 -699
  219. package/src/installs/xcode-clt.js +0 -520
  220. package/src/installs/xcode-clt.md +0 -351
  221. package/src/installs/xcode.js +0 -560
  222. package/src/installs/xcode.md +0 -573
  223. package/src/installs/yarn.js +0 -824
  224. package/src/installs/yarn.md +0 -1074
  225. package/src/installs/yq.js +0 -654
  226. package/src/installs/yq.md +0 -944
  227. package/src/installs/yt-dlp.js +0 -701
  228. package/src/installs/yt-dlp.md +0 -946
  229. package/src/installs/yum-utils.js +0 -297
  230. package/src/installs/yum-utils.md +0 -648
  231. package/src/installs/zoom.js +0 -759
  232. package/src/installs/zoom.md +0 -884
  233. package/src/installs/zsh.js +0 -455
  234. package/src/installs/zsh.md +0 -1008
  235. package/src/scripts/README.md +0 -617
  236. package/src/scripts/STATUS.md +0 -208
  237. package/src/scripts/afk.js +0 -411
  238. package/src/scripts/backup-all.js +0 -746
  239. package/src/scripts/backup-source.js +0 -727
  240. package/src/scripts/brewd.js +0 -389
  241. package/src/scripts/brewi.js +0 -520
  242. package/src/scripts/brewr.js +0 -527
  243. package/src/scripts/brews.js +0 -477
  244. package/src/scripts/brewu.js +0 -504
  245. package/src/scripts/c.js +0 -201
  246. package/src/scripts/ccurl.js +0 -341
  247. package/src/scripts/certbot-crontab-init.js +0 -504
  248. package/src/scripts/certbot-init.js +0 -657
  249. package/src/scripts/ch.js +0 -355
  250. package/src/scripts/claude-danger.js +0 -268
  251. package/src/scripts/clean-dev.js +0 -435
  252. package/src/scripts/clear-dns-cache.js +0 -541
  253. package/src/scripts/clone.js +0 -435
  254. package/src/scripts/code-all.js +0 -437
  255. package/src/scripts/count-files.js +0 -211
  256. package/src/scripts/count-folders.js +0 -211
  257. package/src/scripts/count.js +0 -264
  258. package/src/scripts/d.js +0 -219
  259. package/src/scripts/datauri.js +0 -389
  260. package/src/scripts/delete-files.js +0 -380
  261. package/src/scripts/docker-clean.js +0 -426
  262. package/src/scripts/dp.js +0 -442
  263. package/src/scripts/e.js +0 -390
  264. package/src/scripts/empty-trash.js +0 -513
  265. package/src/scripts/evm.js +0 -444
  266. package/src/scripts/fetch-github-repos.js +0 -456
  267. package/src/scripts/get-channel.js +0 -345
  268. package/src/scripts/get-course.js +0 -399
  269. package/src/scripts/get-dependencies.js +0 -306
  270. package/src/scripts/get-folder.js +0 -799
  271. package/src/scripts/get-tunes.js +0 -426
  272. package/src/scripts/get-video.js +0 -367
  273. package/src/scripts/git-backup.js +0 -577
  274. package/src/scripts/git-clone.js +0 -493
  275. package/src/scripts/git-pup.js +0 -319
  276. package/src/scripts/git-push.js +0 -396
  277. package/src/scripts/h.js +0 -622
  278. package/src/scripts/hide-desktop-icons.js +0 -499
  279. package/src/scripts/hide-hidden-files.js +0 -538
  280. package/src/scripts/install-dependencies-from.js +0 -456
  281. package/src/scripts/ips.js +0 -663
  282. package/src/scripts/iso.js +0 -370
  283. package/src/scripts/killni.js +0 -577
  284. package/src/scripts/ll.js +0 -467
  285. package/src/scripts/local-ip.js +0 -325
  286. package/src/scripts/m.js +0 -524
  287. package/src/scripts/map.js +0 -309
  288. package/src/scripts/mkd.js +0 -351
  289. package/src/scripts/ncu-update-all.js +0 -457
  290. package/src/scripts/nginx-init.js +0 -718
  291. package/src/scripts/npmi.js +0 -382
  292. package/src/scripts/o.js +0 -511
  293. package/src/scripts/org-by-date.js +0 -338
  294. package/src/scripts/p.js +0 -224
  295. package/src/scripts/packages.js +0 -330
  296. package/src/scripts/path.js +0 -225
  297. package/src/scripts/ports.js +0 -597
  298. package/src/scripts/q.js +0 -305
  299. package/src/scripts/refresh-files.js +0 -394
  300. package/src/scripts/remove-smaller-files.js +0 -516
  301. package/src/scripts/rename-files-with-date.js +0 -533
  302. package/src/scripts/resize-image.js +0 -539
  303. package/src/scripts/rm-safe.js +0 -669
  304. package/src/scripts/s.js +0 -540
  305. package/src/scripts/set-git-public.js +0 -365
  306. package/src/scripts/show-desktop-icons.js +0 -475
  307. package/src/scripts/show-hidden-files.js +0 -472
  308. package/src/scripts/tpa.js +0 -280
  309. package/src/scripts/tpo.js +0 -280
  310. package/src/scripts/u.js +0 -505
  311. package/src/scripts/vpush.js +0 -437
  312. package/src/scripts/y.js +0 -283
  313. package/src/utils/README.md +0 -95
  314. package/src/utils/common/apps.js +0 -143
  315. package/src/utils/common/display.js +0 -157
  316. package/src/utils/common/network.js +0 -185
  317. package/src/utils/common/os.js +0 -294
  318. package/src/utils/common/package-manager.js +0 -301
  319. package/src/utils/common/privileges.js +0 -138
  320. package/src/utils/common/shell.js +0 -216
  321. package/src/utils/macos/apps.js +0 -228
  322. package/src/utils/macos/brew.js +0 -315
  323. package/src/utils/ubuntu/apt.js +0 -307
  324. package/src/utils/ubuntu/desktop.js +0 -292
  325. package/src/utils/ubuntu/snap.js +0 -344
  326. package/src/utils/ubuntu/systemd.js +0 -286
  327. package/src/utils/windows/choco.js +0 -465
  328. package/src/utils/windows/env.js +0 -246
  329. package/src/utils/windows/registry.js +0 -269
  330. package/src/utils/windows/shell.js +0 -240
  331. package/src/utils/windows/winget.js +0 -489
@@ -1,1091 +0,0 @@
1
- # Installing tfenv (Terraform Version Manager)
2
-
3
- ## Overview
4
-
5
- tfenv is a version manager for Terraform, inspired by rbenv. It allows you to install, switch between, and manage multiple versions of Terraform on the same machine. This is essential for developers and DevOps engineers who work on projects requiring different Terraform versions, ensuring compatibility and reducing the risk of applying infrastructure changes with an incorrect Terraform binary.
6
-
7
- Key capabilities include:
8
-
9
- - **Version switching**: Easily install and switch between multiple Terraform versions
10
- - **Automatic version selection**: Use `.terraform-version` files to auto-select the correct version per project
11
- - **Hash verification**: Automatically validates downloads against HashiCorp's published SHA256 hashes
12
- - **Signature verification**: Optionally verify PGP signatures using Keybase or GnuPG
13
-
14
- **Important Platform Note**: tfenv is designed for POSIX-compliant systems (macOS, Linux, WSL). Native Windows support is experimental and limited to Git Bash with known symlink issues. For native Windows environments (PowerShell, Command Prompt), consider using Chocolatey to install specific Terraform versions directly (`choco install terraform --version=X.Y.Z -y`), or use WSL.
15
-
16
- ## Dependencies
17
-
18
- ### macOS (Homebrew)
19
- - **Required:**
20
- - Homebrew package manager - Install via `/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"` or run `dev install homebrew`
21
- - **Optional:** None
22
- - **Auto-installed:**
23
- - `grep` (GNU grep) - Installed automatically as a dependency of the tfenv formula
24
-
25
- ### Ubuntu (APT/Snap)
26
- - **Required:**
27
- - `git` - Install via `sudo apt-get install -y git`
28
- - `curl` - Install via `sudo apt-get install -y curl`
29
- - `unzip` - Install via `sudo apt-get install -y unzip`
30
- - **Optional:**
31
- - `keybase` - For PGP signature verification of Terraform downloads
32
- - `gnupg` - Alternative for PGP signature verification
33
- - **Auto-installed:** None (manual git clone installation)
34
-
35
- ### Raspberry Pi OS (APT/Snap)
36
- - **Required:**
37
- - `git` - Install via `sudo apt-get install -y git`
38
- - `curl` - Install via `sudo apt-get install -y curl`
39
- - `unzip` - Install via `sudo apt-get install -y unzip`
40
- - **Optional:**
41
- - `keybase` - For PGP signature verification of Terraform downloads
42
- - **Auto-installed:** None (manual git clone installation)
43
-
44
- ### Amazon Linux (DNF/YUM)
45
- - **Required:**
46
- - `git` - Install via `sudo dnf install -y git` (AL2023) or `sudo yum install -y git` (AL2)
47
- - `curl` - Install via `sudo dnf install -y curl` or `sudo yum install -y curl`
48
- - `unzip` - Install via `sudo dnf install -y unzip` or `sudo yum install -y unzip`
49
- - **Optional:** None
50
- - **Auto-installed:** None (manual git clone installation)
51
-
52
- ### Windows (Chocolatey/winget)
53
- - **Required:**
54
- - WSL 2 with Ubuntu - tfenv does not run natively on Windows; use WSL instead
55
- - OR Git Bash (experimental, with known limitations)
56
- - **Optional:** None
57
- - **Auto-installed:** None
58
-
59
- ### Git Bash (Manual/Portable)
60
- - **Required:**
61
- - Git Bash (comes with Git for Windows) - Download from https://git-scm.com/download/win
62
- - `unzip` - Usually included with Git Bash, or install via `choco install unzip -y` from PowerShell
63
- - **Optional:** None
64
- - **Auto-installed:** None
65
-
66
- **Note on Dependencies**: tfenv requires `git` for installation and updates, `curl` or `wget` for downloading Terraform binaries, and `unzip` for extracting them. On Unix-like systems, these are typically pre-installed or easily available through package managers.
67
-
68
- ## Prerequisites
69
-
70
- Before installing tfenv on any platform, ensure:
71
-
72
- 1. **Internet connectivity** - Required to clone the tfenv repository and download Terraform versions
73
- 2. **Terminal access** - Command line interface to run installation commands
74
- 3. **Git** - Required to clone the tfenv repository
75
- 4. **No existing tfenv or conflicting tools** - Remove any previous tfenv installations or conflicting version managers like `tenv`
76
-
77
- **Why use a version manager?** Different Terraform configurations may require different Terraform versions. Using an incompatible version can cause state file corruption, unexpected behavior, or outright failures. A version manager ensures you always use the correct version for each project.
78
-
79
- ## Platform-Specific Installation
80
-
81
- ### macOS (Homebrew)
82
-
83
- #### Prerequisites
84
-
85
- - macOS 10.15 (Catalina) or later
86
- - Homebrew package manager installed
87
- - zsh shell (default on macOS 10.15+) or bash
88
-
89
- If Homebrew is not installed, install it first:
90
-
91
- ```bash
92
- /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
93
- ```
94
-
95
- #### Installation Steps
96
-
97
- **Step 1: Install tfenv via Homebrew**
98
-
99
- ```bash
100
- brew install --quiet tfenv
101
- ```
102
-
103
- The `--quiet` flag suppresses non-essential output for automation-friendly installation. This installs tfenv version 3.0.0 (or later) from the official Homebrew formula.
104
-
105
- **Note**: If you have the conflicting `tenv` package installed, you must remove it first:
106
-
107
- ```bash
108
- brew uninstall tenv 2>/dev/null || true
109
- ```
110
-
111
- **Step 2: Verify tfenv is in your PATH**
112
-
113
- Homebrew automatically adds tfenv to your PATH. Verify by running:
114
-
115
- ```bash
116
- which tfenv
117
- ```
118
-
119
- Expected output:
120
-
121
- ```
122
- /opt/homebrew/bin/tfenv
123
- ```
124
-
125
- (On Intel Macs, the path will be `/usr/local/bin/tfenv`)
126
-
127
- #### Verification
128
-
129
- Confirm tfenv is installed correctly:
130
-
131
- ```bash
132
- tfenv --version
133
- ```
134
-
135
- Expected output (version numbers may vary):
136
-
137
- ```
138
- tfenv 3.0.0
139
- ```
140
-
141
- Test installing and using Terraform:
142
-
143
- ```bash
144
- tfenv install latest
145
- tfenv use latest
146
- terraform --version
147
- ```
148
-
149
- #### Troubleshooting
150
-
151
- **Problem**: `tfenv: command not found` after installation
152
-
153
- **Solution**: Ensure Homebrew is in your PATH. Add to your shell profile:
154
-
155
- ```bash
156
- # For Apple Silicon Macs (M1/M2/M3)
157
- eval "$(/opt/homebrew/bin/brew shellenv)"
158
-
159
- # For Intel Macs
160
- eval "$(/usr/local/bin/brew shellenv)"
161
- ```
162
-
163
- **Problem**: Conflict with tenv package
164
-
165
- **Solution**: tfenv conflicts with tenv (a multi-version manager). Remove tenv before installing tfenv:
166
-
167
- ```bash
168
- brew uninstall tenv
169
- brew install --quiet tfenv
170
- ```
171
-
172
- **Problem**: `grep: invalid option` errors when using tfenv
173
-
174
- **Solution**: tfenv requires GNU grep. Homebrew installs it as a dependency, but ensure it is available:
175
-
176
- ```bash
177
- brew install --quiet grep
178
- ```
179
-
180
- ---
181
-
182
- ### Ubuntu/Debian (APT)
183
-
184
- #### Prerequisites
185
-
186
- - Ubuntu 20.04 or later, or Debian 10 or later
187
- - sudo privileges
188
- - git, curl, and unzip installed
189
-
190
- **Note**: tfenv is not available in the official Ubuntu/Debian APT repositories. Installation is performed via git clone from the official GitHub repository.
191
-
192
- First, install required dependencies:
193
-
194
- ```bash
195
- sudo DEBIAN_FRONTEND=noninteractive apt-get update -y
196
- sudo DEBIAN_FRONTEND=noninteractive apt-get install -y git curl unzip
197
- ```
198
-
199
- #### Installation Steps
200
-
201
- **Step 1: Clone the tfenv repository**
202
-
203
- ```bash
204
- git clone --depth=1 https://github.com/tfutils/tfenv.git ~/.tfenv
205
- ```
206
-
207
- The `--depth=1` flag creates a shallow clone for faster download.
208
-
209
- **Step 2: Add tfenv to your PATH**
210
-
211
- For bash (default shell on Ubuntu):
212
-
213
- ```bash
214
- cat >> ~/.bashrc << 'EOF'
215
-
216
- # tfenv configuration
217
- export PATH="$HOME/.tfenv/bin:$PATH"
218
- EOF
219
- ```
220
-
221
- **Step 3: Reload your shell configuration**
222
-
223
- ```bash
224
- source ~/.bashrc
225
- ```
226
-
227
- **Alternative: Create symlinks to ~/.local/bin**
228
-
229
- If you prefer symlinks instead of modifying PATH:
230
-
231
- ```bash
232
- mkdir -p ~/.local/bin
233
- ln -sf ~/.tfenv/bin/* ~/.local/bin/
234
- ```
235
-
236
- This works because `~/.local/bin` is typically already in the default Ubuntu PATH.
237
-
238
- #### Verification
239
-
240
- Confirm tfenv is installed correctly:
241
-
242
- ```bash
243
- tfenv --version
244
- ```
245
-
246
- Expected output (version numbers may vary):
247
-
248
- ```
249
- tfenv 3.0.0
250
- ```
251
-
252
- Test installing and using Terraform:
253
-
254
- ```bash
255
- tfenv install latest
256
- tfenv use latest
257
- terraform --version
258
- ```
259
-
260
- #### Troubleshooting
261
-
262
- **Problem**: `tfenv: command not found` after installation
263
-
264
- **Solution**: Ensure the PATH configuration was added and the shell was reloaded:
265
-
266
- ```bash
267
- grep -q "tfenv" ~/.bashrc && echo "Config exists" || echo "Config missing"
268
- source ~/.bashrc
269
- ```
270
-
271
- If missing, manually add the configuration:
272
-
273
- ```bash
274
- echo 'export PATH="$HOME/.tfenv/bin:$PATH"' >> ~/.bashrc
275
- source ~/.bashrc
276
- ```
277
-
278
- **Problem**: `git: command not found`
279
-
280
- **Solution**: Install git:
281
-
282
- ```bash
283
- sudo DEBIAN_FRONTEND=noninteractive apt-get install -y git
284
- ```
285
-
286
- **Problem**: `unzip: command not found` when installing Terraform
287
-
288
- **Solution**: Install unzip:
289
-
290
- ```bash
291
- sudo DEBIAN_FRONTEND=noninteractive apt-get install -y unzip
292
- ```
293
-
294
- **Problem**: Permission denied errors
295
-
296
- **Solution**: tfenv should be installed as a regular user, not with sudo. If you installed with sudo, remove and reinstall:
297
-
298
- ```bash
299
- sudo rm -rf ~/.tfenv
300
- git clone --depth=1 https://github.com/tfutils/tfenv.git ~/.tfenv
301
- ```
302
-
303
- ---
304
-
305
- ### Raspberry Pi OS (APT)
306
-
307
- #### Prerequisites
308
-
309
- - Raspberry Pi OS (Bookworm, Bullseye, or Buster) - 64-bit or 32-bit
310
- - Raspberry Pi 2 or later
311
- - sudo privileges
312
- - git, curl, and unzip installed
313
-
314
- First, verify your architecture:
315
-
316
- ```bash
317
- uname -m
318
- ```
319
-
320
- - `aarch64` = 64-bit ARM (Raspberry Pi 3/4/5 with 64-bit OS) - Full support
321
- - `armv7l` = 32-bit ARM (Raspberry Pi 2/3/4 with 32-bit OS) - Full support
322
- - `armv6l` = 32-bit ARM (Raspberry Pi Zero/1) - Limited Terraform version support
323
-
324
- **Important**: tfenv automatically detects ARM architecture and downloads the appropriate Terraform binary. For 64-bit Raspberry Pi OS, it uses `linux_arm64` binaries. For 32-bit, it uses `linux_arm` binaries.
325
-
326
- Install required dependencies:
327
-
328
- ```bash
329
- sudo DEBIAN_FRONTEND=noninteractive apt-get update -y
330
- sudo DEBIAN_FRONTEND=noninteractive apt-get install -y git curl unzip
331
- ```
332
-
333
- #### Installation Steps
334
-
335
- **Step 1: Clone the tfenv repository**
336
-
337
- ```bash
338
- git clone --depth=1 https://github.com/tfutils/tfenv.git ~/.tfenv
339
- ```
340
-
341
- **Step 2: Add tfenv to your PATH**
342
-
343
- ```bash
344
- cat >> ~/.bashrc << 'EOF'
345
-
346
- # tfenv configuration
347
- export PATH="$HOME/.tfenv/bin:$PATH"
348
- EOF
349
- ```
350
-
351
- **Step 3: Reload your shell configuration**
352
-
353
- ```bash
354
- source ~/.bashrc
355
- ```
356
-
357
- #### Verification
358
-
359
- Confirm tfenv is installed correctly:
360
-
361
- ```bash
362
- tfenv --version
363
- ```
364
-
365
- Expected output:
366
-
367
- ```
368
- tfenv 3.0.0
369
- ```
370
-
371
- Test installing Terraform:
372
-
373
- ```bash
374
- tfenv install latest
375
- tfenv use latest
376
- terraform --version
377
- ```
378
-
379
- Expected output for ARM64 (version numbers may vary):
380
-
381
- ```
382
- Terraform v1.14.3
383
- on linux_arm64
384
- ```
385
-
386
- #### Troubleshooting
387
-
388
- **Problem**: `No versions matching 'X.Y.Z' for os 'linux', architecture 'arm64'`
389
-
390
- **Solution**: Some older Terraform versions do not have ARM64 binaries. For older versions, you can force AMD64 architecture (requires emulation layer):
391
-
392
- ```bash
393
- TFENV_ARCH=amd64 tfenv install 0.12.31
394
- ```
395
-
396
- However, this is not recommended for production use. Prefer using Terraform versions that have native ARM support.
397
-
398
- **Problem**: Download is very slow
399
-
400
- **Solution**: Raspberry Pi network and SD card speeds can be limiting. Use a wired ethernet connection and a high-quality SD card (Class 10 or faster), or boot from USB/SSD.
401
-
402
- **Problem**: `unzip: command not found`
403
-
404
- **Solution**: Install unzip:
405
-
406
- ```bash
407
- sudo DEBIAN_FRONTEND=noninteractive apt-get install -y unzip
408
- ```
409
-
410
- **Problem**: Out of memory during Terraform operations
411
-
412
- **Solution**: Add swap space:
413
-
414
- ```bash
415
- sudo fallocate -l 2G /swapfile
416
- sudo chmod 600 /swapfile
417
- sudo mkswap /swapfile
418
- sudo swapon /swapfile
419
- ```
420
-
421
- ---
422
-
423
- ### Amazon Linux (DNF/YUM)
424
-
425
- #### Prerequisites
426
-
427
- - Amazon Linux 2023 (AL2023) or Amazon Linux 2 (AL2)
428
- - sudo privileges (typically ec2-user on EC2 instances)
429
- - git, curl, and unzip installed
430
-
431
- This is a common setup for managing Terraform versions on AWS EC2 instances.
432
-
433
- First, install required dependencies:
434
-
435
- ```bash
436
- # For Amazon Linux 2023
437
- sudo dnf install -y git curl unzip
438
-
439
- # For Amazon Linux 2
440
- sudo yum install -y git curl unzip
441
- ```
442
-
443
- #### Installation Steps
444
-
445
- **Step 1: Clone the tfenv repository**
446
-
447
- ```bash
448
- git clone --depth=1 https://github.com/tfutils/tfenv.git ~/.tfenv
449
- ```
450
-
451
- **Step 2: Add tfenv to your PATH**
452
-
453
- ```bash
454
- cat >> ~/.bashrc << 'EOF'
455
-
456
- # tfenv configuration
457
- export PATH="$HOME/.tfenv/bin:$PATH"
458
- EOF
459
- ```
460
-
461
- **Step 3: Activate tfenv in the current session**
462
-
463
- ```bash
464
- source ~/.bashrc
465
- ```
466
-
467
- #### Verification
468
-
469
- Confirm tfenv is installed correctly:
470
-
471
- ```bash
472
- tfenv --version
473
- ```
474
-
475
- Expected output:
476
-
477
- ```
478
- tfenv 3.0.0
479
- ```
480
-
481
- Test installing and using Terraform:
482
-
483
- ```bash
484
- tfenv install latest
485
- tfenv use latest
486
- terraform --version
487
- ```
488
-
489
- Expected output (version numbers may vary):
490
-
491
- ```
492
- Terraform v1.14.3
493
- on linux_amd64
494
- ```
495
-
496
- #### Troubleshooting
497
-
498
- **Problem**: `tfenv: command not found` after running the install script
499
-
500
- **Solution**: Source your shell profile:
501
-
502
- ```bash
503
- source ~/.bashrc
504
- ```
505
-
506
- If that does not work, manually add the configuration:
507
-
508
- ```bash
509
- echo 'export PATH="$HOME/.tfenv/bin:$PATH"' >> ~/.bashrc
510
- source ~/.bashrc
511
- ```
512
-
513
- **Problem**: tfenv not available after EC2 instance restart
514
-
515
- **Solution**: tfenv is user-specific. Ensure you are logged in as the same user who installed tfenv (typically ec2-user). The installation persists across reboots but requires sourcing the shell profile.
516
-
517
- **Problem**: `git: command not found`
518
-
519
- **Solution**: Install git:
520
-
521
- ```bash
522
- # For AL2023
523
- sudo dnf install -y git
524
-
525
- # For AL2
526
- sudo yum install -y git
527
- ```
528
-
529
- **Problem**: Creating an AMI with tfenv pre-installed
530
-
531
- **Solution**: After installing tfenv and any desired Terraform versions, you can create an AMI from the instance. The AMI will include the tfenv installation. Users of the AMI will need to run `source ~/.bashrc` or start a new shell session to access tfenv.
532
-
533
- ---
534
-
535
- ### Windows (Chocolatey/winget)
536
-
537
- #### Prerequisites
538
-
539
- - Windows 10 version 2004 or higher, or Windows 11
540
- - WSL 2 enabled with Ubuntu distribution installed (recommended)
541
- - OR Git Bash (experimental, with known limitations)
542
-
543
- **Critical**: tfenv does not run natively on Windows (PowerShell or Command Prompt). Windows users must use one of these approaches:
544
-
545
- 1. **WSL 2 (Recommended)**: Install tfenv inside WSL Ubuntu - this provides full functionality
546
- 2. **Git Bash (Experimental)**: Limited support with known symlink issues
547
-
548
- For native Windows Terraform version management without WSL, use Chocolatey to install specific Terraform versions directly:
549
-
550
- ```powershell
551
- # Install a specific Terraform version on Windows
552
- choco install terraform --version=1.14.3 -y
553
-
554
- # Upgrade to a different version
555
- choco upgrade terraform --version=1.9.0 -y
556
- ```
557
-
558
- #### Installation Steps (WSL 2 - Recommended)
559
-
560
- **Step 1: Ensure WSL 2 with Ubuntu is installed**
561
-
562
- Open PowerShell as Administrator and run:
563
-
564
- ```powershell
565
- wsl --install -d Ubuntu
566
- ```
567
-
568
- Restart your computer if prompted, then set up your Ubuntu user account.
569
-
570
- **Step 2: Install tfenv inside WSL Ubuntu**
571
-
572
- Open Ubuntu from the Start menu, then run:
573
-
574
- ```bash
575
- # Install dependencies
576
- sudo DEBIAN_FRONTEND=noninteractive apt-get update -y
577
- sudo DEBIAN_FRONTEND=noninteractive apt-get install -y git curl unzip
578
-
579
- # Clone tfenv
580
- git clone --depth=1 https://github.com/tfutils/tfenv.git ~/.tfenv
581
-
582
- # Add to PATH
583
- cat >> ~/.bashrc << 'EOF'
584
-
585
- # tfenv configuration
586
- export PATH="$HOME/.tfenv/bin:$PATH"
587
- EOF
588
-
589
- # Reload shell
590
- source ~/.bashrc
591
- ```
592
-
593
- #### Verification
594
-
595
- In WSL Ubuntu terminal:
596
-
597
- ```bash
598
- tfenv --version
599
- ```
600
-
601
- Expected output:
602
-
603
- ```
604
- tfenv 3.0.0
605
- ```
606
-
607
- Test installing Terraform:
608
-
609
- ```bash
610
- tfenv install latest
611
- tfenv use latest
612
- terraform --version
613
- ```
614
-
615
- #### Troubleshooting
616
-
617
- **Problem**: tfenv works in WSL but not in Windows PowerShell
618
-
619
- **Solution**: tfenv installed in WSL is only available within WSL. For Windows terminals, use Chocolatey to install Terraform directly:
620
-
621
- ```powershell
622
- choco install terraform -y
623
- ```
624
-
625
- **Problem**: WSL not installed
626
-
627
- **Solution**: Install WSL 2 from Administrator PowerShell:
628
-
629
- ```powershell
630
- wsl --install
631
- ```
632
-
633
- **Problem**: Ubuntu not available in WSL
634
-
635
- **Solution**: Install Ubuntu distribution:
636
-
637
- ```powershell
638
- wsl --install -d Ubuntu
639
- ```
640
-
641
- ---
642
-
643
- ### WSL (Ubuntu)
644
-
645
- #### Prerequisites
646
-
647
- - Windows 10 version 2004 or higher, or Windows 11
648
- - WSL 2 enabled with Ubuntu distribution installed
649
- - sudo privileges within WSL
650
-
651
- WSL runs a full Linux environment, so tfenv installation follows the standard Linux procedure.
652
-
653
- Install required dependencies:
654
-
655
- ```bash
656
- sudo DEBIAN_FRONTEND=noninteractive apt-get update -y
657
- sudo DEBIAN_FRONTEND=noninteractive apt-get install -y git curl unzip
658
- ```
659
-
660
- #### Installation Steps
661
-
662
- **Step 1: Clone the tfenv repository**
663
-
664
- ```bash
665
- git clone --depth=1 https://github.com/tfutils/tfenv.git ~/.tfenv
666
- ```
667
-
668
- **Step 2: Add tfenv to your PATH**
669
-
670
- ```bash
671
- cat >> ~/.bashrc << 'EOF'
672
-
673
- # tfenv configuration
674
- export PATH="$HOME/.tfenv/bin:$PATH"
675
- EOF
676
- ```
677
-
678
- **Step 3: Reload your shell configuration**
679
-
680
- ```bash
681
- source ~/.bashrc
682
- ```
683
-
684
- **Step 4: Install Terraform**
685
-
686
- ```bash
687
- tfenv install latest
688
- tfenv use latest
689
- ```
690
-
691
- #### Verification
692
-
693
- Confirm tfenv is installed correctly:
694
-
695
- ```bash
696
- tfenv --version
697
- ```
698
-
699
- Expected output:
700
-
701
- ```
702
- tfenv 3.0.0
703
- ```
704
-
705
- Verify Terraform installation:
706
-
707
- ```bash
708
- terraform --version
709
- ```
710
-
711
- Expected output:
712
-
713
- ```
714
- Terraform v1.14.3
715
- on linux_amd64
716
- ```
717
-
718
- #### Troubleshooting
719
-
720
- **Problem**: `tfenv: command not found` in WSL
721
-
722
- **Solution**: The PATH was not updated. Manually add the configuration:
723
-
724
- ```bash
725
- echo 'export PATH="$HOME/.tfenv/bin:$PATH"' >> ~/.bashrc
726
- source ~/.bashrc
727
- ```
728
-
729
- **Problem**: tfenv works in WSL but not in Windows terminal
730
-
731
- **Solution**: tfenv installed in WSL is only available within WSL. For Windows terminals (PowerShell, Command Prompt), install Terraform separately using Chocolatey (see Windows section).
732
-
733
- **Problem**: Different Terraform versions in WSL vs Windows
734
-
735
- **Solution**: WSL and Windows maintain separate environments. If you need the same Terraform version in both:
736
-
737
- 1. In WSL: `tfenv install 1.14.3 && tfenv use 1.14.3`
738
- 2. In Windows: `choco install terraform --version=1.14.3 -y`
739
-
740
- **Problem**: File permission issues when accessing Windows files from WSL
741
-
742
- **Solution**: When working with files on the Windows filesystem (`/mnt/c/...`), Terraform may have permission issues. Store your Terraform configurations in the Linux filesystem (`~/projects/`) for best performance and compatibility.
743
-
744
- ---
745
-
746
- ### Git Bash (Experimental - Manual/Portable)
747
-
748
- #### Prerequisites
749
-
750
- - Windows 10 or Windows 11 (64-bit)
751
- - Git Bash installed (comes with Git for Windows)
752
- - unzip available (typically included with Git Bash)
753
-
754
- **Important Warning**: tfenv on Windows Git Bash is experimental and has known symlink issues. The tfenv maintainers note that Windows (64-bit) is "only tested in git-bash and is currently presumed failing due to symlink issues." For production use, strongly recommend using WSL instead.
755
-
756
- #### Installation Steps
757
-
758
- **Step 1: Clone the tfenv repository**
759
-
760
- Open Git Bash and run:
761
-
762
- ```bash
763
- git clone --depth=1 https://github.com/tfutils/tfenv.git ~/.tfenv
764
- ```
765
-
766
- **Step 2: Add tfenv to your PATH**
767
-
768
- ```bash
769
- cat >> ~/.bashrc << 'EOF'
770
-
771
- # tfenv configuration
772
- export PATH="$HOME/.tfenv/bin:$PATH"
773
- EOF
774
- ```
775
-
776
- **Step 3: Reload your shell configuration**
777
-
778
- ```bash
779
- source ~/.bashrc
780
- ```
781
-
782
- **Step 4: Test tfenv (may have issues)**
783
-
784
- ```bash
785
- tfenv --version
786
- ```
787
-
788
- If this works, attempt to install Terraform:
789
-
790
- ```bash
791
- tfenv install latest
792
- tfenv use latest
793
- ```
794
-
795
- #### Verification
796
-
797
- In Git Bash, confirm tfenv is accessible:
798
-
799
- ```bash
800
- tfenv --version
801
- ```
802
-
803
- Expected output (if working):
804
-
805
- ```
806
- tfenv 3.0.0
807
- ```
808
-
809
- Test Terraform:
810
-
811
- ```bash
812
- terraform --version
813
- ```
814
-
815
- #### Troubleshooting
816
-
817
- **Problem**: Symlink errors when running `tfenv use`
818
-
819
- **Solution**: This is a known limitation of tfenv on Windows Git Bash. Git Bash's MinGW environment does not fully support Unix symlinks. Workarounds include:
820
-
821
- 1. **Use WSL instead** (recommended) - Full tfenv functionality
822
- 2. **Run Git Bash as Administrator** - May help with symlink creation:
823
- Right-click Git Bash shortcut and select "Run as administrator"
824
- 3. **Enable Developer Mode in Windows** - This allows symlink creation without admin rights:
825
- Settings > Update & Security > For developers > Developer Mode
826
-
827
- **Problem**: `tfenv: command not found` in Git Bash
828
-
829
- **Solution**: Git Bash must source `~/.bashrc`. Verify the configuration:
830
-
831
- ```bash
832
- grep -q "tfenv" ~/.bashrc && echo "Config exists" || echo "Config missing"
833
- source ~/.bashrc
834
- ```
835
-
836
- **Problem**: `unzip: command not found`
837
-
838
- **Solution**: Git Bash typically includes unzip. If missing, install via Chocolatey from PowerShell (Administrator):
839
-
840
- ```powershell
841
- choco install unzip -y
842
- ```
843
-
844
- Then restart Git Bash.
845
-
846
- **Problem**: tfenv works but `terraform` command not found after `tfenv use`
847
-
848
- **Solution**: The symlink creation likely failed. Check if terraform binary exists:
849
-
850
- ```bash
851
- ls -la ~/.tfenv/versions/*/terraform.exe
852
- ```
853
-
854
- If the binary exists but symlinks failed, manually add the version directory to PATH:
855
-
856
- ```bash
857
- export PATH="$HOME/.tfenv/versions/$(tfenv version-name):$PATH"
858
- ```
859
-
860
- **Alternative for Windows Git Bash users**: If tfenv proves unreliable, use Chocolatey from PowerShell to manage Terraform versions:
861
-
862
- ```powershell
863
- # Install Terraform via Chocolatey (from Administrator PowerShell)
864
- choco install terraform -y
865
-
866
- # The terraform command will then be available in Git Bash
867
- ```
868
-
869
- ---
870
-
871
- ## Post-Installation Configuration
872
-
873
- After installing tfenv on any platform, consider these common configurations.
874
-
875
- ### Setting a Default Terraform Version
876
-
877
- Install and set a default Terraform version:
878
-
879
- ```bash
880
- # Install the latest Terraform version
881
- tfenv install latest
882
-
883
- # Set it as the default
884
- tfenv use latest
885
- ```
886
-
887
- ### Automatic Version Switching with .terraform-version
888
-
889
- Create a `.terraform-version` file in your project root to specify the Terraform version:
890
-
891
- ```bash
892
- echo "1.14.3" > .terraform-version
893
- ```
894
-
895
- When you navigate to that directory and run any terraform command, tfenv automatically uses the specified version. If the version is not installed, tfenv will install it automatically (when `TFENV_AUTO_INSTALL=true`, which is the default).
896
-
897
- Supported `.terraform-version` file values:
898
-
899
- - Exact version: `1.14.3`
900
- - Latest: `latest`
901
- - Latest matching regex: `latest:^1.9`
902
- - Latest allowed by terraform files: `latest-allowed`
903
- - Minimum required: `min-required`
904
-
905
- ### Listing Available and Installed Versions
906
-
907
- View all installed Terraform versions:
908
-
909
- ```bash
910
- tfenv list
911
- ```
912
-
913
- View all available versions for installation:
914
-
915
- ```bash
916
- tfenv list-remote
917
- ```
918
-
919
- ### Uninstalling a Terraform Version
920
-
921
- Remove a specific version:
922
-
923
- ```bash
924
- tfenv uninstall 1.9.0
925
- ```
926
-
927
- Remove the latest installed version:
928
-
929
- ```bash
930
- tfenv uninstall latest
931
- ```
932
-
933
- ### Updating tfenv
934
-
935
- Update tfenv to the latest version:
936
-
937
- ```bash
938
- git -C ~/.tfenv pull
939
- ```
940
-
941
- For Homebrew installations on macOS:
942
-
943
- ```bash
944
- brew upgrade tfenv
945
- ```
946
-
947
- ### Environment Variables
948
-
949
- tfenv supports several environment variables for customization:
950
-
951
- | Variable | Description | Default |
952
- |----------|-------------|---------|
953
- | `TFENV_ARCH` | Architecture to download (amd64, arm64) | Auto-detected |
954
- | `TFENV_AUTO_INSTALL` | Auto-install missing versions | `true` |
955
- | `TFENV_TERRAFORM_VERSION` | Override .terraform-version file | (none) |
956
- | `TFENV_CURL_OUTPUT` | Control download progress display | `0` (disabled) |
957
- | `TFENV_DEBUG` | Enable debug output (0-3 levels) | `0` |
958
- | `TFENV_REMOTE` | Custom Terraform download source | HashiCorp releases |
959
-
960
- Example using environment variables:
961
-
962
- ```bash
963
- # Force AMD64 architecture
964
- TFENV_ARCH=amd64 tfenv install 1.14.3
965
-
966
- # Install specific version without .terraform-version file
967
- TFENV_TERRAFORM_VERSION=1.9.0 terraform init
968
- ```
969
-
970
- ---
971
-
972
- ## Common Issues
973
-
974
- ### Issue: "No installed versions of terraform matched"
975
-
976
- **Symptoms**: Error when running terraform commands indicating no version is installed or selected.
977
-
978
- **Solutions**:
979
-
980
- 1. Install a Terraform version:
981
-
982
- ```bash
983
- tfenv install latest
984
- tfenv use latest
985
- ```
986
-
987
- 2. Check if a version is selected:
988
-
989
- ```bash
990
- tfenv version
991
- ```
992
-
993
- 3. Create a `.terraform-version` file in your project:
994
-
995
- ```bash
996
- echo "latest" > .terraform-version
997
- ```
998
-
999
- ### Issue: "shasum: command not found"
1000
-
1001
- **Symptoms**: Warning about missing shasum during Terraform installation.
1002
-
1003
- **Solutions**:
1004
-
1005
- - On Ubuntu/Debian: shasum is typically available; if not, install perl:
1006
-
1007
- ```bash
1008
- sudo DEBIAN_FRONTEND=noninteractive apt-get install -y perl
1009
- ```
1010
-
1011
- - On Amazon Linux:
1012
-
1013
- ```bash
1014
- sudo yum install -y perl-Digest-SHA
1015
- ```
1016
-
1017
- This is a warning only - tfenv will still install Terraform, but will skip hash verification.
1018
-
1019
- ### Issue: Version Conflicts with System Terraform
1020
-
1021
- **Symptoms**: Running `terraform --version` shows a different version than `tfenv version`.
1022
-
1023
- **Solutions**:
1024
-
1025
- - Ensure tfenv's bin directory is at the beginning of your PATH (before any system directories)
1026
- - Check for system-installed Terraform:
1027
-
1028
- ```bash
1029
- which -a terraform
1030
- ```
1031
-
1032
- - Remove system-installed Terraform or ensure `~/.tfenv/bin` comes first in PATH:
1033
-
1034
- ```bash
1035
- export PATH="$HOME/.tfenv/bin:$PATH"
1036
- ```
1037
-
1038
- ### Issue: "Permission denied" Errors
1039
-
1040
- **Symptoms**: Cannot install Terraform versions or access tfenv directory.
1041
-
1042
- **Solutions**:
1043
-
1044
- - tfenv should be installed as a regular user, not with sudo
1045
- - Fix ownership if needed:
1046
-
1047
- ```bash
1048
- sudo chown -R $USER:$USER ~/.tfenv
1049
- ```
1050
-
1051
- ### Issue: Slow Terraform Downloads
1052
-
1053
- **Symptoms**: `tfenv install` takes a long time or times out.
1054
-
1055
- **Solutions**:
1056
-
1057
- - Check internet connectivity
1058
- - For corporate networks, configure proxy:
1059
-
1060
- ```bash
1061
- export HTTP_PROXY="http://proxy.example.com:8080"
1062
- export HTTPS_PROXY="http://proxy.example.com:8080"
1063
- ```
1064
-
1065
- - Use a custom mirror with `TFENV_REMOTE` environment variable
1066
-
1067
- ### Issue: ARM64 Version Not Available
1068
-
1069
- **Symptoms**: `tfenv install` fails on ARM systems for older Terraform versions.
1070
-
1071
- **Solutions**:
1072
-
1073
- - Use a Terraform version that supports ARM64 (1.0.0 and later have good ARM support)
1074
- - Force AMD64 architecture (not recommended for production):
1075
-
1076
- ```bash
1077
- TFENV_ARCH=amd64 tfenv install 0.12.31
1078
- ```
1079
-
1080
- ---
1081
-
1082
- ## References
1083
-
1084
- - [tfenv Official GitHub Repository](https://github.com/tfutils/tfenv)
1085
- - [tfenv Homebrew Formula](https://formulae.brew.sh/formula/tfenv)
1086
- - [HashiCorp Terraform Downloads](https://releases.hashicorp.com/terraform/)
1087
- - [Installing tfenv on Ubuntu](https://brain2life.hashnode.dev/how-to-install-tfenv-terraform-version-manager-on-ubuntu-os)
1088
- - [Installing tfenv with WSL2 on Windows](https://medium.com/azure-terraformer/installing-and-using-tfenv-with-wsl2-on-windows-2f5d442e0ca6)
1089
- - [How to Use tfenv to Manage Multiple Terraform Versions (Spacelift)](https://spacelift.io/blog/tfenv)
1090
- - [Manage Multiple Terraform Versions with tfenv (Opensource.com)](https://opensource.com/article/20/11/tfenv)
1091
- - [tfenv ARM64 Support Issue Discussion](https://github.com/tfutils/tfenv/issues/337)