Microsoft/vscode

Devcontainer setup ad-hoc parsing fails on Rocky 8.5

Open

#232.159 aberto em 24 de out. de 2024

Ver no GitHub
 (20 comments) (0 reactions) (1 assignee)TypeScript (10.221 forks)batch import
buggood first issuelinuxremote

Métricas do repositório

Stars
 (74.848 stars)
Métricas de merge de PR
 (Mesclagem média 11h 43m) (1.000 fundiu PRs em 30d)

Description

Does this issue occur when all extensions are disabled?: Yes

  • VS Code Version: 1.92.0 (Commit: b1c0a14de1414fcdaa400695b4db1c0799bc3124)
  • OS Version: Rocky Linux 8.5

The check-requirements-linux.sh script that runs as part of a devcontainer setup wants to parse the OS version from /etc/os-release. That file "is a newline-separated list of environment-like shell-compatible variable assignments" (see man os-relase on Linux). The script tries to parse the value it wants here, by running:

OS_ID="$(cat /etc/os-release | grep -Eo 'ID=([^"]+)' | sed -n '1s/ID=//p')"

This looks for a key-value pair of the form ID=value and strips out the ID= part. It assumes the pair is not of the form ID="value", which appears to be permitted by the file format, and appears in the wild in Rocky 8.5 where the relevant line reads:

ID="rocky"

In that case the grep command will fail to match the line and the value of OS_ID will be empty, resulting in a non-zero exit code of 1.

This could be fixed by changing the variable assignment to:

OS_ID=$(source /etc/os-release && echo $ID)

This will run a subshell in which the values in the file get assigned to environment variables, which removes any surrounding " marks. Since this runs in a subshell the current shell's environment will not pick up these variables.

Steps to Reproduce:

  1. Start a devcontainer built from Rocky 8.5.

Guia do colaborador