@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.
Files changed (259) hide show
  1. package/README.md +5 -5
  2. package/package.json +1 -1
  3. package/src/commands/install.js +374 -36
  4. package/src/installs/adobe-creative-cloud.js +527 -25
  5. package/src/installs/adobe-creative-cloud.md +605 -0
  6. package/src/installs/appcleaner.js +303 -26
  7. package/src/installs/appcleaner.md +699 -0
  8. package/src/installs/apt-transport-https.js +390 -0
  9. package/src/installs/apt-transport-https.md +678 -0
  10. package/src/installs/atomicparsley.js +624 -26
  11. package/src/installs/atomicparsley.md +795 -0
  12. package/src/installs/aws-cli.js +779 -26
  13. package/src/installs/aws-cli.md +727 -0
  14. package/src/installs/balena-etcher.js +688 -26
  15. package/src/installs/balena-etcher.md +761 -0
  16. package/src/installs/bambu-studio.js +912 -26
  17. package/src/installs/bambu-studio.md +780 -0
  18. package/src/installs/bash-completion.js +554 -23
  19. package/src/installs/bash-completion.md +833 -0
  20. package/src/installs/bash.js +399 -26
  21. package/src/installs/bash.md +993 -0
  22. package/src/installs/beyond-compare.js +585 -26
  23. package/src/installs/beyond-compare.md +813 -0
  24. package/src/installs/build-essential.js +511 -26
  25. package/src/installs/build-essential.md +977 -0
  26. package/src/installs/ca-certificates.js +618 -0
  27. package/src/installs/ca-certificates.md +937 -0
  28. package/src/installs/caffeine.js +490 -26
  29. package/src/installs/caffeine.md +839 -0
  30. package/src/installs/camtasia.js +577 -25
  31. package/src/installs/camtasia.md +762 -0
  32. package/src/installs/chatgpt.js +458 -26
  33. package/src/installs/chatgpt.md +814 -0
  34. package/src/installs/chocolatey.js +447 -0
  35. package/src/installs/chocolatey.md +661 -0
  36. package/src/installs/chrome-canary.js +472 -26
  37. package/src/installs/chrome-canary.md +641 -0
  38. package/src/installs/chromium.js +645 -26
  39. package/src/installs/chromium.md +838 -0
  40. package/src/installs/claude-code.js +558 -26
  41. package/src/installs/claude-code.md +1173 -0
  42. package/src/installs/curl.js +361 -26
  43. package/src/installs/curl.md +714 -0
  44. package/src/installs/cursor.js +561 -26
  45. package/src/installs/cursor.md +970 -0
  46. package/src/installs/dbschema.js +674 -26
  47. package/src/installs/dbschema.md +925 -0
  48. package/src/installs/dependencies.md +435 -0
  49. package/src/installs/development-tools.js +600 -0
  50. package/src/installs/development-tools.md +977 -0
  51. package/src/installs/docker.js +1010 -25
  52. package/src/installs/docker.md +1109 -0
  53. package/src/installs/drawio.js +1001 -26
  54. package/src/installs/drawio.md +795 -0
  55. package/src/installs/elmedia-player.js +328 -25
  56. package/src/installs/elmedia-player.md +556 -0
  57. package/src/installs/ffmpeg.js +870 -25
  58. package/src/installs/ffmpeg.md +852 -0
  59. package/src/installs/file.js +464 -0
  60. package/src/installs/file.md +987 -0
  61. package/src/installs/gemini-cli.js +793 -26
  62. package/src/installs/gemini-cli.md +1153 -0
  63. package/src/installs/git.js +382 -26
  64. package/src/installs/git.md +907 -0
  65. package/src/installs/gitego.js +931 -26
  66. package/src/installs/gitego.md +1172 -0
  67. package/src/installs/go.js +913 -26
  68. package/src/installs/go.md +958 -0
  69. package/src/installs/google-chrome.js +801 -25
  70. package/src/installs/google-chrome.md +862 -0
  71. package/src/installs/gpg.js +412 -73
  72. package/src/installs/gpg.md +1056 -0
  73. package/src/installs/homebrew.js +1015 -26
  74. package/src/installs/homebrew.md +988 -0
  75. package/src/installs/imageoptim.js +950 -26
  76. package/src/installs/imageoptim.md +1119 -0
  77. package/src/installs/installers.json +2297 -0
  78. package/src/installs/jq.js +382 -26
  79. package/src/installs/jq.md +809 -0
  80. package/src/installs/keyboard-maestro.js +701 -26
  81. package/src/installs/keyboard-maestro.md +825 -0
  82. package/src/installs/latex.js +771 -26
  83. package/src/installs/latex.md +1095 -0
  84. package/src/installs/lftp.js +338 -26
  85. package/src/installs/lftp.md +907 -0
  86. package/src/installs/lsb-release.js +346 -0
  87. package/src/installs/lsb-release.md +814 -0
  88. package/src/installs/messenger.js +829 -26
  89. package/src/installs/messenger.md +900 -0
  90. package/src/installs/microsoft-office.js +550 -26
  91. package/src/installs/microsoft-office.md +760 -0
  92. package/src/installs/microsoft-teams.js +782 -25
  93. package/src/installs/microsoft-teams.md +886 -0
  94. package/src/installs/node.js +886 -26
  95. package/src/installs/node.md +1153 -0
  96. package/src/installs/nordpass.js +698 -26
  97. package/src/installs/nordpass.md +921 -0
  98. package/src/installs/nvm.js +977 -26
  99. package/src/installs/nvm.md +1057 -0
  100. package/src/installs/openssh.js +734 -64
  101. package/src/installs/openssh.md +1056 -0
  102. package/src/installs/pandoc.js +644 -26
  103. package/src/installs/pandoc.md +1036 -0
  104. package/src/installs/pinentry.js +492 -26
  105. package/src/installs/pinentry.md +1142 -0
  106. package/src/installs/pngyu.js +851 -26
  107. package/src/installs/pngyu.md +896 -0
  108. package/src/installs/postman.js +781 -26
  109. package/src/installs/postman.md +940 -0
  110. package/src/installs/procps.js +425 -0
  111. package/src/installs/procps.md +851 -0
  112. package/src/installs/safari-tech-preview.js +355 -25
  113. package/src/installs/safari-tech-preview.md +533 -0
  114. package/src/installs/sfnt2woff.js +640 -26
  115. package/src/installs/sfnt2woff.md +795 -0
  116. package/src/installs/shellcheck.js +463 -26
  117. package/src/installs/shellcheck.md +1005 -0
  118. package/src/installs/slack.js +722 -25
  119. package/src/installs/slack.md +865 -0
  120. package/src/installs/snagit.js +566 -25
  121. package/src/installs/snagit.md +844 -0
  122. package/src/installs/software-properties-common.js +372 -0
  123. package/src/installs/software-properties-common.md +805 -0
  124. package/src/installs/spotify.js +858 -25
  125. package/src/installs/spotify.md +901 -0
  126. package/src/installs/studio-3t.js +803 -26
  127. package/src/installs/studio-3t.md +918 -0
  128. package/src/installs/sublime-text.js +780 -25
  129. package/src/installs/sublime-text.md +914 -0
  130. package/src/installs/superwhisper.js +687 -25
  131. package/src/installs/superwhisper.md +630 -0
  132. package/src/installs/tailscale.js +727 -26
  133. package/src/installs/tailscale.md +1100 -0
  134. package/src/installs/tar.js +389 -0
  135. package/src/installs/tar.md +946 -0
  136. package/src/installs/termius.js +780 -26
  137. package/src/installs/termius.md +844 -0
  138. package/src/installs/terraform.js +761 -26
  139. package/src/installs/terraform.md +899 -0
  140. package/src/installs/tidal.js +752 -25
  141. package/src/installs/tidal.md +864 -0
  142. package/src/installs/tmux.js +328 -26
  143. package/src/installs/tmux.md +1030 -0
  144. package/src/installs/tree.js +393 -26
  145. package/src/installs/tree.md +833 -0
  146. package/src/installs/unzip.js +460 -0
  147. package/src/installs/unzip.md +879 -0
  148. package/src/installs/vim.js +403 -26
  149. package/src/installs/vim.md +1040 -0
  150. package/src/installs/vlc.js +803 -26
  151. package/src/installs/vlc.md +927 -0
  152. package/src/installs/vscode.js +825 -26
  153. package/src/installs/vscode.md +1002 -0
  154. package/src/installs/wget.js +415 -0
  155. package/src/installs/wget.md +791 -0
  156. package/src/installs/whatsapp.js +710 -25
  157. package/src/installs/whatsapp.md +854 -0
  158. package/src/installs/winpty.js +352 -0
  159. package/src/installs/winpty.md +620 -0
  160. package/src/installs/woff2.js +535 -26
  161. package/src/installs/woff2.md +977 -0
  162. package/src/installs/wsl.js +572 -0
  163. package/src/installs/wsl.md +699 -0
  164. package/src/installs/xcode-clt.js +520 -0
  165. package/src/installs/xcode-clt.md +351 -0
  166. package/src/installs/xcode.js +542 -26
  167. package/src/installs/xcode.md +573 -0
  168. package/src/installs/yarn.js +806 -26
  169. package/src/installs/yarn.md +1074 -0
  170. package/src/installs/yq.js +636 -26
  171. package/src/installs/yq.md +944 -0
  172. package/src/installs/yt-dlp.js +683 -26
  173. package/src/installs/yt-dlp.md +946 -0
  174. package/src/installs/yum-utils.js +297 -0
  175. package/src/installs/yum-utils.md +648 -0
  176. package/src/installs/zoom.js +740 -25
  177. package/src/installs/zoom.md +884 -0
  178. package/src/scripts/README.md +567 -45
  179. package/src/scripts/STATUS.md +208 -0
  180. package/src/scripts/afk.js +395 -7
  181. package/src/scripts/backup-all.js +731 -9
  182. package/src/scripts/backup-source.js +711 -8
  183. package/src/scripts/brewd.js +373 -7
  184. package/src/scripts/brewi.js +505 -9
  185. package/src/scripts/brewr.js +512 -9
  186. package/src/scripts/brews.js +462 -9
  187. package/src/scripts/brewu.js +488 -7
  188. package/src/scripts/c.js +185 -7
  189. package/src/scripts/ccurl.js +325 -8
  190. package/src/scripts/certbot-crontab-init.js +488 -8
  191. package/src/scripts/certbot-init.js +641 -9
  192. package/src/scripts/ch.js +339 -7
  193. package/src/scripts/claude-danger.js +253 -8
  194. package/src/scripts/clean-dev.js +419 -8
  195. package/src/scripts/clear-dns-cache.js +525 -7
  196. package/src/scripts/clone.js +417 -7
  197. package/src/scripts/code-all.js +420 -7
  198. package/src/scripts/count-files.js +195 -8
  199. package/src/scripts/count-folders.js +195 -8
  200. package/src/scripts/count.js +248 -8
  201. package/src/scripts/d.js +203 -7
  202. package/src/scripts/datauri.js +373 -8
  203. package/src/scripts/delete-files.js +363 -7
  204. package/src/scripts/docker-clean.js +410 -8
  205. package/src/scripts/dp.js +426 -7
  206. package/src/scripts/e.js +375 -9
  207. package/src/scripts/empty-trash.js +497 -7
  208. package/src/scripts/evm.js +428 -9
  209. package/src/scripts/fetch-github-repos.js +441 -10
  210. package/src/scripts/get-channel.js +329 -8
  211. package/src/scripts/get-course.js +384 -11
  212. package/src/scripts/get-dependencies.js +290 -9
  213. package/src/scripts/get-folder.js +783 -10
  214. package/src/scripts/get-tunes.js +411 -10
  215. package/src/scripts/get-video.js +352 -9
  216. package/src/scripts/git-backup.js +561 -9
  217. package/src/scripts/git-clone.js +477 -9
  218. package/src/scripts/git-pup.js +303 -7
  219. package/src/scripts/git-push.js +380 -8
  220. package/src/scripts/h.js +607 -9
  221. package/src/scripts/hide-desktop-icons.js +483 -7
  222. package/src/scripts/hide-hidden-files.js +522 -7
  223. package/src/scripts/install-dependencies-from.js +440 -9
  224. package/src/scripts/ips.js +647 -10
  225. package/src/scripts/iso.js +354 -8
  226. package/src/scripts/killni.js +561 -7
  227. package/src/scripts/ll.js +451 -8
  228. package/src/scripts/local-ip.js +310 -8
  229. package/src/scripts/m.js +508 -8
  230. package/src/scripts/map.js +293 -8
  231. package/src/scripts/mkd.js +287 -7
  232. package/src/scripts/ncu-update-all.js +441 -8
  233. package/src/scripts/nginx-init.js +702 -12
  234. package/src/scripts/npmi.js +366 -7
  235. package/src/scripts/o.js +495 -8
  236. package/src/scripts/org-by-date.js +321 -7
  237. package/src/scripts/p.js +208 -7
  238. package/src/scripts/packages.js +313 -8
  239. package/src/scripts/path.js +209 -7
  240. package/src/scripts/ports.js +582 -8
  241. package/src/scripts/q.js +290 -8
  242. package/src/scripts/refresh-files.js +378 -10
  243. package/src/scripts/remove-smaller-files.js +500 -8
  244. package/src/scripts/rename-files-with-date.js +517 -9
  245. package/src/scripts/resize-image.js +523 -9
  246. package/src/scripts/rm-safe.js +653 -8
  247. package/src/scripts/s.js +525 -9
  248. package/src/scripts/set-git-public.js +349 -7
  249. package/src/scripts/show-desktop-icons.js +459 -7
  250. package/src/scripts/show-hidden-files.js +456 -7
  251. package/src/scripts/tpa.js +265 -8
  252. package/src/scripts/tpo.js +264 -7
  253. package/src/scripts/u.js +489 -7
  254. package/src/scripts/vpush.js +422 -8
  255. package/src/scripts/y.js +267 -7
  256. package/src/utils/common/os.js +94 -2
  257. package/src/utils/ubuntu/apt.js +13 -7
  258. package/src/utils/windows/choco.js +82 -26
  259. package/src/utils/windows/winget.js +89 -27
