Skip to content

fix(steamcmd): add libtinfo.so.5 symlink fix for readline warning#4899

Merged
dgibbs64 merged 3 commits intodevelopfrom
fix/steamcmd-libtinfo
Apr 24, 2026
Merged

fix(steamcmd): add libtinfo.so.5 symlink fix for readline warning#4899
dgibbs64 merged 3 commits intodevelopfrom
fix/steamcmd-libtinfo

Conversation

@dgibbs64
Copy link
Copy Markdown
Member

@dgibbs64 dgibbs64 commented Apr 19, 2026

Description

On distros that ship libtinfo.so.6 but not libtinfo.so.5 (Ubuntu 22.04+, Debian 12+), SteamCMD prints the following warning at every run:

WARNING: Failed to load 32-bit libtinfo.so.5 or libncurses.so.5.
  Please install (lib32tinfo5 / ncurses-libs.i686 / equivalent) to enable readline.

lib32tinfo5 does not exist on Ubuntu 22.04+ / Debian 12+ — the package was removed when ncurses transitioned to libtinfo6. There is no apt package to install to resolve the warning on modern distros.

In fix_steamcmd.sh, a user-space symlink libtinfo.so.5 -> libtinfo.so.6 is created inside all known SteamCMD directories when the .so.5 file is absent or a broken symlink. This requires no root access and resolves the warning for all SteamCMD-based game servers.

Fixes #212
Fixes #3137

Type of change

  • Bug fix (a change which fixes an issue).
  • New feature (a change which adds functionality).
  • New Server (new server added).
  • Refactor (restructures existing code).
  • Comment update (typo, spelling, explanation, examples, etc).

Checklist

PR will not be merged until all steps are complete.

  • This pull request links to an issue.
  • This pull request uses the develop branch as its base.
  • This pull request subject follows the Conventional Commits standard.
  • This code follows the style guidelines of this project.
  • I have performed a self-review of my code.
  • I have checked that this code is commented where required.
  • I have provided a detailed enough description of this PR.
  • I have checked if documentation needs updating.

Documentation

No documentation update required — this is an internal runtime fix with no user-facing configuration changes.

Thank you for your Pull Request!

Copilot AI review requested due to automatic review settings April 19, 2026 18:37
On distros shipping libtinfo.so.6 but not libtinfo.so.5 (Ubuntu 22.04+,
Debian 12+), SteamCMD prints:

  WARNING: Failed to load 32-bit libtinfo.so.5 or libncurses.so.5.
  Please install (lib32tinfo5 / ncurses-libs.i686 / equivalent) to
  enable readline.

lib32tinfo5 does not exist on Ubuntu 24.04. Creating a user-space
symlink inside the steamcmd directory resolves the warning without
requiring root or a missing package.
@dgibbs64 dgibbs64 force-pushed the fix/steamcmd-libtinfo branch from d0ca2c5 to c20b4fa Compare April 19, 2026 18:39
Copy link
Copy Markdown
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Adds a SteamCMD runtime fix for modern distros missing libtinfo.so.5, and introduces TF2 Classified (tf2c) server support which relies on downloading a base appid into a separate support directory.

Changes:

  • Add a user-space libtinfo.so.5 -> libtinfo.so.6 symlink workaround in fix_steamcmd.sh.
  • Add baseappid download support in the SteamCMD download flow (download base app into supportdir before appid into serverfiles).
  • Register new tf2c server (server list entry + default config + config install handling).

Reviewed changes

Copilot reviewed 1 out of 1 changed files in this pull request and generated 3 comments.

Show a summary per file
File Description
lgsm/modules/install_config.sh Adds config discovery/installation handling for tf2c.
lgsm/modules/fix_steamcmd.sh Creates a libtinfo.so.5 symlink to suppress SteamCMD readline warnings on newer distros.
lgsm/modules/core_dl.sh Implements baseappid download (to supportdir) before downloading appid.
lgsm/data/serverlist.csv Registers tf2c in the supported server list.
lgsm/config-default/config-lgsm/tf2cserver/_default.cfg Adds default LinuxGSM config for the new tf2cserver.

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

Comment thread lgsm/modules/fix_steamcmd.sh Outdated
Comment thread lgsm/modules/fix_steamcmd.sh Outdated
Comment thread lgsm/modules/fix_steamcmd.sh Outdated
@dgibbs64 dgibbs64 force-pushed the develop branch 2 times, most recently from 8d80501 to fdb8625 Compare April 19, 2026 21:39
- Iterate over all candidate steamcmd dirs (HOME/.steam/steamcmd,
  steamcmddir, HOME/.local/share/Steam/steamcmd) matching the pattern
  used for steamclient.so fixes elsewhere in the module
- Replace '! -f && ! -L' guard with '! -e' so broken/dangling symlinks
  are also repaired rather than silently skipped
- Add mkdir -p before ln in case the directory does not exist yet
- Capture exitcode=$? after ln so fn_fix_msg_end reports failures
@dgibbs64 dgibbs64 added this to the v26.2.0 milestone Apr 24, 2026
@dgibbs64 dgibbs64 enabled auto-merge (squash) April 24, 2026 17:48
@dgibbs64 dgibbs64 merged commit 445dddb into develop Apr 24, 2026
5 checks passed
@dgibbs64 dgibbs64 deleted the fix/steamcmd-libtinfo branch April 24, 2026 17:49
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants