Mods / ModsUpdater For Linux

Tags: #Other #QoL #Utility
Author: Laerinok
Side: Both
Created: Sep 10th 2023 at 10:49 AM
Last modified: Aug 26th at 10:46 AM
Downloads: 3196
Follow Unfollow 78

Latest release:
VS_ModsUpdater.v2.3.0_Linux-x86_64.AppImage.zip


Vintage Story ModsUpdater for Linux

Your go-to buddy for always-up-to-date Vintage Story mods

 

 

INFO: 

Since v2.2.2, the program comes with an appimage. I hope this time this is functional.

You can also find the "simple" zip-file on github

 

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 NOTE (updated 2025-08-25):

 

None

 

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.
  • For those who are cautious about running new executables, you can find a recent analysis of the zip-file by VirusTotal (Since v2.2.2 link is in the changelog)

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.

Configuration (config.ini) & Arguments

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 you haven't set a specific version when you created the config.ini file, it's set to 'latest_version'. In that case, the game will update the mods to the latest available game version. For ModsUpdater versions prior to v2.2.2, "None" and empty values should be changed to 'latest_version'. However, they remain functional.

[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.

--install-modlist: Download mods from modlist.json to the mods folder.

--force-update: Force a re-download and re-install of all mods, regardless of version.

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.

Known issues:

 


 

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!

License
This program is distributed under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License.
Supported Languages
  • 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,modsupdater,  mod update, mods updater, linux mod updater, linux mods updater,

Mod Version Downloads Released Changelog Download
2.3.0 194 Aug 26th at 10:46 AM VS_ModsUpdater.v2.3.0_Linux-x86_64.AppImage.zip
  • Added: a user prompt that allows displaying the changelog for new script updates on demand.
  • Added: support for a new API to check for ModsUpdater updates.
  • Added: Improved console output with clickable links and better-centered text.
  • Fixed: Resolved issues with misaligned text in the console display.
  • Fixed: Removed unused code and imports for better performance and readability.
  • Fixed: Resolved an issue where mods on the exclusion list were not being properly ignored. The program will now correctly skip all excluded mods and will not attempt to check for their updates or download them. The list of excluded mods is now displayed correctly at the start of the scan process.
  • Fixed: The program now correctly identifies and displays local mods in the excluded mods list.
  • Changed: The game version display has been rephrased for better clarity.

 

=======================================================

SHA-256: 4b8a0452bc956d37e0a0c8aa4e3565ffe9fb50bd57dc896f3fd0abb5e2455a2c

VirusTotal Scan

2.2.2 35 Aug 25th at 3:20 PM VS_ModsUpdater.v2.2.2_Linux-x86_64.AppImage.zip
  • v2.2.2:
    • Improved the configuration for the game version. The program now automatically uses the latest version of the game if no specific version is indicated in `config.ini`.
    • For clarity, the `config.ini` file now shows 'latest_version' instead of being empty when this option is selected.
  • v2.2.1:
    • Fixed: a bug that caused the application to crash when using the --force-update option on mods that did not have a new version available.
    • Fixed: Addressed an issue where progress messages for specific modlist exports (PDF, JSON) would run even when their respective --no- flags were used.
    • Fixed: Restructured the export logic to ensure command-line arguments are parsed only once and correctly passed to all export functions.
    • Featured: - The `install-modlist` command now shows the name of the mod being downloaded in the progress bar.
  • v2.2.0:
    • Added: --force-update argument: Added a new command-line argument that forces a re-download and re-installation of all mods, even if their versions are already up to date. This is useful for repairing corrupted files or performing a clean install.
    • Added: Update date and time are now displayed in updated_mods_changelog.txt
    • Added: Added a new command-line argument (--install-mods) to download all mods listed in modlist.json to the designated mods folder.
    • Fixed an issue where the warning message for an empty mods directory was not displaying the directory path correctly.
    • Fixed: Exported JSON data now correctly lists installed mod's download URL. Previously, the installed_download_url could show the latest available version instead of the exact version you have installed. This has been corrected to ensure the exported data is accurate for all mods, regardless of their update status.
    • Fixed and improved mod changelog retrieval. Mod changelog information is now fetched directly from the API.
    • Fixed: Adapted API call for game version retrieval. The Vintage Story Mods API no longer prepends a 'v' to game version strings (e.g., v1.20.11 is now 1.20.11).
    • Improved: Enhanced configuration file handling by explicitly specifying UTF-8 encoding for both reading and writing config.ini.

 

======================================================================================

SHA-256: dbcb1e9182795668f08837735992610eeb5f74079c8da1ee56f6d409257ee0b9

VirusTotal Scan

2.1.2 340 Apr 26th at 10:07 AM VS_ModsUpdater.v2.1.2_Linux.zip
  • Fixed: Improved the warning message displayed when a directory is found in the Mods folder. It now includes the name of the directory in question, providing clearer context to the user.
  • Fixed: get_mod_path: Command line `modspath` argument is now correctly used.
  • Updated: ko_KR.json file
2.1.1 143 Apr 9th at 5:36 PM VS_ModsUpdater.v2.1.1_Linux.zip

 

  • v2.1.1:
    • Fixed: Ensure mod icons are extracted when PDF export is disabled. The if not args.no_pdf: condition was moved within the export_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.

 

  • v2.1.0:
    • Fixed (welcome_display): Ensures that the update status message is always displayed. A logic issue prevented the "No new version available" message from being shown.
    • Fixed: Correct mod icon is now displayed in the PDF modlist even if a manual update for that mod was skipped.
    • Fixed: modlist_json for manual mode: download links were not for the correct version.
    • Fixed: Incorrect input values for user responses.
    • Fixed: updated_mods_changelog.txt was not being populated correctly for manual download mode.
    • Added: Functionality to export the list of installed mods to an HTML file.
    • Added: New command-line argument --no-html to disable HTML mod list export.
    • Added: Display of the maximum game version for mod updates.
    • Added: ko_KR.json file (Korean localization) From gitHub. Thanks purple8cloud. (I've added some new strings).
    • Improved: Display of the mod information retrieval progress bar.
    • Improved: Display of the mod download progress bar.
    • Improved: Display of the PDF creation progress bar.
    • Updated: Language files with translations for the HTML export feature and the --no-html option.
2.0.2 73 Apr 6th at 6:46 PM VS_ModsUpdater.v.2.0.2_Linux.zip
  • General performance improvements
  • New look and feel
  • New features added. See the readme and wiki for details
=============================

An AppImage is available on GitHub

1.4.2 244 Feb 17th at 12:26 PM VS_ModsUpdater_Linux.v1.4.2.zip
  • fixed: pdf creation error/crash when there is a mod in the mods folder which is not on modDB.
  • fixed: error when mod has space in filename.
  • fixed: error if mod has a non standard versionning.

included v1.4.1

  • fixed: crash due to modDB changes.
  • fixed: error/crash when there is a mod in the mods folder which is not on modDB
  • updated: de_DE.json file (by Zetabite). It had been pending for a long time, sorry.
1.4.0 576 Apr 2nd 2024 at 3:31 PM VS_ModsUpdater_Linux.v.1.4.0.zip
  • Added: Option in config.ini and argument to exclude -dev version of mods from updating process.

=================================================

  • You need to delete the old config file or add in the section [ModsUpdater] this line : disable_mod_dev = true
1.3.6 232 Mar 26th 2024 at 3:32 PM VS_ModsUpdater_Linux.v.1.3.6.zip
  • fixed: crash when create pdf file if the font was not installed on system
  • fixed: crash when using --moddpath in command line.
1.3.5 219 Mar 20th 2024 at 7:24 PM VS_ModsUpdater_Linux.v.1.3.5.zip
  • Change the way localization works. Users have choice at the first launch
  • Updated lang files
  • Fixed: Issue with some rare versioning with pre-release of mods
  • Fixed: Crash in rare case if modID not present in modinfo.json and the modname is not the same that the one in API. When it occurs a message is displayed and a crashlog is generated for information.
  • Fixed: Crash with pdf creation with cyrillic font
  • Added: Option to force update all mods
  • Added: Two new arguments for command line. '--makepdf' to create the pdf file and '--forceupdate' to force the update for every mods
  • Updated (Linux)
  • Fixed: (Linux) The download link for ModsUpdater pointed to the Windows version

=============================================================================

  • Because of some new features and updated lang files, DELETE the old ModsUpdater folder and use this new one instead. If you had modified the config.ini file don't forget to write the changes again.
1.2.0 358 Oct 20th 2023 at 10:53 AM VS_ModsUpdater_Linux.v.1.2.0.zip

This update is mainly for server use. You can now use some arguments to launch VS_ModsUpdater. cf Readme for more info.

  • fixed french typo
  • for server : now the script can be executed in command line with arguments.
  • added VS_launch.bat (for Windows) and VS_ModsUpdater.sh (for Linux) in order to use with command line for servers.

  • Use the new fr_FR.json.
1.1.4 260 Oct 3rd 2023 at 8:01 PM VS_ModsUpdater_Linux.v.1.1.4.zip
  • Add Spanish language - Thanks to Sir-Ryu
  • Fix in russian text.
  • Possibility of choosing a language other than that of the OS. You can edit the config.ini file and :
    • uncomment the line #language = fr_FR (delete the #)
    • set your language by writting the name of the language file without the extension.

INFO :

  • To add possibility of choosing manually the language, the config file as a new key. So you have to delete the old config.ini
  • Changes in files language. Please delete the old and use the new ones.
1.1.3 252 Sep 25th 2023 at 10:15 AM VS_ModsUpdater_Linux.v.1.1.3.zip
  • Add Brazilian language - Thanks to Yskar
  • Some fix for language variable

  • Beware to use the new lang files
1.1.2 262 Sep 10th 2023 at 10:51 AM VS_ModsUpdater_Linux.v.1.1.2.zip

- Linux version


164 Comments (oldest first | newest first)

💬 Laerinok , Sep 19th at 7:18 PM

Mobile

That's an idea

💬 Mobile, Sep 19th at 5:12 PM

Could you please implement additional param (for ex: --dry-run) to just print list of mods which have updates?

💬 Laerinok , Sep 13th at 6:43 AM

Mobile

Thank you. That is indeed something I've been thinking about recently. My initial goal was to provide the list systematically, because people don't habitually read all the documentation. This allows them to discover the functionality. However, I admit that it's not necessarily the most logical approach. I'll probably change it later, but it's not a priority.

💬 Mobile, Sep 9th at 3:29 PM

Great work, thank you, but for me is better to use another approach for ags: from `--no-*` to `--gen-*`

So, minimal work from scratch run

💬 Laerinok , Aug 29th at 6:23 AM

toyota
That's what I thought. I don't know if I made some mistakes when I created the AppImage or if it's because it's a console script (not a GUI), but I can't directly run the AppImage. You have to use the terminal first. But it's not a big problem.

💬 toyota, Aug 28th at 10:36 PM

Laerinok

I first tried to open as appimage, then open in console. What I did to fix it was open console then drag the appimage into the console for it to run

💬 Laerinok , Aug 28th at 6:03 AM (modified Aug 28th at 6:04 AM)

toyota

I'm glad you found the solution.

And just out of curiosity, and because it might be useful for others, what was preventing it from working, and what did you do to fix it?

(Maybe you wanted to launch the AppImage with a double-click, but it only worked from the terminal ?)

💬 toyota, Aug 28th at 12:15 AM (modified Aug 28th at 12:16 AM)

For some reason the appimage just doesn't open

edit: figured it out 5 seconds later becuase im an idiot

💬 Laerinok , Aug 27th at 6:42 PM (modified Aug 27th at 7:58 PM)

Yelb

Or maybe, it's not the problem... You think Mods have been updated, but they aren't. Check the version number. 
Actually, I think you were just tricked by the ModDB changes. When you change something on a mod's page, the mod is "updated" and appears at the top of the list, even if the mod itself hasn't changed.

Fauna of the Stone Age: Machairodontinae:
Created: Jan 25th 2024 at 11:13 PM
Last modified: 3 hours ago but the last release is 1.0.25 from Apr 30th at 12:09 AM

💬 Laerinok , Aug 27th at 6:30 PM

Yelb

My first thought is that you didn't update the user_game_version: in the config.ini file, which prevents mods from updating for later versions.

[Game_Version]

user_game_version: 1.20.12

If you set the version in the config.ini you should update it each time you udapte your game.
If you don't want to have ti change it, then set it with latest_version
[Game_Version]
user_game_version: latest_version

In the older version of ModsUpdater, it was empty or "Non". By defaut it was set to to have always the latest version of the game, but the latest change in ModDB broke this feature. And the temporary solution was to set this value manually.

💬 Yelb, Aug 27th at 5:41 PM

Why it doesn't see all updates at times ? Like now, all the Stone Ages Fauna have an update, but the AppImage says it's up to date.

I'm updating them manually.

💬 Laerinok , Aug 27th at 7:04 AM

Chumber

Hi!

Thanks so much for the detailed and positive feedback! It's great to hear the program is working so well on your Ubuntu setup.

I'm especially happy you noticed the speed improvements. That was a big goal, and it's awesome to know it's noticeable. It's also really cool that the HTML export is useful for your players. I actually added that feature after a request from another user for their server, so I'm happy it's proving useful!

Your comment is a huge motivation to keep going. Thanks again for the support!

thibeeus

That's great news!

I'm so glad you managed to find the solution. That's some serious debugging work!

And a huge thanks for taking the time to post the cause and the solution. Your post could save someone else a ton of time down the road.

Thanks and congrats again on your persistence!

 

usagirei

Hello,
That's something I can do. I put it on my todo list.

💬 thibeeus, Aug 27th at 12:36 AM (modified Aug 27th at 12:46 AM)

EDIT: Fixed my issue!

 

I tested on another, non-containerized, Ubuntu VM and didn't have any issues. I eventually stumbled across the "locale" settings for Ubuntu. The working VM had the following:

Spoiler!
LANG=en_US.UTF-8
LANGUAGE=
LC_CTYPE="en_US.UTF-8"
LC_NUMERIC="en_US.UTF-8"
LC_TIME="en_US.UTF-8"
LC_COLLATE="en_US.UTF-8"
LC_MONETARY="en_US.UTF-8"
LC_MESSAGES="en_US.UTF-8"
LC_PAPER="en_US.UTF-8"
LC_NAME="en_US.UTF-8"
LC_ADDRESS="en_US.UTF-8"
LC_TELEPHONE="en_US.UTF-8"
LC_MEASUREMENT="en_US.UTF-8"
LC_IDENTIFICATION="en_US.UTF-8"
LC_ALL=

 

My container had all of the settings set to 'C'. I updated locale to en_US.UTF.8 and rebooted... the app now works!


Posting this here in the off chance it ever happens to someone else.

 

Thanks again for trying to look at this with me, Laerinok!

💬 usagirei, Aug 26th at 10:43 PM

Would it be possible to output the supported game versions for the installed mods on the html/pdf/text outputs?

 

I'd like to have an overview of what I still need to wait for updates / can disable temporarily while waiting for it.

💬 thibeeus, Aug 26th at 10:41 PM

Laerinok

I've tried 3 methods:

  • 2.3.0 AppImage
  • 2.3.0 AppImage after extraction
  • 2.3.0 Zip file

 

(Here's an example from the zip with the same results)

Spoiler

lgsm@vintage:~/vsupdater/VS_ModsUpdater.v2.3.0_Linux$ ls -l
total 5828
-rwxrwxr-x 1 lgsm lgsm 372 Aug 25 22:11 AppRun
-rw-rw-r-- 1 lgsm lgsm 32428 Dec 4 2024 LICENSE.md
-rw-rw-r-- 1 lgsm lgsm 8598 Aug 25 08:33 README.md
-rwxrwxr-x 1 lgsm lgsm 5780336 Aug 25 08:56 VS_ModsUpdater
-rw-rw-r-- 1 lgsm lgsm 189 Aug 26 12:09 VS_ModsUpdater.desktop
-rw-rw-rw- 1 lgsm lgsm 23611 Apr 10 11:38 VS_ModsUpdater.png
drwxrwxr-x 2 lgsm lgsm 4096 Aug 26 12:07 assets
-rw-rw-r-- 1 lgsm lgsm 5039 Aug 26 12:05 changelog.txt
drwxrwxr-x 2 lgsm lgsm 4096 Aug 26 12:07 fonts
-rw-rw-r-- 1 lgsm lgsm 3253 Aug 25 08:56 frozen_application_license.txt
drwxrwxr-x 2 lgsm lgsm 4096 Aug 26 12:07 lang
drwxrwxr-x 37 lgsm lgsm 4096 Aug 26 12:07 lib
-rw-rw-r-- 1 lgsm lgsm 990 Aug 25 08:33 requirements.txt
drwxrwxr-x 5 lgsm lgsm 4096 Aug 26 12:10 usr
-rw-rw-r-- 1 lgsm lgsm 68690 Apr 2 12:12 vintagestory.ico
lgsm@vintage:~/vsupdater/VS_ModsUpdater.v2.3.0_Linux$ ./VS_ModsUpdater


ModsUpdater for Vintage Story / v2.3.0 (by Laerinok)
- No new version available -


Installed game version: 1.21

 

Traceback (most recent call last):
File "/home/jerome/PycharmProjects/VS_ModsUpdater_v2/fetch_mod_info.py", line 354, in scan_and_fetch_mod_info
File "/home/jerome/PycharmProjects/VS_ModsUpdater_v2/venv/lib/python3.12/site-packages/rich/progress.py", line 1639, in add_task
File "/home/jerome/PycharmProjects/VS_ModsUpdater_v2/venv/lib/python3.12/site-packages/rich/progress.py", line 1549, in refresh
File "/home/jerome/PycharmProjects/VS_ModsUpdater_v2/venv/lib/python3.12/site-packages/rich/live.py", line 266, in refresh
File "/home/jerome/PycharmProjects/VS_ModsUpdater_v2/venv/lib/python3.12/site-packages/rich/console.py", line 870, in __exit__
File "/home/jerome/PycharmProjects/VS_ModsUpdater_v2/venv/lib/python3.12/site-packages/rich/console.py", line 826, in _exit_buffer
File "/home/jerome/PycharmProjects/VS_ModsUpdater_v2/venv/lib/python3.12/site-packages/rich/console.py", line 2038, in _check_buffer
File "/home/jerome/PycharmProjects/VS_ModsUpdater_v2/venv/lib/python3.12/site-packages/rich/console.py", line 2107, in _write_buffer
UnicodeEncodeError: 'ascii' codec can't encode character '\u2022' in position 124: ordinal not in range(128)
*** You may need to add PYTHONIOENCODING=utf-8 to your environment ***

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
File "/home/jerome/PycharmProjects/VS_ModsUpdater_v2/venv/lib/python3.12/site-packages/cx_Freeze/initscripts/__startup__.py", line 133, in run
File "/home/jerome/PycharmProjects/VS_ModsUpdater_v2/venv/lib/python3.12/site-packages/cx_Freeze/initscripts/console.py", line 25, in run
File "main.py", line 231, in <module>
File "/home/jerome/PycharmProjects/VS_ModsUpdater_v2/fetch_mod_info.py", line 345, in scan_and_fetch_mod_info
File "/home/jerome/PycharmProjects/VS_ModsUpdater_v2/venv/lib/python3.12/site-packages/rich/progress.py", line 1189, in __exit__
File "/home/jerome/PycharmProjects/VS_ModsUpdater_v2/venv/lib/python3.12/site-packages/rich/progress.py", line 1175, in stop
File "/home/jerome/PycharmProjects/VS_ModsUpdater_v2/venv/lib/python3.12/site-packages/rich/live.py", line 162, in stop
File "/home/jerome/PycharmProjects/VS_ModsUpdater_v2/venv/lib/python3.12/site-packages/rich/console.py", line 870, in __exit__
File "/home/jerome/PycharmProjects/VS_ModsUpdater_v2/venv/lib/python3.12/site-packages/rich/console.py", line 826, in _exit_buffer
File "/home/jerome/PycharmProjects/VS_ModsUpdater_v2/venv/lib/python3.12/site-packages/rich/console.py", line 2038, in _check_buffer
File "/home/jerome/PycharmProjects/VS_ModsUpdater_v2/venv/lib/python3.12/site-packages/rich/console.py", line 2107, in _write_buffer
UnicodeEncodeError: 'ascii' codec can't encode character '\u2022' in position 124: ordinal not in range(128)
*** You may need to add PYTHONIOENCODING=utf-8 to your environment ***
lgsm@vintage:~/vsupdater/VS_ModsUpdater.v2.3.0_Linux$

 

I am running Ubuntu 24.04. I see the latest comment said that are having no issues... I'm running this inside of a LXC container which did require me to turn on something at the container host level for the Appimage (FUSE). I'm going to start focusing on the LXC nature of this Ubuntu instance and see if that could have anything to do with it. But if the zip version doesn't rely on the appimage process at all... I feel like that will be a dead end.

 

Again... thank you for looking at this with me when I appear to be an edge case.

💬 Chumber, Aug 26th at 9:16 PM (modified Aug 26th at 9:19 PM)

Great to see how far this little program has come. Just gave it a whirl after being away from the game for a while, getting a new 1.21 server spun up in a Pelican panel and this works absolutely flawlessly through CLI (Ubuntu 24.04) using the AppImage. Really appreciate the inclusion of other modlist formats, too, as it makes it super easy to toss the HTML into an apache server so my players can just look for themselves.

 

And holy cow is it way faster than it was previously. Well done.

 

Thanks for all your work on this.

💬 Laerinok , Aug 26th at 7:59 PM

thibeeus

Just to be sure I've understood correctly, can you confirm that you tested this process:

Because it seems the issue is only with the AppImage packaging.

💬 Laerinok , Aug 26th at 7:45 PM

thibeeus

I didn't realize you were talking about v2.1.2 (even though you wrote it out textually...). I didn't look at the file structure. It doesn't particularly "interest" me in the sense that I have no control over it. It's handled by the library I use to create the executables. V2.1.2 is old. In fact, since v2.2.0, I've noticed that the creation time for the executables has gone from about 10 minutes to just 2-3 minutes. Maybe there have been some updates and optimizations, and the result is that the final file structure is different.

Or... when you mention comparing structures, are you comparing the zip file from v2.1.2 with the files you extracted from the v2.3.0 AppImage? If that's the case, it's normal for them to be completely different. The AppImage creation library has its own file organization. It's completely different from the original structure of my program.

The contents of VS_ModsUpdater.v2.3.0_Linux.zip and the extraction of VS_ModsUpdater.v2.3.0_Linux-x86_64.AppImage are not the same at all. So if you tried the content extracted from the AppImage, I suggest you try from the VS_ModsUpdater.v2.3.0_Linux.zip file. It's more likely to work because the encoding should use your environment's, whereas the AppImage uses its own. That's actually the next point to look at; I'll try to modify it so it's always available.

What distribution are you using? That can have an influence.

💬 thibeeus, Aug 26th at 7:43 PM

Ok, here's what I've tried (with the current AppImage):

 

PYTHONIOENCODING=utf-8 ./VS_ModsUpdater.v2.3.0_Linux-x86_64.AppImage

 

env PYTHONIOENCODING=utf-8 ./VS_ModsUpdater.v2.3.0_Linux-x86_64.AppImage

 

And modifying /etc/environment to include PYTHONIOENCODING=utf-8, then rebooted.

 

Unfortunately, no change.

💬 thibeeus, Aug 26th at 7:01 PM

I'm with you Laerinok. It's the blind troubleshooting with the blind... but I greatly appreciate you taking the time! I'll keep digging into this and let you know. As for the zip file from Github, yes, no difference. That's why I noted the file structure being so different. Version 2.1.2 was a zip from github but you can see the file structure is VERY different from the Appimage / current zip.

💬 Laerinok , Aug 26th at 12:32 PM

thibeeus

This is an unfamiliar field for me, I'm just feeling my way. Based on what I've seen/read, try running the application with PYTHONIOENCODING=utf-8 as a command prefix, and not by doing export PYTHONIOENCODING=utf-8 beforehand
```PYTHONIOENCODING=utf-8 ./VS_ModsUpdater.v2.3.0_Linux-x86_64.AppImage```

Did you try using the zip file from GitHub? Are you having the same issue?
I'm not sure if this is due to my code or the way the AppImage was made.
I still have one or two leads to explore, but I won't be able to check right now.

💬 thibeeus, Aug 26th at 12:02 PM

Also wanted to add, the file structure is very different between the zip file versions.

 

2.3.0 which is just the basically extracted appimage:

Spoiler!
-rwxrwxr-x 1 lgsm lgsm 372 Aug 25 22:11 AppRun
-rw-rw-r-- 1 lgsm lgsm 32428 Dec 4 2024 LICENSE.md
-rw-rw-r-- 1 lgsm lgsm 8598 Aug 25 08:33 README.md
-rwxrwxr-x 1 lgsm lgsm 5780336 Aug 25 08:56 VS_ModsUpdater
-rw-rw-r-- 1 lgsm lgsm 189 Aug 26 2025 VS_ModsUpdater.desktop
-rw-rw-rw- 1 lgsm lgsm 23611 Apr 10 11:38 VS_ModsUpdater.png
drwxrwxr-x 2 lgsm lgsm 4096 Aug 26 2025 assets
-rw-rw-r-- 1 lgsm lgsm 5039 Aug 26 2025 changelog.txt
drwxrwxr-x 2 lgsm lgsm 4096 Aug 26 2025 fonts
-rw-rw-r-- 1 lgsm lgsm 3253 Aug 25 08:56 frozen_application_license.txt
drwxrwxr-x 2 lgsm lgsm 4096 Aug 26 2025 lang
drwxrwxr-x 37 lgsm lgsm 4096 Aug 26 2025 lib
-rw-rw-r-- 1 lgsm lgsm 990 Aug 25 08:33 requirements.txt
drwxrwxr-x 5 lgsm lgsm 4096 Aug 26 2025 usr
-rw-rw-r-- 1 lgsm lgsm 68690 Apr 2 12:12 vintagestory.ico

 

And 2.1.2 with a very different set of files:

Spoiler
-rw-rw-r-- 1 lgsm lgsm 32428 Dec 4 2024 LICENSE.md
drwxrwxr-x 2 lgsm lgsm 4096 Apr 26 11:27 PIL
-rw-rw-r-- 1 lgsm lgsm 8422 Apr 26 08:41 README.md
-rwxrwxr-x 1 lgsm lgsm 54461472 Apr 26 11:27 VS_ModsUpdater
-rw-rw-r-- 1 lgsm lgsm 38709958 Apr 26 10:07 VS_ModsUpdater.v2.1.2_Linux.zip
-rw-rw-r-- 1 lgsm lgsm 78896 Apr 26 11:27 _asyncio.so
-rw-rw-r-- 1 lgsm lgsm 35720 Apr 26 11:27 _bz2.so
-rw-rw-r-- 1 lgsm lgsm 161384 Apr 26 11:27 _codecs_cn.so
-rw-rw-r-- 1 lgsm lgsm 165712 Apr 26 11:27 _codecs_hk.so
-rw-rw-r-- 1 lgsm lgsm 34648 Apr 26 11:27 _codecs_iso2022.so
-rw-rw-r-- 1 lgsm lgsm 276128 Apr 26 11:27 _codecs_jp.so
-rw-rw-r-- 1 lgsm lgsm 145000 Apr 26 11:27 _codecs_kr.so
-rw-rw-r-- 1 lgsm lgsm 120424 Apr 26 11:27 _codecs_tw.so
-rw-rw-r-- 1 lgsm lgsm 17408 Apr 26 11:27 _contextvars.so
-rw-rw-r-- 1 lgsm lgsm 144136 Apr 26 11:27 _ctypes.so
-rw-rw-r-- 1 lgsm lgsm 321344 Apr 26 11:27 _decimal.so
-rw-rw-r-- 1 lgsm lgsm 70672 Apr 26 11:27 _hashlib.so
-rw-rw-r-- 1 lgsm lgsm 57448 Apr 26 11:27 _lzma.so
-rw-rw-r-- 1 lgsm lgsm 62008 Apr 26 11:27 _multibytecodec.so
-rw-rw-r-- 1 lgsm lgsm 27472 Apr 26 11:27 _multiprocessing.so
-rw-rw-r-- 1 lgsm lgsm 18040 Apr 26 11:27 _posixshmem.so
-rw-rw-r-- 1 lgsm lgsm 22960 Apr 26 11:27 _queue.so
-rw-rw-r-- 1 lgsm lgsm 236704 Apr 26 11:27 _ssl.so
drwxrwxr-x 2 lgsm lgsm 4096 Apr 2 11:12 assets
drwxrwxr-x 2 lgsm lgsm 4096 Apr 26 11:27 certifi
-rw-rw-r-- 1 lgsm lgsm 1753 Apr 26 08:41 changelog.txt
drwxrwxr-x 2 lgsm lgsm 4096 Apr 26 11:27 charset_normalizer
drwxrwxr-x 2 lgsm lgsm 4096 Apr 2 08:41 fonts
drwxrwxr-x 2 lgsm lgsm 4096 Apr 10 11:25 lang
-rw-rw-r-- 1 lgsm lgsm 25592 Apr 26 11:27 libXau-154567c4.so.6.0.0
-rw-rw-r-- 1 lgsm lgsm 79568 Apr 26 11:27 libbz2.so.1.0
-rw-rw-r-- 1 lgsm lgsm 4611672 Apr 26 11:27 libcrypto.so.3
-rw-rw-r-- 1 lgsm lgsm 199808 Apr 26 11:27 libexpat.so.1
-rw-rw-r-- 1 lgsm lgsm 51360 Apr 26 11:27 libffi.so.8
-rw-rw-r-- 1 lgsm lgsm 832177 Apr 26 11:27 libjpeg-0f8d89bf.so.62.4.0
-rw-rw-r-- 1 lgsm lgsm 529008 Apr 26 11:27 liblcms2-cc10e42f.so.2.0.17
-rw-rw-r-- 1 lgsm lgsm 274008 Apr 26 11:27 liblzma-65fbbc38.so.5.8.0
-rw-rw-r-- 1 lgsm lgsm 176296 Apr 26 11:27 liblzma.so.5
-rw-rw-r-- 1 lgsm lgsm 596512 Apr 26 11:27 libopenjp2-56811f71.so.2.5.3
-rw-rw-r-- 1 lgsm lgsm 50120 Apr 26 11:27 libsharpyuv-60a7c00b.so.0.1.1
-rw-rw-r-- 1 lgsm lgsm 697336 Apr 26 11:27 libssl.so.3
-rw-rw-r-- 1 lgsm lgsm 755024 Apr 26 11:27 libtiff-5df1d27b.so.6.1.0
-rw-rw-r-- 1 lgsm lgsm 735816 Apr 26 11:27 libwebp-5f0275c0.so.7.1.10
-rw-rw-r-- 1 lgsm lgsm 34064 Apr 26 11:27 libwebpdemux-efaed568.so.2.0.16
-rw-rw-r-- 1 lgsm lgsm 64784 Apr 26 11:27 libwebpmux-6f2b1ad9.so.3.1.1
-rw-rw-r-- 1 lgsm lgsm 272408 Apr 26 11:27 libxcb-55eab65a.so.1.1.0
-rw-rw-r-- 1 lgsm lgsm 36112 Apr 26 11:27 mmap.so
-rw-rw-r-- 1 lgsm lgsm 349 Apr 26 10:14 requirements.txt
-rw-rw-r-- 1 lgsm lgsm 39464 Apr 26 11:27 termios.so
drwxrwxr-x 2 lgsm lgsm 4096 Apr 26 11:27 zstandard

 

💬 thibeeus, Aug 26th at 11:58 AM

Unfortunately, 2.3.0 still not working Laerinok

 

Spoiler

lgsm@vintage:~/vsupdater$ export PYTHONIOENCODING=utf-8
lgsm@vintage:~/vsupdater$ ./VS_ModsUpdater.v2.3.0_Linux-x86_64.AppImage


ModsUpdater for Vintage Story / v2.3.0 (by Laerinok)
- No new version available -


Installed game version: 1.21

 

Traceback (most recent call last):
File "/home/jerome/PycharmProjects/VS_ModsUpdater_v2/fetch_mod_info.py", line 354, in scan_and_fetch_mod_info
File "/home/jerome/PycharmProjects/VS_ModsUpdater_v2/venv/lib/python3.12/site-packages/rich/progress.py", line 1639, in add_task
File "/home/jerome/PycharmProjects/VS_ModsUpdater_v2/venv/lib/python3.12/site-packages/rich/progress.py", line 1549, in refresh
File "/home/jerome/PycharmProjects/VS_ModsUpdater_v2/venv/lib/python3.12/site-packages/rich/live.py", line 266, in refresh
File "/home/jerome/PycharmProjects/VS_ModsUpdater_v2/venv/lib/python3.12/site-packages/rich/console.py", line 870, in __exit__
File "/home/jerome/PycharmProjects/VS_ModsUpdater_v2/venv/lib/python3.12/site-packages/rich/console.py", line 826, in _exit_buffer
File "/home/jerome/PycharmProjects/VS_ModsUpdater_v2/venv/lib/python3.12/site-packages/rich/console.py", line 2038, in _check_buffer
File "/home/jerome/PycharmProjects/VS_ModsUpdater_v2/venv/lib/python3.12/site-packages/rich/console.py", line 2107, in _write_buffer
UnicodeEncodeError: 'ascii' codec can't encode character '\u2022' in position 124: ordinal not in range(128)
*** You may need to add PYTHONIOENCODING=utf-8 to your environment ***

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
File "/home/jerome/PycharmProjects/VS_ModsUpdater_v2/venv/lib/python3.12/site-packages/cx_Freeze/initscripts/__startup__.py", line 133, in run
File "/home/jerome/PycharmProjects/VS_ModsUpdater_v2/venv/lib/python3.12/site-packages/cx_Freeze/initscripts/console.py", line 25, in run
File "main.py", line 231, in <module>
File "/home/jerome/PycharmProjects/VS_ModsUpdater_v2/fetch_mod_info.py", line 345, in scan_and_fetch_mod_info
File "/home/jerome/PycharmProjects/VS_ModsUpdater_v2/venv/lib/python3.12/site-packages/rich/progress.py", line 1189, in __exit__
File "/home/jerome/PycharmProjects/VS_ModsUpdater_v2/venv/lib/python3.12/site-packages/rich/progress.py", line 1175, in stop
File "/home/jerome/PycharmProjects/VS_ModsUpdater_v2/venv/lib/python3.12/site-packages/rich/live.py", line 162, in stop
File "/home/jerome/PycharmProjects/VS_ModsUpdater_v2/venv/lib/python3.12/site-packages/rich/console.py", line 870, in __exit__
File "/home/jerome/PycharmProjects/VS_ModsUpdater_v2/venv/lib/python3.12/site-packages/rich/console.py", line 826, in _exit_buffer
File "/home/jerome/PycharmProjects/VS_ModsUpdater_v2/venv/lib/python3.12/site-packages/rich/console.py", line 2038, in _check_buffer
File "/home/jerome/PycharmProjects/VS_ModsUpdater_v2/venv/lib/python3.12/site-packages/rich/console.py", line 2107, in _write_buffer
UnicodeEncodeError: 'ascii' codec can't encode character '\u2022' in position 124: ordinal not in range(128)
*** You may need to add PYTHONIOENCODING=utf-8 to your environment ***

 

2.1.2 continues to work as long as I have exported the PYTHONIOENCODING=utf-8 variable.

💬 Laerinok , Aug 26th at 10:50 AM

Yelb

Glad to hear it !

💬 Yelb, Aug 26th at 9:34 AM

Hi, stable 1.21 and your AppImage 2.2.2 seem to work well now, no visible issue so far. Thanks.

💬 Laerinok , Aug 25th at 8:24 PM (modified Aug 25th at 8:40 PM)

Thanks for the repport.

I've made a new appimage. This should fix thibeeus's issue.

Please, download it again and tell me if it's OK.

(You can also find the "simple" zip-file on github)

💬 thibeeus, Aug 25th at 7:30 PM (modified Aug 25th at 7:30 PM)

I don't know what the deal with the new appimage and a problem I'm encountering. I was previously using the zip version of your Linux package.

 

I would get this:

Spoiler
Traceback (most recent call last):
File "/home/jerome/PycharmProjects/VS_ModsUpdater_v2/venv/lib/python3.12/site-packages/cx_Freeze/initscripts/__startup__.py", line 133, in run
File "/home/jerome/PycharmProjects/VS_ModsUpdater_v2/venv/lib/python3.12/site-packages/cx_Freeze/initscripts/console.py", line 25, in run
File "main.py", line 194, in
File "/home/jerome/PycharmProjects/VS_ModsUpdater_v2/fetch_mod_info.py", line 335, in scan_and_fetch_mod_info
File "/home/jerome/PycharmProjects/VS_ModsUpdater_v2/venv/lib/python3.12/site-packages/rich/progress.py", line 1189, in __exit__
File "/home/jerome/PycharmProjects/VS_ModsUpdater_v2/venv/lib/python3.12/site-packages/rich/progress.py", line 1175, in stop
File "/home/jerome/PycharmProjects/VS_ModsUpdater_v2/venv/lib/python3.12/site-packages/rich/live.py", line 162, in stop
File "/home/jerome/PycharmProjects/VS_ModsUpdater_v2/venv/lib/python3.12/site-packages/rich/console.py", line 870, in __exit__
File "/home/jerome/PycharmProjects/VS_ModsUpdater_v2/venv/lib/python3.12/site-packages/rich/console.py", line 826, in _exit_buffer
File "/home/jerome/PycharmProjects/VS_ModsUpdater_v2/venv/lib/python3.12/site-packages/rich/console.py", line 2038, in _check_buffer
File "/home/jerome/PycharmProjects/VS_ModsUpdater_v2/venv/lib/python3.12/site-packages/rich/console.py", line 2107, in _write_buffer
UnicodeEncodeError: 'ascii' codec can't encode character '\u2022' in position 124: ordinal not in range(128)
*** You may need to add PYTHONIOENCODING=utf-8 to your environment ***

 

So then I'd run 

export PYTHONIOENCODING=utf-8

 

...and everything would be working. That's not working now. I've even tried extracting the appimage, still happens. I'm also not an advanced Linux user so I'm not sure what to change here. Nothing seems to be working.

 

💬 Laerinok , Aug 25th at 6:27 PM

smt923

Glad to hear it! Since I'm not an advanced Linux user, I sometimes have a bit of a hard time.
There are still a few bugs to fix, but it should be easier to use with the AppImage now.

💬 smt923, Aug 25th at 6:22 PM (modified Aug 25th at 6:22 PM)

thank you! this is really useful - the appimage seems to have worked, picked up and converted my old config file etc

💬 Laerinok , Aug 25th at 3:36 PM (modified Aug 25th at 3:40 PM)

V2.2.2 


That's it. Most of the bugs are fixed. There are still a few remaining, and I still have some additions to make, but the most urgent work is done. Everything should now be functional.
A priori, only the use of certain arguments might not work optimally in some cases.

I hope the appimage will work as intended... If not I will give the orignal files.

💬 Laerinok , Aug 25th at 2:15 PM (modified Aug 25th at 2:21 PM)

Yelb

Hello,

Thanks for the feedback. I'm currently fixing this bug. I was about to publish v2.2.1 when I saw it. For now, all you need to do is edit the config.ini (~/.config/VS_ModsUpdater) file and set the game version:

[Game_Version]
user_game_version = 1.20.12

or

[Game_Version]
user_game_version = 1.21.0-rc.7
(or any version you want.)

💬 Yelb, Aug 25th at 1:39 PM

Hello,

 

i tried the Linux appImage 2.2.0 and this :

 

Spoiler
Scanning mods... - 0:00:00 - ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 100% •
Fetching mod info from API... - 0:00:21 - ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 0% • •
Traceback (most recent call last):
File "/home/jerome/PycharmProjects/VS_ModsUpdater_v2/venv/lib/python3.12/site-packages/cx_Freeze/initscripts/__startup__.py", line 133, in run
File "/home/jerome/PycharmProjects/VS_ModsUpdater_v2/venv/lib/python3.12/site-packages/cx_Freeze/initscripts/console.py", line 25, in run
File "main.py", line 194, in <module>
File "/home/jerome/PycharmProjects/VS_ModsUpdater_v2/fetch_mod_info.py", line 388, in scan_and_fetch_mod_info
File "/usr/lib/python3.12/concurrent/futures/_base.py", line 449, in result
File "/usr/lib/python3.12/concurrent/futures/_base.py", line 401, in __get_result
File "/usr/lib/python3.12/concurrent/futures/thread.py", line 59, in run
File "/home/jerome/PycharmProjects/VS_ModsUpdater_v2/fetch_mod_info.py", line 291, in get_mod_api_data
File "/home/jerome/PycharmProjects/VS_ModsUpdater_v2/fetch_mod_info.py", line 197, in get_compatible_releases
File "/home/jerome/PycharmProjects/VS_ModsUpdater_v2/venv/lib/python3.12/site-packages/packaging/version.py", line 202, in __init__
packaging.version.InvalidVersion: Invalid version: 'None'
💬 Laerinok , Aug 25th at 8:52 AM

For those who are interested, v2.2.0 is almost ready. I have to fix some bugs (specific to Linux) with the arguments, but I'm making the AppImage available if you want to test it. It should be functional for "standard" use.
I can't launch it by double-clicking, only from the terminal (I'm on Mint 21). If you have any clues for me, I'd appreciate it.

💬 Laerinok , Aug 17th at 6:32 AM

Hey everyone,

DilanRona Dewey

I was away for a bit and will be back soon. I'll look into all these issues once I'm fully up and running again.
I have yet to fix some issues and then test with linux.
For interested users there is a v2.1.4-rc.1 but not tested on Linux and there is no compiled version, only the python code.

💬 Dewey, Aug 11th at 11:31 PM

Not a crash, just some interesting behaviour that doesn't have an explination in the Comments from what I can see.

 

Recently had this as my latest traceback when running the script.


Traceback (most recent call last):
File "/home/username/VS_ModsUpdater.v2.1.2_Linux/main.py", line 205, in <module>
File "/home/username/VS_ModsUpdater.v2.1.2_Linux/mods_auto_update.py", line 120, in download_mods_to_update
TypeError: unsupported operand type(s) for /: 'PosixPath' and 'NoneType'

 

Might be nothing, might be something, could also just be that there are no mods to update and there just isn't a message for that or a case for it before the script stops.

💬 DilanRona, Jul 22nd at 7:07 AM

Got a crash now for some reason

 

Traceback (most recent call last):
File "/home/rupert/Vintage/VS_ModsUpdater.v2.1.2_Linux/main.py", line 234, in <module>
File "/home/rupert/Vintage/VS_ModsUpdater.v2.1.2_Linux/export_pdf.py", line 433, in generate_pdf
File "/home/rupert/Vintage/VS_ModsUpdater.v2.1.2_Linux/export_pdf.py", line 292, in create_pdf_with_table
File "/home/rupert/Vintage/VS_ModsUpdater.v2.1.2_Linux/reportlab/platypus/tables.py", line 287, in __init__
ValueError: <Table@0x7FB0182A9D90 0 rows x unknown cols>... must have at least a row and column

💬 Laerinok , Jun 11th at 5:24 AM

TurtleFrom

The config.ini file is located at ~/.config/VS_ModsUpdater.

It is created after the first launch.

💬 TurtleFrom, Jun 11th at 2:08 AM

i dont have a .config file (or i just cant find it)

💬 Laerinok , Jun 1st at 5:47 AM

PerpetualGamer

Ok, I understand the context better now, thank you. So I will add an argument to modify the config.ini path. I will also take the opportunity to define one for each option in config.ini, I suppose that could be useful. In the meantime, there are already a few, I don't know if they are useful to you, but if you don't have already looked, check the "Configuration (config.ini) & Arguments" in "Want to Customize?" section in the description on the page above. There are some infos about arguments you can use.

💬 PerpetualGamer, May 31st at 10:22 PM

 

I have permission but the flow of how the server is run/booted doesn't easily allow me to do the interactive config setup. It's using Pelican Panel and the user has no way of getting into their home directory, just the game directory. I was able to work around this by hard coding a config.ini into the server install script. So I don't NEED a solution, but having one would be nice for the future.

💬 Laerinok , May 31st at 7:21 PM

PerpetualGamer

I'm not a Linux user, nor am I very knowledgeable about it, but shouldn't a user be able to write to their ~/.config/ folder? That's the standard location on Linux for personal configurations, and the system is designed for you to own it with write permissions.

I could add a new argument to modify the config path, but I won't be home for a week. I'm not sure I can do anything until I get back.

💬 PerpetualGamer, May 31st at 7:02 PM

Is there a way to run this without a config.ini, or a way to force it to use a config.ini in a different location? I do not have the ability to add a file to the directory it's looking at for the config.

💬 Laerinok , May 28th at 6:20 AM

DilanRona

The latest changes on ModDB broke part of how I was managing the maximum game version used when no max version was specified. To avoid this issue, you need to specify the version in the config.ini file (~/.config/VS_ModsUpdater).

[Game_Version]
user_game_version = 1.20.11

I'll fix that once the ModDB changes are stable.

💬 DilanRona, May 28th at 5:34 AM

When updating the mods, it gives me the following.

Maximum game version for mod updates: .4.4-dev.2

 

Got the following error now...

Traceback (most recent call last):
File "/home/rupert/Vintage/VS_ModsUpdater.v2.1.2_Linux/main.py", line 187, in
File "/home/rupert/Vintage/VS_ModsUpdater.v2.1.2_Linux/fetch_mod_info.py", line 393, in scan_and_fetch_mod_info
File "/home/rupert/Vintage/VS_ModsUpdater.v2.1.2_Linux/concurrent/futures/_base.py", line 449, in result
File "/home/rupert/Vintage/VS_ModsUpdater.v2.1.2_Linux/concurrent/futures/_base.py", line 401, in __get_result
File "/home/rupert/Vintage/VS_ModsUpdater.v2.1.2_Linux/concurrent/futures/thread.py", line 59, in run
File "/home/rupert/Vintage/VS_ModsUpdater.v2.1.2_Linux/fetch_mod_info.py", line 297, in get_mod_api_data
File "/home/rupert/Vintage/VS_ModsUpdater.v2.1.2_Linux/fetch_mod_info.py", line 212, in get_compatible_releases
File "/home/rupert/Vintage/VS_ModsUpdater.v2.1.2_Linux/packaging/version.py", line 202, in __init__
packaging.version.InvalidVersion: Invalid version: '.4.4-dev.2'

 

There is no option to specify max version.

💬 Yskar, Apr 22nd at 9:30 AM

Laerinok
I sent to you my script on your discord PV, take a look

💬 Laerinok , Apr 16th at 7:05 AM

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).

💬 Yskar, Apr 15th at 6:42 PM

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.)

