[0.16.16] Linux 'There is no package core in /usr/share/...'

This subforum contains all the issues which we already resolved.
Post Reply
GodricSeer
Inserter
Inserter
Posts: 30
Joined: Fri May 06, 2016 2:01 pm
Contact:

[0.16.16] Linux 'There is no package core in /usr/share/...'

Post by GodricSeer » Wed Jan 10, 2018 6:38 pm

I auto-updated to 0.16.16, and factorio has failed to start since then. I also tried a fresh tar download.

Whenever I try to run factorio I get the error:

Code: Select all

   0.000  Error Util.cpp:49: There is no package core in /usr/share/factorio

------------- Error -------------
There is no package core in /usr/share/factorio
---------------------------------
   0.000  Goodbye
I have uncompressed the game into ~/games/factorio, so it should be looking at ~/games/factorio/data for the core package. Note that in config/config.ini in the directory that I auto-updated there are the lines:

Code: Select all

[path]
read-data=__PATH__executable__/../../data
write-data=__PATH__executable__/../..
so factorio should be looking in the correct location.

In the newly downloaded tar the config-path.cfg is such that it should generate config/config.ini, but it does not even get to this step and no config is generate.

Oxyd
Factorio Staff
Factorio Staff
Posts: 1242
Joined: Thu May 07, 2015 8:42 am
Contact:

Re: [0.16.16] Linux 'There is no package core in /usr/share/...'

Post by Oxyd » Thu Jan 11, 2018 1:37 pm

Is ~/games/factorio or ~/games a symlink to some other directory or is it mounted on some other filesystem than ~ is? Or anything else that might affect the game's paths?

GodricSeer
Inserter
Inserter
Posts: 30
Joined: Fri May 06, 2016 2:01 pm
Contact:

Re: [0.16.16] Linux 'There is no package core in /usr/share/...'

Post by GodricSeer » Thu Jan 11, 2018 3:02 pm

No, my entire home directory is all on the same file system and ~/games/factorio is simply the location where I unzipped the downloaded tar, no symlinks involved. I am running factorio through a script that contains the commands from viewtopic.php?f=23&t=54654 because I am on RHEL 7.3, but that shouldn't affect it's handling of the config path.

GodricSeer
Inserter
Inserter
Posts: 30
Joined: Fri May 06, 2016 2:01 pm
Contact:

Re: [0.16.16] Linux 'There is no package core in /usr/share/...'

Post by GodricSeer » Thu Jan 11, 2018 3:25 pm

I just created a symlink /usr/share/factorio -> ~/games/factorio/data, which allowed the game to boot up, but it failed to find the mods I had installed, my login for updates or modes, or my saved games, since by default the read and write directories are different. As a work around, it would be okay, but it would seriously make a mess of the install directory.

Oxyd
Factorio Staff
Factorio Staff
Posts: 1242
Joined: Thu May 07, 2015 8:42 am
Contact:

Re: [0.16.16] Linux 'There is no package core in /usr/share/...'

Post by Oxyd » Thu Jan 11, 2018 3:52 pm

It does affect its handling of the config path, because now the executable you're running is /opt/glibc-2.18/lib/ld-linux-x86-64.so.2 instead of factorio. Factorio calls `readlink /proc/self/exe` to determine its location, but in your case that points to /opt/glibc-2.18/lib/ld-linux-x86-64.so.2. And as you can see, the config file makes references to __PATH__executable which, as you've probably guessed, is supposed to be the path to the factorio executable.

Code: Select all

[ivy] ~ % /usr/bin/readlink /proc/self/exe
/usr/bin/readlink
[ivy] ~ % /lib64/ld-linux-x86-64.so.2 /usr/bin/readlink /proc/self/exe
/usr/lib64/ld-2.26.so
For 0.16.17 I've added command-line option --executable-path, so you'll be able to launch Factorio with `/your/custom/ld.so ~/games/factorio/bin/x64/factorio --executable-path /home/GodricSeer/games/factorio/bin/x64/factorio`.

The other option, which you can do now, would be to use patchelf to change the interpreter in the binary instead of overriding it on the command line.

And I guess a third option would be to remove all references to __PATH__executable from the config files and replace them with absolute paths to the executable.

GodricSeer
Inserter
Inserter
Posts: 30
Joined: Fri May 06, 2016 2:01 pm
Contact:

