
Mods / ModsUpdater For Linux
Author: Laerinok
Side: Both
Created: Sep 10th 2023 at 10:49 AM
Last modified: Apr 26th at 10:07 AM
Downloads: 2028
Follow Unfollow 58
Latest release:
VS_ModsUpdater.v2.1.2_Linux.zip
Vintage Story ModsUpdater for Linux (AppImage)
Your go-to buddy for always-up-to-date Vintage Story mods
INFO: An AppImage is available on GitHub. (Not quite ready yet. Work in progress. for testing purposes)
Tired of Messing with Vintage Story Mods? Let ModsUpdater Take the Wheel!
Keeping your favorite Vintage Story mods up-to-date can feel like a chore, right? Manually checking for new versions, downloading them one by one... it eats into your precious playtime!
ModsUpdater for Vintage Story is here to change that. Think of it as your personal mod management assistant, designed to make your Vintage Story modding experience smooth and hassle-free.
Stop wrestling with your mods – download Vintage Story ModsUpdater today and get back to playing!
Important Warning/Point to Know - Read Before Use
- This program is not a mod! It's a separate program that allows you to update your mods. You do not need to put it in your mods folder, but in the location of your choice. This program needs to be unzipped, and you have to run the VS_ModsUpdater.exe file
- Whether you update your mods with ModsUpdater, another program, or manually yourself, it's always safer to make a backup of your save beforehand! A new version of a mod can break your save.
- There is a section to exclude certain mods from the update process, which is essential for terrain generation mods that, once installed, should not be updated.
- Finally, there is a WIKI, don't hesitate to read it. Although the program is autonomous and works without any intervention on your part, personalizing its configuration can make your life easier and avoid problems.
What can ModsUpdater do for you?
- Stay Updated Effortlessly: Forget constantly checking ModDB. ModsUpdater compares the mods you have installed with the latest versions available, letting you know if an update is out there.
- Choose Your Update Style: Whether you prefer to sit back and let the magic happen with automatic downloads, or you like to be in control and see what's new with manual updates (including changelogs!), ModsUpdater has you covered.
- Safety First with Backups: Before any update happens, ModsUpdater can create a backup of your current mods. That way, if anything goes sideways, you can easily revert to your previous setup. You can even tell it how many backups to keep!
- Say Goodbye to Unwanted Updates: Got a mod you want to keep as it is? No problem! You can tell ModsUpdater to ignore specific mods during update checks.
- Keep Track of Your Collection: Want a neat list of all the mods you're running? ModsUpdater can generate a clear and shareable list in both PDF and JSON formats. Perfect for sharing your setup with friends!
- Plays Well with Others (CLI): For the more tech-savvy among you, ModsUpdater can even be run from the command line with special arguments to customize how it works.
- Speaks Your Language: The interface is available in multiple languages, making it accessible to a wider range of players.
- Keeps Itself Up-to-Date: ModsUpdater automatically checks for its own updates when you launch it, so you'll always have the latest and greatest version.
How it Works Simply:
When you run VS_ModsUpdater, it first looks at its settings (which you can customize in a config.ini file). Then, it checks for new versions of your mods.
- Automatic Mode: If you've set it to auto-update, it will download and update everything for you. You'll even get to see the changelogs afterwards!
- Manual Mode: If you prefer to be in control, it will show you what updates are available, let you read the changelogs, and ask you to confirm before downloading anything.
Before updating any mods, it makes a backup, just in case. And when it's all done (or even if there are no updates), it can create a handy list of your mods in PDF and JSON formats.
Take Control with Command Line Options (for advanced users):
You can also run ModsUpdater from your terminal or command prompt with special commands to change how it works for that specific run. For example, you can tell it to use a different mods folder, skip creating the PDF list, or change the logging level.
Ready to spend less time managing mods and more time enjoying Vintage Story? Give ModsUpdater a try!
Want to Customize?
ModsUpdater uses a simple configuration file (config.ini) that you can easily edit to fine-tune how it works. You'll find options for backups, download settings, language, and even the Vintage Story game version you're playing.
config.ini
)The config.ini
file contains the configuration parameters for the application. It is located in the same directory as the main script (Windows) or ~/.config/VS_ModsUpdater
(Linux). Here are the main sections and their options:
[ModsUpdater]
version: 2.0.1
version: Current version of the ModsUpdater application (information).
[Logging]
log_level: INFO
log_level: Level of detail for logs recorded by the application (e.g., DEBUG, INFO, WARNING, ERROR). DEBUG will display the most details.
[Options]
exclude_prerelease_mods: false
auto_update: true
max_workers: 4
timeout 10
exclude_prerelease_mods: true to exclude pre-release mod versions during update checks, false to include them.
auto_update: true to enable automatic downloading of updates (after checking), false to use manual mode where you confirm each download.
max_workers: Maximum number of threads to use for downloading mods in parallel. Increasing this value may speed up downloads but may also consume more system resources. The maximum value allowed for this setting is 10.
timeout: Timeout in seconds for HTTP requests during update checks and mod downloads. A typical useful range is between 5 and 30 seconds. Setting it too low might cause connection errors on slower networks, while setting it too high might make the application wait unnecessarily long if a server is unresponsive.
[Backup_Mods]
backup_folder: backup_mods
max_backups: 3
modlist_folder: Modlist
backup_folder: Name of the directory (created in the application directory by default) where mod backups will be stored. You can also specify a full path if you wish to store backups elsewhere.
max_backups: Maximum number of mod backups to keep. Older backups will be deleted when this limit is reached.
modlist_folder: Name of the directory (created in the application directory by default) where the mod lists in PDF and JSON format will be saved. You can also specify a full path if you wish to save the lists elsewhere.
[ModsPath]
path: ~/.config/VintagestoryData/Mods
path: Full path to the directory where your Vintage Story mods are installed on your computer. This is crucial for the application to find your mods.
[Language]
language: en_US
language: Language code to use for the application interface (e.g., en_US for English, fr_FR for French). This value must correspond to the name of a file (without the .json
extension) present in the lang
subdirectory of the application. Make sure the corresponding language file exists.
[Game_Version]
user_game_version: 1.20.5
user_game_version: Maximum game version target for mod updates.
- If you specify a version (for example, 1.20.5), the application will not download mod updates that are only compatible with Vintage Story versions higher than the one specified.
- If this option is left empty (
""
) or set to None, the application will download the latest available update for each mod, regardless of the compatible Vintage Story version. Caution: this means you might download mods that are not compatible with your current game version. If you want to stay on a specific Vintage Story version, define the version, but remember to change it when you update the game.
[Mod_Exclusion]
mods: mod_a.zip, my_old_mod.cs
mods: List of filenames (without the path) of mods to ignore during update checks and downloads. Filenames should be separated by commas and spaces (e.g., mod_a.zip, my_old_mod.cs).
Command Line Arguments Usage
The script can be executed with arguments to customize its behavior:
--no-pause
: Disables the pause at the end of the script execution. Useful for non-interactive execution or in automated scripts.
--modspath "<path>"
: Allows you to specify the path to the Vintage Story mods directory directly during execution. The path must be enclosed in quotation marks if it contains spaces. This argument replaces the path defined in the config.ini
file.
--no-json
: Disables the automatic generation of the mod list in JSON format at the end of execution.
--no-pdf
: Disables the automatic generation of the mod list in PDF format at the end of execution.
--no-html
: Disables the automatic generation of the mod list in HTML format at the end of execution.
--log-level <level>
: Sets the level of detail for logs recorded by the application. Possible options are: DEBUG
, INFO
, WARNING
, ERROR
, CRITICAL
(in uppercase). This argument replaces the log level defined in the [Logging]
section of config.ini
.
--max-workers <number>
: Allows you to specify the maximum number of threads to use for mod processing. This argument replaces the max_workers
value defined in the [Options]
section of config.ini
.
--timeout <seconds>
: Sets the timeout in seconds for HTTP requests during update checks and mod downloads. This argument replaces the timeout
value defined in the [Options]
section of config.ini
.
Usage Examples:
./VS_ModsUpdater.vX.Y.Z.appimage --modspath "D:\Vintage Story\mods" --no-pdf
This command will execute the script using the specified mods directory and will disable the generation of the PDF mod list file. The mods path specified here will replace the one configured in config.ini
.
./VS_ModsUpdater.vX.Y.Z.appimage --log-level INFO --max-workers 6 --timeout 15
This command will execute the script by setting the log level to INFO
, using a maximum of 6 threads for mod processing, and a timeout of 15 seconds for HTTP requests. These parameters will replace those defined in the config.ini
file for this execution.
When using the argument --modspath, it seems the [Mod_Exclusion] doesn't work.
not sure if it is for both version, Windows and Linux or only Linux.- If a mod's filename is present in the [Mod_Exclusion] section of the config.ini file, it is correctly excluded from the update, but it appears in the console as having been updated. (And a backup of the mod is also created.)
- The download link for the script is broken due to a typographical error. fixed in next version
This tool is open-source under the GNU General Public License version 3, meaning it's free for you to use, share, and even modify!
- Deutsch
- English
- Español
- Français
- Italiano
- 日本語
- 한국어 (From gitHub. Thanks purple8cloud)
- Português (Brasil)
- Português (Portugal)
- Русский
- Yкраїнська
- 简体中文
mod, mods, mod updater, mods updater, updater, update, modupdater, mod update, mods updater, linux mod updater, linux mods updater
Version | For Game version | Downloads | Release date | Changelog | Download | 1-click mod install* |
---|---|---|---|---|---|---|
v2.1.2 | 109 | Apr 26th at 10:07 AM | Show | VS_ModsUpdater.v2.1.2_Linux.zip | ||
v2.1.1 | 106 | Apr 9th at 5:36 PM | Show | VS_ModsUpdater.v2.1.1_Linux.zip | ||
v2.0.2 | 49 | Apr 6th at 6:46 PM | Show | VS_ModsUpdater.v.2.0.2_Linux.zip | ||
v1.4.2 | 209 | Feb 17th at 12:26 PM | Show | VS_ModsUpdater_Linux.v1.4.2.zip | ||
v1.4.0 | 495 | Apr 2nd 2024 at 3:31 PM | Show | VS_ModsUpdater_Linux.v.1.4.0.zip | ||
v1.3.6 | 146 | Mar 26th 2024 at 3:32 PM | Show | VS_ModsUpdater_Linux.v.1.3.6.zip | ||
v1.3.5 | 138 | Mar 20th 2024 at 7:24 PM | Show | VS_ModsUpdater_Linux.v.1.3.5.zip | ||
v1.2.0 | 263 | Oct 20th 2023 at 10:53 AM | Show | VS_ModsUpdater_Linux.v.1.2.0.zip | ||
v1.1.4 | 177 | Oct 3rd 2023 at 8:01 PM | Show | VS_ModsUpdater_Linux.v.1.1.4.zip | ||
v1.1.3 | 165 | Sep 25th 2023 at 10:15 AM | Show | VS_ModsUpdater_Linux.v.1.1.3.zip | ||
v1.1.2 | 171 | Sep 10th 2023 at 10:51 AM | Show | VS_ModsUpdater_Linux.v.1.1.2.zip |
Laerinok
I sent to you my script on your discord PV, take a look
Yskar
Thanks for the info. I will look at this.
A GUI is not planed for now. Maybe in a v3... Adding a fancy graphical interface would definitely make the app look nicer and be easier on the eyes. But the original idea was to keep things super simple: you just run it, it does its thing automatically, and then you're done. No need for the user to click buttons or do anything extra. A GUI would mean more steps for the user, which isn't what I was aiming for.
Plus, there's the issue of file size. The place where I'm hosting it, ModDB, has a 40MB limit, and I'm already getting pretty close to that. I really want to keep the main program under that limit so it can stay on ModDB. And honestly, I don't have the time or feel right now to manage and update multiple versions of the same app, like one with a GUI and one without. So for now, sticking with the simple, command-line approach makes the most sense.
But, indded, I'm curious to see how it would look on your example Python script. I did some very basic gui exercises with Tkinter a while ago (same pseudo in discord).
ok, i'm gonna revise the BR translation and if anything needs to be changed i will repport it on github, bro 👍😁
You can look at the Vita3K appimage and see how it deal with stuff, probably will give you ideas to do what you need for the script to run (and what you think in using GTK5 to provide a desktop interface for the terminal window? it would make the appimage being executed in a window making it even more elegant, i did it with one of my python scripts using chatgpt and it looked very nice and i can provide it to you via discord if you want analyze it.)
Yskar
Cool that it's working on Arch Linux now. Though I gotta admit, it wasn't exactly on purpose... I just changed how I build the binary, and it probably handled the dependency better.
My biggest issue with the AppImage is that I can't seem to handle the internal paths. Even though I get the concept, in reality something always gets in the way. To be more precise, it's the .desktop and AppRun stuff... I can't find a clear example of how to build it that I can learn from.
P.S. I added your language, since you did the translation for version 1. But, the translations are done by AI, so if you've got the time and feel like making it sound better, go for it! :)
Thanks for trying appimage Laerinok (i will test it and repport here when you fix it)
I tried the 2.1.1 release binary and for the first time it worked correctly on Arch Linux as you provide the static dependency libraries. Very good! 👍😁
GaylordZap
The AppImage is still experimental. I'm still discovering the system... My VM is also on Mint Cinnamon. Similarly, I noticed that I can't double-click on it to launch it, but no problem in the terminal. I read that it's an issue with the configuration of the Linux distribution in general. But I still have no idea if that's the cause. I did, however, put a
.desktop
file inside the AppImage.That being said, I have other issues with the AppImage, so I'm going to try another way to create it. That's the reason why I didn't create an appimage for the v2.1.1
But not being a big Linux user, I spend more time looking for information than fixing the issue...
EDIT: Actually, I think it's the internal structure of my AppImage that isn't right... 🤔
I'm having troubles getting the AppImage to run (Mint Cinnamon), and I couldn't find anything in the Troubleshooting guide or FAQ on github about the issue. Even if I give it permission to run as an executable, giving it the big fat double click does nothing. I am being tempted to just try and do the Advanced Installation since my Python is already up to date but I don't know if that will be worth it, for all I know the issue here could be painfully obvious.
Changelog:
if not args.no_pdf:
condition was moved within theexport_pdf
module to wrap only the PDF generation steps. This ensures that the icon extraction logic, which runs before PDF generation, is always executed, making icons available for other export formats (like HTML) even if PDF export is skipped.--no-html
to disable HTML mod list export.--no-html
option.PS: I need to fix the appimage creation. So no release for appimage for now, sorry...
ZippyWonderdust the app needs Python 3.12 to work properly, 3.10 is not sufficient. The reason is that Laerinok uses a format string that is only now allowed in 3.12 and even on 3.11 that gives this error:
File "/home/_vintagestory/VS_ModsUpdater_v2/./main.py", line 93
print(f"\n- {language_cache["main_language_set_to"]}[dodger_blue1]{language[1]}[/dodger_blue1]")
^^^^^^^^^^^^^^^^^^^^
SyntaxError: f-string: unmatched '['
A better explanation can be found in the changelog: https://docs.python.org/3.12/whatsnew/3.12.html#pep-701-syntactic-formalization-of-f-strings
As for the zip file you can use the main.py file instead but indeed I was surprised to.
Last news: Here is the list of the latest fixes that have been implemented.
There are still new bugs during the export of modlists for manual downloads. This only affects the export of the mod list, so it's not too bothersome for the moment. I also still need to fix the AppImage.
No ETA for the v2.0.3 yet , but it should not be too long
ZippyWonderdust
I'm sorry, I completely missed your message. But thank you for this script! I'm trying to make an AppImage, I hope it can simplify the usage. But it seems it's not fully functional yet.
Menelos
😊
Laerinok you did all that in such a small amount of time it was impressive.
1. if you know the whole list of names in advance, which you may know in the "Scanning mods" phase, then you can count the longest string and then pad with spaces when you display then in the next phase
2. "Limit mod updates to the game version : 1.20.7"
3. the JSON has all the information but it's not meant for humans. I could add some kind of viewer but then I'm not a webdesigner and the page would stop being static (or use lots of JS). In this case I'd simply stick with the PDF since Firefox has a viewer embedded, but I just don't know how that work in other browsers, most probably they ask to download the file.
Menelos
Glad to see that this new version works well and is faster. That was the goal, but it's nice to see that the effect is noticeable :) It was also an opportunity to make it visually less austere. V1 was initially designed for my personal use (and with the limited knowledge I had), this version aims to be truly useful and pleasant to use for as many people as possible.
I don't use a server, so I don't really have an idea of what information might be useful or not. Feel free to submit ideas/needs. If it's within my capabilities, I can add them.
Quack Laerinok
The new version looks nice and is much faster (expecially on my server with lots of mods), thank you :-)
Just a few remarks:
With this new version, I hope most of the old issues are fixed. I even could make an AppImage. Tell me if all work as intented.
INFO : Version 2 - is done!
The update is a bit too big to upload here. I would try to manage it to reduce the size. The Appimage is available ont GitHub.
While you wait, feel free to check out the new wiki and readme.
Hoping you'll like this new version!
I want to thank SturgeonFish for their helpful post regarding NixOS, as I am apparantly one of the 5 users! 😁
Thank you also, and so, so much, to Laerinok. This software is such an incredible time-saver.
Time, and software versions, move on. On NixOS 24.11, Python 3.9 now spits out a pip compatibility error.
The following updated shell.nix fixes it by requesting Python 3.10 instead:
{ pkgs ? import <nixpkgs> {} }:
pkgs.mkShell {
name = "vs-mods-updater-env";
buildInputs = [
pkgs.python310
pkgs.python310Packages.virtualenv
];
shellHook = ''
export PYTHONPATH=$PYTHONPATH:.
virtualenv venv
source venv/bin/activate
pip install -r requirements.txt
echo "VS Mods Updater environment loaded"
'';
}
Two other things:
Laerinok
I even forgot about this, LOL, lemme test it again and i will report editing here.
EDIT: NOPE, the steps in this readme procedure stills break the same way:
source venv/bin/activate
venv/bin/activate (line 40): “case” builtin not inside of switch block
case "$(uname)" in
^~~^
from sourcing file venv/bin/activate
source: Error while reading file “venv/bin/activate”
AAAND their step 5 doesn't work on Arch 'cause it doesnt exists pip for Arch and pipx don't work quite right, we could workaround it if we resolve the step 4, i will look it using perplexity and will repport any fix on github. 👍
Yskar
I am sorry I missed your comment. 😅
I guess this is solved with the pre-release ?
Thanks, bro! 👍
INFO :
New pre-release version is available on GitHub.
Should be the last before uploading here.
Changelog:
Yskar
Yeah, I'm too stupid for .desktop files. I can't even figure out how to escape spaces in them, because none of the online references seem to work (\ does not, \s does not work either). Ended up just going with a different file path, which recognizes the updater, but still can't seem to get it to work with activating the virtual environment first, which seems to be necessary before every launch. I tried myself at .desktop files in the past but gave up after several hours of fumbling around and this is already bringing back memories...
DarkThoughts
You can create a .desktop file with this command: "distrobox enter --name CONTAINERNAME -- python /~/VSUpdaterDIRECTORY/VS_ModsUpdater.py" and make it run using Konsole and put it in ~/.local/share/applications and fix it in the KDE app launcher (or you can leave it on the Desktop).
Yskar
I do have a few Distroboxes set up, including an Arch one with some Python shit for my local LLMs where I tried to run it in, but honestly I also don't want having to constantly remember running specific tools in specific distrobox terminals with specific commands, because that's not just a lot of extra steps but when I do some other shit and come back some months later I won't remember any of those steps either.
Edit: I did get the latest version to run in a distrobox like that, and my above point still stands, but at least I can say that the certificate issue seems to be resolved - or it's specific to the release builds.
Laerinok
sTiKyt very kindly made a guide to use the script regardless of the distro. cf description above or readme.md on github.
It didn't worked on Arch, it gave this error on step 4:
❯ source venv/bin/activate
venv/bin/activate (line 40): “case” builtin not inside of switch block
case "$(uname)" in
^~~^
from sourcing file venv/bin/activate
source: Error while reading file 'venv/bin/activate'
DarkThoughts
Well, firts you need to look the requeriments.txt file and install the libs it's described there (and as you uses Bazzite i recommend running the updater over UBUNTU on DISTROBOX and learning how to use Distrobox, the other alternative you have is using NIX, but i personally find it harder to do so), with all requeriments installed it will EVENTUALLY run (it takes like 3 to 5 minutes to start updating the mods), this distro is problematic as it is immutable, so you can't install system libs this script requires.
The problem with Bazzite is this distro is maded to be ran a Steam Deck OS and not well devised to anything else (even if it have a KDE desktop mode), if you're using in a laptop or desktop i recommend you changing your distro do CachyOS so you will have less limitation, BUT if you're using a Steam Deck you will REALLY have to learn how to use Distrobox, there's CachyOS for Steam Deck, BUT it have the same limitations Bazzite have as they're Linux for enbeded system.
OR you can run the windows version over WINE/Proton if you don't want all this hassle.
sTiKyt very kindly made a guide to use the script regardless of the distro. cf description above or readme.md on github.
The workaround I've found (Ubuntu 24.04, should work anywhere) is just to run the Windows version of the program through Wine. Unless you know your way around python and can set up your environment exactly the same as his, which I wasn't able to do, seems like the best way until Laerinok gets it figured out.
I just installed Wine on my server and ran the exe, everything updated perfectly.
Yskar
That gives a bunch of syntax warnings for invalid escape sequences and then errors out due to a lack of module dependencies. So, the usual Python shit. lol
DarkThoughts Execute in the terminal the following "python VS_ModsUpdater.py" inside the program folder.
Laerinok maybe i messed something in the repport, i will try to recreate the GPT o1 suggestion and i will link for you in the repport.If Appimage is too much for you, you really don't really NEED to, just providing the python script instead the compiled binary is enought for us average Linux enjoyers. 😄
Yskar
As said before, I have no idea what to do with the source files.
I guess by the time this updater maybe starts working, the VSLauncher app is going to have all that functionality already anyway.
Yskar
Hello
Indeed, I'm slowly realizing that there's an issue with the unlinked dependencies. I'm not familiar with all this at all... I'll look into AppImage, but I have no idea what it is yet.
I checked your report, and I don't get that warning. However, it's possible that I accidentally disabled it when I first started. That being said, part of your fix shouldn't work because using
r''
converts the string to raw text (which is intended to avoid escape issues), but it also converts variables to raw format. They are no longer recognized as variables and therefore don't pass their value.r''
should only be used for static strings.However, I think I can use
rf''
for these specific cases with variables. I'll have to check.I won't publish a new release only for this, but it will be in the next.
thanks
DarkThoughts The python source is working correctly (at least on Arch), it just doesn't start downloading fast, but run the script and wait, it will work probably.
Laerinok
The Binary never worked on Arch 'cause you don't link the dependencies statically, but the python script works, what is preferable anyway, so just drop the binary in the Linux release and just ship with the python script anyway of use appimage instead a compiled binary, it would be more elegant.
This release alerted some syntax errors, i fixed it using GPT O1, i'll write a report for you on GITHUB, but it is small stuff, the script worked correctly anyway, the script in this version aren't starting as fast the older released did, maybe it would be best alerting it to the user so they won't think the script just froze.
DarkThoughts
Logical! It's just the release of v1.4.2 that I added to GitHub. 😉
I haven't had time to look into a new release yet.
The release on Github from 3 hours ago has the same issue unfortunately. :/
Sits Yskar
Indeed, I must have messed up somewhere when creating the archive. But since it was working on my end, I didn’t realize it. I need to try creating the archive again.
And yeah, why not add the .py file to the archive (but yes, it's still available in the sources ;))
Laerinok pls bro, always add the python source into the zip here, sometimes the binary doesn't work (and you forgot to update into github this time), thanks as always. 😉
Also, maybe it's for the better you do a appimage instead compiling binary, it would work better on Linux.
Edit: i got confused 'cause you didn't do a "release" this time, but i found the updated python source, thanks.
I have the library installed, but it's looking for the temp packaged version and I'm not smart enough to fix it ;;
Sits Chumber
It seems that the library was not packaged correctly; therefore, if it is not already installed on your system, this causes the error. I will check that.
Having the same issue as the below commenter.
[PYI-85589:ERROR] Failed to load Python shared library '/tmp/_MEIZNIdKE/libpython3.11.so.1.0': dlopen: /tmp/_MEIZNIdKE/libpython3.11.so.1.0: cannot open shared object file: No such file or directory
Not sure what happened, but the last version was working for me on Ubuntu 24.04, but in this version I'm getting the following error when trying to run the program:
[PYI-2427325:ERROR] Failed to load Python shared library '/tmp/_MEIz6TuKM/libpython3.11.so.1.0': dlopen: /tmp/_MEIz6TuKM/libpython3.11.so.1.0: cannot open shared object file: No such file or directory
I unfortunately do not have the knowledge to work off the .py alone, nor diagnose the root issue.
Edit: Just saw your last comment about maybe finding a way to provide other versions. Hope it goes well, been using this for a long time and would like to do so again.
DarkThoughts
Yep, some issues with coments.
"For others distros, you can find the .py file in the source tab."
I only said that the source file was available on GitHub for those who want to compile it for other distros, not that they were on GitHub ;)
If I find another way to create the executables, I might be able to provide them for other distros, but for now, I can only make the sources available.
But as I said, my knowledge is limited. I'm learning as I go.
🧐
PS: I may have discovered a way to provide other versions today, but I'll need to look into it further.
Laerinok
Huh? Your mod description states that this is a Debian based version, and that we should go to the Github page for other releases. And I have no idea what to do with the source files.
Edit: Moddb comments are acting weird again.
DarkThoughts
What do you mean by "the 1.4.2 release isn't on GitHub"? Because the sources for version 1.4.2 are on GitHub. I haven't uploaded the release yet, but it's the same as the file on ModDB.
Again, I’ll repeat myself, but I’m neither a programmer nor a regular Linux user, so my knowledge is very limited and mostly based on the information I gather here and there. That said, if you want us to explore the issue further, feel free to contact me on Discord. If we can solve this problem that seems to affect only a handful of users, that would be great.
Laerinok
I don't use a Debian based distro (I use Bazzite, which is an immutable distro based on Fedora Atomic Desktops) and the 1.4.2 release isn't on Github.
I tried it without my VPN connection to rule it out already at the time I was trying your updater. I generally cannot imagine it being a connection issue or outdated certificates on my end since everything else works, including other Python based scripts that download things from some servers, and I have not heard of my distro having outdated certificates either. If the certificates are stored within the immutable system files then it would affect every single user of that distro.
DarkThoughts
Version 1.4.2 includes the latest SSL certificate updates. I’m not sure if that fixes the issue. There can be many possible causes (from what I’ve read), especially outdated certificates on the user’s side, a proxy, VPN, or firewall blocking/intercepting or modifying the certificates.
One possible solution on my end would be to disable SSL verification, which I won’t do for obvious security reasons.
As it stands, I don’t have the knowledge to do better, sorry.
Invataksi338472
The reason is simple: PyInstaller, which I use to generate the executable, needs to be run on the target system. This was the first solution I found in the beginning. I'm neither a coder nor a programmer, so I didn’t look further.
My media server runs Mint as well (though I use it very little), but my main work PC is on Windows 10, where I have multiple systems in VMs. For now, that’s the easiest setup for me.
That said, what you’re saying is interesting—I’ll take a look!
Hello! I'm reading the comments here, and got wondering why exactly are you using a VM to make this? There is a more straight forward method using WSL2 (Windows Sub-system For Linux) that could also work, and doesn't require as much expertise as setting up a VM and using an actual Linux distro.
In summary, it literally just downloads the selected distro onto Windows, and allows you to do all the things that distro can on Windows. It comes as default on Windows 11, and Microsoft has good documentation on how to use it!
Though I'm a Linux (Mint) user my self, so dunno why I'm recommending a method that keeps you on Windows for longer :P
PS: On the website where Microsoft hosts the documentation for WSL2, there is also documentation on how to actually switch to Linux, for anyone interested :^)
Is the 2.0 version fixing the SSL certificate issue?
The issue is fixed. Unfortunately, I can't create the executable for Linux tonight. I need to reinstall my virtual machine. But if needed, you can grab the .py file from the sources.
File "VS_ModsUpdater.py", line 631, in update_mods
TypeError: int() argument must be a string, a bytes-like object or a real number, not 'NoneType'
The issue has been identified. The new ModDB server no longer returns the
Content-Length
value that I was using to retrieve the file size for downloading.I'll fix it as soon as possible, but probably not today.
Friestvalker Chumber deadtom04
Indeed the ModDB update from yesterday should have changed something. The issue is due to a failing request to get the file size, before downloading the zip file.
I will investigate but I am not at home today.
I too am having the issues that deadtom and chumber are describing
Can confirm deadtom's reported issue. Every update attempt spits out the same error.
I think the latest update may have broken something. Any mod that the script tries to update throws the below error:
2025-02-15 17:03:49 : Gourmand
Traceback (most recent call last):
File "VS_ModsUpdater.py", line 631, in update_mods
TypeError: int() argument must be a string, a bytes-like object or a real number, not 'NoneType'
Maquin
Thank you so much for your feedback and enthusiasm! I'm glad this tool is helpful to some players :)
I ran this and it worked like a dream. I wept tears of joy knowing that I am finally forevermore free of the burden of hunting down fifty mods to install individually every time the game updates. Thank you.
Maquin
👍
Laerinok
I figured out the problem, it was because I didn't have the working directory opened in the terminal since I used the keyboard shortcut to open it instead. Rookie mistake on my part.
Maquin
FileNotFoundError: [Errno 2] No such file or directory: 'lang/en_US.json'
The script doesn't find the language file.
Did you extract all the files and folders from the archive? You must have this folder structure (it's from the windows version, but structure is the same):
Every time I try to run this in the terminal, all I get is "An error occured. Please see the debug-log file in logs folder for more
information." After checking the logs, it just says
2025-01-26 18:03:14 : Traceback (most recent call last):
File "VS_ModsUpdater.py", line 887, in <module>
File "VS_ModsUpdater.py", line 80, in __init__
FileNotFoundError: [Errno 2] No such file or directory: 'lang/en_US.json'
Not really sure what I'm supposed to do to fix this.
SalazarWindriver
It occurs only in some rare case, but it can happen. I don't know if you use SpearAndFand's Primitive Survival, but it had made a small disclaimer about multiple mods and how to keep a clean mod folder (troubleshooting section).
This script was my first one in Python. I learn and I didn't think every issues (or I didn't know how to deal with them). Now I feel more confortable, and the next version should be better.
Yeah I ran it without reading the wiki, that was my fault.
I have only ever had problems with multiple copies when I come back after a while and it has multiple copies enabled. disabling has always solved that. It was some of the reason I was looking for this updater. I was going through and cleaning up and updating my mods when I found this.
SalazarWindriver
Sorry for your game but:
You have to set:
[Game_Version_max]
version = 1.19.8
All infos about config.ini are in the wiki or on the page for windows (advanced operation - via config.ini).
You should not have so many versions. When you manually download a mod or if you use the install method from ModDB you MUST DELETE old versions by your own. I cannot (and I don't want) check if users have a mess in their mods folder. Having multiple versions of a mod can cause many issues. You were lucky if you hadn't yet.
But whatever, the v2 will be a little bit "safer". Mods to update will be saved in a zip file before updating. I am also working on a way to downgrade to another game version, but I meet some issues for now.
This just broke my entire game. It updates to the latest version without checking compatibility. The newest version of automap markers is for 1.20 only and I'm still running 1.19.8 but it downloaded it anyway. Love the idea but for 2.0 it should check the flags to make sure the new version will work with the installed version of the game. It also downloaded multiple copies of some mods cause I still had older versions in the folder.
INFO V2.0.0:
I’ve learned a lot from this project, and now I’m ready to move on to an entirely new version 2.0.
I started the code from scratch and added new features:
These features are complete. I still have a lot to work on; I don’t have an estimated release date yet, but progress is being made.
If you have any suggestions, now is the time to share them. If it’s within my abilities, I’ll see what I can do.
hron84
Hello,
I made a little break but I am going to dive into this script soon. I am working on a new version, I will try to fix this.
As you may have read, I am not a linux user (and only on Mint in a virtual machine) so my knowldeges are pretty low. Moreover, I am not a programmer. I made this script because I needed it and because I wanted to learn Python. It's the only script I've made.
That said, I know there is an issue with the ~home somewhere. But as I cannot reproduce it on my VM, it's hard to make test. I guess Debian version have some differences with Arch or others distros.
Moreover the script is made with Python 3.11.4. and I know that 3.12 brings some new features because there are some depreciation alerts.
Feel free to send me / contact me (here, on github or on Discord - same pseudo). I appreciate any help but keep in mind that I add/modify code only if I can understand it. As I said, I am learning, and I must understand what I change to be able to update it later.
It either does not work, or does not print out anything for me. I running the latest updater package you uploaded to the site (1.4.0) with the following parameters: ./VS_ModsUpdater --modspath "${HOME}/.config/VintagestoryData/Mods" --language en_US --nopause true and it prints out nothing, does nothing, just exits.
Please add more messages about the operations and the potential errors.
The situation was happened on latest Arch Linux, with VS 1.19.8-1 package (installed from AUR) and with Python 3.12.4.
EDIT: I went to the GitHub and fetched the very latest code, it is also not working, not emitting any error messages besides the SyntaxWarning. I managed to fix them by following this guide for it: https://stackoverflow.com/a/77531416/182474 but the script still does nothing. The script itself is too complex to my Python knowledge so I cannot point out where could be the error.
EDIT2: I found the issue. You silently abort the script if the mods path is not exists. However, the problem is a bit deeper. In the arg_modspath() function somehow you duplicate the username in the path (so it become /home/hron/hron) if it is given by the absolute path. I was not able to decipher what the code is actually doing (because it uses Python magics), but I worked it around by checking if the path is planned to be returned is exists, if not, I check if the raw (original) path is exists and returning with that or returning a hardcoded nonexistent path. I also added an error message to inform the user about the not existing mods path. If you are interested in the fix, I can send you a PR with that.
Wolfraider
The script is made with python 3.11.4 that may be the cause of these warnings. I am working on a new version, but I didn't yet test on Linux. I will have a look at these issue. Does it stop the script or it goes on ?
EDIT: Indeed "SyntaxWarning: invalid escape sequence" was introduced with Python 3.12. I will have a look at this.
I get a number of syntax warnings such as this one:
SyntaxWarning: invalid escape sequence '\{'
self.file_lang_path = f'lang\{args.language}.json'
It appears you have invalid backslash in your strings in a couple of places in your code.
This is using Python 12.
SturgeonFish
Indeed I noticed it was for another linux distribution. That's why I asked. As some users asked me for some other distributions it will be a good thing I that I group all info I can.
Thanks ;)
Laerinok Those files are only going to work for nixos, which is a linux distribution that does things a bit differently. You're free to add them to the desc/repo as you like.
SturgeonFish
Thanks for the share.
Can I ping it to the description or it's something specific to you and your friends ? I guess it's for all but I prefer to be sure ;)
For the 5 or so of you that I know play this game on nixos, here's my shell.nix and requirements.txt files. This got VS_ModsUpdater.py from the repo working.
>shell.nix
# shell.nix
{ pkgs ? import <nixpkgs> {} }:
pkgs.mkShell {
name = "vs-mods-updater-env";
buildInputs = [
pkgs.python39
pkgs.python39Packages.virtualenv
];
shellHook = ''
export PYTHONPATH=$PYTHONPATH:.
virtualenv venv
source venv/bin/activate
pip install -r requirements.txt
echo "VS Mods Updater environment loaded"
'';
}
>requrements.txt
requests
fpdf2
wget
semver
bs4
rich
Pop these in the dir you extracted everything and it's just $nix-shell followed by $python VS_ModsUpdater.py
c1charge
👌 glad to see it's OK.
@Laerinok
I got it working now, I thought it was looking for a folder named "Mods" so had the path specified to one level up. Once I included the Mods folder in the pathing it worked perfectly in my setup! Thank you!
c1charge
Can you give me your pathmods name and the config.ini file ? I guess you put mods in the mod's server folder. right ?
And I guess you didn't change the mods path in the config.ini ?
I never put mods in the game's folder but in the the VintageStoryData folder.
I think you have two choices :
Laerinok
The modpath is correct, and the only other files in the folder are the default surival, creative, and essentials files. Otherwise there are plenty of .zips in there!
c1charge
Hello,
This message should occurs only if there is no .zip file in the mods folder which seems not being your case. Strange.
Do you have other files than the .zip in the mods folder ?
Just to be sure, the modpath in the config.ini file is the good one that leads to server's modspath ?
Hello, not sure what I am doing wrong here. I got the program to load on my Linux Server, and when I point it to my Mods folder for the server I only get a "No mods in the Mods folder" error. Is it looking for something else in that folder other than the .zips? Thank you!
😀
This is so nice for a linux server. Thank you very much for it.
effgee
Versioning issue for Xlib and Xskills is fixed. It will be in the next update. I want to fix another issue I met with pdf creation with cyrillic font. I could add an argument to be able to create a pdf file of the mods in the server. Don't know if it will be useful, but it is quite easy to make.
According to your suggestion, I can add too an argument to force update. The easiest way is either to force updating all the mods or only one. But if you need to force updating several mods, you will have to add as many argument as mods. Don't know if it will be easy to use.
I will think about it. ModsUpdater grow with user's suggestions 😀
@Laerinok
Hello! Glad to hear back from you!
Yes I am running this on a dedicated server, Debian 12/Bookworm based.
It worked without any difficulties whatsoever, I just used the command line (binary) and pointed it to my mod folder.
If you would like a feature suggestion, perhaps being able to force update a mod to most recent release.
It seems your retreival function for most recent mod release works perfect, being able to say, force install a certain mod would be useful in some cases as well. ex. Suspected corruption or undoing modification/testing. Maybe something for the future! ;)
effgee
Glad to see this version is useful. As I am not a great Linux user, it was not easy for me ^^.
Thanks for your feedback. Indeed it's another versioning issue I've never met before... I'll fix it as soon as possible. And in the same time I will try to update to 1.3.4 too. I should have done it by now...
I notice too there is a small issue with the new version link. It links to the Windows version.
Moreover I see "Cairns 1: ERROR !!! The modder did not fill in the modid in the modinfo.json file. Unable to get the update.". I thought I've fixed this issue and it should be able to update. I will have a look into this.
PS : I didn't really have any kind of feedback on use on servers. Do you use it on servers ?
Hey great to see linux support. Really useful on servers.
Came across an "edge" case where the script fails to understand there is an update, have a look at the log.
If you notice, the script while it sees the updated versions for
Xlib and Xskills it does not update them. Probably a parsing issue due to using the rc.X on their versioning. :P
----------------------------------------------
Vintage Story Mod Updater - v.1.2.0 by Laerinok
New version of ModsUploader available !! https://mods.vintagestory.at/download?fileid=19584
Limit mod updates to game version : Latest version
A Tad More Charcoal: installed version : 1.0.0 - last version : 1.0.0
Accessibility Tweaks: installed version : 3.6.1 - last version : 3.6.1
Anvil Metal Recovery+: installed version : 0.1.19-pre.1 - last version : 0.1.19-pre.1
Arrownd: installed version : 1.0.0 - last version : 1.0.0
Better-Drifters: installed version : 2.1.3 - last version : 2.1.3
BetterMoisture: installed version : 1.0.0 - last version : 1.0.0
BetterPoultice2: installed version : 1.0.2 - last version : 1.0.2
Blacksmith Enhancements: installed version : 1.0.4 - last version : 1.0.5
File size : 0.1 MB
Blacksmith Enhancements v.1.0.5 download in progress...
100% [............................................................................] 105888 / 105888
Blacksmithname: installed version : 1.1.6 - last version : 1.1.6
Butchering: installed version : 1.5.4 - last version : 1.5.4
Buzzy Bees: installed version : 1.0.1 - last version : 1.0.1
Cairns 1: ERROR !!! The modder did not fill in the modid in the modinfo.json file. Unable to get the update.
Chiseltools: installed version : 1.10.5 - last version : 1.10.5
ColoredTorchesRedux: installed version : 1.1.0 - last version : 1.1.0
Config lib: installed version : 1.0.2 - last version : 1.1.1
File size : 0.17 MB
Config lib v.1.1.1 download in progress...
100% [............................................................................] 175723 / 175723
Configure Everything: installed version : 1.1.0 - last version : 1.1.0
Cooperative Combat: installed version : 1.1.1 - last version : 1.1.1
Creatures & Critters (Unofficial): installed version : 1.0.6 - last version : 1.0.6
Entities Interact: installed version : 1.0.3 - last version : 1.0.3
Fantasy Creatures Mod: installed version : 0.7.1 - last version : 0.7.1
History of existence: installed version : 0.0.3 - last version : 0.0.3
Icecold: installed version : 0.5.1 - last version : 0.5.1
Immersive Wood Chopping: installed version : 0.7.1 - last version : 0.7.1
Immersive Wood Sawing: installed version : 0.1.1 - last version : 0.1.1
Instand Drifter Drops: installed version : 1.1.0 - last version : 1.1.0
Just An Arrowhead Mold: installed version : 1.0.1 - last version : 1.0.1
Lumber Sling: installed version : 1.1.0 - last version : 1.1.0
Bows: installed version : 1.0.4 - last version : 1.0.4
More Bags: installed version : 1.2.0 - last version : 1.2.0
MoveLikeKaji: installed version : 0.0.5 - last version : 0.0.5
The Night Watcher: installed version : 2.0.0 - last version : 2.0.0
NoCharcoalLost: installed version : 1.0.0 - last version : 1.0.0
Normalizer: installed version : 1.0.1 - last version : 1.0.1
Outlaw Mod: installed version : 1.2.2 - last version : 1.2.2
Pick Up Fast: installed version : 1.0.2 - last version : 1.0.2
Primitive Survival: installed version : 3.4.9 - last version : 3.4.9
PropickFix: installed version : 1.0.0 - last version : 1.0.0
Re: ERROR !!! The modder did not fill in the modid in the modinfo.json file. Unable to get the update.
SilentSave: installed version : 1.0.4 - last version : 1.0.4
Simple Footsteps: installed version : 1.1.7 - last version : 1.1.7
Nat's Survival Nutrition: installed version : 1.0.0 - last version : 1.0.0
Temporal gears stack: installed version : 1.0.0 - last version : 1.0.0
The Critters Pack: installed version : 0.9.1 - last version : 0.9.1
EasyTorchLight: installed version : 1.0.0 - last version : 1.0.0
Vanity: installed version : 2.1.1 - last version : 2.1.2
File size : 0.04 MB
Vanity v.2.1.2 download in progress...
100% [..............................................................................] 39041 / 39041
Dear ImGui: installed version : 1.1.2 - last version : 1.1.2
Wild Farming Revival: installed version : 1.1.8 - last version : 1.1.8
Xandus Inventory Tweaks: installed version : 1.5.9-rc.1 - last version : 1.5.9-rc.1
XLib: installed version : 0.8.0-rc.1 - last version : 0.8.0-rc.2
XSkills: installed version : 0.8.0-rc.1 - last version : 0.8.0-rc.2
End of search.
The following mods have been updated:
- Blacksmith Enhancements :
Changelog v1.0.5 :
* Fixed - noticeable z-fighting when player is wearing armor.
* Fixed - when player is using bellow and moves it to the chest at the same time it would make player animator get stuck.
* Fixed - sometime when player is using bellow it would get stuck and so would player animator
*
*
*
*
*
- Config lib :
Changelog v1.1.1 :
* Fixed nullref bug
- Vanity :
Changelog v2.1.2 :
* <span style="font-weight: 400;"><strong>Tweak:</strong> Removed ‘requiredOnClient: false’ from modinfo.json to prompt auto-download when connecting
to server with Vanity installed.</span>
Press the ENTER key to continue...^[[B
I have not yet made a binary file for the v1.3.2. I have to be sure before it works as expected with linux. But for those who desire, the .py file is available in the github release. And thanks to a suggestion, there is also now a requirements.txt file.
Drathek
Thanks for the help and instructions. No doubt it will be useful for users.
Also ran into similar problems using this on Manjaro, so needed to download the .py from the github and then use venv to set up a virtual enviorment so pip could be used to install python dependencies.
Assuming you have python3 installed and have placed the VS_ModsUpdater.py file from the github, this is the batch file I've been using to run/setup:
cd "$(dirname "$0")"
if ! [ -d .venv ]
then
python3 -m venv .venv
source .venv/bin/activate
python3 -m pip install wget semver requests rich bs4
else
source .venv/bin/activate
fi
python3 VS_ModsUpdater.py
The cd is to resolve issues if you set up a .desktop to run this batch file. The test for a .venv folder is to determine if this is a first time setup. "source .venv/bin/activate" is to tell it to use that virtual enviorment. Other dependencies may be required, but those are the ones I needed to have it install. Can probably streamline it if it has a requirements.txt instead.
8Helio8
Hello,
Is it a fresh installation or you updated from an old version ? Is it the latest version ? Didn't you forgive to extract the lang directory ? Did you "just" run the VS_ModsUpdater file or or you use the command line ?
It doesn't seem it's missing any dependancies. You can check the VS_ModsUpdater.py if you want to see what dependencies are used. Or even run the py.
I believe Yskar had the same issue (cf: link - link2) but he was on Arch Linux. And finally got it work with the .py file.
For your information: I tried it on Linux Mint 21 on VIrtualBox. Python 3.11
@Laerinok
I have find an issue with an SSL certificate.
Dont know what to do with it. I ran the latest version. Am I missing some dependency? I ran it on Fedora Linux (the newest everything). I will try it on linux mint as I host my dedicated server on that while fedora is my personal laptop.
SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed: self-signed certificate in certificate chain
(_ssl.c:1006)
Traceback (most recent call last):
File "urllib/request.py", line 1348, in do_open
File "http/client.py", line 1286, in request
File "http/client.py", line 1332, in _send_request
File "http/client.py", line 1281, in endheaders
File "http/client.py", line 1041, in _send_output
File "http/client.py", line 979, in send
File "http/client.py", line 1458, in connect
File "ssl.py", line 517, in wrap_socket
File "ssl.py", line 1108, in _create
File "ssl.py", line 1379, in do_handshake
ssl.SSLCertVerificationError: [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed: self-signed certificate in certificate chain (_ssl.c:1006)
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "VS_ModsUpdater.py", line 123, in check_update_script
File "urllib/request.py", line 216, in urlopen
File "urllib/request.py", line 519, in open
File "urllib/request.py", line 536, in _open
File "urllib/request.py", line 496, in _call_chain
File "urllib/request.py", line 1391, in https_open
File "urllib/request.py", line 1351, in do_open
urllib.error.URLError: <urlopen error [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed: self-signed certificate in certificate chain (_ssl.c:1006)>
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "VS_ModsUpdater.py", line 589, in <module>
File "VS_ModsUpdater.py", line 393, in accueil
File "VS_ModsUpdater.py", line 141, in check_update_script
NameError: name 'err_lang' is not defined
[96539] Failed to execute script 'VS_ModsUpdater' due to unhandled exception!
No ;) there's no missing files. the .py is no needed to run the script. It was only for test in the pre-release you might have.
But it's avalaible in the Source page if needed.
@laerinok there may be an issue with your files, on the two last versions it is missing the .py script
Kaofan
Can you join me at Discord ? It will be easier. (my pseudo is laerinok)
Laerinok
[Pterodactyl Daemon]: Finished pulling Docker container image
container@pterodactyl~ dotnet --version
7.0.402
:/home/container$ ./VS_ModsUpdater/VS_ModsUpdater.sh && ./VintagestoryServer --dataPath ./data --port=${SERVER_PORT} --maxclients=${MAX_CLIENTS} ${OPTIONS}
./VS_ModsUpdater/VS_ModsUpdater.sh: 8: /home/container/VS_ModsUpdater: Permission denied
container@pterodactyl~ Server marked as offline...
[Pterodactyl Daemon]: ---------- Detected server process in a crashed state! ----------
[Pterodactyl Daemon]: Exit code: 126
[Pterodactyl Daemon]: Out of memory: false
[Pterodactyl Daemon]: Aborting automatic restart, last crash occurred less than 60 seconds ago.
Kaofan
You must also change the '/Path_To_VS_ModsUpdater/VS_ModsUpdater' with the path were you put VS_ModsUpdater.
Path_To_VS_ModsUpdater is the path to the directory where is VS_ModsUpdater.
But I don't know if a relative path is enough or if you must write the absolute path.
Laerinok
I don't know if I've done it right
imgur.com/a/fW1whyP
[Pterodactyl Daemon]: Finished pulling Docker container image
container@pterodactyl~ dotnet --version
7.0.402
:/home/container$ VS_ModsUpdater.sh && ./VintagestoryServer --dataPath ./data --port=${SERVER_PORT} --maxclients=${MAX_CLIENTS} ${OPTIONS}
/entrypoint.sh: line 20: VS_ModsUpdater.sh: command not found
container@pterodactyl~ Server marked as offline...
[Pterodactyl Daemon]: ---------- Detected server process in a crashed state! ----------
[Pterodactyl Daemon]: Exit code: 127
[Pterodactyl Daemon]: Out of memory: false
[Pterodactyl Daemon]: Aborting automatic restart, last crash occurred less than 60 seconds ago.
Edit1:
I guess I'm really stupid?
[Pterodactyl Daemon]: Finished pulling Docker container image
container@pterodactyl~ dotnet --version
7.0.402
:/home/container$ ./VS_ModsUpdater/VS_ModsUpdater.sh && ./VintagestoryServer --dataPath ./data --port=${SERVER_PORT} --maxclients=${MAX_CLIENTS} ${OPTIONS}
./VS_ModsUpdater/VS_ModsUpdater.sh: 8: /Path_To_VS_ModsUpdater/VS_ModsUpdater: not found
container@pterodactyl~ Server marked as offline...
[Pterodactyl Daemon]: ---------- Detected server process in a crashed state! ----------
[Pterodactyl Daemon]: Exit code: 127
[Pterodactyl Daemon]: Out of memory: false
[Pterodactyl Daemon]: Aborting automatic restart, last crash occurred less than 60 seconds ago.
EDIT : Erratum - I'd forgotten to put the executable file in the archive. Sorry.
Download the Source code archive (zip or tar.gz) and the VS_ModsUpdater file.
Extract the Source code archive and put the VS_ModsUpdater file in the directory.
I've made a new pre-release. Hope this could solve your problem : VS_ModsUpdater v1.2.0-pre2
This is the compiled version. You don't have to bother with Python. But you should run it in a different way :
@Kaofan
Vintage Story no, but my script does. It is writen with Python.
Can you run a terminal ? or you only have acces to the pterodactyl's pannel ?
Laerinok
Let me tell you that no Vintage Story server uses the Python module
Laerinok
This is a personal Server that is on the Pterodactyl panel which this panel is used with a VPS
Kaofan
I think the problem is that some Python modules are not installed on the server. I guess it's a paid server, or is it a personal server ? I don't know if it's possible to install new Python modules on a paid server. I will look for a way to automatically install missing dependancies (I don't know how to do this at the moment), and it's without any guarantee.
Laerinok
I tried it and it doesn't help either
Kaofan
Not sure, but try to run with starting by python3 (or maybe python. Depends on your config)
python3 ./VS_ModsUpdater.py --language en_US --modspath "./Mods" --nopause true && ./VintagestoryServer --dataPath ./data --port=${SERVER_PORT} --maxclients=${MAX_CLIENTS} ${OPTIONS}
But it seems the module is not installed on your system. If it is so, I don't know how to do without admin privilege. Some modules are included by default in the Python library. Some other must be mannually installed. In this case you must own admin privileges. I guess it's not possible if you don't own the server. But I did not have many knowledges with Linux, so maybe other users can tell if it's the case.
Help!
:/home/container$ ./VS_ModsUpdater.py --language en_US --modspath "./Mods" --nopause true && ./VintagestoryServer --dataPath ./data --port=${SERVER_PORT} --maxclients=${MAX_CLIENTS} ${OPTIONS}
Traceback (most recent call last):
File "/home/container/./VS_ModsUpdater.py", line 31, in <module>
import requests
ModuleNotFoundError: No module named 'requests'
I made some changes in the script. Now you will be able to run it in command line and you should use it to run on dedicated servers. It's a pre-release so I don't yet upload here but you can get and try it by downloading it from my Git. pre-release of the script for VintageStoryServer
You can run the script with the following arguments:
VS_ModsUpdater.py [-h] [--modspath MODSPATH] [--language LANGUAGE] [--nopause {false,true}] [--exclusion EXCLUSION [EXCLUSION ...]]
options:
-h, --help show this help message and exit
--modspath MODSPATH Enter the mods directory (in quotes). Quotes are needed only if there is some space in the path-name.
--language LANGUAGE Set the language file (as it is named in the lang directory, without extension)
--nopause {false,true} Disable the pause at the end of the script. You NEED to set it to true if not the script prompts and wait your intervention.
--exclusion EXCLUSION [EXCLUSION ...] Write filenames of mods with extension (in quotes) you want to exclude (each mod separated by space). It's not really useful as you can set it later in the config.ini file.
Exemple of use :
VS_ModsUpdater.py --language en_US --modspath "/home/VintagestoryData/mods" --nopause true
You could write this kind of command before the command for running the server. It may be something like that:
VS_ModsUpdater.py --language en_US --modspath "YourModsFolderPath" --nopause true && ./YourVintagestoryServerPath/VintagestoryServer --dataPath ./YourModsFolderPath --port=XXXXX --maxclient=X
I don't have any dedicated server, so I only can guess how it will work. Vlammar (thanks to you) gave me many clues. The script runs, but you will need probably to do some tweak before to use it.
It's a python script, I guess it's already installed with Linux. You may need to install dependancies before.
I am working to a way to automatically install missing dependancies but it will be for later.
Don't hesitate to tell me what is working or not, but please be as precise as possible.
Vlammar
OK. Je vois mieux. Enfin je crois. Merci. J'ai vu que je pouvais faire passer au script des arguments en ligne de commande. Les seules éventuelles interventions humaines sont au premier lancement (la saisie du chemin dossier des mods et la création du config.ini) Et la pause finale. Donc si j'arrive à faire un truc du genre : VS_modupdater.py --ModPath --Language --ModsException et à supprimer la pause, ca correspondrait ?
Vlammar
And you can do it, because I don't know anything about bash or .py scripts
@Laerinok tu peux créer un bash qui lance d'abord le .py qui mets à jour les mods sans demander de validation puis qui lance le server (pour le bash c'est simple mais pour le script python je ne sais pas comment il marche exactement. Par exemple sur pterodactyl tu as ce genre de command que tu peux éditer
Vlammar
Salut. Qu'entends-tu exactement par "lancer le script avec une option derrière" ? Je suis un utilisateur de Linux très occasionnel, et débutant en Python. Donc très probalement en manque de pas mal de notions ;)
@kaofan On pterodactyl you execute a startup command. If you add the python script into your File Manager folder it is possible to execute the python script then the server start script. @Laerinok Is it possible to run your script only with command line with something like python3 VS_modupdater.py -SomeOptionToForceUpdate ?
Thanks for your feed back. Glad to know it is useful :)
Thank you for this, makes my life so much easier.
Working perfectly on Ubuntu 22.04 LTS
Laerinok, thanks bro, the VS_ModsUpdater.py i got your github just worked on Arch Linux when i installed the prerequisites using "sudo pacman -S python-rich python-semver", it look like the compiled binary didn't works outside Debian-based distros but don't fret, everything is working awesomelly using just the script or using steam proton to run the windows version, thanks A LOT.
PS: If you want to automate this kind of Linux distribution detection you can get the distro name variable reading the files "/etc/os-release" and/or "/etc/os-release".
Yskar
I answer your message here as it's for linux ;)
It seems an issue with a SSL certificat ? I don't really know how to deal with. I will look for this but my knowlegdes in linux are quite low.
"NameError: name 'err_lang' is not defined" It seems it didn't find the language file. It happens when the script is launched but the lang directory is not beside.
As I said, you can find the .py in the source tab. ;)
You can pm me on discord : username: laerinok (display name : Jay)
Thanks a LOT, Laerinok, i will test right now! o/ 👍
Well I have no idea how Pterodactyl works. I'll see if I can do something.
Would you make a Pterodactyl version?
Yeah. Good news ! 😃
Thanks
I love you.
Works perfectly on Ubuntu 23.04