💬 Laerinok , Apr 15th at 6:37 AM

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! :)

💬 Yskar, Apr 15th at 12:11 AM

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! 👍😁

💬 Laerinok , Apr 10th at 6:47 AM

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... 🤔

💬 GaylordZap, Apr 9th at 10:43 PM

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.

💬 Laerinok , Apr 9th at 5:42 PM

Changelog:

  • v2.1.1:
    • Fixed: Ensure mod icons are extracted when PDF export is disabled. The if not args.no_pdf: condition was moved within the export_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.

 

  • v2.1.0:
    • Fixed (welcome_display): Ensures that the update status message is always displayed. A logic issue prevented the "No new version available" message from being shown.
    • Fixed: Correct mod icon is now displayed in the PDF modlist even if a manual update for that mod was skipped.
    • Fixed: modlist_json for manual mode: download links were not for the correct version.
    • Fixed: Incorrect input values for user responses.
    • Fixed: updated_mods_changelog.txt was not being populated correctly for manual download mode.
    • Added: Functionality to export the list of installed mods to an HTML file.
    • Added: New command-line argument --no-html to disable HTML mod list export.
    • Added: Display of the maximum game version for mod updates.
    • Added: ko_KR.json file (Korean localization) From gitHub. Thanks purple8cloud. (I've added some new strings).
    • Improved: Display of the mod information retrieval progress bar.
    • Improved: Display of the mod download progress bar.
    • Improved: Display of the PDF creation progress bar.
    • Updated: Language files with translations for the HTML export feature and the --no-html option.

 

PS: I need to fix the appimage creation. So no release for appimage for now, sorry...

💬 Menelos, Apr 9th at 9:16 AM

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.

💬 Laerinok , Apr 8th at 12:34 PM

Last news: Here is the list of the latest fixes that have been implemented.

v2.0.3:
- Fixed: Incorrect input values for user responses.
- Fixed: updated_mods_changelog.txt was not being populated correctly for manual download mode.
- Added: Display of the maximum game version for mod updates.
- Added: ko_KR.json file (Korean localization).
- Improved: Display of the mod information retrieval progress bar.
- Improved: Display of the mod download progress bar.
- Improved: Display of the PDF creation progress bar.
- Updated localization files.

 

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

💬 Laerinok , Apr 7th at 6:04 PM

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.

💬 Laerinok , Apr 7th at 5:54 PM

Menelos

😊

  1. All the necessary information is stored in a cache after it's retrieved, so it would be easy. My problem, or rather my question, is whether I can. This part is managed by the Python Rich library and I'm not sure I have much freedom. I'm going to check the documentation.
  2. My bad ! I was so convinced I had left it in that I didn't think about this information. It's an oversight and I'm going to add it...
  3. Yes, the JSON format is not for direct use. Originally, it was a request made to me to display the used mods on a server. Since I found the idea useful and the code was ready, I added it. But indeed, a HTML/PHP page needs to be adapted. I'm going to look into it, it will be an interesting exercise.
💬 Menelos, Apr 7th at 2:51 PM

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.

 

💬 Laerinok , Apr 7th at 11:23 AM

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.

  1. I'm not entirely satisfied with the display either, for the same reasons. But my various attempts haven't yielded anything better. Visually, I didn't like the name at the end of the line, but indeed, it's more stable. If I don't find a better alternative, I'll probably settle for that.
  2. I need to delve back into the code, because I don't see what you mean...
  3. I don't see any problem with making an HTML version. I'll add it. Out of curiosity, isn't the JSON format suitable?
  4. Seen and replied to. Thanks.

 

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.

💬 Menelos, Apr 7th at 10:37 AM

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:

  • when fetching "Fetching mod info" the position of the progress bar keeps changing very fast because the length of the mod names are quite different, putting the name at the end would be better, or padding maybe
  • when user_game_version is set could you print the information like in v1? if helps realize you failed to bump the version in the variable after upgrading VS
  • I'm using the generated PDF to publish the list of mods installed on my server, it is very handy although a HTML version could be nice (the PDF is sufficient so don't feel forced to develop that if you don't want to)
  • I reported a problem with the appimage in #5

 

💬 Laerinok , Apr 6th at 6:55 PM

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.

💬 Laerinok , Apr 5th at 9:33 PM

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!

💬 ZippyWonderdust, Mar 21st at 4:02 PM

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:

  1. Don't simply try to unzip the mod offered for download here, as I attempted to do, as it is missing the VS_ModUpdater.py file. You must clone the GitHub repo instead.
  2. The repo contains a "requirements.txt" file, so you don't need to make you own. Just be sure to put your shell.nix in the root of the cloned repo.
💬 Yskar, Mar 9th at 10:57 PM

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:

  1. Activate the virtual environment:
    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. 👍

💬 Laerinok , Mar 9th at 7:47 AM

Yskar

I am sorry I missed your comment. 😅

I guess this is solved with the pre-release ?

💬 Yskar, Mar 9th at 5:40 AM

Thanks, bro! 👍

💬 Laerinok , Mar 7th at 10:22 AM

INFO :
New pre-release version is available on GitHub.
Should be the last before uploading here.

Changelog:

  • fixed: crash when a zip file is corrupted.
  • fixed: crash at first run due to regex changes in 1.4.3-pre1
  • tweaked: timeout from 2 to 5
  • tweaked: destination pdf file to 'modslist' folder
  • twaeked: small fix for error msg
  • tweaked: changed log file name to reduce occurrences.
💬 DarkThoughts, Feb 23rd at 7:32 PM

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...

💬 Yskar, Feb 23rd at 6:17 PM

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).

💬 DarkThoughts, Feb 23rd at 3:05 PM

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.

💬 Yskar, Feb 23rd at 1:03 PM

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'

💬 Yskar, Feb 23rd at 12:44 PM

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.

💬 Laerinok , Feb 23rd at 9:24 AM

sTiKyt very kindly made a guide to use the script regardless of the distro. cf description above or readme.md on github.

💬 Chumber, Feb 21st at 6:09 PM

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.

💬 DarkThoughts, Feb 20th at 8:45 PM

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

💬 Yskar, Feb 20th at 7:30 PM

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. 😄

💬 DarkThoughts, Feb 20th at 11:37 AM

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.

💬 Laerinok , Feb 20th at 7:57 AM

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

💬 Yskar, Feb 20th at 12:28 AM

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.

💬 Laerinok , Feb 19th at 10:34 PM

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.

💬 DarkThoughts, Feb 19th at 8:13 PM

The release on Github from 3 hours ago has the same issue unfortunately. :/

💬 Laerinok , Feb 19th at 4:29 PM

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 ;))

💬 Yskar, Feb 19th at 2:26 PM

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.

💬 Sits, Feb 19th at 1:12 PM

I have the library installed, but it's looking for the temp packaged version and I'm not smart enough to fix it ;;

💬 Laerinok , Feb 18th at 7:48 AM

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.

💬 Sits, Feb 17th at 10:26 PM

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

💬 Chumber, Feb 17th at 9:04 PM

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.

💬 Laerinok , Feb 17th at 8:22 PM

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.

💬 DarkThoughts, Feb 17th at 7:26 PM

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.

💬 Laerinok , Feb 17th at 6:41 PM

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.

 

💬 DarkThoughts, Feb 17th at 5:49 PM

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.

💬 Laerinok , Feb 17th at 2:59 PM

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!

💬 Invataksi338472, Feb 17th at 2:06 PM

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 :^)

💬 DarkThoughts, Feb 17th at 1:47 PM

Is the 2.0 version fixing the SSL certificate issue?

💬 Laerinok , Feb 16th at 8:24 PM

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.

💬 Laerinok , Feb 16th at 10:31 AM

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.

💬 Laerinok , Feb 16th at 8:37 AM

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.

💬 Friestvalker, Feb 16th at 4:28 AM

I too am having the issues that deadtom and chumber are describing

💬 Chumber, Feb 16th at 3:39 AM

Can confirm deadtom's reported issue. Every update attempt spits out the same error.

💬 deadtom04, Feb 16th at 12:12 AM

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'

💬 Laerinok , Jan 28th at 8:27 AM

Maquin

Thank you so much for your feedback and enthusiasm! I'm glad this tool is helpful to some players :)

