Jump to content

The Comprehensive Kerbal Archive Network (CKAN) Package Manager; v1.18.0 [19 June 2016]


pjf

Recommended Posts

CKAN errors when applying the new update to the Mk2 Expansion mod if you already have thumbnails for the example craft, because the mod now comes with thumbnails and CKAN doesn't want to overwrite them.

(Applies to 1.6.19, not tested in most recent CKAN version)

D'oh, at this time there isn't really a solution to this that I know off short of manually removing the clashing files and then updating the mod. We're working on better handling of these situations though, see below.

we need a "force" or "Override" option to do an install of a mod that's been AD and update the clients internal tracking of such mod. Basically it already detects an AD app. Make that AD symbol clickable, and clicking turns it into a checked checkbox, just like an update after clicking, after a suitable warning popup ("latest version is X, you are running a non CKAN install, proceed/cancel?". It would avoid a lot of these issues - and a disclaimer about "you force it, its your responsibility" should be enough for broken installs from people forcing a mod. This is an issue because of the recent lag in CKAN updating - I have mods that hd a needed bug fix and were stalled on CKAN, so I installed the fix myself and its stuck in AD - had to do the whole deleted, clean, and rescan circus at a command prompt, which defeats the purpose of CKAN as a user-friendly tool.
I also vote for an "override" or "force install" button.

It sounds like you'll find https://github.com/KSP-CKAN/CKAN/issues/949 interesting and relevant :)

Link to comment
Share on other sites

For no apparent reason, after updating to 1.6.20, I'm now getting an error preventing use of my current install:

************** Exception Text **************
Newtonsoft.Json.JsonReaderException: Unterminated string. Expected delimiter: ". Path 'installed_files.['GameData/AIES_Aerospace/Utility/AIESexpedLanding/landinglegc.mbm']', line 179367, position 62.
at Newtonsoft.Json.JsonTextReader.ReadStringIntoBuffer(Char quote)
at Newtonsoft.Json.JsonTextReader.ParseProperty()
at Newtonsoft.Json.JsonTextReader.ReadInternal()
at Newtonsoft.Json.JsonTextReader.Read()
at Newtonsoft.Json.Serialization.JsonSerializerInternalReader.PopulateDictionary(IDictionary dictionary, JsonReader reader, JsonDictionaryContract contract, JsonProperty containerProperty, String id)
at Newtonsoft.Json.Serialization.JsonSerializerInternalReader.CreateObject(JsonReader reader, Type objectType, JsonContract contract, JsonProperty member, JsonContainerContract containerContract, JsonProperty containerMember, Object existingValue)
at Newtonsoft.Json.Serialization.JsonSerializerInternalReader.CreateValueInternal(JsonReader reader, Type objectType, JsonContract contract, JsonProperty member, JsonContainerContract containerContract, JsonProperty containerMember, Object existingValue)
at Newtonsoft.Json.Serialization.JsonSerializerInternalReader.SetPropertyValue(JsonProperty property, JsonConverter propertyConverter, JsonContainerContract containerContract, JsonProperty containerProperty, JsonReader reader, Object target)
at Newtonsoft.Json.Serialization.JsonSerializerInternalReader.PopulateObject(Object newObject, JsonReader reader, JsonObjectContract contract, JsonProperty member, String id)
at Newtonsoft.Json.Serialization.JsonSerializerInternalReader.CreateObject(JsonReader reader, Type objectType, JsonContract contract, JsonProperty member, JsonContainerContract containerContract, JsonProperty containerMember, Object existingValue)
at Newtonsoft.Json.Serialization.JsonSerializerInternalReader.CreateValueInternal(JsonReader reader, Type objectType, JsonContract contract, JsonProperty member, JsonContainerContract containerContract, JsonProperty containerMember, Object existingValue)
at Newtonsoft.Json.Serialization.JsonSerializerInternalReader.Deserialize(JsonReader reader, Type objectType, Boolean checkAdditionalContent)
at Newtonsoft.Json.JsonSerializer.DeserializeInternal(JsonReader reader, Type objectType)
at Newtonsoft.Json.JsonConvert.DeserializeObject(String value, Type type, JsonSerializerSettings settings)
at Newtonsoft.Json.JsonConvert.DeserializeObject[T](String value, JsonSerializerSettings settings)
at CKAN.RegistryManager.LoadOrCreate()
at CKAN.RegistryManager..ctor(String path, KSP ksp)
at CKAN.RegistryManager.Instance(KSP ksp)
at CKAN.Main._UpdateModsList(Boolean repo_updated)
at CKAN.Util.Invoke[T](T obj, Action action)
at CKAN.Main.OnLoad(EventArgs e)
at System.Windows.Forms.Control.CreateControl(Boolean fIgnoreVisible)
at System.Windows.Forms.Control.CreateControl()
at System.Windows.Forms.Control.WmShowWindow(Message& m)
at System.Windows.Forms.Control.WndProc(Message& m)
at System.Windows.Forms.Form.WndProc(Message& m)
at System.Windows.Forms.NativeWindow.Callback(IntPtr hWnd, Int32 msg, IntPtr wparam, IntPtr lparam)

