MinecraftServerControl / mscs

Powerful command-line control for UNIX and Linux powered Minecraft servers
https://minecraftservercontrol.github.io
BSD 2-Clause "Simplified" License
490 stars 61 forks source link

Error Updating to 1.14 #214

Closed strmtrupr2 closed 5 years ago

strmtrupr2 commented 5 years ago

Hi, I saw some other issues and this is what I've done so far:

Any ideas?

Thanks,

Scott

sandain commented 5 years ago

Hi Scott.

That's weird. I just checked the version manifest, and 1.14 is a valid version. I'll have to dig more into this when I get the chance, probably not until this weekend.. Does version 1.14.1 work?

strmtrupr2 commented 5 years ago

No, tried 1.14.1 too...

sandain commented 5 years ago

I just checked if I could update my server, and I had no problem. I modified one of my servers to run 1.14, another is set to use the latest release version, and I also have one set to run the latest snapshot. I'm not sure what the issue could be yet...

$ mscs status
Minecraft Server Status:
  alpha: running version 1.14 (0 of 20 users online).
    Process ID: 8722.
    Memory used: 626232 kB.
  beta: running version 1.14.1 (0 of 20 users online).
    Process ID: 8938.
    Memory used: 917272 kB.
  lobby: running.
    Process ID: 9143.
    Memory used: 111132 kB.
  snapshot: running version 1.14.2 Pre-Release 1 (0 of 20 users online).
    Process ID: 9336.
    Memory used: 946988 kB.
  gamma: disabled.
conrad784 commented 5 years ago

@strmtrupr2 could you at least tell us which system you are running? Providing this should be standard for every report in order to be able to reproducing issues.

strmtrupr2 commented 5 years ago

Yes, sorry:

[root@fedora mscs]# cat /etc/redhat-release 
Fedora release 29 (Twenty Nine)

Thank you for your help!

sandain commented 5 years ago

Lets break that Perl code up to see where it is failing...

perl -0777ne '
  use JSON;
  my $json = decode_json ($_);
  my $version;
  foreach $ver (@{$json->{versions}}) {
    $version = $ver if ($ver->{id} eq "1.14");
  }
  print $version->{url};
' /opt/mscs/version_manifest.json

That should print the URL to download metadata for version 1.14:

https://launchermeta.mojang.com/v1/packages/14f2ab0c190113affb75eb892936303a6c8654f2/1.14.json

Let me know if it doesn't.

perl -e 'use LWP::Simple; print get ("https://launchermeta.mojang.com/v1/packages/14f2ab0c190113affb75eb892936303a6c8654f2/1.14.json");'

That should print out the metadata in json format. Post the output of this command for me to look at.

conrad784 commented 5 years ago

I fired up a docker container with fedora 29 and the output is just empty.

This is perl 5, version 28, subversion 2 (v5.28.2) built for x86_64-linux-thread-multi
(with 48 registered patches, see perl -V for more detail)

I tried the same command on ArchLinux with the same version of perl and it works. Seems like one of those 48 patches is responsible?

e: tried with non-https link --> working now seems to be an issue with the fedora package (but found no report on the redhat bugzilla)

strmtrupr2 commented 5 years ago

darn redhat perl package :(

conrad784 commented 5 years ago

the solution might be easier, its not a broken package, now I think you are just missing the plugins try yum install perl-LWP-Protocol-https the https plugin

e: full dependency list for rpm based distros: yum install java-1.8.0-openjdk perl perl-JSON perl-libwww-perl perl-LWP-Protocol-https python make wget rdiff-backup rsync socat might be already on any workstation (but for minimal install those are not installed) yum install git which sudo procps

strmtrupr2 commented 5 years ago

Looks like I had all the packages listed installed already. Re-ran the update and the issue moved to line 11? Does that sound right?

[root@fedora mscs]# git pull Already up to date. [root@fedora mscs]# make update install -m 0755 msctl /usr/local/bin/msctl install -m 0755 mscs /usr/local/bin/mscs install -m 0644 mscs.completion /etc/bash_completion.d/mscs if which systemctl; then \ install -m 0644 mscs.service /etc/systemd/system/mscs.service; \ fi /usr/bin/systemctl [root@fedora mscs]# mscs update derber2019 find: cannot delete ‘/opt/mscs/version_manifest.json’: Permission denied The cached copy of the version manifest is up to date. Use the force-update option to ensure a new copy is downloaded. Stopping Minecraft Server:. Backing up Minecraft Server: derber2019. Updating Server Software: derber2019malformed JSON string, neither array, object, number, string or atom, at character offset 0 (before "(end of string)") at -e line 11. Error updating the Minecraft server software. [root@fedora mscs]#

conrad784 commented 5 years ago

[root@fedora mscs]# mscs update derber2019 find: cannot delete ‘/opt/mscs/version_manifest.json’: Permission denied

you should fix your permissions first chown -R <minecraftuser> /opt/mscs

strmtrupr2 commented 5 years ago

remind me, does it install by default with mcserver as the user or minecraft?

conrad784 commented 5 years ago

remind me, does it install by default with mcserver as the user or minecraft?

have a look in the first line of the Makefile ;)

strmtrupr2 commented 5 years ago

perfect! it's minecraft, which is how I had my permissions set, and I couldn't figure out why it wasn't able to delete that file so finally I went up a directory level and noticed the main directory /opt/mscs did not have user write permissions, doh! changed that and it worked. :) thank you for your help - hit by the most common issue - permissions!!! sorry for that scott

sandain commented 5 years ago

Hi @strmtrupr2. Were you able to figure out the issue, or are there still problems that you need help with?

strmtrupr2 commented 5 years ago

Yes! @sandain Thank you so much for your help!!

Scott

conrad784 commented 5 years ago

Yes! @sandain Thank you so much for your help!!

Scott

If your problem is solved, then you should press "Close Issue" ;)

sandain commented 5 years ago

Thanks for the help with this issue @conrad784. @strmtrupr2, I'm glad you got it working!