💬 Maquin, Jan 27th at 6:17 PM

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.

💬 Laerinok , Jan 27th at 11:49 AM

Maquin
👍

💬 Maquin, Jan 27th at 11:12 AM

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.

💬 Laerinok , Jan 27th at 7:38 AM

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):

 

💬 Maquin, Jan 26th at 11:08 PM

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.

💬 Laerinok , Dec 20th 2024 at 6:10 PM

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.

💬 SalazarWindriver, Dec 20th 2024 at 4:51 PM

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. 

💬 Laerinok , Dec 20th 2024 at 2:48 PM

SalazarWindriver

Sorry for your game but:

  • Did you set the config.ini ? you have an option to update for the game version you want. If you set for v1.19.8 it won't upload v1.20.0
    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).

  • "It also downloaded multiple copies of some mods cause I still had older versions in the folder". 
    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.

💬 SalazarWindriver, Dec 20th 2024 at 12:48 PM

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.

💬 Laerinok , Dec 1st 2024 at 10:02 AM

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:

  • A system for migrating custom configurations.
  • The ability to choose the update mode (automatic/manual). You can decide whether to update a mod or not.
  • Backup of mods before updating them.
  • Improved logging and error management system.

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.

💬 Laerinok , Aug 26th 2024 at 7:00 AM

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.