Re: [0.16.16] Linux 'There is no package core in /usr/share/...'

Post by GodricSeer » Thu Jan 11, 2018 3:56 pm

Ah, that makes sense, although why it worked fine in 0.16.15 is now a mystery. I'll change the config to use absolute paths. Thanks.

User avatar
HanziQ
Former Staff
Former Staff
Posts: 630
Joined: Fri Mar 27, 2015 7:07 am
Contact:

Re: [0.16.16] Linux 'There is no package core in /usr/share/...'

Post by HanziQ » Thu Jan 11, 2018 4:00 pm

GodricSeer wrote:Ah, that makes sense, although why it worked fine in 0.16.15 is now a mystery. I'll change the config to use absolute paths. Thanks.
I think the game used argv[0] on 16.15 and earlier for determining the executable path.

GodricSeer
Inserter
Inserter
Posts: 30
Joined: Fri May 06, 2016 2:01 pm
Contact:

Re: [0.16.16] Linux 'There is no package core in /usr/share/...'

Post by GodricSeer » Thu Jan 11, 2018 7:37 pm

To anyone else who runs into this problem, I had to both change the config.ini file to use absolute paths, and use the -c command line option for factorio to tell it where the config file was.

FossiFoo
Manual Inserter
Manual Inserter
Posts: 4
Joined: Wed Apr 26, 2017 5:50 am
Contact:

Re: [0.16.16] Linux 'There is no package core in /usr/share/...'

Post by FossiFoo » Tue Jan 23, 2018 2:55 am

I think this or the fix for it also broke NixOS. Due to it's immutable structure, it runs steam games in what basically amounts to a chroot with only a more or less complete environment. I will try the exec-path thingy.

Edit1: Did not get it to run. I tried adding the path of lib to LD_LIBRARY_PATH and then ldd shows it correctly, but there seems to be other problems when running the steam version from the commandline. i'll try regression testing and figure out what libraries were linked how in the last working version.
Last edited by FossiFoo on Tue Jan 23, 2018 3:16 am, edited 1 time in total.

Zavian
Smart Inserter
Smart Inserter
Posts: 1421
Joined: Thu Mar 02, 2017 2:57 am
Contact:

Re: [0.16.16] Linux 'There is no package core in /usr/share/...'

Post by Zavian » Tue Jan 23, 2018 3:07 am

FossiFoo wrote:I think this or the fix for it also broke NixOS. Due to it's immutable structure, it runs steam games in what basically amounts to a chroot with only a more or less complete environment. I will try the exec-path thingy.
THere are a few linux related crashes do to in 0.16.17. There is a fair chance that your problem is related to one of them eg viewtopic.php?f=7&t=56934 viewtopic.php?f=7&t=56922 and viewtopic.php?t=56941 .

FossiFoo
Manual Inserter
Manual Inserter
Posts: 4
Joined: Wed Apr 26, 2017 5:50 am
Contact:

Re: [0.16.16] Linux 'There is no package core in /usr/share/...'

Post by FossiFoo » Tue Jan 23, 2018 3:18 am

Oh, thanks. It certainly seems to be more related to that then. Thanks again. Just saved me a big debugging round :D.

User avatar
mickael9
Fast Inserter
Fast Inserter
Posts: 112
Joined: Mon Mar 14, 2016 4:04 am
Contact:

Re: [0.16.16] Linux 'There is no package core in /usr/share/...'

Post by mickael9 » Tue Jan 23, 2018 11:54 am

Wow, it's impressive how hard it is to just reexecute a program on Linux.
I did suggest using /proc/self/exe instead of using argv because of this: viewtopic.php?f=11&t=53650

There seems to be another way to get the real executable path, using getauxval(AT_EXECFN)

Code: Select all

[mickael:/tmp] % ./aux
/proc/self/exe: /tmp/aux
     AT_EXECFN: ./aux

[mickael:/tmp] % /lib/ld-2.26.so ./aux
/proc/self/exe: /usr/lib/ld-2.26.so
     AT_EXECFN: ./aux
Of course, If you were to just execve that, it would switch back to using the default linker.
It seems that the only way to make this work would be to detect if a custom linker was used in /proc/self/exe and use the executable from getauxval(AT_EXECFN) but that's becoming really complicated.

Post Reply

Return to “Resolved Problems and Bugs”

Who is online

Users browsing this forum: No registered users