Repository: etcd-io/etcd (language: go)

Issue:
Broken links and incomplete build tool list in CONTIRBUTING guide
### Bug report criteria

- [X] This bug report is not security related, security issues should be disclosed privately via [etcd maintainers](mailto:etcd-maintainers@googlegroups.com).
- [X] This is not a support request or question, support requests or questions should be raised in the etcd [discussion forums](https://github.com/etcd-io/etcd/discussions).
- [X] You have read the etcd [bug reporting guidelines](https://github.com/etcd-io/etcd/blob/main/Documentation/contributor-guide/reporting_bugs.md).
- [X] Existing open issues along with etcd [frequently asked questions](https://etcd.io/docs/latest/faq) have been checked and this is not a duplicate.

### What happened?

There were a couple of errors when running `make verify` by following the `CONTRIBUTING.md` guide in a fresh environment:

1. `jq` is needed to run `make verify-dep`:
   ```text
   root@dc1067d9dddc:/go/etcd# make verify-dep
   PASSES="dep" ./scripts/test.sh
   Running with --race
   Starting at: Fri Dec 27 16:43:41 UTC 2024
 
   'dep' started at Fri Dec 27 16:43:41 UTC 2024
   % (cd api && 'go' 'list' '-m')
   ./scripts/test.sh: line 514: jq: command not found
   % (cd api && 'go' 'mod' 'edit' '-json')
   FAIL: (code:141):
     % (cd api && 'go' 'mod' 'edit' '-json')
   There was a Failure in module api, aborting...
   FAIL: 'dep' FAILED at Fri Dec 27 16:43:41 UTC 2024
   make: *** [Makefile:90: verify-dep] Error 255
   ```

2. `xz` is needed to run `make verify-shellcheck`:
   ```
   root@dc1067d9dddc:/go/etcd# make verify-shellcheck
   PASSES="shellcheck" ./scripts/test.sh
   Running with --race
   Starting at: Fri Dec 27 16:47:37 UTC 2024
   
   'shellcheck' started at Fri Dec 27 16:47:37 UTC 2024
   Tool: 'shellcheck' not found on PATH. https://github.com/koalaman/shellcheck#installing
   Installing shellcheck v0.10.0
   tar (grandchild): xz: Cannot exec: No such file or directory
   tar (grandchild): Error is not recoverable: exiting now
   tar: Child died with signal 13
   tar: Error is not recoverable: exiting now
   mv: cannot stat '/tmp/shellcheck': No such file or directory
   % './bin/shellcheck' '-fgcc' 'scripts/build-binary.sh' 'scripts/build-docker.sh' 'scripts/build-release.sh' 'scripts/build.sh' 'scripts/build_lib.sh' 'scripts/build_tools.sh' 'scripts/codecov_upload.sh' 'scripts/fix.sh' 'scripts/fuzzing.sh' 'scripts/genproto.sh' 'scripts/measure-testgrid-flakiness.sh' 'scripts/release.sh' 'scripts/release_mod.sh' 'scripts/sync_go_toolchain_directive.sh' 'scripts/test.sh' 'scripts/test_images.sh' 'scripts/test_lib.sh' 'scripts/update_dep.sh' 'scripts/update_proto_annotations.sh' 'scripts/updatebom.sh' 'scripts/verify_genproto.sh' 'scripts/verify_go_versions.sh' 'scripts/verify_proto_annotations.sh'
   FAIL: (code:127):
     % './bin/shellcheck' '-fgcc' 'scripts/build-binary.sh' 'scripts/build-docker.sh' 'scripts/build-release.sh' 'scripts/build.sh' 'scripts/build_lib.sh' 'scripts/build_tools.sh' 'scripts/codecov_upload.sh' 'scripts/fix.sh' 'scripts/fuzzing.sh' 'scripts/genproto.sh' 'scripts/measure-testgrid-flakiness.sh' 'scripts/release.sh' 'scripts/release_mod.sh' 'scripts/sync_go_toolchain_directive.sh' 'scripts/test.sh' 'scripts/test_images.sh' 'scripts/test_lib.sh' 'scripts/update_dep.sh' 'scripts/update_proto_annotations.sh' 'scripts/updatebom.sh' 'scripts/verify_genproto.sh' 'scripts/verify_go_versions.sh' 'scripts/verify_proto_annotations.sh'
   stderr: ./scripts/test_lib.sh: line 148: ./bin/shellcheck: No such file or directory
   
   FAIL: 'run ./bin/shellcheck -fgcc scripts/build-binary.sh scripts/build-docker.sh scripts/build-release.sh scripts/build.sh scripts/build_lib.sh scripts/build_tools.sh scripts/codecov_upload.sh scripts/fix.sh scripts/fuzzing.sh scripts/genproto.sh scripts/measure-testgrid-flakiness.sh scripts/release.sh scripts/release_mod.sh scripts/sync_go_toolchain_directive.sh scripts/test.sh scripts/test_images.sh scripts/test_lib.sh scripts/update_dep.sh scripts/update_proto_annotations.sh scripts/updatebom.sh scripts/verify_genproto.sh scripts/verify_go_versions.sh scripts/verify_proto_annotations.sh' checking failed (!=0 return code)
   FAIL: 'shellcheck' FAILED at Fri Dec 27 16:47:37 UTC 2024
   make: *** [Makefile:102: verify-shellcheck] Error 255
   ```

3. The following links in the guide are no longer valid:
   1. https://github.com/golang/go/wiki/CodeReviewComments
   2. https://golangci-lint.run/usage/install/

### What did you expect to happen?

`make verify` should succeed for all checks:
1. `make verify-dep`:
   ```
   SUCCESS: dependencies are consistent across modules
   'dep' PASSED and completed at Fri Dec 27 16:47:05 UTC 2024
   SUCCESS
   ```

2. `make verify-shellcheck`:
   ```
   'shellcheck' PASSED and completed at Fri Dec 27 16:48:47 UTC 2024
   SUCCESS
   ```

### How can we reproduce it (as minimally and precisely as possible)?

1. Run a Docker container with Go v1.23.4:
   ```shell
   docker run -it golang:1.23.4
   ```

2. Clone this repo:
   ```shell
   git clone https://github.com/etcd-io/etcd.git
   ```

3. Navigate to the repo:
   ```shell
   cd etcd
   ```

4. Run `make verify-dep` and `make verify-shellcheck`

### Anything else we need to know?

_No response_

### Etcd version (please run commands below)

Running on top of this commit: a37bee012a03843bcd9af7016248cd49a6a17c86

### Etcd configuration (command line flags or environment variables)

N/A

### Etcd debug information (please run commands below, feel free to obfuscate the IP address or FQDN in the output)

N/A

### Relevant log output

_No response_


Discussion / hints:

Fix patch:
diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md
index ab08d3ab2ce..5af3a32ea52 100644
--- a/CONTRIBUTING.md
+++ b/CONTRIBUTING.md
@@ -95,9 +95,17 @@ Follow the steps below to set up the environment:
 - [Clone the repository](https://docs.github.com/en/repositories/creating-and-managing-repositories/cloning-a-repository)
 - Install Go by following [installation](https://go.dev/doc/install). Please check the minimal go version in [go.mod file](./go.mod#L3).
 - Install build tools:
-  - `make`: For Debian-based distributions you can run `sudo apt-get install build-essential`
-  - `protoc`: You can download it for your os. Use version [`v3.20.3`](https://github.com/protocolbuffers/protobuf/releases/tag/v3.20.3).
-  - `yamllint`: For Debian-based distribution you can run `sudo apt-get install yamllint`
+  - [`make`](https://www.gnu.org/software/make/): For Debian-based distributions
+    you can run `sudo apt-get install build-essential`
+  - [`protoc`](https://protobuf.dev/): You can download it for your os. Use
+    version
+    [`v3.20.3`](https://github.com/protocolbuffers/protobuf/releases/tag/v3.20.3).
+  - [`yamllint`](https://www.yamllint.com/): For Debian-based distribution you
+    can run `sudo apt-get install yamllint`
+  - [`jq`](https://jqlang.github.io/jq/): For Debian-based distribution you can
+    run `sudo apt-get install jq`
+  - [`xz`](https://tukaani.org/xz/): For Debian-based distribution you can run
+    `sudo apt-get install xz-utils`
 - Verify that everything is installed by running `make build`
 
 Note: `make build` runs with `-v`. Other build flags can be added through env `GO_BUILD_FLAGS`, **if required**. Eg.,
@@ -124,9 +132,10 @@ A codespace will open in a web-based version of Visual Studio Code. The [dev con
 ## Implement your change
 
 etcd code should follow the coding style suggested by the Golang community.
-See the [style doc](https://github.com/golang/go/wiki/CodeReviewComments) for details.
+See the [style doc](https://go.dev/wiki/CodeReviewComments) for details.
 
-Please ensure that your change passes static analysis (requires [golangci-lint](https://golangci-lint.run/usage/install/)):
+Please ensure that your change passes static analysis (requires
+[golangci-lint](https://golangci-lint.run/welcome/install/)):
 - `make verify` to verify if all checks pass.
 - `make verify-*` to verify a single check, for example, `make verify-bom` to verify if `bill-of-materials.json` file is up-to-date.
 - `make fix` to fix all checks.


Test patch: