factorio-mod-updater icon indicating copy to clipboard operation
factorio-mod-updater copied to clipboard

factorio-mod-updater doesn’t write the achive on the disk even if the rights on the folder are right

Open alarig opened this issue 5 years ago • 8 comments

Hi,

factorio-mod-updater fails to update the mods here:

factorio@factorio ~ $ factorio-mod-updater --update -s /opt/factorio-0.18/config/server-settings.json -m /opt/factorio-0.18/mods --fact-path /opt/factorio-0.18/bin/x64/factorio
Factorio Release: 0.18

Retrieving metadata...........complete!

Mod                      	Version	Action    	Result    	Message
Traceback (most recent call last):
  File "/usr/lib/python-exec/python3.7/factorio-mod-updater", line 652, in <module>
    UPDATER.update()
  File "/usr/lib/python-exec/python3.7/factorio-mod-updater", line 472, in update
    self._download_latest_release(mod)
  File "/usr/lib/python-exec/python3.7/factorio-mod-updater", line 579, in _download_latest_release
    if _validate_hash(latest['sha1'], target):
  File "/usr/lib/python-exec/python3.7/factorio-mod-updater", line 39, in _validate_hash
    with open(target, 'rb') as target_fp:
FileNotFoundError: [Errno 2] No such file or directory: '/opt/factorio-0.18/mods/FARL_4.0.4.zip'

But I can write the file without changing the user:

factorio@factorio ~ $ touch /opt/factorio-0.18/mods/FARL_4.0.4.zip
factorio@factorio ~ $ rm /opt/factorio-0.18/mods/FARL_4.0.4.zip
factorio@factorio ~ $ 

alarig avatar Aug 29 '20 12:08 alarig

Hi @alarig

Couple quick questions:

  • Could you provide your mod-settings.json?
  • What is the output of ls -la /opt/factorio-0.18/mods/?

Thanks!

pdemonaco avatar Aug 29 '20 17:08 pdemonaco

Of course!

It seems that I don’t have any mod-settings.json, I have mod-settings.dat but it’s not a text file though:

factorio@factorio ~ $ find /opt/factorio-0.18/ -name mod-settings.json
factorio@factorio ~ $ find /opt/factorio-0.18/ -name 'mod-settings.*'
/opt/factorio-0.18/mods/mod-settings.dat
factorio@factorio ~ $ file /opt/factorio-0.18/mods/mod-settings.dat 
/opt/factorio-0.18/mods/mod-settings.dat: data

If it’s supposed to be generated by factorio, I run it like this: /opt/factorio-0.18/bin/x64/factorio --start-server-load-latest --server-settings config/server-settings.json --use-server-whitelist true --server-whitelist config/server-whitelist.json

Here is the content of my mods dir:

factorio@factorio ~ $ ls -la /opt/factorio-0.18/mods/
total 241652
drwxr-xr-x 2 factorio factorio      4096 Aug 29 13:55  .
drwxr-x--- 8 factorio factorio      4096 Aug 14 12:19  ..
-rw-r--r-- 1 factorio alarig     4352511 May 29 07:57  beautiful_bridge_railway_0.18.1.zip
-rw-r--r-- 1 factorio alarig    60906076 May 29 07:58  cargo-ships_0.0.54.zip
-rw-r--r-- 1 factorio alarig      130943 Jun 27 21:06  FNEI_0.3.4.zip
-rw-r--r-- 1 factorio alarig     3885180 Aug  9 18:27  HelicopterRevival_0.0.5.zip
-rw-r--r-- 1 factorio alarig   176395408 Jul 20 00:38  Krastorio2_0.9.99.zip
-rw-r--r-- 1 factorio factorio       860 Aug 14 12:19  mod-list.2020-08-17_2200.02.json
-rw-r--r-- 1 factorio factorio       738 Aug 18 00:00  mod-list.2020-08-18_2200.02.json
-rw-r--r-- 1 factorio factorio       738 Aug 19 00:00  mod-list.2020-08-19_2200.02.json
-rw-r--r-- 1 factorio factorio       738 Aug 20 00:00  mod-list.2020-08-20_2200.01.json
-rw-r--r-- 1 factorio factorio       738 Aug 21 00:00  mod-list.2020-08-21_2200.02.json
-rw-r--r-- 1 factorio factorio       738 Aug 22 00:00  mod-list.2020-08-22_2200.01.json
-rw-r--r-- 1 factorio factorio       738 Aug 23 00:00  mod-list.2020-08-23_2200.01.json
-rw-r--r-- 1 factorio factorio       738 Aug 24 00:00  mod-list.json
-rw-r--r-- 1 factorio factorio      3478 Aug 11 21:33  mod-settings.dat
-rw-r--r-- 1 factorio alarig       42450 Jun 27 17:31 'Orphan Finder_1.1.2.zip'
-rw-r--r-- 1 factorio alarig      817057 May 29 07:59  Realistic_Electric_Trains_0.4.4.zip
-rw-r--r-- 1 factorio alarig       39699 Jun 23 18:19 'Squeak Through_1.8.0.zip'
-rw-r--r-- 1 factorio alarig      752022 May 29 07:59  Warehousing_0.3.0.zip
-rw-r--r-- 1 factorio factorio     63037 Aug 17 10:04  YARM_0.8.102.zip