@@ -0,0 +1,946 @@
1
+ # Installing tar
2
+
3
+ ## Overview
4
+
5
+ tar (tape archive) is a command-line utility for creating, extracting, and manipulating archive files. Originally designed for writing data to sequential I/O devices (tape drives), tar has become the standard archiving tool on Unix-like systems. It bundles multiple files and directories into a single archive file while preserving file permissions, ownership, and directory structures.
6
+
7
+ tar is essential for:
8
+ - Creating backups of files and directories
9
+ - Distributing software source code (the ubiquitous `.tar.gz` "tarball" format)
10
+ - Packaging files for transfer across systems
11
+ - Combining with compression tools (gzip, bzip2, xz) for space-efficient archives
12
+
13
+ Two major implementations exist:
14
+ - **GNU tar** - The default on most Linux distributions; feature-rich with GNU extensions
15
+ - **BSD tar (bsdtar)** - The default on macOS and FreeBSD; uses the libarchive library
16
+
17
+ This guide documents tar installation procedures for all platforms supported by DevUtils CLI.
18
+
19
+ ## Dependencies
20
+
21
+ ### macOS (Homebrew)
22
+ - **Required:**
23
+ - `homebrew` - Install via `/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"` or run `dev install homebrew`
24
+ - **Optional:** None
25
+ - **Auto-installed:** None
26
+ - **Note:** macOS includes BSD tar pre-installed at `/usr/bin/tar`. Homebrew installs GNU tar as `gtar` to avoid conflicts.
27
+
28
+ ### Ubuntu (APT/Snap)
29
+ - **Required:** None (APT package manager is pre-installed on Ubuntu)
30
+ - **Optional:** None
31
+ - **Auto-installed:** None
32
+ - **Note:** tar (GNU tar) is pre-installed on all Ubuntu systems as part of the base system.
33
+
34
+ ### Raspberry Pi OS (APT/Snap)
35
+ - **Required:** None (APT package manager is pre-installed on Raspberry Pi OS)
36
+ - **Optional:** None
37
+ - **Auto-installed:** None
38
+ - **Note:** tar (GNU tar) is pre-installed on all Raspberry Pi OS systems as part of the base system.
39
+
40
+ ### Amazon Linux (DNF/YUM)
41
+ - **Required:** None (DNF/YUM package manager is pre-installed on Amazon Linux)
42
+ - **Optional:** None
43
+ - **Auto-installed:** None
44
+ - **Note:** tar (GNU tar) is pre-installed on all Amazon Linux systems as part of the base system.
45
+
46
+ ### Windows (Chocolatey/winget)
47
+ - **Required:** None
48
+ - **Optional:**
49
+ - `chocolatey` - For installing GNU tar tools if needed
50
+ - **Auto-installed:** None
51
+ - **Note:** Windows 10 (version 1803+) and Windows 11 include bsdtar pre-installed at `C:\Windows\System32\tar.exe`.
52
+
53
+ ### Git Bash (Manual/Portable)
54
+ - **Required:**
55
+ - `git` - Git for Windows must be installed (GNU tar is bundled with it). Download from https://git-scm.com/download/win or install via `choco install git -y`
56
+ - **Optional:** None
57
+ - **Auto-installed:** None
58
+ - **Note:** Git Bash includes GNU tar at `C:\Program Files\Git\usr\bin\tar.exe`.
59
+
60
+ ## Prerequisites
61
+
62
+ Before installing or verifying tar on any platform, ensure:
63
+
64
+ 1. **Terminal access** - Required to run commands
65
+ 2. **Administrative privileges** - Required for installation (sudo on Linux/macOS, Administrator on Windows)
66
+ 3. **Internet connectivity** - Required only if tar is not pre-installed
67
+
68
+ **Note**: tar is pre-installed on most operating systems. The installation steps below verify tar availability and install it only if missing.
69
+
70
+ ## Platform-Specific Installation
71
+
72
+ ### macOS (Homebrew)
73
+
74
+ #### Prerequisites
75
+
76
+ - macOS 10.15 (Catalina) or later (macOS 14 Sonoma or later recommended)
77
+ - Homebrew package manager installed
78
+ - Terminal access via Terminal.app or iTerm2
79
+
80
+ macOS includes BSD tar pre-installed at `/usr/bin/tar`. This version works well for most use cases. However, if you need GNU tar (for compatibility with Linux systems or specific GNU extensions), install it via Homebrew.
81
+
82
+ If Homebrew is not installed, install it first:
83
+
84
+ ```bash
85
+ /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
86
+ ```
87
+
88
+ #### Installation Steps
89
+
90
+ **Check if tar is already available (BSD tar is pre-installed on macOS):**
91
+
92
+ ```bash
93
+ tar --version
94
+ ```
95
+
96
+ Expected output showing BSD tar:
97
+
98
+ ```
99
+ bsdtar 3.5.3 - libarchive 3.5.3 zlib/1.2.11 liblzma/5.0.5 bz2lib/1.0.8
100
+ ```
101
+
102
+ **To install GNU tar via Homebrew:**
103
+
104
+ ```bash
105
+ brew install --quiet gnu-tar
106
+ ```
107
+
108
+ The `--quiet` flag suppresses non-essential output, making the command suitable for automation scripts.
109
+
110
+ GNU tar is installed with the `g` prefix as `gtar` to avoid conflicts with the system BSD tar. To use GNU tar as the default `tar` command, add the gnubin directory to your PATH:
111
+
112
+ **For Apple Silicon Macs (M1/M2/M3):**
113
+
114
+ ```bash
115
+ echo 'export PATH="/opt/homebrew/opt/gnu-tar/libexec/gnubin:$PATH"' >> ~/.zshrc && source ~/.zshrc
116
+ ```
117
+
118
+ **For Intel Macs:**
119
+
120
+ ```bash
121
+ echo 'export PATH="/usr/local/opt/gnu-tar/libexec/gnubin:$PATH"' >> ~/.zshrc && source ~/.zshrc
122
+ ```
123
+
124
+ #### Verification
125
+
126
+ Verify BSD tar (pre-installed):
127
+
128
+ ```bash
129
+ /usr/bin/tar --version
130
+ ```
131
+
132
+ Verify GNU tar after Homebrew installation:
133
+
134
+ ```bash
135
+ gtar --version
136
+ ```
137
+
138
+ Expected output (version numbers may vary):
139
+
140
+ ```
141
+ tar (GNU tar) 1.35
142
+ Copyright (C) 2023 Free Software Foundation, Inc.
143
+ License GPLv3+: GNU GPL version 3 or later <https://gnu.org/licenses/gpl.html>.
144
+ This is free software: you are free to change and redistribute it.
145
+ There is NO WARRANTY, to the extent permitted by law.
146
+
147
+ Written by John Gilmore and Jay Fenlason.
148
+ ```
149
+
150
+ If you added gnubin to PATH, verify `tar` points to GNU tar:
151
+
152
+ ```bash
153
+ which tar
154
+ tar --version
155
+ ```
156
+
157
+ Expected output for Apple Silicon (after PATH modification):
158
+
159
+ ```
160
+ /opt/homebrew/opt/gnu-tar/libexec/gnubin/tar
161
+ tar (GNU tar) 1.35
162
+ ```
163
+
164
+ #### Troubleshooting
165
+
166
+ **Problem**: `gtar: command not found` after installation
167
+
168
+ **Solution**: Restart your terminal or source your shell configuration:
169
+
170
+ ```bash
171
+ source ~/.zshrc
172
+ ```
173
+
174
+ **Problem**: `tar` still shows BSD tar after adding gnubin to PATH
175
+
176
+ **Solution**: Ensure the gnubin path is added before the system paths. Check your PATH:
177
+
178
+ ```bash
179
+ echo $PATH
180
+ ```
181
+
182
+ The Homebrew gnubin directory should appear before `/usr/bin`. Restart your terminal after modifying `~/.zshrc`.
183
+
184
+ **Problem**: Archive created on macOS has issues on Linux
185
+
186
+ **Solution**: BSD tar stores extended attributes by default, which may cause issues on Linux. Use these flags when creating archives for cross-platform use:
187
+
188
+ ```bash
189
+ tar --disable-copyfile -cvf archive.tar directory/
190
+ ```
191
+
192
+ Or use GNU tar (`gtar`) for maximum Linux compatibility.
193
+
194
+ ---
195
+
196
+ ### Ubuntu/Debian (APT)
197
+
198
+ #### Prerequisites
199
+
200
+ - Ubuntu 18.04 LTS or later, or Debian 10 (Buster) or later
201
+ - sudo privileges
202
+ - Internet connectivity (only if tar is not installed)
203
+
204
+ GNU tar is pre-installed on all Ubuntu and Debian systems as part of the core utilities. The steps below verify tar is present and install it if missing.
205
+
206
+ #### Installation Steps
207
+
208
+ **Check if tar is already installed (it should be):**
209
+
210
+ ```bash
211
+ tar --version
212
+ ```
213
+
214
+ Expected output (version numbers may vary):
215
+
216
+ ```
217
+ tar (GNU tar) 1.34
218
+ Copyright (C) 2021 Free Software Foundation, Inc.
219
+ License GPLv3+: GNU GPL version 3 or later <https://gnu.org/licenses/gpl.html>.
220
+ This is free software: you are free to change and redistribute it.
221
+ There is NO WARRANTY, to the extent permitted by law.
222
+
223
+ Written by John Gilmore and Jay Fenlason.
224
+ ```
225
+
226
+ **If tar is not installed (rare), install it:**
227
+
228
+ ```bash
229
+ sudo DEBIAN_FRONTEND=noninteractive apt-get update -y && sudo DEBIAN_FRONTEND=noninteractive apt-get install -y tar
230
+ ```
231
+
232
+ The `DEBIAN_FRONTEND=noninteractive` environment variable and `-y` flag ensure fully automated installation without prompts.
233
+
234
+ #### Verification
235
+
236
+ Confirm tar is available:
237
+
238
+ ```bash
239
+ tar --version
240
+ ```
241
+
242
+ Verify the installation location:
243
+
244
+ ```bash
245
+ which tar
246
+ ```
247
+
248
+ Expected output:
249
+
250
+ ```
251
+ /usr/bin/tar
252
+ ```
253
+
254
+ Test creating and extracting an archive:
255
+
256
+ ```bash
257
+ echo "test" > /tmp/testfile.txt
258
+ tar -cvf /tmp/test.tar -C /tmp testfile.txt
259
+ tar -tvf /tmp/test.tar
260
+ rm /tmp/testfile.txt /tmp/test.tar
261
+ ```
262
+
263
+ #### Troubleshooting
264
+
265
+ **Problem**: `tar: command not found`
266
+
267
+ **Solution**: Install tar using APT:
268
+
269
+ ```bash
270
+ sudo DEBIAN_FRONTEND=noninteractive apt-get update -y && sudo DEBIAN_FRONTEND=noninteractive apt-get install -y tar
271
+ ```
272
+
273
+ **Problem**: `E: Unable to locate package tar`
274
+
275
+ **Solution**: Update the package list:
276
+
277
+ ```bash
278
+ sudo DEBIAN_FRONTEND=noninteractive apt-get update -y
279
+ ```
280
+
281
+ **Problem**: Permission denied when extracting files
282
+
283
+ **Solution**: Use sudo when extracting to system directories:
284
+
285
+ ```bash
286
+ sudo tar -xvf archive.tar -C /destination
287
+ ```
288
+
289
+ ---
290
+
291
+ ### Raspberry Pi OS (APT)
292
+
293
+ #### Prerequisites
294
+
295
+ - Raspberry Pi OS (Bookworm or Bullseye recommended)
296
+ - Raspberry Pi 2 or later (any model supported by Raspberry Pi OS)
297
+ - sudo privileges
298
+ - Internet connectivity (only if tar is not installed)
299
+
300
+ Raspberry Pi OS is based on Debian, so tar installation follows the Debian/APT method. GNU tar is pre-installed on all Raspberry Pi OS installations.
301
+
302
+ #### Installation Steps
303
+
304
+ First, verify your architecture:
305
+
306
+ ```bash
307
+ uname -m
308
+ ```
309
+
310
+ - `aarch64` = 64-bit ARM
311
+ - `armv7l` = 32-bit ARM
312
+
313
+ **Check if tar is already installed (it should be):**
314
+
315
+ ```bash
316
+ tar --version
317
+ ```
318
+
319
+ Expected output (version numbers may vary):
320
+
321
+ ```
322
+ tar (GNU tar) 1.34
323
+ Copyright (C) 2021 Free Software Foundation, Inc.
324
+ License GPLv3+: GNU GPL version 3 or later <https://gnu.org/licenses/gpl.html>.
325
+ This is free software: you are free to change and redistribute it.
326
+ There is NO WARRANTY, to the extent permitted by law.
327
+
328
+ Written by John Gilmore and Jay Fenlason.
329
+ ```
330
+
331
+ **If tar is not installed (rare), install it:**
332
+
333
+ ```bash
334
+ sudo DEBIAN_FRONTEND=noninteractive apt-get update -y && sudo DEBIAN_FRONTEND=noninteractive apt-get install -y tar
335
+ ```
336
+
337
+ The installation command is identical for both 32-bit and 64-bit Raspberry Pi OS.
338
+
339
+ #### Verification
340
+
341
+ Confirm tar is available:
342
+
343
+ ```bash
344
+ tar --version
345
+ ```
346
+
347
+ Verify the installation location:
348
+
349
+ ```bash
350
+ which tar
351
+ ```
352
+
353
+ Expected output:
354
+
355
+ ```
356
+ /usr/bin/tar
357
+ ```
358
+
359
+ #### Troubleshooting
360
+
361
+ **Problem**: `tar: command not found`
362
+
363
+ **Solution**: Install tar using APT:
364
+
365
+ ```bash
366
+ sudo DEBIAN_FRONTEND=noninteractive apt-get update -y && sudo DEBIAN_FRONTEND=noninteractive apt-get install -y tar
367
+ ```
368
+
369
+ **Problem**: Extraction is slow on SD card
370
+
371
+ **Solution**: SD cards have limited I/O performance. For better extraction performance, use a high-quality SD card (Class 10 or A1/A2 rated) or boot from USB/SSD.
372
+
373
+ **Problem**: "No space left on device" when extracting
374
+
375
+ **Solution**: Check available disk space before extraction:
376
+
377
+ ```bash
378
+ df -h
379
+ ```
380
+
381
+ Clear space if needed:
382
+
383
+ ```bash
384
+ sudo DEBIAN_FRONTEND=noninteractive apt-get autoremove -y
385
+ sudo DEBIAN_FRONTEND=noninteractive apt-get clean
386
+ ```
387
+
388
+ ---
389
+
390
+ ### Amazon Linux (DNF/YUM)
391
+
392
+ #### Prerequisites
393
+
394
+ - Amazon Linux 2023 (AL2023) or Amazon Linux 2 (AL2)
395
+ - sudo privileges
396
+ - EC2 instance or compatible environment
397
+
398
+ Amazon Linux 2023 uses DNF as the default package manager. Amazon Linux 2 uses YUM. GNU tar is pre-installed on all Amazon Linux versions as part of the base system.
399
+
400
+ **Important**: Amazon Linux 2 reaches end of support on June 30, 2026. Migrate to Amazon Linux 2023 for long-term support.
401
+
402
+ #### Installation Steps
403
+
404
+ **Check if tar is already installed (it should be):**
405
+
406
+ ```bash
407
+ tar --version
408
+ ```
409
+
410
+ Expected output (version numbers may vary):
411
+
412
+ ```
413
+ tar (GNU tar) 1.34
414
+ Copyright (C) 2021 Free Software Foundation, Inc.
415
+ License GPLv3+: GNU GPL version 3 or later <https://gnu.org/licenses/gpl.html>.
416
+ This is free software: you are free to change and redistribute it.
417
+ There is NO WARRANTY, to the extent permitted by law.
418
+
419
+ Written by John Gilmore and Jay Fenlason.
420
+ ```
421
+
422
+ **If tar is not installed (rare), install it:**
423
+
424
+ **For Amazon Linux 2023 (AL2023):**
425
+
426
+ ```bash
427
+ sudo dnf install -y tar
428
+ ```
429
+
430
+ **For Amazon Linux 2 (AL2):**
431
+
432
+ ```bash
433
+ sudo yum install -y tar
434
+ ```
435
+
436
+ The `-y` flag automatically confirms installation, enabling non-interactive execution.
437
+
438
+ #### Verification
439
+
440
+ Confirm tar is available:
441
+
442
+ ```bash
443
+ tar --version
444
+ ```
445
+
446
+ Verify the installation location:
447
+
448
+ ```bash
449
+ which tar
450
+ ```
451
+
452
+ Expected output:
453
+
454
+ ```
455
+ /usr/bin/tar
456
+ ```
457
+
458
+ Get package information:
459
+
460
+ ```bash
461
+ rpm -q tar
462
+ ```
463
+
464
+ Expected output (version may vary):
465
+
466
+ ```
467
+ tar-1.34-1.amzn2023.x86_64
468
+ ```
469
+
470
+ #### Troubleshooting
471
+
472
+ **Problem**: `tar: command not found`
473
+
474
+ **Solution**: Install tar using DNF or YUM:
475
+
476
+ ```bash
477
+ # For AL2023
478
+ sudo dnf install -y tar
479
+
480
+ # For AL2
481
+ sudo yum install -y tar
482
+ ```
483
+
484
+ **Problem**: `No match for argument: tar`
485
+
486
+ **Solution**: Update the package cache and retry:
487
+
488
+ ```bash
489
+ # For AL2023
490
+ sudo dnf makecache
491
+ sudo dnf install -y tar
492
+
493
+ # For AL2
494
+ sudo yum makecache
495
+ sudo yum install -y tar
496
+ ```
497
+
498
+ **Problem**: Cannot find a valid baseurl for repo
499
+
500
+ **Solution**: Check network connectivity and repository configuration:
501
+
502
+ ```bash
503
+ # For AL2023
504
+ sudo dnf check-update
505
+
506
+ # For AL2
507
+ sudo yum check-update
508
+ ```
509
+
510
+ ---
511
+
512
+ ### Windows (Chocolatey/winget)
513
+
514
+ #### Prerequisites
515
+
516
+ - Windows 10 version 1803 or later, or Windows 11
517
+ - Administrator PowerShell or Command Prompt
518
+
519
+ Windows 10 (version 1803+) and Windows 11 include bsdtar pre-installed at `C:\Windows\System32\tar.exe`. This built-in tar supports common operations and is suitable for most use cases. No additional installation is required.
520
+
521
+ #### Installation Steps
522
+
523
+ **Verify tar is already available (it should be on Windows 10 1803+):**
524
+
525
+ Open Command Prompt or PowerShell and run:
526
+
527
+ ```powershell
528
+ tar --version
529
+ ```
530
+
531
+ Expected output:
532
+
533
+ ```
534
+ bsdtar 3.5.2 - libarchive 3.5.2 zlib/1.2.11 bz2lib/1.0.8 liblzma/5.2.4
535
+ ```
536
+
537
+ **Alternative: Using Chocolatey for additional tar tools**
538
+
539
+ If you need specialized tar functionality, TarTool is available via Chocolatey. First, ensure Chocolatey is installed by running this command in an Administrator PowerShell:
540
+
541
+ ```powershell
542
+ 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'))
543
+ ```
544
+
545
+ Install TarTool:
546
+
547
+ ```powershell
548
+ choco install tartool -y
549
+ ```
550
+
551
+ The `-y` flag automatically confirms all prompts, enabling fully non-interactive installation.
552
+
553
+ **Alternative: Using winget for GNU tar**
554
+
555
+ ```powershell
556
+ winget install --id GnuWin32.Tar --silent --accept-package-agreements --accept-source-agreements
557
+ ```
558
+
559
+ #### Verification
560
+
561
+ Verify the built-in tar:
562
+
563
+ ```powershell
564
+ tar --version
565
+ where tar
566
+ ```
567
+
568
+ Expected output:
569
+
570
+ ```
571
+ bsdtar 3.5.2 - libarchive 3.5.2 zlib/1.2.11 bz2lib/1.0.8 liblzma/5.2.4
572
+ C:\Windows\System32\tar.exe
573
+ ```
574
+
575
+ Test creating and extracting an archive:
576
+
577
+ ```powershell
578
+ echo "test" > testfile.txt
579
+ tar -cvf test.tar testfile.txt
580
+ tar -tvf test.tar
581
+ del testfile.txt test.tar
582
+ ```
583
+
584
+ #### Troubleshooting
585
+
586
+ **Problem**: `'tar' is not recognized as an internal or external command`
587
+
588
+ **Solution**: Ensure you are on Windows 10 version 1803 or later. Check your Windows version:
589
+
590
+ ```powershell
591
+ winver
592
+ ```
593
+
594
+ If you are on an older version, install tar via Chocolatey or winget as shown above.
595
+
596
+ **Problem**: tar fails with "Cannot read: Invalid argument"
597
+
598
+ **Solution**: Windows bsdtar may have issues with certain path formats. Use forward slashes in paths:
599
+
600
+ ```powershell
601
+ tar -cvf archive.tar path/to/files
602
+ ```
603
+
604
+ **Problem**: Non-Latin characters in filenames cause issues
605
+
606
+ **Solution**: The Windows built-in bsdtar has known issues with Unicode characters in paths. Consider using 7-Zip or GNU tar from Git Bash for archives with non-ASCII filenames.
607
+
608
+ ---
609
+
610
+ ### WSL (Ubuntu)
611
+
612
+ #### Prerequisites
613
+
614
+ - Windows 10 version 2004 or higher, or Windows 11
615
+ - WSL 2 enabled with Ubuntu distribution installed
616
+ - sudo privileges within WSL
617
+
618
+ WSL runs Ubuntu (or another Linux distribution) within Windows. GNU tar is pre-installed in WSL Ubuntu distributions.
619
+
620
+ #### Installation Steps
621
+
622
+ Open your WSL Ubuntu terminal and verify tar is installed:
623
+
624
+ ```bash
625
+ tar --version
626
+ ```
627
+
628
+ Expected output (version numbers may vary):
629
+
630
+ ```
631
+ tar (GNU tar) 1.34
632
+ Copyright (C) 2021 Free Software Foundation, Inc.
633
+ License GPLv3+: GNU GPL version 3 or later <https://gnu.org/licenses/gpl.html>.
634
+ This is free software: you are free to change and redistribute it.
635
+ There is NO WARRANTY, to the extent permitted by law.
636
+
637
+ Written by John Gilmore and Jay Fenlason.
638
+ ```
639
+
640
+ **If tar is not installed (rare), install it:**
641
+
642
+ ```bash
643
+ sudo DEBIAN_FRONTEND=noninteractive apt-get update -y && sudo DEBIAN_FRONTEND=noninteractive apt-get install -y tar
644
+ ```
645
+
646
+ #### Verification
647
+
648
+ Confirm tar is available:
649
+
650
+ ```bash
651
+ tar --version
652
+ which tar
653
+ ```
654
+
655
+ Expected output:
656
+
657
+ ```
658
+ tar (GNU tar) 1.34
659
+ /usr/bin/tar
660
+ ```
661
+
662
+ #### Troubleshooting
663
+
664
+ **Problem**: tar shows different behavior in WSL vs Windows
665
+
666
+ **Solution**: WSL uses GNU tar while Windows uses bsdtar. They have slightly different behaviors. Use WSL tar for Linux-compatible archives and Windows tar for Windows-specific use cases.
667
+
668
+ **Problem**: Extracting archives from Windows filesystem is slow
669
+
670
+ **Solution**: Store archives on the Linux filesystem (e.g., `/home/username`) for best performance. Accessing Windows files via `/mnt/c` has I/O overhead.
671
+
672
+ **Problem**: Permission issues when extracting to Windows drives
673
+
674
+ **Solution**: The Windows filesystem does not support Unix permissions. Extract to the Linux filesystem first, or use the `--no-same-owner` flag:
675
+
676
+ ```bash
677
+ tar --no-same-owner -xvf archive.tar -C /mnt/c/destination
678
+ ```
679
+
680
+ ---
681
+
682
+ ### Git Bash (Windows)
683
+
684
+ #### Prerequisites
685
+
686
+ - Windows 10 or Windows 11
687
+ - Git for Windows installed (Git Bash is bundled with it)
688
+
689
+ Git Bash includes GNU tar bundled at `C:\Program Files\Git\usr\bin\tar.exe`. This is separate from the Windows built-in bsdtar. When running commands in Git Bash, the GNU tar takes precedence due to PATH ordering.
690
+
691
+ #### Installation Steps
692
+
693
+ Git for Windows includes GNU tar by default. If Git for Windows is not installed:
694
+
695
+ **Install via Chocolatey (recommended):**
696
+
697
+ ```powershell
698
+ choco install git -y
699
+ ```
700
+
701
+ The `-y` flag automatically confirms all prompts, enabling non-interactive installation.
702
+
703
+ **Or download from the official website:**
704
+
705
+ Download from https://git-scm.com/download/win and run the installer.
706
+
707
+ After installation, launch Git Bash from the Start Menu.
708
+
709
+ #### Verification
710
+
711
+ Open Git Bash and run:
712
+
713
+ ```bash
714
+ tar --version
715
+ ```
716
+
717
+ Expected output (version numbers may vary):
718
+
719
+ ```
720
+ tar (GNU tar) 1.35
721
+ Copyright (C) 2023 Free Software Foundation, Inc.
722
+ License GPLv3+: GNU GPL version 3 or later <https://gnu.org/licenses/gpl.html>.
723
+ This is free software: you are free to change and redistribute it.
724
+ There is NO WARRANTY, to the extent permitted by law.
725
+
726
+ Written by John Gilmore and Jay Fenlason.
727
+ ```
728
+
729
+ Verify the location:
730
+
731
+ ```bash
732
+ which tar
733
+ ```
734
+
735
+ Expected output:
736
+
737
+ ```
738
+ /usr/bin/tar
739
+ ```
740
+
741
+ This corresponds to `C:\Program Files\Git\usr\bin\tar.exe` on the Windows filesystem.
742
+
743
+ #### Troubleshooting
744
+
745
+ **Problem**: tar command fails with Windows-style paths
746
+
747
+ **Solution**: Git Bash tar requires Unix-style paths. Convert Windows paths:
748
+
749
+ ```bash
750
+ # WRONG - will fail
751
+ tar -cvf C:\Users\name\archive.tar files/
752
+
753
+ # CORRECT - use Unix-style paths
754
+ tar -cvf /c/Users/name/archive.tar files/
755
+ ```
756
+
757
+ **Problem**: Archive paths contain mixed slashes
758
+
759
+ **Solution**: Git Bash automatically converts paths, which can cause issues. Set `MSYS_NO_PATHCONV` to prevent path conversion:
760
+
761
+ ```bash
762
+ MSYS_NO_PATHCONV=1 tar -cvf archive.tar files/
763
+ ```
764
+
765
+ **Problem**: `tar: command not found`
766
+
767
+ **Solution**: Git for Windows may not be installed or the Git usr/bin is not in PATH. Reinstall Git for Windows from https://git-scm.com/download/win or via Chocolatey:
768
+
769
+ ```powershell
770
+ choco install git -y
771
+ ```
772
+
773
+ **Problem**: Conflict between Git Bash tar and Windows tar
774
+
775
+ **Solution**: Git Bash places its tar first in PATH. To explicitly use Windows tar, use the full path:
776
+
777
+ ```bash
778
+ /c/Windows/System32/tar.exe --version
779
+ ```
780
+
781
+ ---
782
+
783
+ ## Post-Installation Configuration
784
+
785
+ tar works out of the box with no configuration required. The following tips help with common use cases:
786
+
787
+ ### Common tar Commands
788
+
789
+ **Create a compressed archive (.tar.gz):**
790
+
791
+ ```bash
792
+ tar -czvf archive.tar.gz directory/
793
+ ```
794
+
795
+ **Extract a compressed archive:**
796
+
797
+ ```bash
798
+ tar -xzvf archive.tar.gz
799
+ ```
800
+
801
+ **List contents of an archive:**
802
+
803
+ ```bash
804
+ tar -tvf archive.tar.gz
805
+ ```
806
+
807
+ **Extract to a specific directory:**
808
+
809
+ ```bash
810
+ tar -xzvf archive.tar.gz -C /destination/path
811
+ ```
812
+
813
+ ### Understanding tar Flags
814
+
815
+ | Flag | Meaning |
816
+ |------|---------|
817
+ | `-c` | Create a new archive |
818
+ | `-x` | Extract files from an archive |
819
+ | `-t` | List the contents of an archive |
820
+ | `-v` | Verbose output (show files being processed) |
821
+ | `-f` | Specify the archive filename |
822
+ | `-z` | Filter through gzip (for .tar.gz files) |
823
+ | `-j` | Filter through bzip2 (for .tar.bz2 files) |
824
+ | `-J` | Filter through xz (for .tar.xz files) |
825
+ | `-C` | Change to directory before operation |
826
+
827
+ ### Cross-Platform Compatibility
828
+
829
+ When creating archives that will be used across different operating systems:
830
+
831
+ **On macOS (for Linux compatibility):**
832
+
833
+ ```bash
834
+ tar --disable-copyfile -cvf archive.tar directory/
835
+ ```
836
+
837
+ Or use GNU tar:
838
+
839
+ ```bash
840
+ gtar -cvf archive.tar directory/
841
+ ```
842
+
843
+ **On Linux (standard):**
844
+
845
+ ```bash
846
+ tar -cvf archive.tar directory/
847
+ ```
848
+
849
+ **On Windows Git Bash:**
850
+
851
+ ```bash
852
+ tar -cvf archive.tar directory/
853
+ ```
854
+
855
+ ---
856
+
857
+ ## Common Issues
858
+
859
+ ### Issue: "tar: Removing leading '/' from member names"
860
+
861
+ **Symptoms**: Warning message when creating archives with absolute paths
862
+
863
+ **Solution**: This is expected behavior, not an error. tar strips leading slashes to prevent extracting files to absolute paths (security feature). To preserve absolute paths (not recommended):
864
+
865
+ ```bash
866
+ tar -cvPf archive.tar /absolute/path
867
+ ```
868
+
869
+ ### Issue: Archive created on macOS fails to extract on Linux
870
+
871
+ **Symptoms**: Errors about extended attributes or unknown headers
872
+
873
+ **Solution**: macOS BSD tar includes Apple-specific metadata. Create archives without extended attributes:
874
+
875
+ ```bash
876
+ tar --disable-copyfile --no-xattrs -cvf archive.tar directory/
877
+ ```
878
+
879
+ Or install and use GNU tar on macOS:
880
+
881
+ ```bash
882
+ brew install --quiet gnu-tar
883
+ gtar -cvf archive.tar directory/
884
+ ```
885
+
886
+ ### Issue: "tar: Error is not recoverable: exiting now"
887
+
888
+ **Symptoms**: tar exits with error during extraction
889
+
890
+ **Solution**: The archive may be corrupted or truncated. Verify the archive:
891
+
892
+ ```bash
893
+ gzip -t archive.tar.gz
894
+ ```
895
+
896
+ If the archive is valid, try extracting with verbose output to identify the problematic file:
897
+
898
+ ```bash
899
+ tar -xzvf archive.tar.gz
900
+ ```
901
+
902
+ ### Issue: Permission denied when extracting
903
+
904
+ **Symptoms**: `tar: Cannot open: Permission denied`
905
+
906
+ **Solution**: Use sudo for extracting to system directories, or extract as the file owner:
907
+
908
+ ```bash
909
+ sudo tar -xvf archive.tar -C /destination
910
+ ```
911
+
912
+ Or extract without preserving ownership:
913
+
914
+ ```bash
915
+ tar --no-same-owner -xvf archive.tar
916
+ ```
917
+
918
+ ### Issue: Filename too long
919
+
920
+ **Symptoms**: `tar: file name is too long`
921
+
922
+ **Solution**: This occurs with older tar formats. Use the POSIX pax format:
923
+
924
+ ```bash
925
+ tar --format=posix -cvf archive.tar directory/
926
+ ```
927
+
928
+ ### Issue: Symlinks not extracted correctly on Windows
929
+
930
+ **Symptoms**: Symlinks become regular files or fail to extract
931
+
932
+ **Solution**: Windows has limited symlink support. Run Git Bash as Administrator for symlink creation, or extract using WSL instead.
933
+
934
+ ---
935
+
936
+ ## References
937
+
938
+ - [GNU tar Official Documentation](https://www.gnu.org/software/tar/manual/)
939
+ - [GNU tar Manual](https://www.gnu.org/software/tar/manual/tar.html)
940
+ - [BSD tar (libarchive) Documentation](https://www.libarchive.org/)
941
+ - [Homebrew gnu-tar Formula](https://formulae.brew.sh/formula/gnu-tar)
942
+ - [Differences Between BSD tar and GNU tar (Baeldung)](https://www.baeldung.com/linux/bsd-tar-gnu-tar-star)
943
+ - [Microsoft: Tar and Curl Come to Windows](https://devblogs.microsoft.com/commandline/tar-and-curl-come-to-windows/)
944
+ - [Ubuntu tar Manual Page](https://manpages.ubuntu.com/manpages/jammy/man1/tar.1.html)
945
+ - [Chocolatey TarTool Package](https://community.chocolatey.org/packages/tartool)
946
+ - [winget GnuWin32.Tar Package](https://winget.run/pkg/GnuWin32/Tar)