[GH-ISSUE #4251] [Bug]: Having dpkg installed on RHEL-like distributions breaks the dependency checker #2672

Open
opened 2026-02-27 03:04:35 +03:00 by kerem · 0 comments
Owner

Originally created by @Znuff on GitHub (Jun 29, 2023).
Original GitHub issue: https://github.com/GameServerManagers/LinuxGSM/issues/4251

User story

Trying to install a game-server on AlmaLinux that coincidentally has dpkg installed breaks dependency detection

Game

Rustserver

Linux distro

RedHat 8

Command

command: install

Further information

The check-deps module is incorrectly written to check the existence of the dpkg-query, dnf or rpm commands to check for dependency, regardless of OS detection.

Installing dpkg with dnf install dpkg under RHEL-compatible distributions breaks this detection.

After a failure in dependency checking, the installer will suggest using apt:

Warning! Missing dependencies: bc binutils bzip2 cpio curl epel-release file glibc.i686 gzip hostname jq libstdc++ libstdc++.i686 nmap-ncat python36 tar tmux unzip util-linux wget xz zlib-devel
Warning! rustserver does not have sudo access. Manually install dependencies.
sudo apt update; sudo apt install bc binutils bzip2 cpio curl epel-release file glibc.i686 gzip hostname jq libstdc++ libstdc++.i686 nmap-ncat python36 tar tmux unzip util-linux wget xz zlib-devel
Failure! Missing dependencies required to run SteamCMD.
fetching GitHub core_exit.sh...OK

If dpkg is not present (as it should be on most RHEL-installs), the dependency checker works properly:

+++++ sleep 0.1
+++++ unset depstatus
+++++ '[' 0 == 1 ']'
+++++ for deptocheck in ${array_deps_required[*]}
+++++ fn_deps_detector
+++++ '[' zlib-devel == libsdl2-2.0-0:i386 ']'
+++++ '[' zlib-devel == steamcmd ']'
+++++ '[' zlib-devel == steamcmd ']'
+++++ [[ zlib-devel == \o\p\e\n\j\d\k* ]]
+++++ [[ zlib-devel == \j\a\v\a* ]]
+++++ '[' zlib-devel == mono-complete ']'
++++++ command -v dpkg-query
+++++ '[' '' ']'
++++++ command -v dnf
+++++ '[' /usr/bin/dnf ']'
+++++ dnf list installed zlib-devel
+++++ depstatus=0
+++++ '[' '' == 1 ']'
+++++ '[' 0 == 0 ']'
+++++ missingdep=0
+++++ '[' INSTALL == INSTALL ']'
+++++ echo -e '\e[32mzlib-devel\e[0m'
zlib-devel

But once you have dpkg installed, this fails:

+++++ sleep 0.1
+++++ '[' -n 258550 ']'
+++++ for steamcmddeptocheck in ${array_deps_required_steamcmd[*]}
+++++ '[' xz '!=' steamcmd ']'
+++++ '[' xz == glibc.i686 ']'
+++++ for steamcmddeptocheck in ${array_deps_required_steamcmd[*]}
+++++ '[' xz '!=' steamcmd ']'
+++++ '[' xz == libstdc++.i686 ']'
+++++ unset depstatus
+++++ '[' 1 == 1 ']'
+++++ array_deps_missing+=("${deptocheck}")
+++++ for deptocheck in ${array_deps_required[*]}
+++++ fn_deps_detector
+++++ '[' zlib-devel == libsdl2-2.0-0:i386 ']'
+++++ '[' zlib-devel == steamcmd ']'
+++++ '[' zlib-devel == steamcmd ']'
+++++ [[ zlib-devel == \o\p\e\n\j\d\k* ]]
+++++ [[ zlib-devel == \j\a\v\a* ]]
+++++ '[' zlib-devel == mono-complete ']'
++++++ command -v dpkg-query
+++++ '[' /usr/bin/dpkg-query ']'
+++++ dpkg-query -W '-f=${Status}' zlib-devel
+++++ grep -q -P '^install ok installed'
+++++ depstatus=1
+++++ '[' '' == 1 ']'
+++++ '[' 1 == 0 ']'
+++++ '[' 1 '!=' 0 ']'
+++++ missingdep=1
+++++ '[' INSTALL == INSTALL ']'
+++++ echo -e '\e[31mzlib-devel\e[0m'
zlib-devel

Relevant log output

No response

Steps to reproduce

  1. Install fresh AlmaLinux 8.x
  2. Install the EPEL repositories: dnf install epel-release
  3. Install the dpkg package manager: dnf install dpkg
  4. Try installing Rustserver according to the instructions here: https://linuxgsm.com/servers/rustserver/
  5. Encounter the issue

Removing dpkg will fix the dependency checker.

Originally created by @Znuff on GitHub (Jun 29, 2023). Original GitHub issue: https://github.com/GameServerManagers/LinuxGSM/issues/4251 ### User story Trying to install a game-server on AlmaLinux that coincidentally has `dpkg` installed breaks dependency detection ### Game Rustserver ### Linux distro RedHat 8 ### Command command: install ### Further information The check-deps module is incorrectly written to check the existence of the `dpkg-query`, `dnf` or `rpm` commands to check for dependency, regardless of OS detection. Installing `dpkg` with `dnf install dpkg` under RHEL-compatible distributions breaks this detection. After a failure in dependency checking, the installer will suggest using `apt`: ``` Warning! Missing dependencies: bc binutils bzip2 cpio curl epel-release file glibc.i686 gzip hostname jq libstdc++ libstdc++.i686 nmap-ncat python36 tar tmux unzip util-linux wget xz zlib-devel Warning! rustserver does not have sudo access. Manually install dependencies. sudo apt update; sudo apt install bc binutils bzip2 cpio curl epel-release file glibc.i686 gzip hostname jq libstdc++ libstdc++.i686 nmap-ncat python36 tar tmux unzip util-linux wget xz zlib-devel Failure! Missing dependencies required to run SteamCMD. fetching GitHub core_exit.sh...OK ``` If `dpkg` is not present (as it should be on most RHEL-installs), the dependency checker works properly: ``` +++++ sleep 0.1 +++++ unset depstatus +++++ '[' 0 == 1 ']' +++++ for deptocheck in ${array_deps_required[*]} +++++ fn_deps_detector +++++ '[' zlib-devel == libsdl2-2.0-0:i386 ']' +++++ '[' zlib-devel == steamcmd ']' +++++ '[' zlib-devel == steamcmd ']' +++++ [[ zlib-devel == \o\p\e\n\j\d\k* ]] +++++ [[ zlib-devel == \j\a\v\a* ]] +++++ '[' zlib-devel == mono-complete ']' ++++++ command -v dpkg-query +++++ '[' '' ']' ++++++ command -v dnf +++++ '[' /usr/bin/dnf ']' +++++ dnf list installed zlib-devel +++++ depstatus=0 +++++ '[' '' == 1 ']' +++++ '[' 0 == 0 ']' +++++ missingdep=0 +++++ '[' INSTALL == INSTALL ']' +++++ echo -e '\e[32mzlib-devel\e[0m' zlib-devel ``` But once you have `dpkg` installed, this fails: ``` +++++ sleep 0.1 +++++ '[' -n 258550 ']' +++++ for steamcmddeptocheck in ${array_deps_required_steamcmd[*]} +++++ '[' xz '!=' steamcmd ']' +++++ '[' xz == glibc.i686 ']' +++++ for steamcmddeptocheck in ${array_deps_required_steamcmd[*]} +++++ '[' xz '!=' steamcmd ']' +++++ '[' xz == libstdc++.i686 ']' +++++ unset depstatus +++++ '[' 1 == 1 ']' +++++ array_deps_missing+=("${deptocheck}") +++++ for deptocheck in ${array_deps_required[*]} +++++ fn_deps_detector +++++ '[' zlib-devel == libsdl2-2.0-0:i386 ']' +++++ '[' zlib-devel == steamcmd ']' +++++ '[' zlib-devel == steamcmd ']' +++++ [[ zlib-devel == \o\p\e\n\j\d\k* ]] +++++ [[ zlib-devel == \j\a\v\a* ]] +++++ '[' zlib-devel == mono-complete ']' ++++++ command -v dpkg-query +++++ '[' /usr/bin/dpkg-query ']' +++++ dpkg-query -W '-f=${Status}' zlib-devel +++++ grep -q -P '^install ok installed' +++++ depstatus=1 +++++ '[' '' == 1 ']' +++++ '[' 1 == 0 ']' +++++ '[' 1 '!=' 0 ']' +++++ missingdep=1 +++++ '[' INSTALL == INSTALL ']' +++++ echo -e '\e[31mzlib-devel\e[0m' zlib-devel ``` ### Relevant log output _No response_ ### Steps to reproduce 1. Install fresh AlmaLinux 8.x 2. Install the **EPEL** repositories: `dnf install epel-release` 3. Install the `dpkg` package manager: `dnf install dpkg` 4. Try installing Rustserver according to the instructions here: https://linuxgsm.com/servers/rustserver/ 5. Encounter the issue Removing `dpkg` will fix the dependency checker.
Sign in to join this conversation.
No labels
Atomic
Epic
cannot reproduce
command: backup
command: console
command: debug
command: details
command: fast-dl
command: install
command: mods
command: monitor
command: post-details
command: restart
command: send
command: start
command: stop
command: update
command: update-lgsm
command: validate
command: wipe
distro: AlmaLinux
distro: Arch Linux
distro: CentOS
distro: Debian
distro: Fedora
distro: RedHat
distro: Rocky Linux
distro: Ubuntu
distro: openSUSE
engine: goldsrc
engine: source
game: 7 Days to Die
game: ARMA 3
game: Ark: Survival Evolved
game: Assetto Corsa
game: Avorion
game: BATTALION: Legacy
game: Barotrauma
game: Battalion 1944
game: Battlefield 1942
game: Black Mesa: Deathmatch
game: Blade Symphony
game: Call of Duty 2
game: Call of Duty 4
game: Call of Duty: United Offensive
game: Counter-Strike 1.6
game: Counter-Strike 2
game: Counter-Strike: Global Offensive
game: Counter-Strike: Source
game: Day of Infamy
game: Dayz
game: Death Match Classic
game: Don't Starve Together
game: ET: Legacy
game: Eco
game: Factorio
game: Factorio
game: Garry's Mod
game: Half-Life
game: Hurtword
game: Insurgecy
game: Insurgecy
game: Insurgency: Sandstorm
game: Just Cause 3
game: Killing Floor
game: Killing Floor 2
game: Left 4 Dead 2
game: Minecraft
game: Minecraft Bedrock
game: Mordhau
game: Multi Theft Auto
game: Mumble
game: Natural Selection 2
game: No More Room in Hell
game: Pavlov VR
game: Post Scriptum
game: Project Zomboid
game: Quake 3
game: QuakeWorld
game: Red Orchestra: Ostfront 41-45
game: Return to Castle Wolfenstein
game: Rising World
game: Rust
game: San Andreas Multiplayer
game: Satisfactory
game: Soldat
game: Soldier of Fortune 2
game: Squad
game: Squad 44
game: Starbound
game: Stationeers
game: Sven Co-op
game: Team Fortress 2
game: Teamspeak 3
game: Teeworlds
game: Terraria
game: The Front
game: Unreal Tournament 2004
game: Unreal Tournament 3
game: Unreal Tournament 99
game: Unturned
game: Valheim
game: Wurm Unlimited
game: Zombie Master Reborn
game: label missing
good first issue
help wanted
info: alerts
info: dependency
info: docker
info: docs
info: email
info: query
info: steamcmd
info: systemd
info: tmux
info: website
info: website
needs more info
outcome: duplicate
outcome: issue resolved
outcome: issue resolved
outcome: issue unresolved
outcome: pr accepted
outcome: pr rejected
outcome: unconfirmed
outcome: wontfix
outcome: wrong forum
potential-duplicate
priority
pull-request
type: bug
type: feature
type: feature
type: feature request
type: game server request
type: refactor
waiting response
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
starred/LinuxGSM#2672
No description provided.