RE:NODE

ექსპლუატაცია13 წუთის საკითხავი

SteamCMD ახსნილი: app id-ები, განახლებები, beta-ები და სკრიპტები

რა არის SteamCMD, როგორ მუშაობს app id-ები, anonymous და ანგარიშით შესვლა, რას აკეთებს validate, beta ბრენჩები, უყურადღებო განახლების სკრიპტები და გავრცელებული შეცდომები.

1 მკითხველი

SteamCMD არის Steam-ის კლიენტი მაღაზიის, მეგობრების სიისა და გრაფიკის გარეშე. ის სერვერებზე ერთ საქმეს აკეთებს: ჩამოტვირთავს და განაახლებს უფასო dedicated-server აპლიკაციებს, რომლებსაც Valve და სხვა გამომცემლები Steam-ზე აქვეყნებენ, და მათთვის Workshop-ის კონტენტს იღებს. Steam-ის თამაშის თითქმის ყველა ინსტალაციის გზამკვლევი ერთსა და იმავე ოთხ არგუმენტს ერთსა და იმავე თანმიმდევრობით იწყებს, და როცა გაიგებ, რას აკეთებს თითოეული - და რისთვის არის manifest ფაილი, რომელსაც ის ტოვებს - შეგიძლია დააყენო, დააფიქსირო, გადართო branch-ი და დაასკრიპტო ნებისმიერი. ეს არის ეს ახსნა, პლუს შეცდომები, რომლებიც ჩავარდნების უმეტესობას განაპირობებს.

რა არის SteamCMD და როდის ეხები მას#

Steam-ის თამაშის dedicated სერვერი ჩვეულებრივ Steam-ზე ცალკე უფასო "აპლიკაციაა" საკუთარი app id-ით. ის თამაში არ არის. უმეტესის ჩამოსატვირთად თამაშის ფლობა არ გჭირდება და მაღაზიის გვერდიდან ვერ ჩამოტვირთავ, რადგან ისინი ხელსაწყოებია და არა პროდუქტები. SteamCMD არის გზა მათ მისაღებად.

გამოიყენებ ოთხ სიტუაციაში:

  • პირველი ინსტალაცია. სერვერის აპლიკაციის ჩამოტვირთვა შენს მიერ არჩეულ საქაღალდეში.
  • განახლებები. იგივე ბრძანება ხელახლა გაშვებული მხოლოდ იმას იღებს, რაც შეიცვალა, სწორედ ამიტომ ჩნდება ის ყველა restart-სკრიპტში, რომელსაც ხალხი წერს.
  • Workshop-ის კონტენტი. workshop_download_item კონკრეტულ Workshop ნივთს id-ით ჩამოტვირთავს, რითაც Arma 3, DayZ და Squad-ის სერვერები თავიანთ mod-ებს იღებენ.
  • შეკეთება. validate-ის დამატება ყველა ფაილს manifest-თან ამოწმებს და ყველაფერს, რაც არ ემთხვევა, ცვლის.

თუ სერვერებს პანელზე უშვებ, შეიძლება ამაში არაფერი აკრიფო. RE:NODE-ზე ინსტალაცია სერვერის შექმნისას სრულდება - ჩვეულებრივ გადახდის დადასტურებიდან ერთ წუთში - და მნიშვნელობები, რომლებსაც SteamCMD არგუმენტებად მიიღებდა, ამის ნაცვლად ველებად ჩნდება Startup tab-ზე. იმის გაგება, რას აკეთებს ეს ველები, ათ წუთს მაინც ღირს, რადგან იმ დღეს, როცა რამე გაფუჭდება, კონსოლი SteamCMD-ის გამოსავალს სიტყვასიტყვით გაჩვენებს, და კონსოლის წაკითხვა გაცილებით ადვილია, როცა იცი, ხაზები რას ნიშნავს.

მისი დაყენება#

SteamCMD პატარა bootstrapper-ია, რომელიც ყოველ გაშვებაზე თავს განაახლებს. ჩამოტვირთე, გახსენი, გაუშვი ერთხელ და დაელოდე დასრულებას, სანამ რამეს სთხოვ.

bash
$ sudo useradd -m steam && sudo su - steam$ mkdir ~/steamcmd && cd ~/steamcmd$ curl -sL https://steamcdn-a.akamaihd.net/client/installer/steamcmd_linux.tar.gz | tar zxf -$ ./steamcmd.sh +quit

Windows-ზე ეკვივალენტია steamcmd.zip იმავე path-იდან, გახსნილი სადმე და გაშვებული როგორც steamcmd.exe. macOS-ზე ეს არის steamcmd_osx.tar.gz, თუმცა macOS-იდან თითქმის არავინ ჰოსტავს.

Linux-ზე ორი რამ ეჭირება ხალხს. პირველი ისაა, რომ SteamCMD 32-ბიტიანი binary-ია, ამიტომ 64-ბიტიან სისტემას 32-ბიტიანი ბიბლიოთეკები სჭირდება, სანამ საერთოდ დაიწყებს:

bash
# Debian and Ubuntu$ sudo dpkg --add-architecture i386 && sudo apt update$ sudo apt install lib32gcc-s1          # lib32gcc1 on older releases# RHEL, Rocky, AlmaLinux$ sudo dnf install glibc.i686 libstdc++.i686

მეორე მფლობელობაა. გაუშვი SteamCMD ჩვეულებრივი მომხმარებლით, რომელიც ინსტალაციის დირექტორიას ფლობს და არა root-ით. Root-ის ინსტალაციები ტოვებენ ფაილებს, რომელთა ჩაწერაც service ანგარიშს არ შეუძლია, და განახლება, რომელიც ექვსი კვირის შემდეგ ვარდება, permission-ების შეცდომას აცხადებს, რომელიც დისკის პრობლემას ჰგავს.

ინსტალაციის ბრძანების ანატომია#

ეს არის ხაზი და Steam-ის თითოეული თამაშის გზამკვლევი მისი ვარიაციაა:

bash
$ ./steamcmd.sh +force_install_dir /srv/valheim \    +login anonymous \    +app_update 896660 validate \    +quit

თითოეული + ერთ ბრძანებას გაშვებისას ასრულებს, დაწერილი თანმიმდევრობით, და შემდეგ SteamCMD ინტერაქტიულ prompt-ში გადავიდოდა, +quit რომ არ იყოს.

არგუმენტირას აკეთებს
+force_install_dir <path>სად მიდის სერვერის ფაილები. უნდა იყოს app_update-მდე
+login anonymousშესვლა ანგარიშის გარეშე. უნდა იყოს app_update-მდე
+login <user>შესვლა რეალური ანგარიშით; პაროლს ითხოვს
+app_update <id>აპლიკაციის ინსტალაცია ან განახლება
validateყველა ფაილის manifest-თან შემოწმება და შეკეთება
-beta <branch>public-ის ნაცვლად დასახელებული branch-ის გამოყენება
-betapassword <pw>პაროლი private branch-ისთვის
+quitგასვლა prompt-ის გახსნის ნაცვლად
+runscript <file>ბრძანებების ფაილის გაშვება მათი აკრეფის ნაცვლად

force_install_dir არის ის, რაც ხალხს ეჭირება. ფარდობითი path SteamCMD-ის საკუთარი დირექტორიის მიმართ წყდება და არა შენი shell-ის სამუშაო დირექტორიის, ამიტომ +force_install_dir ../valheim სხვადასხვა რამეს ნიშნავს იმის მიხედვით, სად არის SteamCMD. გამოიყენე აბსოლუტური path. საერთოდ გამოტოვე და ფაილები SteamCMD-ის საქაღალდის ქვეშ steamapps/common/<AppName>-ში ჩავარდება, რაც ერთი სერვერისთვის კარგია და სამისთვის - მოუხერხებელი.

როცა ჩამოტვირთვა დასრულდება, ნახე, რა დევს ინსტალაციის დირექტორიაში თამაშის გარდა:

code
/srv/valheim/  valheim_server.x86_64  steamapps/    appmanifest_896660.acf      installed build id, depots, size

appmanifest_<appid>.acf არის SteamCMD-ის ჩანაწერი იმაზე, რა ჰგონია, რომ დაყენებულია. ის უბრალო ტექსტური ფაილია და შეიცავს build id-ს, რაც ერთადერთი საიმედო გზაა კითხვაზე "რომელ ვერსიაზეა ეს სერვერი" პასუხის გასაცემად. წაშალე და შემდეგი app_update ყველაფერს თავიდან ჩამოტვირთავს, რაც ზოგჯერ ყველაზე სწრაფი გამოსწორებაა ინსტალაციისთვის, რომელიც ისეთ მდგომარეობაში ჩავარდა, რომელსაც validate ვერანაირად ვერ აგვარებს.

მონაცემებიdepot ფაილებიbuild ჩაიწერაworkshop_download_itemsteamcmdჯერ თავს განაახლებსSteamanonymous ან ანგარიშიforce_install_dirსერვერის ფაილებიsteamapps/workshopკონტენტი app id-ითappmanifest.acfდაყენებული build id
სად ათავსებს SteamCMD რას

App id-ები და სამი სახეობა, რომელსაც შეხვდები#

App id რიცხვია და ერთ თამაშს რამდენიმე შეიძლება ჰქონდეს. არასწორის აღება ამ მთელ სფეროში ყველაზე გავრცელებული შეცდომაა, რადგან არასწორი რიცხვი ხშირად აშკარა შეცდომის ნაცვლად დამაჯერებლად გამოყურებად ჩავარდნას იძლევა.

  • სერვერის app id არის ის, რასაც app_update-ს გადასცემ. ის ჩვეულებრივ ცალკე "Dedicated Server" ხელსაწყოს ეკუთვნის.
  • თამაშის app id არის ის, რასაც workshop_download_item-ს გადასცემ, რადგან Workshop-ის კონტენტი თამაშს ეკუთვნის და არა სერვერის ხელსაწყოს, და ის ასევე id-ია, რომელსაც Steam game server login token-ის შექმნისას იყენებ.
  • ზოგჯერ ისინი ერთი და იგივეა. Counter-Strike 2 ცნობილი შემთხვევაა: სერვერი app 730-იდან დგება, იგივე id-დან, რაც თამაშს აქვს.
თამაშისერვერის app idთამაშის app id
Counter-Strike 2730730
Team Fortress 2232250440
Garry's Mod40204000
Left 4 Dead 2222860550
Valheim896660892970
Unturned1110390304930
Palworld23940101623730
Project Zomboid380870108600
7 Days to Die294420251570
DayZ223350221100
Arma 3233780107410
Rust258550252490
Satisfactory1690800526870
ARK: Survival Ascended24309302399830

როცა id-ს ვერ პოულობ, ჩვეულებრივი წყარო SteamDB-ა და SteamCMD თავადაც გეტყვის:

code
Steam> app_info_update 1Steam> app_info_print 896660

ეს ბეჭდავს აპლიკაციის მეტამონაცემებს, branch-ების სიას და თითოეულის მიმდინარე build id-ს. ის ვრცელია და ავტორიტეტული პასუხია, როცა wiki გვერდი რეალობას ეწინააღმდეგება.

Anonymous login და თამაშები, რომლებიც უარს ამბობენ#

login anonymous dedicated server ხელსაწყოების დიდი უმრავლესობისთვის მუშაობს. უმცირესობას Steam ანგარიში სჭირდება, რომელიც თამაშს ფლობს, და გვერდის ავლა არ არსებობს: Arma 3, DayZ და Project Zomboid ყველაზე ხშირად შეგხვდება, და ამ თამაშების Workshop-ის ჩამოტვირთვებსაც იგივე ანგარიში სჭირდება.

bash
$ ./steamcmd.sh +force_install_dir /srv/dayz \    +login myspareaccount \    +app_update 223350 validate +quit

