Thanks to visit codestin.com
Credit goes to github.com

Skip to content
/ AppMan Public

AppImage Package Manager. "AppMan" is a redistribution of "AM" Application Manager, that does not require root privileges to install and manage apps: same code, same apps... two different behavior.

License

Notifications You must be signed in to change notification settings

ivan-hc/AppMan

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

"AppMan", the rootless side of "AM" to manage all your apps locally

"AM"/"AppMan" is a set of scripts and modules for installing, updating, and managing AppImage packages and other portable formats, in the same way that APT manages DEBs packages, DNF the RPMs, and so on... using a large database of Shell scripts inspired by the Arch User Repository, each dedicated to an app or set of applications.

AppMan is a redistribution of "AM" that does not require root privileges to install and manage apps.

sample.png

Readme Readme

AppMan is part of "AM", so it would not be possible without the contribution of the following authors

NOTE: This repository is just a guide to using the "AM" package manager without root privileges.

As a result, you won't find any code here outside of an "appman" transition script that automatically replaces its own content with APP-MANAGER script's content (hosted in the "AM" repository) once it's started.

Issues, discussions, and code contributions are only possible in the "AM" repository, and are reflected there.

Before reading further, please visit the "AM" repository

https://github.com/ivan-hc/AM

...to better understand AppMan and how it works.

If you're interested in learning more about why there are two repositories for the same program (and why this is just a "secondary" repo), continue reading using the index below.


Index



What is AppMan?

AppMan is a portable version of "AM", limited to installing and managing apps only locally and without root privileges.

The command name changes, from am to appman, but the script is the same.

"AM" on the contrary, provides a "fixed" installation, but can install and manage apps both locally and at the system level.

I recommend "AM" to privileged users who want to install and manage apps at multiple levels, and "AppMan" to non-privileged users who do not have large needs.

What does it do?

All "AppMan" does is download the installation scripts from the "AM" database and then convert them for a local installation, in your $HOME directory, following the paths you indicated when you first launch this CLI.

What is this repository?

This repository is just a guide to using "AppMan", and is specific to "AppMan".

Where is the source code?

The source code can be found at https://github.com/ivan-hc/AM

Where to report a problem?

For any Issue, go to https://github.com/ivan-hc/AM/issues

How to add code?

For any Pull Request, go to https://github.com/ivan-hc/AM/pulls

If "AM" and "AppMan" have the same code, why a separate repository?

"AppMan" has been an active project since the second half of 2021, and was a completely standalone script, with an at times troubled history before allowing the birth of "AM".

History

In the beginning, AppMan was a completely different project than the one you know today, and was intended to be used with root privileges.

The first version of AppMan installed all programs in /opt/bin, then linked them to /usr/bin, and saved the launchers in /usr/share/applications. It was a mess. Given my inexperience, I disregarded the standards and LSB specifications, creating a new one. There was no shortage of criticism.

I had to rewrite the program, but I already had many users at the time. I couldn't suddenly overturn the project.

So I decided to archive AppMan and rewrite a new project, "AM," that respected these specifications: each program had its own dedicated directory in /opt. Initially, links and launchers remained in their positions, but were later moved to /usr/local/bin and /usr/local/share/applications, respectively. The launchers had "AM" in their names to distinguish them from other launchers of the same name.

It was a success, especially in terms of contributors.

One day, in "AM", someone opened an issue asking for a way to install and manage the apps locally, without root privileges.

I had always taken a root approach to "AM" and its predecessor, but I decided to give it a try. Based on my experience at the time, I thought it necessary to write a version of "AM" in another repository, but one that pointed to local paths, chosen by the user.

At time, AppMan had been archived for less than two years, so I decided to unarchive it to rewrite it completely on the base of my experience with "AM"! Just as "AM" was a rewrite of the original AppMan, designed to adopt a structure consistent with Linux standards, AppMan itself became a "fork" of "AM", converted for local use. I copied the contents of APP-MANAGER, the main "AM" script, into "appman," changing the app paths and adding a prompt to allow users to customize the destination directory.

Initially, these changes resulted in duplicate work, leading each AppMan version to be released days or weeks later than AM in an attempt to adapt the code for local use.

I had tons of repositories by now, and my workload had increased both on GitHub and in real life. I needed to simplify my life, and the best way to do that was to make AppMan and AM as similar as possible... or even one and the same.

A major refactoring effort was then launched, aimed at increasingly narrowing the differences between AM and AppMan.

Finally, starting with version 5, released in December 2023, the "AppMan" code merged with "AM", becoming a single script, named "APP-MANAGER", with two different behaviors depending on how it is installed and/or renamed.

This repository is what remains of the transition.

All the work is done at https://github.com/ivan-hc/AM, and dozens of users have contributed to improving this program.

