Installing CKAN on Arch - KSP-CKAN/CKAN Wiki

Arch User Repository

CKAN is available in the AUR: https://aur.archlinux.org/packages/ckan/

  1. Make sure your system is up to date:
    sudo pacman -Syu
    
  2. Install Mono:
    sudo pacman -S mono
    
  3. Arch's msbuild is currently broken (May 2021), so you should download and run the prebuilt ckan.exe file from the CKAN release page. However, if you really want to build CKAN the Arch way, keep reading for tips on how to repair your msbuild.
  4. If you haven't already, install base-devel and git so you can access packages in the Arch User Repository:
    sudo pacman -S --needed base-devel git
    
  5. Install msbuild:
    sudo pacman -S msbuild
    
  6. Copy System.Reflection.Metadata.dll from the .deb package provided by mono-project.com (Arch's copy is too old for msbuild):
    mkdir -p /tmp/mono-deb
    cd /tmp/mono-deb
    FILE=$(curl --silent https://download.mono-project.com/repo/ubuntu/dists/preview-focal/main/binary-amd64/Packages | grep -Po "(?<=Filename: ).+mono-roslyn.+\\.deb")
    curl https://download.mono-project.com/repo/ubuntu/${FILE} > mono.deb
    ar p mono.deb data.tar.xz | tar xJf -  ./usr/lib/mono/4.5/System.Reflection.Metadata.dll --strip-components 5
    sudo mv /usr/lib/mono/4.5/System.Reflection.Metadata.dll /usr/lib/mono/4.5/System.Reflection.Metadata.dll_OLD
    sudo cp System.Reflection.Metadata.dll /usr/lib/mono/4.5
    
  7. Get the CKAN AUR package and build it:
    mkdir -p ~/builds
    cd ~/builds
    git clone https://aur.archlinux.org/ckan.git
    cd ckan
    makepkg
    
  8. Install the package you built:
    sudo pacman -U ckan*.zst
    

This will add CKAN to your system application menus, so you can run it from there.

Run CKAN

If you download the ckan.exe file from our release page, run it with:

mono ckan.exe

Troubleshooting

Crash while downloading multiple mods at once (Mono.Unix.UnixIOException)

Mono's versions 6.12.0.86 and upward, which includes the version 6.12.0.122 presents in Arch Linux' official repos as of this writing, are affected by a bug which causes CKAN to crash while downloading multiple mods at the same time, with a stack trace similar to the following:

exception inside UnhandledException handler: (null) assembly:/usr/lib/mono/gac/Mono.Posix/4.0.0.0__0738eb9f132ed756/Mono.Posix.dll type:UnixIOException member:(null)
[...]
exception inside UnhandledException handler: (null) assembly:/usr/lib/mono/gac/Mono.Posix/4.0.0.0__0738eb9f132ed756/Mono.Posix.dll type:UnixIOException member:(null)

[ERROR] FATAL UNHANDLED EXCEPTION: Mono.Unix.UnixIOException: Resource temporarily unavailable [EWOULDBLOCK].
  at Mono.Unix.UnixMarshal.ThrowExceptionForLastError () [0x00005] in <7bcd6d815ebc477ab0521e0361c44f6c>:0
  at Mono.Unix.UnixStream.Write (System.Byte[] buffer, System.Int32 offset, System.Int32 count) [0x00055] in <7bcd6d815ebc477ab0521e0361c44f6c>:0
  at System.Windows.Forms.XplatUIX11.WakeupMain () [0x00000] in <4b6c441381804088ab0fff508a3fbabf>:0
  at System.Windows.Forms.XplatUIX11.SendAsyncMethod (System.Windows.Forms.AsyncMethodData method) [0x00080] in <4b6c441381804088ab0fff508a3fbabf>:0
[...]

The stack trace is visible when CKAN is launched in a terminal using mono ckan.exe.

Unfortunately there is nothing one can do to fix this problem directly but the bug should be fixed in the next stable release of mono. In the mean time, one can either use the console UI which is not affected by this bug instead of the GUI or downgrade the mono package to version 6.10.0.104-1 or older.