This appears after choosing an install, my mod list appears empty, and it appears again when attempting a refresh, which then fails.

I manually deleted the AIESAerospace folder from GameData with no change. I tried running the CL version of ckan to attempt to remove the mod that way, but that seems to have its own issue -I tried multiple methods of setting the ksp directory but it keeps giving me "I don't know where KSP is installed". :(

EDIT: After looking at the registry.json, it seems to terminate on the line "GameData/AIES_Aerospace/Utility/AIESexpedLanding/mod" in installed_files, so I guess I have a corrupted registry. What do?

Edited by curiousepic
Link to comment
Share on other sites

I closed the registry.json properly, was able to get back into that install with CKAN, and after a refresh it looks like the registry has repaired itself.

IIRC, CKAN hung at some point and I force-quit it, that may have caused the registry to get corrupted I guess?

Link to comment
Share on other sites

I can't understand why this tool doesn't have a FORCED INSTALL option already. All of my friends and all the people that play KSP using mods face this problem using CKAN. It gives so much headaches.

Link to comment
Share on other sites

I closed the registry.json properly, was able to get back into that install with CKAN, and after a refresh it looks like the registry has repaired itself.

IIRC, CKAN hung at some point and I force-quit it, that may have caused the registry to get corrupted I guess?

If you manage to reproduce this error in a reliable way please open a github issue, sounds very much like something the devs will want to have a look at!

Suggestion: it would be nice to set a different cache folder for the addons. I don't want to fill my SSD with zip files.

We have an open issue to track this, please add to https://github.com/KSP-CKAN/CKAN/issues/960 :)

I can't understand why this tool doesn't have a FORCED INSTALL option already. All of my friends and all the people that play KSP using mods face this problem using CKAN. It gives so much headaches.

Do you mean something akin to what I answered 5 posts above yours in http://forum.kerbalspaceprogram.com/newreply.php?do=postreply&t=100067 or something different?

Link to comment
Share on other sites

I'm really sorry to have to ask such a remedial question... but the submission guidelines have me completely lost.

I've written a brief .netkan file in CrimsonEditor and saved it to my desktop, which looks like this


{
"spec_version" : 1,
"identifier" : "TMSTACLSRetexture",
"$kref" : "#/ckan/kerbalstuff/28",
"x_netkan_license_ok": true

"depends": [
{ "name": "TACLS" },
{ "name": "ModuleManager" }
]
}

The verification guidelines state the following:

You've created the .netkan file, and now you need test to see if it works. You'll be using the netkan.exe utility which will verify the file and generate the metadata for the mod. This is a command-line only program, and you can run it simply by providing the module's name:

netkan.exe --verbose <identifier>.netkan

This will produce a .ckan file (the mod's metadata) in the same directory. You can leave the --verbose switch out, but then the tool will be silent unless something goes wrong.

Having inflated the metadata using the netkan tool, you can try installing the mod:

...but I have no idea what netkan.exe utility it's referring to. I have a ckan.exe utility on my desktop which I use for managing mods (and my .netkan file is also located there).

Link to comment
Share on other sites

I'm really sorry to have to ask such a remedial question... but the submission guidelines have me completely lost.

I've written a brief .netkan file in CrimsonEditor and saved it to my desktop, which looks like this


{
"spec_version" : 1,
"identifier" : "TMSTACLSRetexture",
"$kref" : "#/ckan/kerbalstuff/28",
"x_netkan_license_ok": true

"depends": [
{ "name": "TACLS" },
{ "name": "ModuleManager" }
]
}

The verification guidelines state the following:

...but I have no idea what netkan.exe utility it's referring to. I have a ckan.exe utility on my desktop which I use for managing mods (and my .netkan file is also located there).

You'll need an extra comma on line 5 or netkan.exe will throw you an error about it missing. Also to get netkan.exe check out the start of the guide here https://github.com/KSP-CKAN/CKAN/wiki/Adding-a-mod-to-the-CKAN#before-you-start :)

Link to comment
Share on other sites

Thanks for this. Managed to download and run on an edited file.

However, I'm encountering the following error:

COcJFxy.png

This also results in a dialogue box/error that tells me that KerbalStuff has stopped working (lol).

Is there an issue with the PD license? Is it not formatted correctly?

- - - Updated - - -

OK, so "Public Domain" isn't regarded as a valid string.

I've managed to inflate the .netkan to a .ckan file by changing the license on KerbalStuff to CC0 (which is recognised).

Is there a canonical list of licenses somewhere that CKAN accepts? Could be worth highlighting it. Better yet, it might be worth KerbalStuff linking to it (which I'm sure I suggested during the site's early development).

Edited by TMS
changed image to give full log
Link to comment
Share on other sites

Is there a canonical list of licenses somewhere that CKAN accepts?

Yep! You can find it here :)

KS likes to have a freeform license field for the moment (and I'm guessing for the foreseeable future).

Link to comment
Share on other sites

Yep! You can find it here :)

KS likes to have a freeform license field for the moment (and I'm guessing for the foreseeable future).

Ah, that's useful. Thanks!

Having a freeform license field in KerbalStuff is understandable (and preferable), but it would be useful if they linked to the above list to give forewarning about compatibility.

Maybe SirCmpwn will agree if I give him a virtual hug?

Link to comment
Share on other sites

Is there a way for ckan to copy a mod list to the clipboard like KSP AVC?

I have 70 mods installed and it takes too long to manually list them for forum use. KSP AVC can do it but it misses out quite a few of my installed mods. It would help to check mod compatibility with other forum users.

Link to comment
Share on other sites

So 2 requests and i know there is github, but i don't want to create yet another account for something i would rarely use.

Behemoth rockets mod

Dreamchaser mod

Links would be very helpful but I assume Behemot = https://github.com/KSP-CKAN/NetKAN/pull/1498 atleast?

Is there a way for ckan to copy a mod list to the clipboard like KSP AVC?

I have 70 mods installed and it takes too long to manually list them for forum use. KSP AVC can do it but it misses out quite a few of my installed mods. It would help to check mod compatibility with other forum users.

I don't think there's a way that copies directly to clipboard. When I want a modlist I usually do 'ckan list --porcelain > list.txt' in the terminal which creates a list of all my mods and their respective versions. Sounds like a good idea to have a GUI option for it though, I recommend a github request :)

Link to comment
Share on other sites

Thank you for releasing this. I tried using the Mod Admin 1.4 R* 15 and Mod Admin v2 and all files installed to the WRONG directories, they wouldn't install properly and there were a lot of issues with it...

The only issue I had with this was it locked download percent at 25% and I ended up manually clicking download for each file then the install went perfectly... This is definitely the best mod manager out there at this time....

Link to comment
Share on other sites

I don't think there's a way that copies directly to clipboard. When I want a modlist I usually do 'ckan list --porcelain > list.txt' in the terminal which creates a list of all my mods and their respective versions. Sounds like a good idea to have a GUI option for it though, I recommend a github request :)
Sorry you lost me there. I don't know about the terminal.:confused:

Listing mods is a major missing feature then. Important given how it lags behind new releases by a day or two. Found the best work around was to export the mod list. Then edit the meta data file to make it a user friendly list.

Link to comment
Share on other sites

Another Suggestion for a feature for CKAN.

The ability to mark a mod/or add a mod to a watch list.

ex. There is a mod I like, but is not currently up to date. I can click it to add it (for example to a watch filter) so I can easily find it later to see if its updated.

OR, There is a mod I am interested in, but currently has a bug so I dont want to install, I can add it to my watch list so I can check back from time to time to see if it gets update.

If there was only 20-30, or 40 mods for KSP, this sort of feature would not be necessary, But for KSP1.0.2 there are currently over 700 mods?, and I think this would be a perfect feature to add.

Link to comment
Share on other sites

CKAN v1.6.21 aka Antihelion Source released!

Changes since v1.6.20:

  • [GUI/Feature] The mod list is automatically focused on program start or update (slikts)
  • [GUI/Awesome] Mod list can now be sorted by installed, update-available, author, and more! (slikts)
  • [GUI/Re-feature] Users are immediately asked to select dependency choices (RichardLake)
  • [sharing/Bugfix] installed-default.ckan no longer includes spurious "provides" versions (RichardLake)
  • [internal/Bugfix] Avoided possibility of mis-hashing KSP versions (RichardLake)