ამის არასწორად გაკეთების სიმპტომი კონკრეტული შეტყობინებაა:

code
ERROR! Failed to install app '223350' (No subscription)

"No subscription" ნიშნავს, რომ შესული იდენტობა ამ აპლიკაციის ლიცენზიას არ ფლობს. ან anonymous გამოიყენე იმაზე, რომელიც მას არ იღებს, ან ანგარიში, რომლითაც შეხვედი, თამაშს არ ფლობს.

სამი რამ, რაც უნდა იცოდე, სანამ სერვერზე რეალურ credentials-ს აკრიფავ:

  1. გამოიყენე სათადარიგო ანგარიში. იყიდე თამაში ანგარიშზე, რომელზეც სხვა არაფერი გიდევს. Game-server ინსტალაციას ანგარიშთან საქმე არ აქვს, რომლითაც ყიდულობ.
  2. Steam Guard ერთხელ ინტერაქტიულად უნდა დაკმაყოფილდეს. მობილური authenticator-ით პირველად შესვლას ტელეფონზე ადასტურებ; შემდეგ SteamCMD credential-ს თავის config დირექტორიაში ინახავს და შემდგომი გაშვებები უყურადღებოა. ამიტომ უყურადღებო სკრიპტი ერთხელ მაინც უნდა იყოს ხელით გაშვებული.
  3. პაროლი ბრძანების ხაზზე არ გადასცე. ის shell-ის ისტორიაში ხვდება და პროცესების სიაში ჩანს. დაე SteamCMD თავად ჰკითხოს.

RE:NODE-ზე თამაშები, რომლებსაც შენი საკუთარი Steam შესვლა სჭირდებათ - მათ შორის Arma 3, DayZ, Project Zomboid და 7 Days to Die - იქმნება დაუყოვნებლივ და შემდეგ Setup tab-ზე ელოდება, სანამ credentials-ს არ მიაწვდი. ისინი ინახება ისე, როგორც აკრიფე, რაც პატიოსანი აღწერაა იმისა, რაც ნებისმიერმა ჰოსტმა უნდა გააკეთოს, რომ შენს მაგივრად SteamCMD გაუშვას, და მიზეზია, რის გამოც სათადარიგო ანგარიშის შესახებ ზემოთ მოცემული რჩევა არჩევითი არ არის.

განახლებები, validate და beta branch-ები#

განახლება იგივე ბრძანებაა ხელახლა. SteamCMD manifest-ს იმასთან ადარებს, რაც დაყენებულია, და მხოლოდ შეცვლილ ნაწილებს იღებს, ამიტომ 20 GB თამაშის რუტინული განახლება რამდენიმე ასეულ მეგაბაიტს გადაიტანს.

validate სხვაა. ის ინსტალაციის ყველა ფაილს ჰეშავს და ყველაფერს ცვლის, რაც manifest-ს არ ემთხვევა. ეს სწორი რეაქციაა სერვერზე, რომელიც შეწყვეტილი განახლების, ჩამოტვირთვისას გავსებული დისკის შემდეგ გაშვებისას ვარდება, ან თამაშზე, რომლის დეველოპერიც გეუბნება. დიდი ინსტალაციის ყოველ restart-ზე მისი გაშვება არ ღირს, რადგან ყოველ ჯერზე მთელ თამაშს დისკიდან კითხულობს.

Branch-ები არის გზა, რომლითაც გამომცემლები ექსპერიმენტულ build-ებს აქვეყნებენ. ნაგულისხმევ branch-ს public ჰქვია და დასახელებული branch განახლების ხაზზე ირჩევა:

bash
# switch to a public test branch$ ./steamcmd.sh +force_install_dir /srv/7dtd +login anonymous \    +app_update 294420 -beta latest_experimental validate +quit# switch back$ ./steamcmd.sh +force_install_dir /srv/7dtd +login anonymous \    +app_update 294420 -beta public validate +quit

