@fredlackey/devutils 0.0.18 → 0.1.0

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 (447) hide show
  1. package/README.md +214 -141
  2. package/package.json +8 -83
  3. package/src/api/loader.js +229 -0
  4. package/src/api/registry.json +62 -0
  5. package/src/cli.js +293 -60
  6. package/src/commands/ai/index.js +16 -0
  7. package/src/commands/ai/launch.js +112 -0
  8. package/src/commands/ai/list.js +54 -0
  9. package/src/commands/ai/resume.js +70 -0
  10. package/src/commands/ai/sessions.js +121 -0
  11. package/src/commands/ai/set.js +131 -0
  12. package/src/commands/ai/show.js +74 -0
  13. package/src/commands/ai/tools.js +46 -0
  14. package/src/commands/alias/add.js +93 -0
  15. package/src/commands/alias/helpers.js +107 -0
  16. package/src/commands/alias/index.js +14 -0
  17. package/src/commands/alias/list.js +55 -0
  18. package/src/commands/alias/remove.js +62 -0
  19. package/src/commands/alias/sync.js +109 -0
  20. package/src/commands/api/disable.js +73 -0
  21. package/src/commands/api/enable.js +148 -0
  22. package/src/commands/api/index.js +15 -0
  23. package/src/commands/api/list.js +66 -0
  24. package/src/commands/api/update.js +87 -0
  25. package/src/commands/auth/index.js +15 -0
  26. package/src/commands/auth/list.js +49 -0
  27. package/src/commands/auth/login.js +384 -0
  28. package/src/commands/auth/logout.js +111 -0
  29. package/src/commands/auth/refresh.js +184 -0
  30. package/src/commands/auth/services.js +169 -0
  31. package/src/commands/auth/status.js +104 -0
  32. package/src/commands/config/export.js +224 -0
  33. package/src/commands/config/get.js +52 -0
  34. package/src/commands/config/import.js +308 -0
  35. package/src/commands/config/index.js +17 -0
  36. package/src/commands/config/init.js +143 -0
  37. package/src/commands/config/reset.js +57 -0
  38. package/src/commands/config/set.js +93 -0
  39. package/src/commands/config/show.js +35 -0
  40. package/src/commands/help.js +338 -0
  41. package/src/commands/identity/add.js +133 -0
  42. package/src/commands/identity/index.js +17 -0
  43. package/src/commands/identity/link.js +76 -0
  44. package/src/commands/identity/list.js +48 -0
  45. package/src/commands/identity/remove.js +72 -0
  46. package/src/commands/identity/show.js +65 -0
  47. package/src/commands/identity/sync.js +172 -0
  48. package/src/commands/identity/unlink.js +57 -0
  49. package/src/commands/ignore/add.js +165 -0
  50. package/src/commands/ignore/index.js +14 -0
  51. package/src/commands/ignore/list.js +89 -0
  52. package/src/commands/ignore/markers.js +43 -0
  53. package/src/commands/ignore/remove.js +164 -0
  54. package/src/commands/ignore/show.js +169 -0
  55. package/src/commands/machine/detect.js +122 -0
  56. package/src/commands/machine/index.js +14 -0
  57. package/src/commands/machine/list.js +74 -0
  58. package/src/commands/machine/set.js +106 -0
  59. package/src/commands/machine/show.js +35 -0
  60. package/src/commands/schema.js +152 -0
  61. package/src/commands/search/collections.js +134 -0
  62. package/src/commands/search/get.js +71 -0
  63. package/src/commands/search/index-cmd.js +54 -0
  64. package/src/commands/search/index.js +21 -0
  65. package/src/commands/search/keyword.js +60 -0
  66. package/src/commands/search/qmd.js +70 -0
  67. package/src/commands/search/query.js +64 -0
  68. package/src/commands/search/semantic.js +62 -0
  69. package/src/commands/search/status.js +46 -0
  70. package/src/commands/status.js +224 -171
  71. package/src/commands/tools/check.js +79 -0
  72. package/src/commands/tools/index.js +14 -0
  73. package/src/commands/tools/install.js +110 -0
  74. package/src/commands/tools/list.js +91 -0
  75. package/src/commands/tools/search.js +60 -0
  76. package/src/commands/update.js +83 -112
  77. package/src/commands/util/add.js +151 -0
  78. package/src/commands/util/index.js +15 -0
  79. package/src/commands/util/list.js +97 -0
  80. package/src/commands/util/remove.js +76 -0
  81. package/src/commands/util/run.js +79 -0
  82. package/src/commands/util/show.js +67 -0
  83. package/src/commands/version.js +21 -88
  84. package/src/installers/_template.js +104 -0
  85. package/src/installers/git.js +150 -0
  86. package/src/installers/homebrew.js +190 -0
  87. package/src/installers/node.js +223 -0
  88. package/src/installers/registry.json +29 -0
  89. package/src/lib/config.js +125 -0
  90. package/src/lib/detect.js +74 -0
  91. package/src/lib/errors.js +114 -0
  92. package/src/lib/github.js +315 -0
  93. package/src/lib/installer.js +225 -0
  94. package/src/lib/output.js +239 -0
  95. package/src/lib/platform.js +112 -0
  96. package/src/lib/platforms/amazon-linux.js +41 -0
  97. package/src/lib/platforms/gitbash.js +46 -0
  98. package/src/lib/platforms/macos.js +45 -0
  99. package/src/lib/platforms/raspbian.js +41 -0
  100. package/src/lib/platforms/ubuntu.js +39 -0
  101. package/src/lib/platforms/windows.js +45 -0
  102. package/src/lib/prompt.js +161 -0
  103. package/src/lib/schema.js +211 -0
  104. package/src/lib/shell.js +75 -0
  105. package/src/patterns/gitignore/claude-code.txt +25 -0
  106. package/src/patterns/gitignore/docker.txt +15 -0
  107. package/src/patterns/gitignore/go.txt +24 -0
  108. package/src/patterns/gitignore/java.txt +38 -0
  109. package/src/patterns/gitignore/jetbrains.txt +26 -0
  110. package/src/patterns/gitignore/linux.txt +18 -0
  111. package/src/patterns/gitignore/macos.txt +27 -0
  112. package/src/patterns/gitignore/node.txt +51 -0
  113. package/src/patterns/gitignore/python.txt +55 -0
  114. package/src/patterns/gitignore/rust.txt +14 -0
  115. package/src/patterns/gitignore/terraform.txt +30 -0
  116. package/src/patterns/gitignore/vscode.txt +15 -0
  117. package/src/patterns/gitignore/windows.txt +25 -0
  118. package/src/utils/clone/index.js +165 -0
  119. package/src/utils/git-push/index.js +230 -0
  120. package/src/utils/git-status/index.js +116 -0
  121. package/src/utils/git-status/unix.sh +75 -0
  122. package/src/utils/registry.json +41 -0
  123. package/bin/dev.js +0 -16
  124. package/files/README.md +0 -0
  125. package/files/claude/.claude/commands/setup-context.md +0 -3
  126. package/files/monorepos/_archive/README.md +0 -36
  127. package/files/monorepos/_legacy/README.md +0 -36
  128. package/files/monorepos/ai-docs/README.md +0 -33
  129. package/files/monorepos/apps/README.md +0 -24
  130. package/files/monorepos/docs/README.md +0 -40
  131. package/files/monorepos/packages/README.md +0 -25
  132. package/files/monorepos/research/README.md +0 -29
  133. package/files/monorepos/scripts/README.md +0 -24
  134. package/src/commands/README.md +0 -41
  135. package/src/commands/configure.js +0 -199
  136. package/src/commands/identity.js +0 -1630
  137. package/src/commands/ignore.js +0 -247
  138. package/src/commands/install.js +0 -526
  139. package/src/commands/setup.js +0 -246
  140. package/src/completion.js +0 -284
  141. package/src/constants.js +0 -45
  142. package/src/ignore/claude-code.txt +0 -10
  143. package/src/ignore/docker.txt +0 -18
  144. package/src/ignore/linux.txt +0 -23
  145. package/src/ignore/macos.txt +0 -36
  146. package/src/ignore/node.txt +0 -55
  147. package/src/ignore/terraform.txt +0 -37
  148. package/src/ignore/vscode.txt +0 -18
  149. package/src/ignore/windows.txt +0 -35
  150. package/src/index.js +0 -0
  151. package/src/installs/README.md +0 -399
  152. package/src/installs/adobe-creative-cloud.js +0 -546
  153. package/src/installs/adobe-creative-cloud.md +0 -605
  154. package/src/installs/appcleaner.js +0 -321
  155. package/src/installs/appcleaner.md +0 -699
  156. package/src/installs/apt-transport-https.js +0 -390
  157. package/src/installs/apt-transport-https.md +0 -678
  158. package/src/installs/atomicparsley.js +0 -642
  159. package/src/installs/atomicparsley.md +0 -795
  160. package/src/installs/aws-cli.js +0 -797
  161. package/src/installs/aws-cli.md +0 -727
  162. package/src/installs/balena-etcher.js +0 -710
  163. package/src/installs/balena-etcher.md +0 -761
  164. package/src/installs/bambu-studio.js +0 -1143
  165. package/src/installs/bambu-studio.md +0 -780
  166. package/src/installs/bash-completion.js +0 -575
  167. package/src/installs/bash-completion.md +0 -833
  168. package/src/installs/bash.js +0 -417
  169. package/src/installs/bash.md +0 -993
  170. package/src/installs/beyond-compare.js +0 -603
  171. package/src/installs/beyond-compare.md +0 -813
  172. package/src/installs/brave-browser.js +0 -968
  173. package/src/installs/brave-browser.md +0 -650
  174. package/src/installs/build-essential.js +0 -529
  175. package/src/installs/build-essential.md +0 -977
  176. package/src/installs/ca-certificates.js +0 -618
  177. package/src/installs/ca-certificates.md +0 -937
  178. package/src/installs/caffeine.js +0 -508
  179. package/src/installs/caffeine.md +0 -839
  180. package/src/installs/camtasia.js +0 -596
  181. package/src/installs/camtasia.md +0 -762
  182. package/src/installs/chatgpt.js +0 -476
  183. package/src/installs/chatgpt.md +0 -814
  184. package/src/installs/chocolatey.js +0 -456
  185. package/src/installs/chocolatey.md +0 -661
  186. package/src/installs/chrome-canary.js +0 -419
  187. package/src/installs/chrome-canary.md +0 -641
  188. package/src/installs/chromium.js +0 -667
  189. package/src/installs/chromium.md +0 -838
  190. package/src/installs/claude-code.js +0 -576
  191. package/src/installs/claude-code.md +0 -1173
  192. package/src/installs/cloudflare-warp.js +0 -900
  193. package/src/installs/cloudflare-warp.md +0 -1047
  194. package/src/installs/comet-browser.js +0 -588
  195. package/src/installs/comet-browser.md +0 -731
  196. package/src/installs/curl.js +0 -379
  197. package/src/installs/curl.md +0 -714
  198. package/src/installs/cursor.js +0 -579
  199. package/src/installs/cursor.md +0 -970
  200. package/src/installs/dbeaver.js +0 -924
  201. package/src/installs/dbeaver.md +0 -939
  202. package/src/installs/dbschema.js +0 -692
  203. package/src/installs/dbschema.md +0 -925
  204. package/src/installs/dependencies.md +0 -453
  205. package/src/installs/development-tools.js +0 -600
  206. package/src/installs/development-tools.md +0 -977
  207. package/src/installs/docker.js +0 -1029
  208. package/src/installs/docker.md +0 -1109
  209. package/src/installs/drawio.js +0 -1019
  210. package/src/installs/drawio.md +0 -795
  211. package/src/installs/elmedia-player.js +0 -347
  212. package/src/installs/elmedia-player.md +0 -556
  213. package/src/installs/ffmpeg.js +0 -889
  214. package/src/installs/ffmpeg.md +0 -852
  215. package/src/installs/file.js +0 -464
  216. package/src/installs/file.md +0 -987
  217. package/src/installs/gemini-cli.js +0 -811
  218. package/src/installs/gemini-cli.md +0 -1153
  219. package/src/installs/git.js +0 -400
  220. package/src/installs/git.md +0 -907
  221. package/src/installs/gitego.js +0 -949
  222. package/src/installs/gitego.md +0 -1172
  223. package/src/installs/go.js +0 -931
  224. package/src/installs/go.md +0 -958
  225. package/src/installs/google-antigravity.js +0 -913
  226. package/src/installs/google-antigravity.md +0 -1075
  227. package/src/installs/google-chrome.js +0 -833
  228. package/src/installs/google-chrome.md +0 -862
  229. package/src/installs/gpg.js +0 -480
  230. package/src/installs/gpg.md +0 -1056
  231. package/src/installs/homebrew.js +0 -1028
  232. package/src/installs/homebrew.md +0 -988
  233. package/src/installs/imageoptim.js +0 -968
  234. package/src/installs/imageoptim.md +0 -1119
  235. package/src/installs/installers.json +0 -4032
  236. package/src/installs/installers.json.tmp +0 -3953
  237. package/src/installs/jq.js +0 -400
  238. package/src/installs/jq.md +0 -809
  239. package/src/installs/keyboard-maestro.js +0 -719
  240. package/src/installs/keyboard-maestro.md +0 -825
  241. package/src/installs/kiro.js +0 -864
  242. package/src/installs/kiro.md +0 -1015
  243. package/src/installs/latex.js +0 -789
  244. package/src/installs/latex.md +0 -1095
  245. package/src/installs/lftp.js +0 -356
  246. package/src/installs/lftp.md +0 -907
  247. package/src/installs/lsb-release.js +0 -346
  248. package/src/installs/lsb-release.md +0 -814
  249. package/src/installs/messenger.js +0 -847
  250. package/src/installs/messenger.md +0 -900
  251. package/src/installs/microsoft-office.js +0 -568
  252. package/src/installs/microsoft-office.md +0 -760
  253. package/src/installs/microsoft-teams.js +0 -801
  254. package/src/installs/microsoft-teams.md +0 -886
  255. package/src/installs/moom.js +0 -326
  256. package/src/installs/moom.md +0 -570
  257. package/src/installs/node.js +0 -904
  258. package/src/installs/node.md +0 -1153
  259. package/src/installs/nordpass.js +0 -716
  260. package/src/installs/nordpass.md +0 -921
  261. package/src/installs/nordvpn.js +0 -892
  262. package/src/installs/nordvpn.md +0 -1052
  263. package/src/installs/nvm.js +0 -995
  264. package/src/installs/nvm.md +0 -1057
  265. package/src/installs/ohmyzsh.js +0 -529
  266. package/src/installs/ohmyzsh.md +0 -1094
  267. package/src/installs/openssh.js +0 -804
  268. package/src/installs/openssh.md +0 -1056
  269. package/src/installs/pandoc.js +0 -662
  270. package/src/installs/pandoc.md +0 -1036
  271. package/src/installs/parallels-desktop.js +0 -431
  272. package/src/installs/parallels-desktop.md +0 -446
  273. package/src/installs/pinentry.js +0 -510
  274. package/src/installs/pinentry.md +0 -1142
  275. package/src/installs/pngyu.js +0 -869
  276. package/src/installs/pngyu.md +0 -896
  277. package/src/installs/postman.js +0 -799
  278. package/src/installs/postman.md +0 -940
  279. package/src/installs/procps.js +0 -425
  280. package/src/installs/procps.md +0 -851
  281. package/src/installs/safari-tech-preview.js +0 -374
  282. package/src/installs/safari-tech-preview.md +0 -533
  283. package/src/installs/sfnt2woff.js +0 -658
  284. package/src/installs/sfnt2woff.md +0 -795
  285. package/src/installs/shellcheck.js +0 -481
  286. package/src/installs/shellcheck.md +0 -1005
  287. package/src/installs/slack.js +0 -741
  288. package/src/installs/slack.md +0 -865
  289. package/src/installs/snagit.js +0 -585
  290. package/src/installs/snagit.md +0 -844
  291. package/src/installs/software-properties-common.js +0 -372
  292. package/src/installs/software-properties-common.md +0 -805
  293. package/src/installs/spotify.js +0 -877
  294. package/src/installs/spotify.md +0 -901
  295. package/src/installs/studio-3t.js +0 -823
  296. package/src/installs/studio-3t.md +0 -918
  297. package/src/installs/sublime-text.js +0 -804
  298. package/src/installs/sublime-text.md +0 -914
  299. package/src/installs/superwhisper.js +0 -706
  300. package/src/installs/superwhisper.md +0 -630
  301. package/src/installs/tailscale.js +0 -745
  302. package/src/installs/tailscale.md +0 -1100
  303. package/src/installs/tar.js +0 -389
  304. package/src/installs/tar.md +0 -946
  305. package/src/installs/termius.js +0 -798
  306. package/src/installs/termius.md +0 -844
  307. package/src/installs/terraform.js +0 -779
  308. package/src/installs/terraform.md +0 -899
  309. package/src/installs/tfenv.js +0 -778
  310. package/src/installs/tfenv.md +0 -1091
  311. package/src/installs/tidal.js +0 -771
  312. package/src/installs/tidal.md +0 -864
  313. package/src/installs/tmux.js +0 -346
  314. package/src/installs/tmux.md +0 -1030
  315. package/src/installs/tree.js +0 -411
  316. package/src/installs/tree.md +0 -833
  317. package/src/installs/unzip.js +0 -460
  318. package/src/installs/unzip.md +0 -879
  319. package/src/installs/vim.js +0 -421
  320. package/src/installs/vim.md +0 -1040
  321. package/src/installs/vlc.js +0 -821
  322. package/src/installs/vlc.md +0 -927
  323. package/src/installs/vscode.js +0 -843
  324. package/src/installs/vscode.md +0 -1002
  325. package/src/installs/wget.js +0 -420
  326. package/src/installs/wget.md +0 -791
  327. package/src/installs/whatsapp.js +0 -729
  328. package/src/installs/whatsapp.md +0 -854
  329. package/src/installs/winpty.js +0 -352
  330. package/src/installs/winpty.md +0 -620
  331. package/src/installs/woff2.js +0 -553
  332. package/src/installs/woff2.md +0 -977
  333. package/src/installs/wsl.js +0 -572
  334. package/src/installs/wsl.md +0 -699
  335. package/src/installs/xcode-clt.js +0 -520
  336. package/src/installs/xcode-clt.md +0 -351
  337. package/src/installs/xcode.js +0 -560
  338. package/src/installs/xcode.md +0 -573
  339. package/src/installs/yarn.js +0 -824
  340. package/src/installs/yarn.md +0 -1074
  341. package/src/installs/yq.js +0 -654
  342. package/src/installs/yq.md +0 -944
  343. package/src/installs/yt-dlp.js +0 -701
  344. package/src/installs/yt-dlp.md +0 -946
  345. package/src/installs/yum-utils.js +0 -297
  346. package/src/installs/yum-utils.md +0 -648
  347. package/src/installs/zoom.js +0 -759
  348. package/src/installs/zoom.md +0 -884
  349. package/src/installs/zsh.js +0 -455
  350. package/src/installs/zsh.md +0 -1008
  351. package/src/scripts/README.md +0 -617
  352. package/src/scripts/STATUS.md +0 -208
  353. package/src/scripts/afk.js +0 -411
  354. package/src/scripts/backup-all.js +0 -746
  355. package/src/scripts/backup-source.js +0 -727
  356. package/src/scripts/brewd.js +0 -389
  357. package/src/scripts/brewi.js +0 -520
  358. package/src/scripts/brewr.js +0 -527
  359. package/src/scripts/brews.js +0 -477
  360. package/src/scripts/brewu.js +0 -504
  361. package/src/scripts/c.js +0 -201
  362. package/src/scripts/ccurl.js +0 -341
  363. package/src/scripts/certbot-crontab-init.js +0 -504
  364. package/src/scripts/certbot-init.js +0 -657
  365. package/src/scripts/ch.js +0 -355
  366. package/src/scripts/claude-danger.js +0 -268
  367. package/src/scripts/clean-dev.js +0 -435
  368. package/src/scripts/clear-dns-cache.js +0 -541
  369. package/src/scripts/clone.js +0 -435
  370. package/src/scripts/code-all.js +0 -437
  371. package/src/scripts/count-files.js +0 -211
  372. package/src/scripts/count-folders.js +0 -211
  373. package/src/scripts/count.js +0 -264
  374. package/src/scripts/d.js +0 -219
  375. package/src/scripts/datauri.js +0 -389
  376. package/src/scripts/delete-files.js +0 -380
  377. package/src/scripts/docker-clean.js +0 -426
  378. package/src/scripts/dp.js +0 -442
  379. package/src/scripts/e.js +0 -390
  380. package/src/scripts/empty-trash.js +0 -513
  381. package/src/scripts/evm.js +0 -444
  382. package/src/scripts/fetch-github-repos.js +0 -456
  383. package/src/scripts/get-channel.js +0 -345
  384. package/src/scripts/get-course.js +0 -399
  385. package/src/scripts/get-dependencies.js +0 -306
  386. package/src/scripts/get-folder.js +0 -799
  387. package/src/scripts/get-tunes.js +0 -426
  388. package/src/scripts/get-video.js +0 -367
  389. package/src/scripts/git-backup.js +0 -577
  390. package/src/scripts/git-clone.js +0 -493
  391. package/src/scripts/git-pup.js +0 -319
  392. package/src/scripts/git-push.js +0 -396
  393. package/src/scripts/h.js +0 -622
  394. package/src/scripts/hide-desktop-icons.js +0 -499
  395. package/src/scripts/hide-hidden-files.js +0 -538
  396. package/src/scripts/install-dependencies-from.js +0 -456
  397. package/src/scripts/ips.js +0 -663
  398. package/src/scripts/iso.js +0 -370
  399. package/src/scripts/killni.js +0 -577
  400. package/src/scripts/ll.js +0 -467
  401. package/src/scripts/local-ip.js +0 -325
  402. package/src/scripts/m.js +0 -524
  403. package/src/scripts/map.js +0 -309
  404. package/src/scripts/mkd.js +0 -351
  405. package/src/scripts/ncu-update-all.js +0 -457
  406. package/src/scripts/nginx-init.js +0 -718
  407. package/src/scripts/npmi.js +0 -382
  408. package/src/scripts/o.js +0 -511
  409. package/src/scripts/org-by-date.js +0 -338
  410. package/src/scripts/p.js +0 -224
  411. package/src/scripts/packages.js +0 -330
  412. package/src/scripts/path.js +0 -225
  413. package/src/scripts/ports.js +0 -597
  414. package/src/scripts/q.js +0 -305
  415. package/src/scripts/refresh-files.js +0 -394
  416. package/src/scripts/remove-smaller-files.js +0 -516
  417. package/src/scripts/rename-files-with-date.js +0 -533
  418. package/src/scripts/resize-image.js +0 -539
  419. package/src/scripts/rm-safe.js +0 -669
  420. package/src/scripts/s.js +0 -540
  421. package/src/scripts/set-git-public.js +0 -365
  422. package/src/scripts/show-desktop-icons.js +0 -475
  423. package/src/scripts/show-hidden-files.js +0 -472
  424. package/src/scripts/tpa.js +0 -280
  425. package/src/scripts/tpo.js +0 -280
  426. package/src/scripts/u.js +0 -505
  427. package/src/scripts/vpush.js +0 -437
  428. package/src/scripts/y.js +0 -283
  429. package/src/utils/README.md +0 -95
  430. package/src/utils/common/apps.js +0 -143
  431. package/src/utils/common/display.js +0 -157
  432. package/src/utils/common/network.js +0 -185
  433. package/src/utils/common/os.js +0 -294
  434. package/src/utils/common/package-manager.js +0 -301
  435. package/src/utils/common/privileges.js +0 -138
  436. package/src/utils/common/shell.js +0 -261
  437. package/src/utils/macos/apps.js +0 -228
  438. package/src/utils/macos/brew.js +0 -315
  439. package/src/utils/ubuntu/apt.js +0 -307
  440. package/src/utils/ubuntu/desktop.js +0 -292
  441. package/src/utils/ubuntu/snap.js +0 -344
  442. package/src/utils/ubuntu/systemd.js +0 -286
  443. package/src/utils/windows/choco.js +0 -465
  444. package/src/utils/windows/env.js +0 -246
  445. package/src/utils/windows/registry.js +0 -269
  446. package/src/utils/windows/shell.js +0 -240
  447. package/src/utils/windows/winget.js +0 -489
@@ -1,946 +0,0 @@
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)