FARL has been removed by the script, but is enabled on the game (since I didn’t restated it since then).

Thanks!

alarig avatar Aug 29 '20 18:08 alarig

Oh, my mistake - it's mod-list.json. Permissions look fine on your directory so I think this is some other kind of bug. If you send me your mod-list.json file I should be able to reproduce the problem.

Thanks!

pdemonaco avatar Aug 30 '20 22:08 pdemonaco

Sorry for the delay, I’m kind of busy :/ Here is the asked JSON:

{
  "mods": [
    {
      "enabled": true,
      "name": "FARL"
    },
    {
      "enabled": true,
      "name": "FNEI"
    },
    {
      "enabled": true,
      "name": "HelicopterRevival"
    },
    {
      "enabled": true,
      "name": "Krastorio2"
    },
    {
      "enabled": true,
      "name": "Orphan Finder"
    },
    {
      "enabled": true,
      "name": "Realistic_Electric_Trains"
    },
    {
      "enabled": true,
      "name": "Squeak Through"
    },
    {
      "enabled": true,
      "name": "Warehousing"
    },
    {
      "enabled": true,
      "name": "YARM"
    },
    {
      "enabled": true,
      "name": "beautiful_bridge_railway"
    },
    {
      "enabled": true,
      "name": "cargo-ships"
    }
  ]
}

alarig avatar Sep 02 '20 19:09 alarig

No worries - same here. I wasn't able produce the problem in my environment. Is it possible that you're out of disk space (or close to) in your /opt filesystem?

You can check via df -h /opt/factorio-0.18/mods

pdemonaco avatar Sep 06 '20 18:09 pdemonaco

I thought about something like this too but I have some space left:

alarig@factorio ~ $ df -Th
Filesystem     Type      Size  Used Avail Use% Mounted on
/dev/root      ext4       47G  7.9G   37G  18% /
devtmpfs       devtmpfs   10M     0   10M   0% /dev
tmpfs          tmpfs     395M  424K  394M   1% /run
cgroup_root    tmpfs      10M     0   10M   0% /sys/fs/cgroup
shm            tmpfs     2.0G     0  2.0G   0% /dev/shm

I’m using an ebuild to install it, but maybe I forgot something.

Here is the list of the files:

alarig@factorio ~ $ equery files factorio-mod-updater
 * Searching for factorio-mod-updater ...
 * Contents of games-util/factorio-mod-updater-0.2.2:
/usr
/usr/bin
/usr/bin/factorio-mod-updater -> ../lib/python-exec/python-exec2
/usr/lib
/usr/lib/python-exec
/usr/lib/python-exec/python3.7
/usr/lib/python-exec/python3.7/factorio-mod-updater
/usr/share
/usr/share/doc
/usr/share/doc/factorio-mod-updater-0.2.2
/usr/share/doc/factorio-mod-updater-0.2.2/README.md.bz2

If it could help, this the python interpreter header:

Python 3.7.8 (default, Jul 22 2020, 23:12:26) 
[GCC 9.2.0] on linux

alarig avatar Sep 07 '20 10:09 alarig

Sorry for the delay - I totally forgot about this issue and my mail client decided Github notifications were spam...

Interesting. I actually have the script bundled in my ebuild for Factorio itself. I haven't updated the build since the 1.0 release though so there could be some new bugs.

I'm putting the script in the /opt/factorio/bin directory and I only call it via the mods_update function in the OpenRC init script which is also part of the ebuild.

I probably should have asked this earlier - is the Factorio process stopped when you run the update? It shouldn't prevent the creation of new files, but maybe this error is actually happening when it tries to delete the old version of the mod and Factorio has it open.

pdemonaco avatar Nov 18 '20 05:11 pdemonaco

No problem ;)

I’m running it from a cron, while the server is started (I have two different ebuilds), it doesn’t seem that there is updates for my mods at the moment, so I will stop the server next time an update is needed and we’ll see.

alarig avatar Nov 18 '20 07:11 alarig