Despite this, there are still blogs and videos referencing this repository, which, as I mentioned at the beginning, is secondary to "AM". This doesn't do justice to the dozens of developers who have decided not only to contribute, but also to participate in the cause: making AppImages great, providing them with sandboxing, centralization, and ease of installation and updating.

In a world where the most starred projects are the most visible, AppMan is a step backwards from the reality that "AM" has managed to become.

It's therefore important to distinguish between "AM" and AppMan in terms of projects:

  • "ivan-hc/AM" is the main project, from which all the community work comes.
  • "ivan-hc/AppMan" is merely a guide maintained by me, as a single user, given the insistence of many people on linking to this repository instead of the other one

I want to emphasize these aspects, out of infinite respect for my contributors to the AM repository, who deserve due recognition. And there are many of us.

PS: I know the dual existence of these repositories is confusing, and it's worth clarifying why I continue to maintain both. I thank everyone who fell in love with AppMan, but precisely because AppMan is what it is today, let's give due credit to "AM," which embodies the work and passion of dozens of other developers. I don't want the small number of contributors to this repository to mislead others into thinking that all the work is done by one or two people at most.


How to install "AppMan"?

To install "AppMan" you must first install the "core" dependencies from your package manager:

  • "coreutils" (contains "cat", "chmod", "chown"...);
  • "curl", to check URLs;
  • "grep", to check files;
  • "sed", to edit/adapt installed files;
  • "wget" to download all programs and update "AM" itself.
Additionally, you may need these optional dependencies, click here.
  • "binutils", contains a series of basic commands, including "ar" which extracts .deb packages;
  • "less", to read the ever-longer lists;
  • "unzip", to extract .zip packages;
  • "tar", to extract .tar packages;*
  • "torsocks", to connect to the TOR network;
  • "zsync", required by very few programs.

Quick installation

Copy/paste the following one line command to download and run the "AM-INSTALLER" script

wget -q https://raw.githubusercontent.com/ivan-hc/AM/main/AM-INSTALLER && chmod a+x ./AM-INSTALLER && ./AM-INSTALLER

...below, the screenshot of what will appear.

Istantanea_2024-11-02_00-03-39 png

Type "2" to install "AppMan", or "1" to install "AM". Any other key will abort the installation.

