Ru/SteamCMD: Difference between revisions

From Valve Developer Community
< Ru
Jump to navigation Jump to search
m (добавил испанский ссылка на страницу)
(Перевел все из английской версии статьи)
Line 9: Line 9:
'''Консольный клиент Steam''' или '''SteamCMD''' - новая утилита для установки и обновления выделенных серверов через интерфейс командной строки. Он работает только с играми, которые переведены на контентную систему [[SteamPipe]]. Постепенно все серверы, использующие [[HLDSUpdateTool]], перейдут на нее.
'''Консольный клиент Steam''' или '''SteamCMD''' - новая утилита для установки и обновления выделенных серверов через интерфейс командной строки. Он работает только с играми, которые переведены на контентную систему [[SteamPipe]]. Постепенно все серверы, использующие [[HLDSUpdateTool]], перейдут на нее.


== Загрузка и запуск SteamCMD==
== Загрузка SteamCMD==
=== Windows ===


1. Загрузите SteamCMD
1. Создайте папку для SteamCMD.
:* Windows: [http://media.steampowered.com/installer/steamcmd.zip http://media.steampowered.com/installer/steamcmd.zip]
 
:* Linux: введите <code>wget http://media.steampowered.com/client/steamcmd_linux.tar.gz</code>
''Для примера''
:: Если вы используете 64-битный дистрибутив Linux, возможно вам понадобится установить 32-битные библиотеки. Чтобы узнать, как сделать это, смотрите [[#32-битные библиотеки на 64-битных дистрибутивах Linux|здесь]].
C:\SteamCMD
2. Распакуйте архив в папку
 
: {{Note:ru| Не распаковывайте содержимое архива в папку обычного клиента Steam или в папку с HLDSUpdateTool!}}
2. Загрузите SteamCMD для Windows: http://media.steampowered.com/client/installer/steamcmd.zip
:* Linux: введите <code>tar xvfz steamcmd_linux.tar.gz</code>
 
3. Запуск SteamCMD в первый раз
3. Извлеките содержимое zip-архива в созданную папку.
: Откройте командную строку в этой папке и запустите SteamCMD
 
:* Windows: наберите <code>steamcmd</code>
=== Linux ===
:* Linux: наберите <code>./steamcmd.sh</code>
 
''Утилита автоматически обновится и отобразит приглашение <code>Steam></code> Наберите <code>help</code> для более подробной информации.''
1. Сначала установите зависимости необходимые для запуска SteamCMD.
 
Ubuntu/Debian 64-бит
 
sudo apt-get install lib32gcc1
 
RedHat/CentOS
 
yum install glibc libstdc++
 
RedHat/CentOS 64-бит
 
yum install glibc.i686 libstdc++.i686
 
2. Рекомендуется создать отдельного пользователя для SteamCMD. В любом случае не запускайте из под ''root'' пользователя, это может быть не безопасно.
Выполните следующую команды с root-правами чтобы создать пользователя ''steam'' и войти под ним:
 
useradd -m steam
su - steam
 
(Если вы предпочитаете использовать <code>sudo</code>, просто запустите предыдущую команду с префиксом <code>sudo</code>.)
 
3. Создайте директорию для SteamCMD и перейдите в неё.
 
mkdir ~/steamcmd
cd ~/steamcmd
 
3. Загрузите SteamCMD для Linux.
 
wget http://media.steampowered.com/client/installer/steamcmd_linux.tar.gz
 
4. Извлеките содержимое в директорию.
 
tar -xvzf steamcmd_linux.tar.gz
 
=== OS X ===
 
1. Откройте Terminal.app и создайте директорию для SteamCMD.
 
mkdir ~/steamcmd
cd ~/steamcmd
 
2. Загрузите SteamCMD для OS X.
 
curl -O http://media.steampowered.com/client/installer/steamcmd_osx.tar.gz
 
3. Извлеките содержимое в директорию.
 
tar -xvzf steamcmd_osx.tar.gz
 
== Запуск SteamCMD ==
 
''При первом запуске SteamCMD автоматически обновится и отобразит приглашение <code>Steam&gt;</code>Наберите <code>help</code> для более подробной информации.''
 
=== Windows ===
Откройте Командную строку и запустите SteamCMD.
 
cd C:\SteamCMD
steamcmd
 
=== Linux/OS X ===
Откройте терминал и запустите SteamCMD.
 
cd ~/steamcmd
./steamcmd.sh
 
== Вход в SteamCMD ==
 
=== Анонимно ===
 
Некоторые сервера можно загрузить анонимно.


Для загрузки большинства серверов можно войти анонимно:
  login anonymous
  login anonymous


Если анонимный вход не работает для конкретной игры, вам нужно войти в аккаунт Steam
=== С аккаунтом Steam ===
{{Note:ru|Вам нужно выйти из обычного клиента Steam чтобы корректно войти в аккаунт через SteamCMD.}}
 
  login <имя_пользователя>
Однако большинство сервером требуют входа в аккаунт Steam.
{{Note:ru|По соображениям безопасности рекомендуется создать новый аккаунт Steam предназначенный для загрузки и обновления ваших серверов.}}
{{Note:ru|Вам нужно выйти из обычного клиента Steam чтобы корректно войти в SteamCMD.}}
 
  login &lt;username&gt;
 
Затем введите пароль.
 
Если Steam Guard активирован, то проверьте вашу электронную почту чтобы узнать код доступа Steam Guard и ввести его. Это требуется сделать только при первом входе (а также при удалении файлов где SteamCMD хранит регистрационную информацию).
 
Вы должны увидеть сообщение о том, что вы успешно вошли в свой аккаунт.
 
== Загрузка приложения ==


Введите ваш пароль. После этого вам на почту должен прийти ключ SteamGuard, который необходимо будет ввести далее. (Это надо делать один раз для каждого компьютера/пользователя в Linux)
1. Запустите SteamCMD и войдите.
2. Установите директорию установки приложения.
{{Note:ru|Используйте косую черту для Linux/OS X и обратную косую черту для Windows.}}


Вы должны увидеть сообщение о том, что вход выполнен.
force_install_dir &lt;path&gt;


== Загрузка сервера ==
Например директорию с именем <code>cs_go</code> внутри текущей директории:
e.g. a directory named <code>cs_go</code> inside the current directory:


1. Запустите SteamCMD и укажите директорию для загрузки. (Внимание: используйте прямые слеши в Linux и обратные в Windows)
force_install_dir <путь>
: {{Bug:ru|На некоторых дистрибутивах Linux путь не может содержать только прописные буквы - смотрите [[#Известные проблемы]]}}
: Пример: папка cs_go в текущей папке
  force_install_dir ./cs_go/
  force_install_dir ./cs_go/


2. Установите или обновите сервер. <app_id> это [[Steam Application IDs|ID приложения Steam]]. Чтобы проверить установку, добавьте <code>validate</code> Для участия в бета-тесте добавьте <code>-beta "Beta"</code>.
3. Установить или обновить приложение можно с помощью команды <code>app_update</code>. Для проверки целостности приложения добавьте команду <code>validate</code>. Для загрузки beta версий, используйте опцию <code>-beta &lt;betaname&gt;</code>. Для примера HLDS beta версия называется <code>beta</code>, а beta версия SrcDS называется <code>prerelease</code>. Некоторые beta версии защищены паролем, чтобы иметь возможность скачивать их необходимо добавить опцию <code>-betapassword &lt;password&gt;</code>.
  app_update <app_id>
 
: Пример: установка и проверка CS:GO
  app_update &lt;app_id&gt; [-beta &lt;betaname&gt;] [-betapassword &lt;password&gt;] [validate]
 
HLDS это особый случай: App ID всегда 90 и мод должен быть выбран первым. Это делается путем установки параметра конфигурации приложения <code>mod</code> к запрашиваемому значению.
 
app_set_config &lt;app_id&gt; &lt;option_name&gt; &lt;option_value&gt;
 
: Пример: Установить и проверить выделенный сервер Counter Strike: Gloval Offensive:
  app_update 740 validate
  app_update 740 validate
: Пример: установка и проверка бета-версии HLDS:
: Пример: Установить и проверить HLDS с Team Fortress Classic:
  app_update "90 -beta beta" validate
app_set_config 90 mod tfc
app_update 90 validate
{{bug:ru|HLDS (APPID 90) в настоящее время требуется несколько прогонов <code>app_update</code>, прежде чем все необходимые файлы будут успешно установлены. Просто запустите <code>app_update 90 validate</code> несколько раз, пока приложение не будет больше обновляться.}}
: Пример: Установка и проверка бета-версии HLDS (Half-Life):
  app_update 90 -beta beta validate
: Пример: Установка и проверка бета-версии выделенного сервера Counter Strike: Source:
app_update 232330 -beta prerelease validate
: Пример: Установка и проверка закрытой бета-версии выделенного сервера  Natural Selection 2 (название <code>alpha</code>, пароль <code>natsel</code>):
:  [beta name] это название приватной бета-версии
:  [beta code] это пароль приватной бета-версии
app_update 4940 -beta alpha -betapassword natsel validate


3. После завершения, введите <code>quit</code> для корректного отключения от серверов Steam.
3. После завершение, введите <code>quit</code> чтобы правильно завершить сессию с серверами Steam.


=== Поддерживаемые серверы ===
quit


Это список серверов, которые используют SteamCMD. Любые дополнительные опции командной строки должны быть указаны '''перед''' командой app_update!
=== Проверка целостности ===
validate
Команда для проверки целостности всех файлов. Это полезно если они повреждены или отсутствуют.


{|
{{Note:ru|Проверка перезапишет любые файлы, которые были изменены. Это может вызвать проблемы с индивидуальными серверами. Например, если настроить <code>mapcycle.txt</code>, этот файл будет перезаписан версией по умолчанию. Любые файлы, которые не являются частью установки по умолчанию не будут затронуты.}}
|-
! Сервер
! scope="col" style="width: 7em" | ID
! Дополнительные опции командной строки
|-
| HLDS для [[Half-Life]] '''и''' [[Counter-Strike]]
| 90
|-
| [[Counter-Strike: Condition Zero]] **Beta** dedicated server
| 90
| +app_set_config "90 mod czero"
|-
| [[Deathmatch Classic]] **Beta** dedicated server
| 90
| +app_set_config "90 mod dmc"
|-
| [[Day of Defeat]] dedicated server
| 90
| +app_set_config "90 mod dod"
|-
| [[Half-Life: Opposing Force]] **Beta** dedicated server
| 90
| +app_set_config "90 mod gearbox"
|-
| [[Ricochet]] **Beta** dedicated server
| 90
| +app_set_config "90 mod ricochet"
|-
| [[Team Fortress Classic]] **Beta** dedicated server
| 90
| +app_set_config "90 mod tfc"
|-
| [[Counter-Strike:_Global_Offensive:ru|Counter-Strike: Global Offensive]] dedicated server
| 740
|-
| [[The Ship]] dedicated server
| 2403
|-
| [[Garry's Mod]] dedicated server
| 4020
|-
| [[Serious Sam 3]] dedicated server
| 41080
|-
| [[Nuclear Dawn]] dedicated server
| 111710
|-
| [[Red Orchestra: Ostfront 41-45]] dedicated server
| 223240
|-
| [[Red Orchestra 2: Heroes of Stalingrad]] and [[Rising Storm]] dedicated server
| 212542
|-
| [[Killing Floor]] Windows dedicated server
| 215350
|-
| [[Killing Floor]] Linux dedicated server
| 215360
|-
| [[Insurgency]] dedicated server
| 17705
|-
| [[Left 4 Dead 2]] dedicated server
| 222860
|-
| [[Team Fortress 2]] dedicated server
| 232250
|-
| [[Day of Defeat: Source]] dedicated server
| 232290
|-
| [[Counter-Strike: Source]] dedicated server
| 232330
|-
| [[Half-Life 2: Deathmatch]] dedicated server
| 232370
|}


Рекомендуется использовать эту команду только при начальной установки или если файлы сервера были изменены.


{{Tip:ru|Для установки нескольких модов, укажите их через запятую, например <code>+app_set_config 90 mod czero,dod</code>.}}
=== Поддерживаемые сервера ===
 
Список известных серверов, которые использует SteamCMD установить доступен на странице [[Dedicated Servers List]] странице.
{{Note:ru|Любые дополнительные перечисленные команды должны быть выполнены до выполнения команды <code>app_update</code>.}}


== Автоматизация SteamCMD ==
== Автоматизация SteamCMD ==


Есть два варианта автоматизации SteamCMD. (замените <code>steamcmd</code> на <code>./steamcmd.sh</code> для Linux)
Есть два способа для автоматизации SteamCMD.
{{Note:ru|Замените <code>steamcmd</code> на <code>./steamcmd.sh</code> для Linux/OS X.}}
 
=== Командная строка ===
 
{{Note:ru| При использовании параметра <code>-beta</code> параметр в командной строке, он должен заключен в кавычки, например, <code>+app_update "90 -beta beta"</code>.}}
{{Note:ru| Если это не работает, попробуйте ввести его как <code>"+app_update 90 -beta beta"</code>.}}


1. Добавление команд в строку запуска. Примеры:
Вводить команды в командной строке необходимо с символом плюс в качестве префикса, например:
  steamcmd +login anonymous +force_install_dir ../csgo_ds +app_update 740 validate +quit
  steamcmd +login anonymous +force_install_dir ../csgo_ds +app_update 740 +quit


Чтобы установить определенный мод для HL1, таких как Counter-Strike: Condition Zero:
  steamcmd +login anonymous +force_install_dir ../czero +app_set_config 90 mod czero +app_update 90 +quit
  steamcmd +login anonymous +force_install_dir ../czero +app_set_config 90 mod czero +app_update 90 +quit


  steamcmd +login <username> <password> +force_install_dir c:\KFServer\ +app_update 215350 validate +quit
Для игры которая требует авторизацию, такой как Killing Floor:
  steamcmd +login &lt;username&gt; &lt;password&gt; +force_install_dir c:\KFServer\ +app_update 215350 +quit
 
=== Создание сценариев ===
1. Введите ваши команды SteamCMD в текстовом файле. (Вы можете добавить комментарии, которые начинаются с <code>//</code>.)


2. Создание скрипта
Пример:
: a. Создайте текстовый файл с последовательностью команд для SteamCMD
Example:
<syntaxhighlight>
<syntaxhighlight>
// update_csgo_ds.txt
// update_csgo_ds.txt
//
//
@ShutdownOnFailedCommand 1 //Установите 0 для обновления нескольких серверов за раз
@ShutdownOnFailedCommand 1 //set to 0 if updating multiple servers at once
@NoPromptForPassword 1
@NoPromptForPassword 1
login <username> <password>
login <username> <password>
//для загрузки серверов, не требующих авторизации
//for servers which don't need a login
//login anonymous  
//login anonymous  
force_install_dir ../csgo_ds
force_install_dir ../csgo_ds
Line 164: Line 201:
</syntaxhighlight>
</syntaxhighlight>


: b. Запустите SteamCMD с параметром <code>+runscript</code> Пример:
2. Запустите SteamCMD с опцией <code>+runscript</code>, ссылаясь на файл который вы только что создали.
 
Пример:
 
  steamcmd +runscript csgo_ds.txt
  steamcmd +runscript csgo_ds.txt


== Пример bat-файла для Windows ==
== Кросс-платформенная установка ==
 
Можно выбрать платформу, для которой SteamCMD необходимо скачать файлы, даже если это не платформа в настоящее время она работает на. Это делается с помощью <код>sSteamCmdForcePlatformType</code> переменной. (Да, это два "S" ЭС в начале имени переменной.) Например, чтобы загрузить выделенный сервер для Windows CSGO на Linux, вы можете запустить следующую команду:
It is possible to choose the platform for which SteamCMD should download files, even if it isn't the platform it is currently running on. This is done using the <code>@sSteamCmdForcePlatformType</code> variable. (Yes, those are two "s"es at the beginning of the variable name.) For example, to download the Windows CSGO dedicated server on Linux, you can run the following command:
 
./steamcmd.sh +@sSteamCmdForcePlatformType windows +login anonymous +force_install_dir ../csgo_ds +app_update 740 validate +quit
 
или использовать следующий сценарий:
 
<syntaxhighlight>
<syntaxhighlight>
::=======================::
@ShutdownOnFailedCommand 1
:: SteamCMD Guardian 1.2 ::
@NoPromptForPassword 1
::      ckynick254      ::
@sSteamCmdForcePlatformType windows
::=======================::
login anonymous
set programname=SteamCMD Guardian 1.1
force_install_dir ../csgo_ds
::=======================::
app_update 740 validate
::  SET YOUR VARIABLES!  ::
quit
::=======================::
set servername=
set username=
set password=
::=======================::
::      Your folder      ::
::    Replace after =    ::
::=======================::
set runcmd=E:\Games\
::=======================::
::  End of variables    ::
::=======================::
:: This will keep the window clean and easy to read
@ECHO off
:: Sets the title of the window
title %programname% - %servername%
:: Clears the window incase there is anything there
cls
COLOR 1f
CD %runcmd%
:: Prints to the window what we are doing
ECHO %programname% has been started!
:start
ECHO.
ECHO.
ECHO  ##############################################################
ECHO  #                    Dedicated Server                        #
ECHO  # 1 - Half-Life: Deathmatch and Counter-Strike              #
ECHO  # 2 - Counter-Strike: Global Offensive                      #
ECHO  # 3 - Nuclear Dawn Dedicated Server                          #
ECHO  # 4 - Red Orchestra Dedicated Server                        #
ECHO  # 5 - Red Orchestra 2: Heroes of Stalingrad Dedicated Server #
ECHO  # 6 - Killing Floor Dedicated Server                        #
ECHO  # 7 - Team Fortress 2 Dedicated Server Beta                  #
ECHO  # 8 - HELP!                                                  #
ECHO  # 9 - Exit                                                  #
ECHO  ##############################################################
ECHO.
ECHO.
:: Delete variable %A%
SET "A="
SET /P A=Set Your Choice And Press Enter:
ECHO Loading .........
IF "%A%"=="1" set app=90
IF "%A%"=="2" set app=740
IF "%A%"=="3" set app=111710
IF "%A%"=="4" set app=223240
IF "%A%"=="5" set app=212542
IF "%A%"=="6" set app=215350
IF "%A%"=="7" set app=229830
IF "%A%"=="8" ECHO.
IF "%A%"=="8" ECHO https://developer.valvesoftware.com/wiki/SteamCMD
IF "%A%"=="8" ECHO.
IF "%A%"=="8" PAUSE
IF "%A%"=="8" goto start
IF "%A%"=="9" EXIT
:: This is a return point in case the server crashes or is closed
:restart
ECHO.
ECHO (%date%)(%time%) %servername% is now ONLINE
ECHO Watching %servername% for crashes...
>> "%servername%.log" ECHO.
>> "%servername%.log" ECHO (%date%)(%time%) %servername% is now ONLINE
>> "%servername%.log" ECHO (%date%)(%time%) Watching %servername% for crashes...
::Start the actual update window
start /wait steamcmd +login %username% %password% +force_install_dir %runcmd%%app%Server\ +app_update %app% validate
ECHO (%time%) WARNING: srcds closed or crashed, restarting.
ECHO.
ECHO (%date%)(%time%) Crash or Close detected!
ECHO %servername% is now restarting...
>> "%servername%.log" ECHO.
>> "%servername%.log" ECHO (%date%)(%time%) Crash or Close detected!
>> "%servername%.log" ECHO (%date%)(%time%) %servername% is now restarting...
::Server crashed or closed, so we point it to the return point to start the server again
GOTO restart
</syntaxhighlight>
</syntaxhighlight>


= Известные проблемы =
Поддерживаемые значения <code>windows</code>, <code>macos</code> и <code>linux</code>.
 
== Windows ПО/Сценарии ==
 
=== SteamCMD AutoUpdater ===
Установка и автоматическое обновление любого игрового сервера
Install and automaticly update any game server
 
GitHub:
https://github.com/C0nw0nk/SteamCMD-AutoUpdate-Any-Gameserver
 
=== condenser ===
 
[https://github.com/ShamelessCookie/condenser condenser] это загрузчик для установки, настройки, и запуска выделенных игровых серверов Steam.
 
=== SteamCMD GUI ===
Этот инструмент позволяет использовать SteamCMD на Windows, без командной строки и/или пакетных файлов.
 
GitHub:
https://github.com/DioJoestar/SteamCMD-GUI
 
=== SteamCMD Guardian 1.2 ===
Посмотреть и загрузить можно здесь: http://pastebin.com/BRUbsGQh
 
== Linux Сценарии ==
=== Linux Game Server Managers ===
[[Image:Lgsm.png‎|right|thumb|170px|Linux Game Server Manager]]
Linux Game Server Managers приложение командной строки для быстрого, простого развертывания и управления различных специализированных игровых серверов использующих SteamCMD.
 
'''Возможности'''
*Установка сервера (SteamCMD)
*Запуск/Остановка/Перезапуск сервера
*Обновление сервера (SteamCMD)
*Мониторинг сервера (включая e-mail уведомления)
*Резервное копирование сервера
*Командная строка сервера
 
'''Поддерживаемые сервера'''
*ARMA 3
*Blade Symphony
*Counter Strike
*Counter Strike: Condition Zero
*Counter Strike: Global Offensive
*Counter Strike: Source
*Day of Defeat
*Day of Defeat: Source
*Fistful of Frags
*Garry's Mod
*Half-Life: Deathmatch Classic
*Half-Life 2: Deathmatch
*Insurgency
*Just Cause 2
*Killing Floor
*Left 4 Dead
*Left 4 Dead 2
*No More Room in Hell
*Natural Selection 2
*Red Orchestra: Ostfront 41-45
*Team Fortress Classic
*Team Fortress 2
*Team Fortress Classic
 
Полный список серверов и инструкции:
http://danielgibbs.co.uk/lgsm
 
GitHub репозиторий:
https://github.com/dgibbs64/linuxgameservers
 
=== SteamCMD Guardian 1.2 ===
 
Следующий сценарий был протестирован на Debian Wheezy.
 
Смотреть и загрузить здесь:
http://pastebin.com/hcpMpmaZ
 
'''Установка'''
 
Для работы сценария необходимо достаточно свободного места. Предпочтительно использовать отдельно созданного пользователя (например steam) с его собственной домашней директорией (/home/steam). Необходимо войти под этим пользователем через SSH, tty или используя su.
 
# Создайте файл.
#: <code>nano updateserver.sh</code>
# Вставьте код
# Измените код, добавив '''по крайней мере''' 1 игру в строку <code>DL_SV*=</code>.
# Закройте файл  {{Key|Ctrl|O|}}, затем {{Key|enter}} и в конце {{Key|Ctrl|X}}.
# Дайте права на исполнение для пользователя
#: <code>chmod u+x ./updateserver.sh</code>
# Запустите файл
#: <code>./updateserver.sh</code>


== Я могу загрузить или обновить сервер через SteamCMD, но сервер не запускается ==
Файл автоматически загрузить SteamCMD, обновить его и установить все выбранные игры (до 4). Запустите файл повторно для обновления игры.
Известные причины:
* Linux: Некоторые игры имеют проблемы с регистром в названиях папок/файлов.


== Ошибка отсутствия библиотек SteamCMD в директории steam ==
== Известные проблемы ==
В консоле сервера такая ошибка выглядит так:<br/>
=== Failed to install app 'xxxxxx' (No subscription) ===
<code>steamclient.so: cannot open shared object file: No such file or directory<br/></code>


Для начал проверяем существует ли директория steam.
Если вы получаете "Нет подписки 'ошибку, игра / сервер вы пытаетесь загрузить либо требует логин или что вы приобрели игру. Таким образом, вы будете иметь, чтобы войти с паровой имя пользователя и пароль и Ndash; если это не поможет, вы, возможно, потребуется приобрести копию игры на Steam, в первую очередь. См [[Выделенный Список серверов]].
cd /home/alliance/.steam
If you get the 'No subscription' error, the game/server you are trying to download either requires a login or that you have purchased the game. You will therefore have to log in with a Steam username and password &ndash; if that doesn't help, you may need to purchase a copy of the game on Steam first. See [[Dedicated Servers List]].
Если директория отсутствует, то создаем ее.
 
mkdir /home/alliance/.steam
{{Note:ru|По соображениям безопасности рекомендуется создать новый аккаунт Steam только для ваших серверов.}}
Теперь создаем «символьную» ссылку к библиотекам SteamCMD.
 
ln -s /home/alliance/srcds/steamcmd/linux32 /home/alliance/.steam/sdk32
Для примера
{{Note:ru| В вашем случае, пути к директориям будут различаться!}}
<syntaxhighlight>
== 32-битные библиотеки на 64-битных дистрибутивах Linux ==
steamcmd +login <username> <password>
</syntaxhighlight>
 
=== 32-битные библиотеки на 64-битных дистрибутивах Linux ===


Так как SteamCMD это 32-битная программа, для запуска требуются некоторые 32-битные библиотеки, даже если у вас уже установлены 64-битные версии.
Так как SteamCMD это 32-битная программа, для запуска требуются некоторые 32-битные библиотеки, даже если у вас уже установлены 64-битные версии.


Обычно такая ошибка выглядит так:<br/>
Может произойти следующая ошибка:
<code>steamcmd: error while loading shared libraries: libstdc++.so.6: cannot open shared object file: No such file or directory</code>
 
steamcmd: error while loading shared libraries: libstdc++.so.6: cannot open shared object file: No such file or directory


Решения специфичны для различных дистрибутивов:
Решение зависит от вашего дистрибутива:


=== Debian и подобные (Ubuntu, Mint) ===
==== Дистрибутивы основанные на Debian (Ubuntu, Mint, и т.д.) ====


  apt-get install ia32-libs
  sudo apt-get install lib32stdc++6


Если вы получаете ошибку
{{Note:ru|<code>ia32-libs</code> не требуется для установки SteamCMD; <code>lib32gcc1</code> будет достаточно.}}


<code>The following packages have unmet dependencies: ia32-libs : Depends: ia32-libs-multiarch but it is not installable<br/>
На '''Debian 7 "Wheezy"''' вы можете столкнуться с такой ошибкой:
E: Unable to correct problems, you have held broken packages.</code>


Сделайте следующее:
The following packages have unmet dependencies: ia32-libs : Depends: ia32-libs-multiarch but it is not installable
E: Unable to correct problems, you have held broken packages.


Чтобы исправить это, выполните следующие действия:
<syntaxhighlight>
  dpkg --add-architecture i386
  dpkg --add-architecture i386
  apt-get update
  apt-get update
  apt-get install ia32-libs
  apt-get install lib32gcc1
</syntaxhighlight>


(Если нужно, добавьте <code>sudo</code>)
==== Дистрибутивы основанные на Red Hat (RHEL, Fedora, CentOS, и т.д.) ====
 
=== Red Hat и подобные (RHEL, Fedora, CentOS) ===


  yum install glibc.i686 libstdc++.i686
  yum install glibc.i686 libstdc++.i686


=== Arch Linux ===
==== Arch Linux ====
Не забудьте вначале включить [https://wiki.archlinux.org/index.php/Multilib репозиторий Multilib].
Не забудьте сначала включить [https://wiki.archlinux.org/index.php/Multilib_(Русский) репозиторий Multilib].


  pacman -S lib32-gcc-libs
  pacman -S lib32-gcc-libs


== Ошибки загрузки ==
=== Login Failure: No Connection ===
 
В Windows первичная загрузка может закончиться ошибкой, если в стандартных настройках прокси-сервера не указана автоматическая настройка
 
В Linux пользователь может получить ошибку при старте, связанную с ulimit (no permission/can not open file). Для корректной работы steamcmd требуется установка параметра следующим образом: <code>ulimit -n 2048</code>. Хотя в shell-скрипте имеется строка, отвечающая за изменение ulimit, в некоторых системах администратором может быть запрещено изменение параметра пользователем, не имеющим root-привилегий. Перед запуском проверьте параметры ulimit следующим образом: '''ulimit -a'''. В ответе терминала нужно найти следующую строку:
open files                      (-n) 1024
Здесь значение 1024 — значение '''uname -n'''.
 
== Login Failure: No Connection ==


На Linux вы можете получить ошибку "Login Failure: No Connection". Она связана с отсутствующими правилами iptables. Необходимо прописать например
На Linux вы можете получить ошибку "Login Failure: No Connection". Она связана с отсутствующими правилами iptables. Необходимо их прописать например вот так:
<syntaxhighlight>
<syntaxhighlight>
iptables -A INPUT -p udp -m udp --sport 27000:27030 --dport 1025:65355 -j ACCEPT
iptables -A INPUT -p udp -m udp --sport 27000:27030 --dport 1025:65355 -j ACCEPT
Line 331: Line 376:
Список портов может быть найден здесь: https://support.steampowered.com/kb_article.php?ref=8571-GLVN-8711&l=russian
Список портов может быть найден здесь: https://support.steampowered.com/kb_article.php?ref=8571-GLVN-8711&l=russian


== Failed to open logfile или Failed to create directory ==
На серверах Windows вы можете столкнуться с ошибкой "SteamUpdater: Error: Download failed: http error 0" и "SteamUpdater: Error: Steam needs to be online to update.  Please confirm your network connection and try again.". Это как правило решается установкой опции "Автоматическое определение параметров" в IE (Internet Explorer) через настройки локальной сети в меню Свойства браузера.
On Windows servers, you may experience "SteamUpdater: Error: Download failed: http error 0" and "SteamUpdater: Error: Steam needs to be online to update.  Please confirm your network connection and try again.". This is usually fixed by checking "Automatically detect settings" in IE (Internet Explorer) through the lan settings in the Internet option menu.
 
# Откройте Internet Explorer (IE).
# Нажмите на ''Инструменты'' &rarr; ''Свойства браузера''
# Нажмите на вкладку ''Подключения''
# В нижней части вы должны увидеть ''Настройки параметров локальной сети''
# Проверьте первый флажок (''Автоматическое определение параметров'')
# Нажмите на ''OK'', и ''Применить''.
Попробуйте запустить SteamCMD снова. Если по-прежнему не работает, то попробуйте уменьшить свой ''Уровень безопасности для этой зоны'' на средний или ниже на вкладке ''Безопасность'' в ''Свойства браузера''.
 
=== Ошибки запуска SteamCMD ===
==== Unable to locate a running instance of Steam ====
Вы можете получить следующее сообщение об ошибке при запуске сервера на Linux:
 
[S_API FAIL] SteamAPI_Init() failed; unable to locate a running instance of Steam, or a local steamclient.dll.
 
Решить проблему можно сделав символическую ссылку <code>steamclient.so</code на <code>~/.steam/sdk32/steamclient.so</code>:
 
ln -s steamcmd/linux32/steamclient.so ~/.steam/sdk32/steamclient.so
 
==== Ошибка запуска ulimit Linux ====
Некоторые пользователи могут получить ошибку <code>ULIMIT</code> (no permission/cannot open file) во время запуска сценария. Эта ошибка вызвана маленьким значением параметра <code>-n</code> (число файловых дескрипторов) <code>ULIMIT</code>. SteamCMD использует стандартные команды внутри сценария оболочки инициализации, чтобы изменить <code>ULIMIT</code> автоматически, но некоторые серверы могут запретить повышение значения <code>ULIMIT</code> после запуска (или за пределы лимита, установленного <code>root</code>).
 
Это может быть исправлено путем изменения ограничения на максимальное число открытых файлов ulimit:
 
ulimit -n 2048
 
Если появляется ошибка (''no permission''), вам придется войти под root чтобы изменить параметр. Чтобы проверить текущую настройку введите '''ulimit -a'''. Система выдаст много строк, но вам нужно будет найти только одну:
open files                      (-n) 1024
В этом случае ''1024'' является текущим значением.
 
Вы можете также изменить ограничения в файле <code>/etc/security/limits.conf</code>.
 
В большинстве случаев вы просто получите предупреждающее сообщение, однако это не остановит запуск SteamCMD.
 
=== Загрузка HLDS ===
 
При попытке скачать мод HL1, таких как TFC, сначала загружаются файлы HLDS, но не мода. Это происходит как с обычной версией так и с бета-версией. Вы, возможно, придется попробовать несколько раз, пока все необходимые файлы будут загружены, но как только это будет сделано, файлы должны правильно обновить следующий раз.
 
Работа вокруг этой проблемы здесь: http://danielgibbs.co.uk/2013/11/hlds-steamcmd-workaround-appid-90/
 
Просто удалив файлы appmanifest, без загрузки замены из сторонних источников, может сработать. Вы получите в начале сообщение об ошибке из-за удаленных файлов, но загрузка должна продолжится.
 
{{Note:ru|По некоторым причинам CS всегда устанавливается также.}}
 
== Смотреть также ==
* [[Source Dedicated Server]]
* [[Half-Life Dedicated Server]]
* [[Dedicated Servers List]]


Переименуйте в корне рабочей директории каталог ./Steam/ в ./steam/
[[Category:Steam]]
[[Category:Steam Applications]]
[[Category:Dedicated Server]]

Revision as of 05:18, 21 June 2015

Template:Otherlang2 Консольный клиент Steam или SteamCMD - новая утилита для установки и обновления выделенных серверов через интерфейс командной строки. Он работает только с играми, которые переведены на контентную систему SteamPipe. Постепенно все серверы, использующие HLDSUpdateTool, перейдут на нее.

Загрузка SteamCMD

Windows

1. Создайте папку для SteamCMD.

Для примера

C:\SteamCMD

2. Загрузите SteamCMD для Windows: http://media.steampowered.com/client/installer/steamcmd.zip

3. Извлеките содержимое zip-архива в созданную папку.

Linux

1. Сначала установите зависимости необходимые для запуска SteamCMD.

Ubuntu/Debian 64-бит

sudo apt-get install lib32gcc1

RedHat/CentOS

yum install glibc libstdc++

RedHat/CentOS 64-бит

yum install glibc.i686 libstdc++.i686

2. Рекомендуется создать отдельного пользователя для SteamCMD. В любом случае не запускайте из под root пользователя, это может быть не безопасно. Выполните следующую команды с root-правами чтобы создать пользователя steam и войти под ним:

useradd -m steam
su - steam

(Если вы предпочитаете использовать sudo, просто запустите предыдущую команду с префиксом sudo.)

3. Создайте директорию для SteamCMD и перейдите в неё.

mkdir ~/steamcmd
cd ~/steamcmd

3. Загрузите SteamCMD для Linux.

wget http://media.steampowered.com/client/installer/steamcmd_linux.tar.gz

4. Извлеките содержимое в директорию.

tar -xvzf steamcmd_linux.tar.gz

OS X

1. Откройте Terminal.app и создайте директорию для SteamCMD.

mkdir ~/steamcmd
cd ~/steamcmd

2. Загрузите SteamCMD для OS X.

curl -O http://media.steampowered.com/client/installer/steamcmd_osx.tar.gz

3. Извлеките содержимое в директорию.

tar -xvzf steamcmd_osx.tar.gz

Запуск SteamCMD

При первом запуске SteamCMD автоматически обновится и отобразит приглашение Steam>. Наберите help для более подробной информации.

Windows

Откройте Командную строку и запустите SteamCMD.

cd C:\SteamCMD
steamcmd

Linux/OS X

Откройте терминал и запустите SteamCMD.

cd ~/steamcmd
./steamcmd.sh

Вход в SteamCMD

Анонимно

Некоторые сервера можно загрузить анонимно.

login anonymous

С аккаунтом Steam

Однако большинство сервером требуют входа в аккаунт Steam. Template:Note:ru Template:Note:ru

login <username>

Затем введите пароль.

Если Steam Guard активирован, то проверьте вашу электронную почту чтобы узнать код доступа Steam Guard и ввести его. Это требуется сделать только при первом входе (а также при удалении файлов где SteamCMD хранит регистрационную информацию).

Вы должны увидеть сообщение о том, что вы успешно вошли в свой аккаунт.

Загрузка приложения

1. Запустите SteamCMD и войдите. 2. Установите директорию установки приложения. Template:Note:ru

force_install_dir <path>

Например директорию с именем cs_go внутри текущей директории: e.g. a directory named cs_go inside the current directory:

force_install_dir ./cs_go/

3. Установить или обновить приложение можно с помощью команды app_update. Для проверки целостности приложения добавьте команду validate. Для загрузки beta версий, используйте опцию -beta <betaname>. Для примера HLDS beta версия называется beta, а beta версия SrcDS называется prerelease. Некоторые beta версии защищены паролем, чтобы иметь возможность скачивать их необходимо добавить опцию -betapassword <password>.

app_update <app_id> [-beta <betaname>] [-betapassword <password>] [validate]

HLDS это особый случай: App ID всегда 90 и мод должен быть выбран первым. Это делается путем установки параметра конфигурации приложения mod к запрашиваемому значению.

app_set_config <app_id> <option_name> <option_value>
Пример: Установить и проверить выделенный сервер Counter Strike: Gloval Offensive:
app_update 740 validate
Пример: Установить и проверить HLDS с Team Fortress Classic:
app_set_config 90 mod tfc
app_update 90 validate

Template:Bug:ru

Пример: Установка и проверка бета-версии HLDS (Half-Life):
app_update 90 -beta beta validate
Пример: Установка и проверка бета-версии выделенного сервера Counter Strike: Source:
app_update 232330 -beta prerelease validate
Пример: Установка и проверка закрытой бета-версии выделенного сервера Natural Selection 2 (название alpha, пароль natsel):
[beta name] это название приватной бета-версии
[beta code] это пароль приватной бета-версии
app_update 4940 -beta alpha -betapassword natsel validate

3. После завершение, введите quit чтобы правильно завершить сессию с серверами Steam.

quit

Проверка целостности

validate

Команда для проверки целостности всех файлов. Это полезно если они повреждены или отсутствуют.

Template:Note:ru

Рекомендуется использовать эту команду только при начальной установки или если файлы сервера были изменены.

Поддерживаемые сервера

Список известных серверов, которые использует SteamCMD установить доступен на странице Dedicated Servers List странице. Template:Note:ru

Автоматизация SteamCMD

Есть два способа для автоматизации SteamCMD. Template:Note:ru

Командная строка

Template:Note:ru Template:Note:ru

Вводить команды в командной строке необходимо с символом плюс в качестве префикса, например:

steamcmd +login anonymous +force_install_dir ../csgo_ds +app_update 740 +quit

Чтобы установить определенный мод для HL1, таких как Counter-Strike: Condition Zero:

steamcmd +login anonymous +force_install_dir ../czero +app_set_config 90 mod czero +app_update 90 +quit

Для игры которая требует авторизацию, такой как Killing Floor:

steamcmd +login <username> <password> +force_install_dir c:\KFServer\ +app_update 215350 +quit

Создание сценариев

1. Введите ваши команды SteamCMD в текстовом файле. (Вы можете добавить комментарии, которые начинаются с //.)

Пример: Example:

// update_csgo_ds.txt
//
@ShutdownOnFailedCommand 1 //set to 0 if updating multiple servers at once
@NoPromptForPassword 1
login <username> <password>
//for servers which don't need a login
//login anonymous 
force_install_dir ../csgo_ds
app_update 740 validate
quit

2. Запустите SteamCMD с опцией +runscript, ссылаясь на файл который вы только что создали.

Пример:

steamcmd +runscript csgo_ds.txt

Кросс-платформенная установка

Можно выбрать платформу, для которой SteamCMD необходимо скачать файлы, даже если это не платформа в настоящее время она работает на. Это делается с помощью <код>sSteamCmdForcePlatformType переменной. (Да, это два "S" ЭС в начале имени переменной.) Например, чтобы загрузить выделенный сервер для Windows CSGO на Linux, вы можете запустить следующую команду: It is possible to choose the platform for which SteamCMD should download files, even if it isn't the platform it is currently running on. This is done using the @sSteamCmdForcePlatformType variable. (Yes, those are two "s"es at the beginning of the variable name.) For example, to download the Windows CSGO dedicated server on Linux, you can run the following command:

./steamcmd.sh +@sSteamCmdForcePlatformType windows +login anonymous +force_install_dir ../csgo_ds +app_update 740 validate +quit

или использовать следующий сценарий:

@ShutdownOnFailedCommand 1
@NoPromptForPassword 1
@sSteamCmdForcePlatformType windows
login anonymous
force_install_dir ../csgo_ds
app_update 740 validate
quit

Поддерживаемые значения windows, macos и linux.

Windows ПО/Сценарии

SteamCMD AutoUpdater

Установка и автоматическое обновление любого игрового сервера Install and automaticly update any game server

GitHub: https://github.com/C0nw0nk/SteamCMD-AutoUpdate-Any-Gameserver

condenser

condenser это загрузчик для установки, настройки, и запуска выделенных игровых серверов Steam.

SteamCMD GUI

Этот инструмент позволяет использовать SteamCMD на Windows, без командной строки и/или пакетных файлов.

GitHub: https://github.com/DioJoestar/SteamCMD-GUI

SteamCMD Guardian 1.2

Посмотреть и загрузить можно здесь: http://pastebin.com/BRUbsGQh

Linux Сценарии

Linux Game Server Managers

Linux Game Server Manager

Linux Game Server Managers приложение командной строки для быстрого, простого развертывания и управления различных специализированных игровых серверов использующих SteamCMD.

Возможности

  • Установка сервера (SteamCMD)
  • Запуск/Остановка/Перезапуск сервера
  • Обновление сервера (SteamCMD)
  • Мониторинг сервера (включая e-mail уведомления)
  • Резервное копирование сервера
  • Командная строка сервера

Поддерживаемые сервера

  • ARMA 3
  • Blade Symphony
  • Counter Strike
  • Counter Strike: Condition Zero
  • Counter Strike: Global Offensive
  • Counter Strike: Source
  • Day of Defeat
  • Day of Defeat: Source
  • Fistful of Frags
  • Garry's Mod
  • Half-Life: Deathmatch Classic
  • Half-Life 2: Deathmatch
  • Insurgency
  • Just Cause 2
  • Killing Floor
  • Left 4 Dead
  • Left 4 Dead 2
  • No More Room in Hell
  • Natural Selection 2
  • Red Orchestra: Ostfront 41-45
  • Team Fortress Classic
  • Team Fortress 2
  • Team Fortress Classic

Полный список серверов и инструкции: http://danielgibbs.co.uk/lgsm

GitHub репозиторий: https://github.com/dgibbs64/linuxgameservers

SteamCMD Guardian 1.2

Следующий сценарий был протестирован на Debian Wheezy.

Смотреть и загрузить здесь: http://pastebin.com/hcpMpmaZ

Установка

Для работы сценария необходимо достаточно свободного места. Предпочтительно использовать отдельно созданного пользователя (например steam) с его собственной домашней директорией (/home/steam). Необходимо войти под этим пользователем через SSH, tty или используя su.

  1. Создайте файл.
    nano updateserver.sh
  2. Вставьте код
  3. Измените код, добавив по крайней мере 1 игру в строку DL_SV*=.
  4. Закройте файл Ctrl+O, затем Enter и в конце Ctrl+X.
  5. Дайте права на исполнение для пользователя
    chmod u+x ./updateserver.sh
  6. Запустите файл
    ./updateserver.sh

Файл автоматически загрузить SteamCMD, обновить его и установить все выбранные игры (до 4). Запустите файл повторно для обновления игры.

Известные проблемы

Failed to install app 'xxxxxx' (No subscription)

Если вы получаете "Нет подписки 'ошибку, игра / сервер вы пытаетесь загрузить либо требует логин или что вы приобрели игру. Таким образом, вы будете иметь, чтобы войти с паровой имя пользователя и пароль и Ndash; если это не поможет, вы, возможно, потребуется приобрести копию игры на Steam, в первую очередь. См Выделенный Список серверов. If you get the 'No subscription' error, the game/server you are trying to download either requires a login or that you have purchased the game. You will therefore have to log in with a Steam username and password – if that doesn't help, you may need to purchase a copy of the game on Steam first. See Dedicated Servers List.

Template:Note:ru

Для примера

steamcmd +login <username> <password>

32-битные библиотеки на 64-битных дистрибутивах Linux

Так как SteamCMD это 32-битная программа, для запуска требуются некоторые 32-битные библиотеки, даже если у вас уже установлены 64-битные версии.

Может произойти следующая ошибка:

steamcmd: error while loading shared libraries: libstdc++.so.6: cannot open shared object file: No such file or directory

Решение зависит от вашего дистрибутива:

Дистрибутивы основанные на Debian (Ubuntu, Mint, и т.д.)

sudo apt-get install lib32stdc++6

Template:Note:ru

На Debian 7 "Wheezy" вы можете столкнуться с такой ошибкой:

The following packages have unmet dependencies: ia32-libs : Depends: ia32-libs-multiarch but it is not installable
E: Unable to correct problems, you have held broken packages.

Чтобы исправить это, выполните следующие действия:

 dpkg --add-architecture i386
 apt-get update
 apt-get install lib32gcc1

Дистрибутивы основанные на Red Hat (RHEL, Fedora, CentOS, и т.д.)

yum install glibc.i686 libstdc++.i686

Arch Linux

Не забудьте сначала включить репозиторий Multilib.

pacman -S lib32-gcc-libs

Login Failure: No Connection

На Linux вы можете получить ошибку "Login Failure: No Connection". Она связана с отсутствующими правилами iptables. Необходимо их прописать например вот так:

iptables -A INPUT -p udp -m udp --sport 27000:27030 --dport 1025:65355 -j ACCEPT
iptables -A INPUT -p udp -m udp --sport 4380 --dport 1025:65355 -j ACCEPT

Список портов может быть найден здесь: https://support.steampowered.com/kb_article.php?ref=8571-GLVN-8711&l=russian

На серверах Windows вы можете столкнуться с ошибкой "SteamUpdater: Error: Download failed: http error 0" и "SteamUpdater: Error: Steam needs to be online to update. Please confirm your network connection and try again.". Это как правило решается установкой опции "Автоматическое определение параметров" в IE (Internet Explorer) через настройки локальной сети в меню Свойства браузера. On Windows servers, you may experience "SteamUpdater: Error: Download failed: http error 0" and "SteamUpdater: Error: Steam needs to be online to update. Please confirm your network connection and try again.". This is usually fixed by checking "Automatically detect settings" in IE (Internet Explorer) through the lan settings in the Internet option menu.

  1. Откройте Internet Explorer (IE).
  2. Нажмите на ИнструментыСвойства браузера
  3. Нажмите на вкладку Подключения
  4. В нижней части вы должны увидеть Настройки параметров локальной сети
  5. Проверьте первый флажок (Автоматическое определение параметров)
  6. Нажмите на OK, и Применить.

Попробуйте запустить SteamCMD снова. Если по-прежнему не работает, то попробуйте уменьшить свой Уровень безопасности для этой зоны на средний или ниже на вкладке Безопасность в Свойства браузера.

Ошибки запуска SteamCMD

Unable to locate a running instance of Steam

Вы можете получить следующее сообщение об ошибке при запуске сервера на Linux:

[S_API FAIL] SteamAPI_Init() failed; unable to locate a running instance of Steam, or a local steamclient.dll.

Решить проблему можно сделав символическую ссылку steamclient.so</code на ~/.steam/sdk32/steamclient.so:

ln -s steamcmd/linux32/steamclient.so ~/.steam/sdk32/steamclient.so

Ошибка запуска ulimit Linux

Некоторые пользователи могут получить ошибку ULIMIT (no permission/cannot open file) во время запуска сценария. Эта ошибка вызвана маленьким значением параметра -n (число файловых дескрипторов) ULIMIT. SteamCMD использует стандартные команды внутри сценария оболочки инициализации, чтобы изменить ULIMIT автоматически, но некоторые серверы могут запретить повышение значения ULIMIT после запуска (или за пределы лимита, установленного root).

Это может быть исправлено путем изменения ограничения на максимальное число открытых файлов ulimit:

ulimit -n 2048

Если появляется ошибка (no permission), вам придется войти под root чтобы изменить параметр. Чтобы проверить текущую настройку введите ulimit -a. Система выдаст много строк, но вам нужно будет найти только одну:

open files                      (-n) 1024

В этом случае 1024 является текущим значением.

Вы можете также изменить ограничения в файле /etc/security/limits.conf.

В большинстве случаев вы просто получите предупреждающее сообщение, однако это не остановит запуск SteamCMD.

Загрузка HLDS

При попытке скачать мод HL1, таких как TFC, сначала загружаются файлы HLDS, но не мода. Это происходит как с обычной версией так и с бета-версией. Вы, возможно, придется попробовать несколько раз, пока все необходимые файлы будут загружены, но как только это будет сделано, файлы должны правильно обновить следующий раз.

Работа вокруг этой проблемы здесь: http://danielgibbs.co.uk/2013/11/hlds-steamcmd-workaround-appid-90/

Просто удалив файлы appmanifest, без загрузки замены из сторонних источников, может сработать. Вы получите в начале сообщение об ошибке из-за удаленных файлов, но загрузка должна продолжится.

Template:Note:ru

Смотреть также