Installing `kup` fails with `error: opening directory ... No such file or directory`

Open
#94 0 comments 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

Assessment

Difficulty
3/5
Estimated time
1-2 days
Newbie friendliness
35/100
Issue type
Bug
Clarity
Clearly specified
Activity status
Stale
Tech stack
bash
Domain
cli, devops

Research direction

Start with the https://kframework.org/install entry point and trace the nix profile install command shown in the issue. Check how the current user's profile directory is handled after Nix installation, then verify a fresh Apple Silicon installation reaches the kup install step without the missing-directory error.

Written by the indexing model from the issue text.

Description

The Setup

  • Apple M1 Max MacBook Pro, 64GB RAM
  • Sonoma 14.2 with homebrew
  • No prior installation of nix or kup

The Problem

When trying to install kup (for the first time) using bash <(curl https://kframework.org/install) , I got the following error:

[0]~% bash <(curl https://kframework.org/install)
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100  2973  100  2973    0     0  60453      0 --:--:-- --:--:-- --:--:-- 60673
It appears that you don't have nix installed. Since the K framework needs nix for distribution, this script will attempt to install nix first. Would you like to proceed? [y/N]y
Downloading nix and running the installer...
info: downloading installer https://install.determinate.systems/nix/tag/v0.15.1/nix-installer-aarch64-darwin
`nix-installer` needs to run as `root`, attempting to escalate now via `sudo`...
Password:
 INFO Step: Create an encrypted APFS volume `Nix Store` for Nix on `disk3` and add it to `/etc/fstab` mounting on `/nix`
 INFO Step: Provision Nix
 INFO Step: Create build users (UID 300-332) and group (GID 30000)
 INFO Step: Configure Time Machine exclusions
 INFO Step: Configure Nix
 INFO Step: Configuring zsh to support using Nix in non-interactive shells
 INFO Step: Create a `launchctl` plist to put Nix into your PATH
 INFO Step: Configure Nix daemon related settings with launchctl
 INFO Step: Remove directory `/nix/temp-install-dir`
zsh compinit: insecure directories and files, run compaudit for list.
Ignore insecure directories and files and continue [y] or abort compinit [n]? n
zsh compinit: insecure directories and files, run compaudit for list.
Ignore insecure directories and files and continue [y] or abort compinit [n]? Nix was installed successfully!
To get started using Nix, open a new shell or run `. /nix/var/nix/profiles/default/etc/profile.d/nix-daemon.sh`

Installing the K framework installer utility (kup) ...
error: opening directory '/nix/var/nix/profiles/per-user/musab': No such file or directory

I could see that there is a root directory in /nix/var/nix/profiles/per-user/ (owned by root) but not musab, which is the regular user's username.

A Possible Solution

As seen in the output above, installing nix succeeds, but the command in the install script for installing kup fails, which is the following command:

GC_DONT_GC=1 nix profile install github:runtimeverification/kup#kup \
  --option extra-substituters 'https://k-framework.cachix.org' \
  --option extra-trusted-public-keys 'k-framework.cachix.org-1:jeyMXB2h28gpNRjuVkehg+zLj62ma1RnyyopA/20yFE=' \
  --experimental-features 'nix-command flakes'

I was able to resolve this issue by:

  1. Manually creating the directory /nix/var/nix/profiles/per-user/musab as root with sudo
  2. Changing ownership of the directory to musab (using sudo again)
  3. Rerunning the kup installation command above.

So, the suggested fix is to check whether the current user's directory in /nix/var/nix/profiles/per-user/ exists, and to create it with the proper permissions if it's not present before running the kup installing command.

Dominant language
Python
Stars
10
Forks
2
PR merge metrics
No merged PRs in 30d

Contributor guide

No contributing guide indexed for this repository

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

More from runtimeverification/kup

All issues in runtimeverification/kup

Similar issues

More Python issues

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.