@fredlackey/devutils 0.0.1 → 0.0.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (259) hide show
  1. package/README.md +5 -5
  2. package/package.json +1 -1
  3. package/src/commands/install.js +374 -36
  4. package/src/installs/adobe-creative-cloud.js +527 -25
  5. package/src/installs/adobe-creative-cloud.md +605 -0
  6. package/src/installs/appcleaner.js +303 -26
  7. package/src/installs/appcleaner.md +699 -0
  8. package/src/installs/apt-transport-https.js +390 -0
  9. package/src/installs/apt-transport-https.md +678 -0
  10. package/src/installs/atomicparsley.js +624 -26
  11. package/src/installs/atomicparsley.md +795 -0
  12. package/src/installs/aws-cli.js +779 -26
  13. package/src/installs/aws-cli.md +727 -0
  14. package/src/installs/balena-etcher.js +688 -26
  15. package/src/installs/balena-etcher.md +761 -0
  16. package/src/installs/bambu-studio.js +912 -26
  17. package/src/installs/bambu-studio.md +780 -0
  18. package/src/installs/bash-completion.js +554 -23
  19. package/src/installs/bash-completion.md +833 -0
  20. package/src/installs/bash.js +399 -26
  21. package/src/installs/bash.md +993 -0
  22. package/src/installs/beyond-compare.js +585 -26
  23. package/src/installs/beyond-compare.md +813 -0
  24. package/src/installs/build-essential.js +511 -26
  25. package/src/installs/build-essential.md +977 -0
  26. package/src/installs/ca-certificates.js +618 -0
  27. package/src/installs/ca-certificates.md +937 -0
  28. package/src/installs/caffeine.js +490 -26
  29. package/src/installs/caffeine.md +839 -0
  30. package/src/installs/camtasia.js +577 -25
  31. package/src/installs/camtasia.md +762 -0
  32. package/src/installs/chatgpt.js +458 -26
  33. package/src/installs/chatgpt.md +814 -0
  34. package/src/installs/chocolatey.js +447 -0
  35. package/src/installs/chocolatey.md +661 -0
  36. package/src/installs/chrome-canary.js +472 -26
  37. package/src/installs/chrome-canary.md +641 -0
  38. package/src/installs/chromium.js +645 -26
  39. package/src/installs/chromium.md +838 -0
  40. package/src/installs/claude-code.js +558 -26
  41. package/src/installs/claude-code.md +1173 -0
  42. package/src/installs/curl.js +361 -26
  43. package/src/installs/curl.md +714 -0
  44. package/src/installs/cursor.js +561 -26
  45. package/src/installs/cursor.md +970 -0
  46. package/src/installs/dbschema.js +674 -26
  47. package/src/installs/dbschema.md +925 -0
  48. package/src/installs/dependencies.md +435 -0
  49. package/src/installs/development-tools.js +600 -0
  50. package/src/installs/development-tools.md +977 -0
  51. package/src/installs/docker.js +1010 -25
  52. package/src/installs/docker.md +1109 -0
  53. package/src/installs/drawio.js +1001 -26
  54. package/src/installs/drawio.md +795 -0
  55. package/src/installs/elmedia-player.js +328 -25
  56. package/src/installs/elmedia-player.md +556 -0
  57. package/src/installs/ffmpeg.js +870 -25
  58. package/src/installs/ffmpeg.md +852 -0
  59. package/src/installs/file.js +464 -0
  60. package/src/installs/file.md +987 -0
  61. package/src/installs/gemini-cli.js +793 -26
  62. package/src/installs/gemini-cli.md +1153 -0
  63. package/src/installs/git.js +382 -26
  64. package/src/installs/git.md +907 -0
  65. package/src/installs/gitego.js +931 -26
  66. package/src/installs/gitego.md +1172 -0
  67. package/src/installs/go.js +913 -26
  68. package/src/installs/go.md +958 -0
  69. package/src/installs/google-chrome.js +801 -25
  70. package/src/installs/google-chrome.md +862 -0
  71. package/src/installs/gpg.js +412 -73
  72. package/src/installs/gpg.md +1056 -0
  73. package/src/installs/homebrew.js +1015 -26
  74. package/src/installs/homebrew.md +988 -0
  75. package/src/installs/imageoptim.js +950 -26
  76. package/src/installs/imageoptim.md +1119 -0
  77. package/src/installs/installers.json +2297 -0
  78. package/src/installs/jq.js +382 -26
  79. package/src/installs/jq.md +809 -0
  80. package/src/installs/keyboard-maestro.js +701 -26
  81. package/src/installs/keyboard-maestro.md +825 -0
  82. package/src/installs/latex.js +771 -26
  83. package/src/installs/latex.md +1095 -0
  84. package/src/installs/lftp.js +338 -26
  85. package/src/installs/lftp.md +907 -0
  86. package/src/installs/lsb-release.js +346 -0
  87. package/src/installs/lsb-release.md +814 -0
  88. package/src/installs/messenger.js +829 -26
  89. package/src/installs/messenger.md +900 -0
  90. package/src/installs/microsoft-office.js +550 -26
  91. package/src/installs/microsoft-office.md +760 -0
  92. package/src/installs/microsoft-teams.js +782 -25
  93. package/src/installs/microsoft-teams.md +886 -0
  94. package/src/installs/node.js +886 -26
  95. package/src/installs/node.md +1153 -0
  96. package/src/installs/nordpass.js +698 -26
  97. package/src/installs/nordpass.md +921 -0
  98. package/src/installs/nvm.js +977 -26
  99. package/src/installs/nvm.md +1057 -0
  100. package/src/installs/openssh.js +734 -64
  101. package/src/installs/openssh.md +1056 -0
  102. package/src/installs/pandoc.js +644 -26
  103. package/src/installs/pandoc.md +1036 -0
  104. package/src/installs/pinentry.js +492 -26
  105. package/src/installs/pinentry.md +1142 -0
  106. package/src/installs/pngyu.js +851 -26
  107. package/src/installs/pngyu.md +896 -0
  108. package/src/installs/postman.js +781 -26
  109. package/src/installs/postman.md +940 -0
  110. package/src/installs/procps.js +425 -0
  111. package/src/installs/procps.md +851 -0
  112. package/src/installs/safari-tech-preview.js +355 -25
  113. package/src/installs/safari-tech-preview.md +533 -0
  114. package/src/installs/sfnt2woff.js +640 -26
  115. package/src/installs/sfnt2woff.md +795 -0
  116. package/src/installs/shellcheck.js +463 -26
  117. package/src/installs/shellcheck.md +1005 -0
  118. package/src/installs/slack.js +722 -25
  119. package/src/installs/slack.md +865 -0
  120. package/src/installs/snagit.js +566 -25
  121. package/src/installs/snagit.md +844 -0
  122. package/src/installs/software-properties-common.js +372 -0
  123. package/src/installs/software-properties-common.md +805 -0
  124. package/src/installs/spotify.js +858 -25
  125. package/src/installs/spotify.md +901 -0
  126. package/src/installs/studio-3t.js +803 -26
  127. package/src/installs/studio-3t.md +918 -0
  128. package/src/installs/sublime-text.js +780 -25
  129. package/src/installs/sublime-text.md +914 -0
  130. package/src/installs/superwhisper.js +687 -25
  131. package/src/installs/superwhisper.md +630 -0
  132. package/src/installs/tailscale.js +727 -26
  133. package/src/installs/tailscale.md +1100 -0
  134. package/src/installs/tar.js +389 -0
  135. package/src/installs/tar.md +946 -0
  136. package/src/installs/termius.js +780 -26
  137. package/src/installs/termius.md +844 -0
  138. package/src/installs/terraform.js +761 -26
  139. package/src/installs/terraform.md +899 -0
  140. package/src/installs/tidal.js +752 -25
  141. package/src/installs/tidal.md +864 -0
  142. package/src/installs/tmux.js +328 -26
  143. package/src/installs/tmux.md +1030 -0
  144. package/src/installs/tree.js +393 -26
  145. package/src/installs/tree.md +833 -0
  146. package/src/installs/unzip.js +460 -0
  147. package/src/installs/unzip.md +879 -0
  148. package/src/installs/vim.js +403 -26
  149. package/src/installs/vim.md +1040 -0
  150. package/src/installs/vlc.js +803 -26
  151. package/src/installs/vlc.md +927 -0
  152. package/src/installs/vscode.js +825 -26
  153. package/src/installs/vscode.md +1002 -0
  154. package/src/installs/wget.js +415 -0
  155. package/src/installs/wget.md +791 -0
  156. package/src/installs/whatsapp.js +710 -25
  157. package/src/installs/whatsapp.md +854 -0
  158. package/src/installs/winpty.js +352 -0
  159. package/src/installs/winpty.md +620 -0
  160. package/src/installs/woff2.js +535 -26
  161. package/src/installs/woff2.md +977 -0
  162. package/src/installs/wsl.js +572 -0
  163. package/src/installs/wsl.md +699 -0
  164. package/src/installs/xcode-clt.js +520 -0
  165. package/src/installs/xcode-clt.md +351 -0
  166. package/src/installs/xcode.js +542 -26
  167. package/src/installs/xcode.md +573 -0
  168. package/src/installs/yarn.js +806 -26
  169. package/src/installs/yarn.md +1074 -0
  170. package/src/installs/yq.js +636 -26
  171. package/src/installs/yq.md +944 -0
  172. package/src/installs/yt-dlp.js +683 -26
  173. package/src/installs/yt-dlp.md +946 -0
  174. package/src/installs/yum-utils.js +297 -0
  175. package/src/installs/yum-utils.md +648 -0
  176. package/src/installs/zoom.js +740 -25
  177. package/src/installs/zoom.md +884 -0
  178. package/src/scripts/README.md +567 -45
  179. package/src/scripts/STATUS.md +208 -0
  180. package/src/scripts/afk.js +395 -7
  181. package/src/scripts/backup-all.js +731 -9
  182. package/src/scripts/backup-source.js +711 -8
  183. package/src/scripts/brewd.js +373 -7
  184. package/src/scripts/brewi.js +505 -9
  185. package/src/scripts/brewr.js +512 -9
  186. package/src/scripts/brews.js +462 -9
  187. package/src/scripts/brewu.js +488 -7
  188. package/src/scripts/c.js +185 -7
  189. package/src/scripts/ccurl.js +325 -8
  190. package/src/scripts/certbot-crontab-init.js +488 -8
  191. package/src/scripts/certbot-init.js +641 -9
  192. package/src/scripts/ch.js +339 -7
  193. package/src/scripts/claude-danger.js +253 -8
  194. package/src/scripts/clean-dev.js +419 -8
  195. package/src/scripts/clear-dns-cache.js +525 -7
  196. package/src/scripts/clone.js +417 -7
  197. package/src/scripts/code-all.js +420 -7
  198. package/src/scripts/count-files.js +195 -8
  199. package/src/scripts/count-folders.js +195 -8
  200. package/src/scripts/count.js +248 -8
  201. package/src/scripts/d.js +203 -7
  202. package/src/scripts/datauri.js +373 -8
  203. package/src/scripts/delete-files.js +363 -7
  204. package/src/scripts/docker-clean.js +410 -8
  205. package/src/scripts/dp.js +426 -7
  206. package/src/scripts/e.js +375 -9
  207. package/src/scripts/empty-trash.js +497 -7
  208. package/src/scripts/evm.js +428 -9
  209. package/src/scripts/fetch-github-repos.js +441 -10
  210. package/src/scripts/get-channel.js +329 -8
  211. package/src/scripts/get-course.js +384 -11
  212. package/src/scripts/get-dependencies.js +290 -9
  213. package/src/scripts/get-folder.js +783 -10
  214. package/src/scripts/get-tunes.js +411 -10
  215. package/src/scripts/get-video.js +352 -9
  216. package/src/scripts/git-backup.js +561 -9
  217. package/src/scripts/git-clone.js +477 -9
  218. package/src/scripts/git-pup.js +303 -7
  219. package/src/scripts/git-push.js +380 -8
  220. package/src/scripts/h.js +607 -9
  221. package/src/scripts/hide-desktop-icons.js +483 -7
  222. package/src/scripts/hide-hidden-files.js +522 -7
  223. package/src/scripts/install-dependencies-from.js +440 -9
  224. package/src/scripts/ips.js +647 -10
  225. package/src/scripts/iso.js +354 -8
  226. package/src/scripts/killni.js +561 -7
  227. package/src/scripts/ll.js +451 -8
  228. package/src/scripts/local-ip.js +310 -8
  229. package/src/scripts/m.js +508 -8
  230. package/src/scripts/map.js +293 -8
  231. package/src/scripts/mkd.js +287 -7
  232. package/src/scripts/ncu-update-all.js +441 -8
  233. package/src/scripts/nginx-init.js +702 -12
  234. package/src/scripts/npmi.js +366 -7
  235. package/src/scripts/o.js +495 -8
  236. package/src/scripts/org-by-date.js +321 -7
  237. package/src/scripts/p.js +208 -7
  238. package/src/scripts/packages.js +313 -8
  239. package/src/scripts/path.js +209 -7
  240. package/src/scripts/ports.js +582 -8
  241. package/src/scripts/q.js +290 -8
  242. package/src/scripts/refresh-files.js +378 -10
  243. package/src/scripts/remove-smaller-files.js +500 -8
  244. package/src/scripts/rename-files-with-date.js +517 -9
  245. package/src/scripts/resize-image.js +523 -9
  246. package/src/scripts/rm-safe.js +653 -8
  247. package/src/scripts/s.js +525 -9
  248. package/src/scripts/set-git-public.js +349 -7
  249. package/src/scripts/show-desktop-icons.js +459 -7
  250. package/src/scripts/show-hidden-files.js +456 -7
  251. package/src/scripts/tpa.js +265 -8
  252. package/src/scripts/tpo.js +264 -7
  253. package/src/scripts/u.js +489 -7
  254. package/src/scripts/vpush.js +422 -8
  255. package/src/scripts/y.js +267 -7
  256. package/src/utils/common/os.js +94 -2
  257. package/src/utils/ubuntu/apt.js +13 -7
  258. package/src/utils/windows/choco.js +82 -26
  259. package/src/utils/windows/winget.js +89 -27
@@ -0,0 +1,814 @@
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)