💬 hron84, Aug 25th 2024 at 7:41 AM

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.

💬 Laerinok , Aug 10th 2024 at 5:56 AM

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.

💬 Wolfraider, Aug 9th 2024 at 11:46 AM

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.

💬 Laerinok , Jun 13th 2024 at 3:37 PM

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 ;)

💬 SturgeonFish, Jun 13th 2024 at 12:39 PM

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.

💬 Laerinok , Jun 13th 2024 at 9:38 AM

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 ;)

💬 SturgeonFish, Jun 12th 2024 at 9:49 PM

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

 

 

💬 Laerinok , Jun 1st 2024 at 7:41 PM

c1charge

👌 glad to see it's OK.

💬 c1charge, May 31st 2024 at 10:30 AM

@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!

💬 Laerinok , May 24th 2024 at 6:21 PM

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 :

  • Try to move zip files into your VintageStoryData/mods. In your case. (On my linux VM Mods are in it's /home/username/.config/VintagestoryData/Mods )
  • Edit hte config.ini and put the paths of the folder you use for mods. but I don't know if the creative/essentials/survival files will cause issue or not, as they are not in the moddb.
💬 c1charge, May 24th 2024 at 5:39 PM

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!

💬 Laerinok , May 24th 2024 at 3:53 PM

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 ?

💬 c1charge, May 24th 2024 at 3:03 PM

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!

💬 Laerinok , Apr 8th 2024 at 6:20 AM

😀

💬 Bazim, Apr 8th 2024 at 3:14 AM

This is so nice for a linux server. Thank you very much for it.

💬 Laerinok , Mar 20th 2024 at 11:23 AM

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 😀

💬 effgee, Mar 20th 2024 at 9:49 AM

@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! ;)

