Skip to content

Installing CKAN on Arch

DasSkelett edited this page Jun 8, 2021 · 28 revisions

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

Accompanied by Mono.Unix.UnixIOException: Resource temporarily unavailable (visible when running ckan in terminal).

This is due to safe limits of open file desriptors (default 1024) per user being too low for ckan to download concurently. Can be temporary fixed by:

ulimit -s 32768
ulimit -n 10240

And then running ckan in the same terminal session.

You can also permanently change the limits according to https://wiki.archlinux.org/index.php/Limits.conf

Clone this wiki locally