ზოგ branch-ს -betapassword სჭირდება, რომელსაც დეველოპერი branch-ის სახელთან ერთად აქვეყნებს. ორი წესი ყველაზე ვრცელდება. კლიენტები და სერვერები ერთსა და იმავე branch-ზე უნდა იყვნენ, და შეცდომა, როცა არ არიან, ჩვეულებრივ ვერსიის შეუსაბამობაა, რომელიც branch-ებს არ ახსენებს. და branch ვერსიის დაფიქსირების ერთადერთი მხარდაჭერილი გზაა - SteamCMD-ს არ აქვს "დააყენე build 12345" არგუმენტი, ამიტომ თუ თამაში ძველ branch-ს არ აქვეყნებს, მისით უკან ვერ დაბრუნდები. ეს განახლების დღემდე დაგეგმე და არა მის დროს, და წაიკითხე რა უნდა გააკეთო, როცა mod-ის განახლება ტეხავს, თუ სერვერი modded-ია.

სკრიპტული ინსტალაციები და უყურადღებო განახლებები#

ერთი და იგივე გრძელი ხაზის განმეორებით აკრეფა არის გზა, რომლითაც ბეჭდვის შეცდომები production-ში ხვდება. SteamCMD კითხულობს სკრიპტის ფაილს, სადაც ბრძანებებს + პრეფიქსი არ აქვთ:

/home/steam/update-valheim.txt
@ShutdownOnFailedCommand 1@NoPromptForPassword 1force_install_dir /srv/valheimlogin anonymousapp_update 896660 validatequit
bash
$ ./steamcmd.sh +runscript /home/steam/update-valheim.txt

ორი @ ხაზი პარამეტრებია და არა ბრძანებები. @ShutdownOnFailedCommand 1 აიძულებს SteamCMD-ს პირველ შეცდომაზე გაჩერდეს და quit-მდე არ გააგრძელოს და ისე არ გავიდეს, თითქოს ყველაფერი კარგადაა - მის გარეშე cron job-ში ჩავარდნილი ჩამოტვირთვა ზუსტად წარმატებულს ჰგავს. @NoPromptForPassword 1 უყურადღებო გაშვებას login prompt-ზე სამუდამოდ გაჩერებისგან იცავს.

კიდევ ორი პარამეტრი, რომლის ცოდნაც ღირს:

  • @sSteamCmdForcePlatformType windows აპლიკაციის Windows build-ს Linux ჰოსტზე ჩამოტვირთავს. ასე ყენდება Linux-ზე Wine-ში გასაშვებად სერვერები, რომლებიც მხოლოდ Windows binary-ს აწვდიან - The Forest ჩვეულებრივი მაგალითია.
  • @sSteamCmdForcePlatformBitness 64 აიძულებს 64-ბიტიან depot-ს, სადაც აპლიკაცია ორივეს სთავაზობს.

SteamCMD-ის exit code-ს ნუ გაიხდი წარმატების ერთადერთ შემოწმებად. ისტორიულად ის ვერსიებს შორის საიმედო არ ყოფილა. საიმედო ტესტი არის ხაზი, რომელსაც დასრულებისას ბეჭდავს:

code
Success! App '896660' fully installed.

ეძებე ის wrapper სკრიპტში და მისი არარსებობა ჩავარდნად მიიჩნიე. თუ ამას cron-ის ნაცვლად პანელიდან ავტომატიზირებ, დაგეგმილი დავალებები, რომლებიც ღირს ფარავს, როგორ გამოიყურება გონივრული განახლებისა და restart-ის განრიგი.

ერთი ზომის შენიშვნა, რომელიც ჩავარდნილ განახლებებს ყველაფერზე მეტს იწვევს: SteamCMD ჩამოტვირთვას იმავე volume-ზე ათავსებს, რომელსაც ანახლებს, ამიტომ განახლებას არსებულ ინსტალაციაზე დამატებით დაახლოებით შეცვლილი ფაილების ზომის თავისუფალი ადგილი სჭირდება. დისკი, რომელიც ზუსტად თამაშზეა გათვლილი, დისკია, რომლის შემდეგი განახლებაც ვარდება, ხშირად app manifest-ის შესახებ შეცდომაში შეცდომაში შემყვანი შეტყობინებით. დატოვე 20-დან 30 პროცენტამდე თავისუფალი.