💬 Laerinok , Mar 19th 2024 at 3:32 PM

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 ?

💬 effgee, Mar 19th 2024 at 1:48 PM

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://news.kalataka.ru/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

💬 Laerinok , Feb 26th 2024 at 7:49 AM

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.

💬 Laerinok , Nov 14th 2023 at 5:28 PM

Drathek

Thanks for the help and instructions. No doubt it will be useful for users.

💬 Drathek, Nov 14th 2023 at 4:20 PM

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.

💬 Laerinok , Oct 27th 2023 at 7:08 PM

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

💬 8Helio8, Oct 27th 2023 at 11:37 AM

@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!

💬 Laerinok , Oct 20th 2023 at 1:23 PM

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.

💬 Vlammar, Oct 20th 2023 at 12:52 PM

@laerinok there may be an issue with your files, on the two last versions it is missing the .py script

 

💬 Laerinok , Oct 20th 2023 at 11:54 AM

Kaofan

Can you join me at Discord ? It will be easier. (my pseudo is laerinok)

💬 Gnusik2291, Oct 20th 2023 at 11:48 AM

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.

💬 Laerinok , Oct 20th 2023 at 11:40 AM

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.

💬 Gnusik2291, Oct 20th 2023 at 11:27 AM

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.

💬 Laerinok , Oct 19th 2023 at 3:21 PM

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 :

  • Extract files (this doesn't change ^^)
  • Open and edit VS_ModsUpdater.sh : You must set the right directory for VS_ModsUpdater and your Mods. You can change the language if needed.
  • You need to make VS_ModsUpdater.sh executable.
  • Then you should be able to run with this command : VS_ModsUpdater.sh && ./VintagestoryServer --dataPath ./data --port=${SERVER_PORT} --maxclients=${MAX_CLIENTS} ${OPTIONS}
💬 Laerinok , Oct 19th 2023 at 1:53 PM

@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 ?

💬 Gnusik2291, Oct 19th 2023 at 10:47 AM

Laerinok

Let me tell you that no Vintage Story server uses the Python module

💬 Gnusik2291, Oct 19th 2023 at 10:45 AM

Laerinok

This is a personal Server that is on the Pterodactyl panel which this panel is used with a VPS

💬 Laerinok , Oct 19th 2023 at 9:50 AM

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.

💬 Gnusik2291, Oct 18th 2023 at 12:09 AM

Laerinok

I tried it and it doesn't help either

💬 Laerinok , Oct 10th 2023 at 6:15 AM

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.

💬 Gnusik2291, Oct 10th 2023 at 2:06 AM

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'

💬 Laerinok , Oct 9th 2023 at 7:05 PM

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.

💬 Laerinok , Oct 4th 2023 at 4:29 PM

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 ?

💬 Gnusik2291, Oct 4th 2023 at 1:50 PM

Vlammar

And you can do it, because I don't know anything about bash or .py scripts

💬 Vlammar, Oct 4th 2023 at 12:54 PM

@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

💬 Laerinok , Oct 4th 2023 at 6:54 AM

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 ;)

