Install anything on Linux
with one command.

moon installs a downloaded archive, AppImage or .deb. Zero crates, zero daemons, one binary.

Installation

Install moon from releases using the install script:

$ curl -fsSL https://moonpkg.github.io/cli/scripts/install.sh | bash

The script installs the binary to ~/.local/bin and puts release assets in ~/.local/share/moon.

$ moon install app-1.2.3-linux-x64.tar.xz
~/Downloads

  

What happens when you install

Every step is recorded, so nothing is left behind when you remove an app.

  1. 1Extract the archive into ~/.local/share/moon/apps/<name>/
  2. 2Symlink the executables into ~/.local/bin so they run from a terminal
  3. 3Write ~/.local/share/applications/<name>.desktop, reusing the package's own file and icon
  4. 4Run update-desktop-database so the app shows in your menu
  5. 5Save a manifest, so moon remove and moon undo can restore everything

Commands

Short aliases work too: ls, rm, i, show, log, check.

commandwhat it does
moon install <file|url>Install or upgrade an app
moon bundle <name|folder>Pack an app into a single .moon file
moonPick a file in the current directory
moon inspect <file|url|last>Show what installing would do, change nothing
moon listList installed apps
moon remove <name>...Uninstall binaries, menu entry and files
moon undo [name]Remove the app installed last (asks first)
moon doctor [--fix]Find broken entries and repair them
moon export <name> [dir]Copy an installed app as a portable bundle
moon unexport <name>Delete a portable bundle
moon history [-n N]Show what was installed, and when
moon configChange settings
.tar.gz.tar.xz.tar.bz2.tar.zst.zip.7z.AppImage.deb.moonhttp(s)://

Ship an app as one file

A .moon bundle is a tar.gz holding the app, its manifest, its icon and its menu entry. No server, no account: copy the file and install it anywhere.

$ moon bundle someapp            # pack an installed app into ./someapp.moon
$ moon install someapp.moon      # on any other machine
$ tar tzf someapp.moon          # it is just a tar.gz

Read the guide: how to build a bundle

Fix broken installs

moon doctor finds missing apps, dead symlinks and stale menu entries. Add --fix to clean up.

$ moon doctor

⚠ someapp 1.2.3
   Application missing: ~/.local/share/moon/apps/someapp
   Menu entry missing: ~/.local/share/applications/someapp.desktop

⚠ btop
   Symlink exists, target missing: ~/.local/bin/btop

Keep apps on a USB stick

Links and menu entries still work. Plug the drive into another machine and the app is there.

$ moon install SomeApp.AppImage \
    --portable-dir /mnt/USB/Apps

$ moon export someapp /mnt/USB/Apps
USB/
└── Apps/
    └── someapp/
        ├── SomeApp.AppImage
        ├── someapp.desktop
        └── icon.png

.deb without root

Packages install per user into ~/.local by default. Scripts never run unless you ask.

$ moon install nowly-host.deb --dry-run   # show the plan, write nothing
$ moon install nowly-host.deb             # per-user, into ~/.local
$ sudo moon install nowly-host.deb --root # into the real /usr