@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,814 +0,0 @@
1
- # Installing lsb-release
2
-
3
- ## Overview
4
-
5
- The `lsb-release` utility provides information about the Linux Standard Base (LSB) and distribution-specific information. It is a simple command-line tool that displays details about your Linux distribution, including:
6
-
7
- - **Distributor ID**: The name of the distribution (e.g., Ubuntu, Debian, Raspbian)
8
- - **Description**: A human-readable description of the distribution
9
- - **Release**: The release version number
10
- - **Codename**: The development codename (e.g., jammy, bookworm)
11
-
12
- The Linux Standard Base was a standardization effort led by the Linux Foundation to promote compatibility across Linux distributions. While the LSB standard itself was discontinued in 2015 and is no longer actively maintained, the `lsb_release` command remains widely used for identifying Linux distributions in scripts, automation tools, and system administration tasks.
13
-
14
- **Important Note**: The `lsb-release` utility is Linux-specific and is not available on macOS or Windows. On these platforms, alternative commands provide similar system information. This documentation covers installation on Linux platforms and documents the alternatives for non-Linux platforms.
15
-
16
- ## Dependencies
17
-
18
- ### macOS (Homebrew)
19
- - **Required:** None (lsb-release is not available on macOS)
20
- - **Optional:** None
21
- - **Auto-installed:** None
22
- - **Note:** macOS is not a Linux distribution and does not support LSB. Use `sw_vers` for macOS version information instead.
23
-
24
- ### Ubuntu (APT/Snap)
25
- - **Required:** None (APT package manager is pre-installed on Ubuntu)
26
- - **Optional:** None
27
- - **Auto-installed:** None
28
-
29
- ### Raspberry Pi OS (APT/Snap)
30
- - **Required:** None (APT package manager is pre-installed on Raspberry Pi OS)
31
- - **Optional:** None
32
- - **Auto-installed:** None
33
-
34
- ### Amazon Linux (DNF/YUM)
35
- - **Required:** None (lsb-release is not available on Amazon Linux)
36
- - **Optional:** None
37
- - **Auto-installed:** None
38
- - **Note:** Amazon Linux 2023 does not ship with `lsb_release` and does not include the `system-lsb-core` package. Use `/etc/os-release` for distribution information instead.
39
-
40
- ### Windows (Chocolatey/winget)
41
- - **Required:** None (lsb-release is not available on Windows)
42
- - **Optional:** None
43
- - **Auto-installed:** None
44
- - **Note:** Windows is not a Linux distribution and does not support LSB.
45
-
46
- ### Git Bash (Manual/Portable)
47
- - **Required:** None (lsb-release is not available in Git Bash)
48
- - **Optional:** None
49
- - **Auto-installed:** None
50
- - **Note:** Git Bash runs on Windows and does not support Linux-specific utilities like lsb-release.
51
-
52
- ## Prerequisites
53
-
54
- Before installing lsb-release on supported platforms, ensure:
55
-
56
- 1. **Internet connectivity** - Required to download packages
57
- 2. **Administrative privileges** - Required for system-wide installation (sudo on Linux)
58
- 3. **Terminal access** - Required to run installation commands
59
- 4. **Linux operating system** - lsb-release is only available on Linux distributions
60
-
61
- ## Platform-Specific Installation
62
-
63
- ### macOS (Homebrew)
64
-
65
- #### Platform Support Status
66
-
67
- **lsb-release is NOT available on macOS.**
68
-
69
- macOS is not a Linux distribution and does not implement the Linux Standard Base. The `lsb_release` command does not exist on macOS, and there is no Homebrew formula to install it.
70
-
71
- #### Alternative: Using sw_vers
72
-
73
- macOS provides the `sw_vers` command for obtaining system version information. This command is pre-installed on all macOS systems and requires no additional installation.
74
-
75
- Run the following command to display macOS version information:
76
-
77
- ```bash
78
- sw_vers
79
- ```
80
-
81
- Expected output (version numbers may vary):
82
-
83
- ```
84
- ProductName: macOS
85
- ProductVersion: 14.2.1
86
- BuildVersion: 23C71
87
- ```
88
-
89
- **Additional commands for macOS system information:**
90
-
91
- ```bash
92
- # Get just the macOS version number
93
- sw_vers -productVersion
94
-
95
- # Get detailed system information
96
- system_profiler SPSoftwareDataType
97
-
98
- # Get kernel information
99
- uname -a
100
- ```
101
-
102
- #### Verification
103
-
104
- Verify that `sw_vers` is available (it should be pre-installed):
105
-
106
- ```bash
107
- which sw_vers
108
- ```
109
-
110
- Expected output:
111
-
112
- ```
113
- /usr/bin/sw_vers
114
- ```
115
-
116
- ---
117
-
118
- ### Ubuntu/Debian (APT)
119
-
120
- #### Prerequisites
121
-
122
- - Ubuntu 20.04 LTS or later, or Debian 11 (Bullseye) or later
123
- - sudo privileges
124
- - Internet connectivity
125
-
126
- On most Ubuntu and Debian installations, `lsb-release` is pre-installed. However, some minimal installations or container images may not include it.
127
-
128
- #### Installation Steps
129
-
130
- Run the following commands to install lsb-release:
131
-
132
- ```bash
133
- sudo DEBIAN_FRONTEND=noninteractive apt-get update -y
134
- sudo DEBIAN_FRONTEND=noninteractive apt-get install -y lsb-release
135
- ```
136
-
137
- The `DEBIAN_FRONTEND=noninteractive` environment variable ensures no interactive prompts appear during installation, making this suitable for scripts and automation.
138
-
139
- #### Verification
140
-
141
- Confirm the installation succeeded:
142
-
143
- ```bash
144
- lsb_release --version
145
- ```
146
-
147
- Expected output (version numbers may vary):
148
-
149
- ```
150
- lsb_release 11.1.0ubuntu4
151
- ```
152
-
153
- Display all distribution information:
154
-
155
- ```bash
156
- lsb_release -a
157
- ```
158
-
159
- Expected output for Ubuntu (version numbers may vary):
160
-
161
- ```
162
- No LSB modules are available.
163
- Distributor ID: Ubuntu
164
- Description: Ubuntu 24.04 LTS
165
- Release: 24.04
166
- Codename: noble
167
- ```
168
-
169
- **Note**: The "No LSB modules are available" message is normal and does not indicate an error. It simply means that the full LSB compliance packages are not installed, which is typical and does not affect the functionality of `lsb_release`.
170
-
171
- Verify the installation location:
172
-
173
- ```bash
174
- which lsb_release
175
- ```
176
-
177
- Expected output:
178
-
179
- ```
180
- /usr/bin/lsb_release
181
- ```
182
-
183
- #### Troubleshooting
184
-
185
- **Problem**: `lsb_release: command not found`
186
-
187
- **Solution**: The package is not installed. Install it:
188
-
189
- ```bash
190
- sudo DEBIAN_FRONTEND=noninteractive apt-get update -y
191
- sudo DEBIAN_FRONTEND=noninteractive apt-get install -y lsb-release
192
- ```
193
-
194
- **Problem**: `E: Unable to locate package lsb-release`
195
-
196
- **Solution**: Update your package lists first:
197
-
198
- ```bash
199
- sudo DEBIAN_FRONTEND=noninteractive apt-get update -y
200
- sudo DEBIAN_FRONTEND=noninteractive apt-get install -y lsb-release
201
- ```
202
-
203
- **Problem**: Using `lsb-release` instead of `lsb_release` in commands
204
-
205
- **Solution**: The package name uses a hyphen (`lsb-release`), but the command uses an underscore (`lsb_release`). Use the underscore when running the command:
206
-
207
- ```bash
208
- # Correct command syntax
209
- lsb_release -a
210
-
211
- # Incorrect (this will fail)
212
- # lsb-release -a
213
- ```
214
-
215
- **Problem**: Permission denied errors
216
-
217
- **Solution**: Ensure you are using sudo for installation:
218
-
219
- ```bash
220
- sudo DEBIAN_FRONTEND=noninteractive apt-get install -y lsb-release
221
- ```
222
-
223
- Note that running `lsb_release` itself does not require sudo.
224
-
225
- ---
226
-
227
- ### Raspberry Pi OS (APT)
228
-
229
- #### Prerequisites
230
-
231
- - Raspberry Pi OS (Bookworm or Bullseye recommended)
232
- - Raspberry Pi 3B+ or later (any model supported by Raspberry Pi OS)
233
- - sudo privileges
234
- - Internet connectivity
235
-
236
- Raspberry Pi OS is based on Debian, so `lsb-release` installation follows the same method. On most Raspberry Pi OS installations, `lsb-release` is pre-installed by default.
237
-
238
- #### Installation Steps
239
-
240
- First, verify your architecture:
241
-
242
- ```bash
243
- uname -m
244
- ```
245
-
246
- - `aarch64` = 64-bit ARM
247
- - `armv7l` = 32-bit ARM
248
-
249
- Install lsb-release using APT (the command is identical for both architectures):
250
-
251
- ```bash
252
- sudo DEBIAN_FRONTEND=noninteractive apt-get update -y
253
- sudo DEBIAN_FRONTEND=noninteractive apt-get install -y lsb-release
254
- ```
255
-
256
- #### Verification
257
-
258
- Confirm the installation succeeded:
259
-
260
- ```bash
261
- lsb_release --version
262
- ```
263
-
264
- Expected output (version numbers may vary):
265
-
266
- ```
267
- lsb_release 12.0
268
- ```
269
-
270
- Display all distribution information:
271
-
272
- ```bash
273
- lsb_release -a
274
- ```
275
-
276
- Expected output for Raspberry Pi OS (version numbers may vary):
277
-
278
- ```
279
- No LSB modules are available.
280
- Distributor ID: Raspbian
281
- Description: Raspbian GNU/Linux 12 (bookworm)
282
- Release: 12
283
- Codename: bookworm
284
- ```
285
-
286
- **Note for 64-bit Raspberry Pi OS**: On 64-bit installations, the Distributor ID may show "Debian" instead of "Raspbian":
287
-
288
- ```
289
- No LSB modules are available.
290
- Distributor ID: Debian
291
- Description: Debian GNU/Linux 12 (bookworm)
292
- Release: 12
293
- Codename: bookworm
294
- ```
295
-
296
- Verify the installation location:
297
-
298
- ```bash
299
- which lsb_release
300
- ```
301
-
302
- Expected output:
303
-
304
- ```
305
- /usr/bin/lsb_release
306
- ```
307
-
308
- #### Troubleshooting
309
-
310
- **Problem**: Installation is slow
311
-
312
- **Solution**: Raspberry Pi SD cards can be slow. Use a high-quality SD card (Class 10 or A1/A2 rated) or boot from USB/SSD for better performance.
313
-
314
- **Problem**: `E: Unable to fetch some archives`
315
-
316
- **Solution**: Network connectivity issues. Check your internet connection and retry:
317
-
318
- ```bash
319
- sudo DEBIAN_FRONTEND=noninteractive apt-get update -y
320
- sudo DEBIAN_FRONTEND=noninteractive apt-get install -y lsb-release
321
- ```
322
-
323
- **Problem**: Distributor ID shows "Debian" instead of "Raspbian"
324
-
325
- **Solution**: This is expected on 64-bit Raspberry Pi OS, which is based directly on Debian arm64. The functionality is identical regardless of the distributor ID.
326
-
327
- **Problem**: `lsb_release: command not found` despite package being installed
328
-
329
- **Solution**: Close and reopen your terminal, then verify the package is installed:
330
-
331
- ```bash
332
- dpkg -l | grep lsb-release
333
- ```
334
-
335
- ---
336
-
337
- ### Amazon Linux (DNF/YUM)
338
-
339
- #### Platform Support Status
340
-
341
- **lsb-release is NOT available on Amazon Linux 2023 (AL2023).**
342
-
343
- Amazon Linux 2023 does not ship with the `lsb_release` command and does not include the `system-lsb-core` package. Amazon has transitioned to the `/etc/os-release` standard, which is the modern replacement for LSB-based distribution identification.
344
-
345
- Amazon Linux 2 (AL2) may have the `system-lsb-core` package available through `yum`, but this is discouraged as AL2 reaches end of support on June 30, 2026.
346
-
347
- #### Alternative: Using /etc/os-release
348
-
349
- The `/etc/os-release` file is pre-installed on Amazon Linux and requires no additional packages. This is the recommended method for obtaining distribution information.
350
-
351
- Run the following command to display distribution information:
352
-
353
- ```bash
354
- cat /etc/os-release
355
- ```
356
-
357
- Expected output for Amazon Linux 2023 (version numbers may vary):
358
-
359
- ```
360
- NAME="Amazon Linux"
361
- VERSION="2023"
362
- ID="amzn"
363
- ID_LIKE="fedora"
364
- VERSION_ID="2023"
365
- PLATFORM_ID="platform:al2023"
366
- PRETTY_NAME="Amazon Linux 2023.6.20241212"
367
- ANSI_COLOR="0;33"
368
- CPE_NAME="cpe:2.3:o:amazon:amazon_linux:2023"
369
- HOME_URL="https://aws.amazon.com/linux/amazon-linux-2023/"
370
- DOCUMENTATION_URL="https://docs.aws.amazon.com/linux/"
371
- SUPPORT_URL="https://aws.amazon.com/premiumsupport/"
372
- BUG_REPORT_URL="https://github.com/amazonlinux/amazon-linux-2023"
373
- VENDOR_NAME="AWS"
374
- VENDOR_URL="https://aws.amazon.com/"
375
- SUPPORT_END="2028-03-15"
376
- ```
377
-
378
- **Extract specific information using shell commands:**
379
-
380
- ```bash
381
- # Get the distribution name
382
- grep "^NAME=" /etc/os-release | cut -d'"' -f2
383
-
384
- # Get the version
385
- grep "^VERSION_ID=" /etc/os-release | cut -d'"' -f2
386
-
387
- # Get the pretty name
388
- grep "^PRETTY_NAME=" /etc/os-release | cut -d'"' -f2
389
- ```
390
-
391
- **Using shell variables for scripting:**
392
-
393
- ```bash
394
- # Source the file to get variables
395
- source /etc/os-release
396
-
397
- # Now you can use the variables directly
398
- echo "Distribution: $NAME"
399
- echo "Version: $VERSION_ID"
400
- echo "Pretty Name: $PRETTY_NAME"
401
- ```
402
-
403
- #### Verification
404
-
405
- Verify that `/etc/os-release` exists:
406
-
407
- ```bash
408
- test -f /etc/os-release && echo "os-release exists" || echo "os-release not found"
409
- ```
410
-
411
- Expected output:
412
-
413
- ```
414
- os-release exists
415
- ```
416
-
417
- #### Troubleshooting
418
-
419
- **Problem**: Scripts that depend on `lsb_release` fail on Amazon Linux
420
-
421
- **Solution**: Update your scripts to use `/etc/os-release` instead. Create a wrapper function for backward compatibility:
422
-
423
- ```bash
424
- # Add this function to scripts that need lsb_release compatibility
425
- lsb_release_compat() {
426
- if command -v lsb_release &> /dev/null; then
427
- lsb_release "$@"
428
- elif [ -f /etc/os-release ]; then
429
- source /etc/os-release
430
- case "$1" in
431
- -i|--id) echo "Distributor ID: $ID" ;;
432
- -d|--description) echo "Description: $PRETTY_NAME" ;;
433
- -r|--release) echo "Release: $VERSION_ID" ;;
434
- -c|--codename) echo "Codename: ${VERSION_CODENAME:-n/a}" ;;
435
- -a|--all)
436
- echo "Distributor ID: $ID"
437
- echo "Description: $PRETTY_NAME"
438
- echo "Release: $VERSION_ID"
439
- echo "Codename: ${VERSION_CODENAME:-n/a}"
440
- ;;
441
- *) echo "Usage: lsb_release_compat [-i|-d|-r|-c|-a]" ;;
442
- esac
443
- else
444
- echo "Neither lsb_release nor /etc/os-release available" >&2
445
- return 1
446
- fi
447
- }
448
- ```
449
-
450
- **Problem**: Need to determine if running on Amazon Linux in a script
451
-
452
- **Solution**: Check for the Amazon Linux identifier in `/etc/os-release`:
453
-
454
- ```bash
455
- if grep -q "^ID=amzn" /etc/os-release 2>/dev/null; then
456
- echo "Running on Amazon Linux"
457
- fi
458
- ```
459
-
460
- ---
461
-
462
- ### Windows (Chocolatey/winget)
463
-
464
- #### Platform Support Status
465
-
466
- **lsb-release is NOT available on Windows.**
467
-
468
- Windows is not a Linux distribution and does not implement the Linux Standard Base. The `lsb_release` command is a Linux-specific utility with no direct equivalent on Windows.
469
-
470
- #### Alternative: Using PowerShell
471
-
472
- Windows provides PowerShell commands for obtaining system version information. These commands are pre-installed on all modern Windows systems.
473
-
474
- Run the following command in PowerShell to display Windows version information:
475
-
476
- ```powershell
477
- Get-ComputerInfo | Select-Object WindowsProductName, WindowsVersion, OsBuildNumber
478
- ```
479
-
480
- Expected output (version numbers may vary):
481
-
482
- ```
483
- WindowsProductName WindowsVersion OsBuildNumber
484
- ------------------ -------------- -------------
485
- Windows 11 Pro 22H2 22631
486
- ```
487
-
488
- **Additional commands for Windows system information:**
489
-
490
- ```powershell
491
- # Get OS version using systeminfo
492
- systeminfo | findstr /B /C:"OS Name" /C:"OS Version"
493
-
494
- # Get Windows version number
495
- [System.Environment]::OSVersion.Version
496
-
497
- # Get detailed OS information
498
- Get-CimInstance -ClassName Win32_OperatingSystem | Select-Object Caption, Version, BuildNumber, OSArchitecture
499
- ```
500
-
501
- **From Command Prompt:**
502
-
503
- ```cmd
504
- ver
505
- systeminfo | findstr /B /C:"OS Name" /C:"OS Version"
506
- ```
507
-
508
- #### Verification
509
-
510
- Verify that PowerShell commands are available (they should be pre-installed):
511
-
512
- ```powershell
513
- Get-Command Get-ComputerInfo
514
- ```
515
-
516
- ---
517
-
518
- ### WSL (Ubuntu)
519
-
520
- #### Prerequisites
521
-
522
- - Windows 10 version 2004 or higher, or Windows 11
523
- - WSL 2 enabled with Ubuntu distribution installed
524
- - sudo privileges within WSL
525
-
526
- WSL runs Ubuntu (or another Linux distribution) within Windows. Because WSL runs a real Linux distribution, `lsb-release` is available and works exactly as it does on native Ubuntu.
527
-
528
- #### Installation Steps
529
-
530
- Open your WSL Ubuntu terminal and run:
531
-
532
- ```bash
533
- sudo DEBIAN_FRONTEND=noninteractive apt-get update -y
534
- sudo DEBIAN_FRONTEND=noninteractive apt-get install -y lsb-release
535
- ```
536
-
537
- **Note**: On most WSL Ubuntu installations, `lsb-release` is pre-installed by default. Running the installation command will either install the package or confirm it is already installed.
538
-
539
- #### Verification
540
-
541
- Confirm the installation succeeded:
542
-
543
- ```bash
544
- lsb_release --version
545
- ```
546
-
547
- Expected output (version numbers may vary):
548
-
549
- ```
550
- lsb_release 11.1.0ubuntu4
551
- ```
552
-
553
- Display all distribution information:
554
-
555
- ```bash
556
- lsb_release -a
557
- ```
558
-
559
- Expected output (version numbers may vary):
560
-
561
- ```
562
- No LSB modules are available.
563
- Distributor ID: Ubuntu
564
- Description: Ubuntu 24.04 LTS
565
- Release: 24.04
566
- Codename: noble
567
- ```
568
-
569
- Verify the installation location:
570
-
571
- ```bash
572
- which lsb_release
573
- ```
574
-
575
- Expected output:
576
-
577
- ```
578
- /usr/bin/lsb_release
579
- ```
580
-
581
- #### Troubleshooting
582
-
583
- **Problem**: `lsb_release: command not found` in WSL
584
-
585
- **Solution**: Install the package:
586
-
587
- ```bash
588
- sudo DEBIAN_FRONTEND=noninteractive apt-get update -y
589
- sudo DEBIAN_FRONTEND=noninteractive apt-get install -y lsb-release
590
- ```
591
-
592
- **Problem**: WSL shows a different Ubuntu version than expected
593
-
594
- **Solution**: Check which WSL distribution you are running:
595
-
596
- ```bash
597
- # From within WSL
598
- cat /etc/os-release
599
-
600
- # From Windows PowerShell
601
- wsl --list --verbose
602
- ```
603
-
604
- You may have multiple WSL distributions installed. Ensure you are using the correct one.
605
-
606
- **Problem**: Permission denied errors
607
-
608
- **Solution**: Ensure you are using sudo for installation:
609
-
610
- ```bash
611
- sudo DEBIAN_FRONTEND=noninteractive apt-get install -y lsb-release
612
- ```
613
-
614
- ---
615
-
616
- ### Git Bash (Manual/Portable)
617
-
618
- #### Platform Support Status
619
-
620
- **lsb-release is NOT available in Git Bash.**
621
-
622
- Git Bash is a terminal emulator that runs on Windows and provides a Bash shell environment. However, it does not include Linux-specific system utilities like `lsb_release`. Git Bash is designed to provide Git functionality and common Unix utilities, not to replicate a full Linux environment.
623
-
624
- #### Alternative: Using Windows Commands from Git Bash
625
-
626
- From Git Bash, you can execute Windows commands to obtain system information:
627
-
628
- ```bash
629
- # Get Windows version using cmd
630
- cmd //c ver
631
-
632
- # Get OS information using PowerShell
633
- powershell -Command "Get-ComputerInfo | Select-Object WindowsProductName, WindowsVersion"
634
- ```
635
-
636
- Expected output (version numbers may vary):
637
-
638
- ```
639
- Microsoft Windows [Version 10.0.22631.4460]
640
- ```
641
-
642
- **If you need lsb_release functionality**, use WSL instead of Git Bash. WSL provides a full Linux environment where `lsb_release` works natively.
643
-
644
- #### Verification
645
-
646
- Verify that Windows commands are accessible from Git Bash:
647
-
648
- ```bash
649
- cmd //c ver
650
- ```
651
-
652
- If this command produces output showing the Windows version, Windows commands are accessible from Git Bash.
653
-
654
- ---
655
-
656
- ## Post-Installation Configuration
657
-
658
- The `lsb_release` command requires no post-installation configuration. It reads system information from files already present on the system and has no user-configurable settings.
659
-
660
- ### Common Usage Patterns
661
-
662
- Here are common ways to use `lsb_release` in scripts and automation:
663
-
664
- **Get all information:**
665
-
666
- ```bash
667
- lsb_release -a
668
- ```
669
-
670
- **Get specific fields:**
671
-
672
- ```bash
673
- # Distributor ID only (e.g., "Ubuntu")
674
- lsb_release -is
675
-
676
- # Release number only (e.g., "24.04")
677
- lsb_release -rs
678
-
679
- # Codename only (e.g., "noble")
680
- lsb_release -cs
681
-
682
- # Description only (e.g., "Ubuntu 24.04 LTS")
683
- lsb_release -ds
684
- ```
685
-
686
- **Use in conditional logic:**
687
-
688
- ```bash
689
- # Check if running on Ubuntu
690
- if [ "$(lsb_release -is 2>/dev/null)" = "Ubuntu" ]; then
691
- echo "Running on Ubuntu"
692
- fi
693
-
694
- # Check if running on Debian or a Debian-based distribution
695
- if lsb_release -is 2>/dev/null | grep -qiE "^(debian|ubuntu|raspbian)$"; then
696
- echo "Running on a Debian-based distribution"
697
- fi
698
- ```
699
-
700
- **Portable script pattern (works with or without lsb_release):**
701
-
702
- ```bash
703
- get_distro() {
704
- if command -v lsb_release &> /dev/null; then
705
- lsb_release -is
706
- elif [ -f /etc/os-release ]; then
707
- grep "^ID=" /etc/os-release | cut -d'=' -f2 | tr -d '"'
708
- else
709
- echo "unknown"
710
- fi
711
- }
712
-
713
- DISTRO=$(get_distro)
714
- echo "Detected distribution: $DISTRO"
715
- ```
716
-
717
- ---
718
-
719
- ## Common Issues
720
-
721
- ### Issue: "No LSB modules are available"
722
-
723
- **Symptoms**: Running `lsb_release -a` displays "No LSB modules are available" before the distribution information.
724
-
725
- **Solution**: This message is informational, not an error. It indicates that the full LSB compliance packages (`lsb-core`, `lsb-graphics`, etc.) are not installed. The `lsb_release` command still functions correctly and displays distribution information. No action is required unless you specifically need LSB compliance modules.
726
-
727
- ### Issue: lsb_release Not Available in Container Images
728
-
729
- **Symptoms**: `lsb_release: command not found` in Docker containers or minimal OS images.
730
-
731
- **Solution**: Minimal container images often exclude `lsb-release` to reduce image size. Install it if needed, or use `/etc/os-release` as an alternative:
732
-
733
- ```bash
734
- # In Debian/Ubuntu containers
735
- apt-get update && apt-get install -y lsb-release
736
-
737
- # Or use /etc/os-release (no installation needed)
738
- cat /etc/os-release
739
- ```
740
-
741
- ### Issue: Scripts Fail on Non-Linux Platforms
742
-
743
- **Symptoms**: Scripts that use `lsb_release` fail on macOS, Windows, or Amazon Linux.
744
-
745
- **Solution**: Write portable scripts that check for `lsb_release` availability before using it:
746
-
747
- ```bash
748
- #!/bin/bash
749
- if command -v lsb_release &> /dev/null; then
750
- DISTRO=$(lsb_release -is)
751
- elif [ -f /etc/os-release ]; then
752
- source /etc/os-release
753
- DISTRO=$ID
754
- elif command -v sw_vers &> /dev/null; then
755
- DISTRO="macOS"
756
- else
757
- DISTRO="unknown"
758
- fi
759
-
760
- echo "Detected: $DISTRO"
761
- ```
762
-
763
- ### Issue: lsb_release Shows Wrong Information
764
-
765
- **Symptoms**: The output of `lsb_release` does not match the actual distribution.
766
-
767
- **Solution**: The `lsb_release` command reads from `/etc/lsb-release` or `/etc/os-release`. If these files are corrupted or modified, the output may be incorrect. Verify the source files:
768
-
769
- ```bash
770
- # Check lsb-release file
771
- cat /etc/lsb-release
772
-
773
- # Check os-release file
774
- cat /etc/os-release
775
- ```
776
-
777
- If the files are incorrect, reinstall the `lsb-release` package:
778
-
779
- ```bash
780
- sudo DEBIAN_FRONTEND=noninteractive apt-get install --reinstall -y lsb-release
781
- ```
782
-
783
- ### Issue: Command Not Found Despite Package Being Installed
784
-
785
- **Symptoms**: `dpkg -l | grep lsb-release` shows the package is installed, but `lsb_release` command is not found.
786
-
787
- **Solution**: The command may not be in your PATH. Locate the binary and run it directly:
788
-
789
- ```bash
790
- # Find the binary
791
- dpkg -L lsb-release | grep bin
792
-
793
- # Run directly
794
- /usr/bin/lsb_release -a
795
- ```
796
-
797
- If `/usr/bin` is not in your PATH, add it:
798
-
799
- ```bash
800
- export PATH="/usr/bin:$PATH"
801
- ```
802
-
803
- ---
804
-
805
- ## References
806
-
807
- - [Ubuntu Manpage: lsb_release](https://manpages.ubuntu.com/manpages/jammy/man1/lsb_release.1.html)
808
- - [Debian Wiki: LSB](https://wiki.debian.org/LSB)
809
- - [Linux Standard Base - Wikipedia](https://en.wikipedia.org/wiki/Linux_Standard_Base)
810
- - [freedesktop.org: os-release specification](https://www.freedesktop.org/software/systemd/man/os-release.html)
811
- - [Amazon Linux 2023 User Guide](https://docs.aws.amazon.com/linux/al2023/ug/)
812
- - [Raspberry Pi Documentation](https://www.raspberrypi.com/documentation/)
813
- - [Microsoft WSL Documentation](https://learn.microsoft.com/en-us/windows/wsl/)
814
- - [Apple sw_vers Manual](https://ss64.com/osx/sw_vers.html)