💬 Vlammar, Oct 3rd 2023 at 10:03 PM

@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 ?

💬 Laerinok , Sep 28th 2023 at 6:39 AM

Thanks for your feed back. Glad to know it is useful :)

💬 Chumber, Sep 27th 2023 at 9:17 PM

Thank you for this, makes my life so much easier.

 

Working perfectly on Ubuntu 22.04 LTS

💬 Yskar, Sep 15th 2023 at 11:25 PM

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".

💬 Laerinok , Sep 15th 2023 at 7:14 AM

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)

💬 Yskar, Sep 15th 2023 at 6:37 AM

Thanks a LOT, Laerinok, i will test right now! o/ 👍

💬 Laerinok , Sep 11th 2023 at 4:56 AM

Well I have no idea how Pterodactyl works. I'll see if I can do something.

💬 Gnusik2291, Sep 11th 2023 at 12:41 AM

Would you make a Pterodactyl version?

💬 Laerinok , Sep 10th 2023 at 5:36 PM

Yeah. Good news ! 😃

Thanks

💬 Teslov, Sep 10th 2023 at 4:40 PM

I love you.

Works perfectly on Ubuntu 23.04

 (edit comment delete)
Основной веб-сайт | Почтовый сервер | FTP сервер | Административная панель | API интерфейс | Content Delivery Network | Статические файлы | Ресурсы сайта | Изображения | Файловое хранилище | Блог | Интернет-магазин | Техническая поддержка | Справочная система | Документация | Форум | Новости | Загрузки | Демонстрация | Тестовая среда | Приложение | Медиа контент | Разработка | Промежуточная среда | Бета версия | Безопасная зона | Вход в систему | Панель управления | Портал | Система управления контентом