Workshop-ის ჩამოტვირთვა ბრძანების ხაზიდან#

Workshop ნივთები id-ით ჩამოიტვირთება თამაშის app id-ის მიმართ:

bash
$ ./steamcmd.sh +force_install_dir /srv/arma3 +login myspareaccount \    +workshop_download_item 107410 463939057 +quit

ნივთი ჩნდება ინსტალაციის დირექტორიაში steamapps/workshop/content/<gameappid>/<itemid>/-ში, ხოლო manifest steamapps/workshop/appworkshop_<gameappid>.acf-ში ინახავს, რა და როდის იქნა მიღებული. ამ ფაილის წაშლა ყველაფრის ხელახალ ჩამოტვირთვას აიძულებს, რაც სტანდარტული გამოსწორებაა ნივთისთვის, რომელიც Steam-ზე განახლდა და ლოკალურად განახლებაზე უარს ამბობს.

Anonymous login Workshop-ის კონტენტისთვის ზოგ თამაშში მუშაობს და ზოგში არა, და თამაშები, რომლებიც სერვერისთვის ფლობის მქონე ანგარიშს მოითხოვენ, ჩვეულებრივ აქაც მოითხოვენ. SteamCMD ასევე ვერ აფართოებს კოლექციას - ის მხოლოდ ცალკეული ნივთების id-ებს იგებს. ამ ყველაფრის მექანიკა, მათ შორის როგორ აღწევს კონტენტი მოთამაშეებამდე და რა ხდება, როცა ავტორი ნივთს, რომელზეც დამოკიდებული ხარ, უჩვენებელს ხდის, არის Steam Workshop mod-ები dedicated სერვერებზე.

შეცდომები და რას ნიშნავენ ისინი სინამდვილეში#

შეტყობინებარას ნიშნავს
Failed to install app 'X' (No subscription)შესულ ანგარიშს ის არ აქვს, ან აპლიკაცია anonymous-ს არ იღებს
Failed to install app 'X' (Invalid Platform)ამ depot-ის build ამ OS-ისთვის არ არსებობს. სცადე @sSteamCmdForcePlatformType
Failed to install app 'X' (Disk write failure)სავსე დისკი, ან დირექტორია, სადაც მომხმარებელი ვერ წერს
Failed to install app 'X' (Missing file permissions)ინსტალაციის დირექტორიის არასწორი მფლობელი, ჩვეულებრივ root-ის ინსტალაცია
Failed to install app 'X' (Timeout downloading item)ნელი ან შეწყვეტილი გადაცემა. სცადე თავიდან; დიდ Workshop ნივთებს ხშირად ორი მცდელობა სჭირდებათ
Rate Limit Exceededძალიან ბევრი შესვლის მცდელობა. დაელოდე; უფრო სწრაფად ცდა ამას აგრძელებს
error while loading shared libraries: libstdc++.so.632-ბიტიანი ბიბლიოთეკები აკლია
Failed to load steamclient.soიგივე მიზეზი, ან ნაწილობრივ გახსნილი SteamCMD
Update state (0x61) downloading და პროგრესი არ არისდისკი ან ქსელი და არა Steam. ჯერ თავისუფალი ადგილი შეამოწმე

ორი ნიმუში ფარავს დარჩენილის უმეტესობას. ბრძანება, რომელიც თითქოს არაფერს აკეთებს, ჩვეულებრივ login-მდე გაეშვა, რადგან force_install_dir და app_update ორივე შესულობაზეა დამოკიდებული. და ინსტალაცია, რომელიც ერთსა და იმავე ფაილზე განმეორებით გზაში ვარდება, ბევრად უფრო ხშირად დისკის პრობლემაა, ვიდრე Steam-ის.