The above script will place the command appman in your local "$PATH", at ~/.local/bin (this path is the recommended one, since it allows AppMan to be updated in bulk with all other programs, using Topgrade.

Installation is complete!

Run appman -h or go to "https://github.com/ivan-hc/AM/blob/main/README.md#options" to see all the available options.


How to install AppMan manually

Click here to expand As we've already seen, AppMan is portable, meaning you can use it anywhere, in any directory with read and write permissions.

The basic principle is very simple: the APP-MANAGER script must be renamed "appman".

Try it and believe it:

wget -q "https://raw.githubusercontent.com/ivan-hc/AM/main/APP-MANAGER" -O ./appman && chmod a+x ./appman

However, this approach is NOT RECOMMENDED for various reasons, the most common being convenience:

  • the AM-INSTALLER ensures the creation of an XDG_BIN_HOME or $HOME/.local/bin directory if it doesn't already exist, so you can use it in $PATH without having to write the entire path to the script.
  • by installing it in the local $PATH, the AM-INSTALLER also takes care of its use in ZSH, if that is used instead of BASH.

To install it into $PATH manually, run the following commands:

ZSHRC="${ZDOTDIR:-$HOME}/.zshrc"
BINDIR="${XDG_BIN_HOME:-$HOME/.local/bin}"
mkdir -p "$BINDIR"
if ! echo $PATH | grep "$BINDIR" >/dev/null 2>&1; then 
	if [ -e ~/.bashrc ] && ! grep 'PATH="$PATH:$BINDIR"' ~/.bashrc >/dev/null 2>&1; then
		printf '\n%s\n' 'BINDIR="${XDG_BIN_HOME:-$HOME/.local/bin}"' >> ~/.bashrc
		printf '\n%s\n' 'if ! echo $PATH | grep "$BINDIR" >/dev/null 2>&1; then' >> ~/.bashrc
		printf '	export PATH="$PATH:$BINDIR"\nfi\n' >> ~/.bashrc
	fi
	if [ -e "$ZSHRC" ] && ! grep 'PATH="$PATH:$BINDIR"' "$ZSHRC" >/dev/null 2>&1; then
		printf '\n%s\n' 'BINDIR="${XDG_BIN_HOME:-$HOME/.local/bin}"' >> "$ZSHRC"
		printf '\n%s\n' 'if ! echo $PATH | grep "$BINDIR" >/dev/null 2>&1; then' >> "$ZSHRC"
		printf '	export PATH="$PATH:$BINDIR"\nfi\n' >> "$ZSHRC"
	fi
fi
wget -q "https://raw.githubusercontent.com/ivan-hc/AM/$AM_BRANCH/APP-MANAGER" -O "$BINDIR"/appman && chmod a+x "$BINDIR"/appman

The above is a "summary" (without the messages) of what the AM-INSTALLER script already does when you choose option 2 (AppMan).

For more information, see ivan-hc/AM#1830


How to uninstall "AppMan"?

Since it is a portable script, you can simply remove it manually. If you used AM-INSTALLER, you simply need to remove the $HOME/.local/bin/appman script.

NOTE, it is recommended to remove apps first using the -R option, and then "AppMan", see also "How are apps installed", below.


Advantages of AppMan over "AM"

"AppMan" is a portable script, you can use it anywhere you want and it will update itself on the spot. "AM" on the other hand has a fixed installation, and requires root privileges to be installed.

Another advantage is the fact that it can be downloaded by anyone, even non-privileged users. On the contrary "AM" belongs only to the person who installed it, having permissions to access directories in /opt.

Disadvantages of AppMan over "AM"

"AppMan" can only install and manage local apps, while "AM" can manage both AppMan apps and install them locally or system-wide.

If you are a user who doesn't like using root privileges, just use "AppMan".

How apps are installed

Locally installed apps can have a directory of your choice, depending on what you decided when you first started the appman command.

For example, let's say you want to create and use the /home/USER/Applicazioni directory, here is the structure of a locally embedded AppImage:

~/Applicazioni/$PROGRAM/
~/Applicazioni/$PROGRAM/$PROGRAM
~/Applicazioni/$PROGRAM/AM-updater
~/Applicazioni/$PROGRAM/remove
~/Applicazioni/$PROGRAM/icons/$ICON-NAME
~/.local/bin/$PROGRAM
~/.local/share/applications/$PROGRAM-AM.desktop

Structure of the "AppMan" installation

Unlike "AM" which needs to be placed in specific locations, "AppMan" is portable. The modules and directories will be placed in the directory you chose:

  • the script "appman" is wherever you want (but it is recommended to install it in ~/.local/bin)
  • the directory "/path/to/your/custom/directory/modules" (containing the .am modules for the non-core options)
  • the configuration file "$HOME/.config/appman/appman-config" (the only fixed directory)

all processes will been executed in $HOME/.cache/appman, while application lists, keywords to use in bash/zsh completion and other files (for third party repos, betatesting, etcetera...) will be saved and updated in $HOME/.local/share/AM to be shared with "AM", if installed.


Guides and tutorials (external links)

The guides for "AM" are also applicable to AppMan, just replace the command am with the command appman.

By clicking the links below, you will be redirected to the pages of the "AM" repository, at github.com/ivan-hc/AM


Instructions for Linux Distro Maintainers

Troubleshooting


Related projects

Side Projects

  • amcheck, checks the validity of scripts in this database and monitors the availability of AppImages
  • am-extras, lists applications from third-party databases

External tools and forks used in this project

  • aisap and sas, sandboxing solutions for AppImages, see sandboxing options above
  • appimagetool, get rid of libfuse2 from old AppImages (option nolibfuse) and create AppImages on the fly (see appimage-bulder-scripts)
  • dbin, the easy to use/get, suckless software distribution system, used as OCI registry client to install packages from third-party databases

Organizations and their affiliates that actively contribute to this project

  • Package Forge, Improving Package Management & Security for Linux systems
    • Dev, Package Forge's Official Developer Repos
    • Community, Package Forge's Community Repos, Projects & their Dependencies
  • Portable Linux Apps, Census, cataloging and distribution of AppImages and portable apps for GNU/Linux

My other projects

  • AppImaGen, easily create AppImages from Ubuntu PPAs or Debian using pkg2appimage and appimagetool
  • ArchImage, create AppImages for all distributions using Arch Linux packages. Powered by JuNest
  • Firefox for Linux scripts, easily install the official releases of Firefox for Linux
  • My AppImage packages the complete list of packages managed by me and available in this database
  • Snap2AppImage, try to convert Snap packages to AppImages

You can support me and my work on ko-fi.com and PayPal.me. Thank you!

© 2020-present Ivan Alessandro Sala aka 'Ivan-HC' - I'm here just for fun!


ko-fi.com PayPal.me Go to "github.com/ivan-hc/AM"

About

AppImage Package Manager. "AppMan" is a redistribution of "AM" Application Manager, that does not require root privileges to install and manage apps: same code, same apps... two different behavior.

Resources

License

Stars

Watchers

Forks

Sponsor this project

Contributors 3

  •  
  •  
  •  

Languages