Huge kudos to slikts and RichardLake again for being totally awesome!

NOTE: Windows users require .NET 4.5 for this release.

Edited by pjf
Yo, you need .NET 4.5, mkay?
Link to comment
Share on other sites

Howdy. This is a great application. Thank you for creating it.

However, I seem to be having a problem. Please forgive my ignorance, but I cannot seem to get CKAN to work in Linux. When I first run it, it asks for a KSP install location. Once I select the install location, however, whether or not I check the "set as default" checkbox, the application window does not appear. Nor does it appear again, after killing and re-running the process, until I execute "mono ckan.eve ksp forget auto" from the commandline. At which point it asks for an install location again, and the main application window will still not appear.

When running the application in monodevelop, pausing it, and examining the stack trace in the main thread, it appears to be blocking while trying to read stdin while calling the OnLoad callback when the main window is created, or something like that (I don't know much about C#, and even less about winforms).

Here is my environment, Ubuntu-MATE 14.04:

leaf@Kali:~$ mono ckan.exe version
v1.6.21-0-g75e88bf (beta)
leaf@Kali:~$ mono --version
Mono JIT compiler version 3.2.8 (Debian 3.2.8+dfsg-4ubuntu1.1)
Copyright (C) 2002-2014 Novell, Inc, Xamarin Inc and Contributors. www.mono-project.com
TLS: __thread
SIGSEGV: altstack
Notifications: epoll
Architecture: amd64
Disabled: none
Misc: softdebug
LLVM: supported, not enabled.
GC: sgen
leaf@Kali:~$ uname -a
Linux Kali 3.16.0-38-generic #52~14.04.1-Ubuntu SMP Fri May 8 09:43:57 UTC 2015 x86_64 x86_64 x86_64 GNU/Linux

And here is the stack trace from the main thread in monodevelop:

Mono.Unix.Native.Syscall.sys_poll () in 
Mono.Unix.Native.Syscall.poll (fds={Mono.Unix.Native.Pollfd[2]}, nfds=2, timeout=15) in
System.Windows.Forms.XplatUIX11.UpdateMessageQueue (queue={System.Windows.Forms.XEventQueue}, allowIdle=true) in
System.Windows.Forms.XplatUIX11.UpdateMessageQueue (queue={System.Windows.Forms.XEventQueue}) in
System.Windows.Forms.XplatUIX11.GetMessage (queue_id={System.Windows.Forms.XEventQueue}, msg={msg=0x121 (WM_ENTERIDLE) hwnd=0x0 wparam=0x0 lparam=0x0 pt=Point {0, 0}}, handle=0x0, wFilterMin=0, wFilterMax=0) in
System.Windows.Forms.XplatUI.GetMessage (queue_id={System.Windows.Forms.XEventQueue}, msg={msg=0x121 (WM_ENTERIDLE) hwnd=0x0 wparam=0x0 lparam=0x0 pt=Point {0, 0}}, hWnd=0x0, wFilterMin=0, wFilterMax=0) in
System.Windows.Forms.Application.RunLoop (Modal=true, context={System.Windows.Forms.ApplicationContext}) in
System.Windows.Forms.Form.ShowDialog (owner=(null)) in
System.Windows.Forms.Form.ShowDialog () in
CKAN.Main.OnLoad (e={System.EventArgs}) in
System.Windows.Forms.Form.OnLoadInternal (e={System.EventArgs}) in
System.Windows.Forms.Form.OnCreateControl () in
System.Windows.Forms.Control.CreateControl () in
System.Windows.Forms.Control.WmShowWindow (m={msg=0x18 (WM_SHOWWINDOW) hwnd=0x3000026 wparam=0x1 lparam=0x0 result=0x0}) in
System.Windows.Forms.Control.WndProc (m={msg=0x18 (WM_SHOWWINDOW) hwnd=0x3000026 wparam=0x1 lparam=0x0 result=0x0}) in
System.Windows.Forms.ScrollableControl.WndProc (m=Local variable doesn't belong to this frame's method.) in
System.Windows.Forms.ContainerControl.WndProc (m={msg=0x18 (WM_SHOWWINDOW) hwnd=0x3000026 wparam=0x1 lparam=0x0 result=0x0}) in
System.Windows.Forms.Form.WndProc (m={msg=0x18 (WM_SHOWWINDOW) hwnd=0x3000026 wparam=0x1 lparam=0x0 result=0x0}) in
System.Windows.Forms.Control.ControlWindowTarget.OnMessage (m={msg=0x18 (WM_SHOWWINDOW) hwnd=0x3000026 wparam=0x1 lparam=0x0 result=0x0}) in
System.Windows.Forms.Control.ControlNativeWindow.WndProc (m={msg=0x18 (WM_SHOWWINDOW) hwnd=0x3000026 wparam=0x1 lparam=0x0 result=0x0}) in
System.Windows.Forms.NativeWindow.WndProc (hWnd=0x3000026, msg=System.Windows.Forms.Msg.WM_SHOWWINDOW, wParam=0x1, lParam=0x0) in
System.Windows.Forms.XplatUIX11.SendMessage (hwnd=0x3000026, message=System.Windows.Forms.Msg.WM_SHOWWINDOW, wParam=0x1, lParam=0x0) in
System.Windows.Forms.XplatUIX11.MapWindow (hwnd=Local variable doesn't belong to this frame's method., windows=Local variable doesn't belong to this frame's method.) in
System.Windows.Forms.XplatUIX11.CreateWindow (cp={CreateParams {'SWFClass0.CKAN.Main', 'CKAN-GUI', 0x0, 0x50000, {-2147483648, -2147483648, 1208, 800}}}) in
System.Windows.Forms.XplatUI.CreateWindow (cp={CreateParams {'SWFClass0.CKAN.Main', 'CKAN-GUI', 0x0, 0x50000, {-2147483648, -2147483648, 1208, 800}}}) in
System.Windows.Forms.NativeWindow.CreateHandle (cp={CreateParams {'SWFClass0.CKAN.Main', 'CKAN-GUI', 0x0, 0x50000, {-2147483648, -2147483648, 1208, 800}}}) in
System.Windows.Forms.Control.CreateHandle () in
System.Windows.Forms.Form.CreateHandle () in
System.Windows.Forms.Control.CreateControl () in
System.Windows.Forms.Control.SetVisibleCore (value=true) in
System.Windows.Forms.Form.SetVisibleCore (value=true) in
System.Windows.Forms.Control.set_Visible (value=Local variable doesn't belong to this frame's method.) in
System.Windows.Forms.Application.RunLoop (Modal=false, context={System.Windows.Forms.ApplicationContext}) in
System.Windows.Forms.Application.Run (context={System.Windows.Forms.ApplicationContext}) in
System.Windows.Forms.Application.Run (mainForm=Local variable doesn't belong to this frame's method.) in
CKAN.Main..ctor (cmdlineArgs={string[0]}, User={CKAN.GUIUser}, showConsole=false) in
CKAN.GUI.Main_ (args={string[0]}, showConsole=false) in
CKAN.CmdLine.MainClass.Gui (options={CKAN.CmdLine.GuiOptions}, args={string[0]}) in
CKAN.CmdLine.MainClass.Main (args={string[0]}) in

Spamming stuff into stdin does not produce any change in application behavior.

There is a second thread that is doing something too, but it appears to be an internal thread that handles IO and which I assume is not pertinent to the discussion:

System.Threading.WaitHandle.WaitOne_internal () in 
System.Threading.WaitHandle.WaitOne (millisecondsTimeout=-1, exitContext=false) in
System.Threading.WaitHandle.WaitOne (millisecondsTimeout=-1) in
System.Threading.Timer.Scheduler.SchedulerThread () in
System.Threading.Thread.StartInternal () in

If anyone can advise me on how to make this work, that would be really cool. I mean, I can boot to Windows, install mods, boot to Linux, and then copy them over. But that is a pain. ;)

Thanks! :D

Link to comment
Share on other sites

(It may be worth noting that I have tried it on regular 'ol Ubuntu 14.04 as well, but using Mono 4.0 instead of 3.2, following the instructions in that one README, and it exhibits the same behavior.)

Edited by Mr. Polecat
I am dumb! :3
Link to comment
Share on other sites

Guest
This topic is now closed to further replies.
×
×
  • Create New...