Container-ზე დაფუძნებულ ჰოსტზე ერთი დამატებითი ჩავარდნის რეჟიმია, რომელსაც სახელი ეკუთვნის. თუ სერვერი ინსტალაციისას მეხსიერების ლიმიტს მიაღწევს, container ჩერდება და swap-ზე არ რჩება, და შემდეგ ხედავ ნახევრად ჩაწერილ ინსტალაციის დირექტორიას. გამოსწორება ინსტალაციის validate-ით ხელახლა გაშვებაა; ამ ქცევის ზოგადი სახე აღწერილია რატომ ეშვება შენი game server განუწყვეტლივ თავიდან-ში.

FAQ#

უნდა ვფლობდე თამაშს, რომ მისი dedicated სერვერი გავუშვა?

ჩვეულებრივ არა. უმეტესი dedicated-server აპლიკაცია login anonymous-ით ჩამოიტვირთება. Arma 3, DayZ და Project Zomboid გავრცელებული გამონაკლისებია: მათ სერვერის ხელსაწყოებს Steam ანგარიში სჭირდება, რომელიც თამაშს ფლობს, და ასევე მათ Workshop-ის ჩამოტვირთვებს.

რას აკეთებს validate სინამდვილეში?

ის ყველა დაყენებულ ფაილს Steam-ის manifest-თან ჰეშავს და ყველაფერს ცვლის, რაც არ ემთხვევა. ის ასწორებს დაზიანებას და ნახევრად დასრულებულ განახლებებს, და ასევე აბრუნებს ნებისმიერ ფაილს, რომელიც შენ შეცვალე და აპლიკაციას მოჰყვებოდა. გამოიყენე ჩავარდნის შემდეგ და არა დიდი ინსტალაციის ყოველ restart-ზე.

შემიძლია კონკრეტული ძველი ვერსიის დაყენება?

მხოლოდ თუ გამომცემელი მას დასახელებულ branch-ად სთავაზობს, რომელიც -beta-თი ირჩევა. SteamCMD-ს თვითნებური build id-ისთვის არგუმენტი არ აქვს. თუ უკან დაბრუნება უნდა შეგეძლოს, განახლებამდე შეამოწმე, აქვეყნებს თუ არა თამაში legacy branch-ს.

სად მიდის ფაილები, თუ force_install_dir-ს არ დავაყენებ?

SteamCMD-ის საკუთარი საქაღალდის შიგნით steamapps/common/<AppName>-ში. ეს ერთი სერვერისთვის კარგია და რამდენიმესთვის დამაბნეველი, ამიტომ ყველა გზამკვლევი დირექტორიას ცხადად აყენებს. გამოიყენე აბსოლუტური path, რადგან ფარდობითი path-ები SteamCMD-ის დირექტორიის მიმართ წყდება და არა შენი shell-ის.

რატომ იტყობინება ჩემი სკრიპტული განახლება წარმატებას, როცა არაფერი ჩამოტვირთულა?

რადგან SteamCMD-ის exit code საიმედო სიგნალი არ არის. დაამატე სკრიპტში @ShutdownOnFailedCommand 1, რომ პირველ შეცდომაზე გაჩერდეს, და შენს wrapper-ს $?-ის შემოწმების ნაცვლად გამოსავალში Success! App 'X' fully installed. შეამოწმებინე.

როგორ ვიცი, რომელ build-ზეა ჩემი სერვერი?

წაიკითხე steamapps/appmanifest_<appid>.acf ინსტალაციის დირექტორიაში. ის ჩაწერს დაყენებულ build id-ს. SteamCMD-ში app_info_print <appid> აჩვენებს თითოეულ branch-ზე ამჟამად გამოქვეყნებულ build id-ებს, რასაც მას ადარებ.


კომენტარები

სრულიად ანონიმურად: ანგარიშის, ელფოსტის და cookie-ის გარეშე. ინახება მხოლოდ სახელი, ტექსტი და დრო - სხვა არაფერი. ბმულების რაოდენობა ლიმიტირებულია.

0/2000