8000 GitHub - adamnew123456/USM: The User Software Manager - Stores Your Compiled Programs · GitHub
[go: up one dir, main page]

Skip to content
adamnew123456Public

About

The User Software Manager - Stores Your Compiled Programs

Resources

Stars

23 stars

Watchers

1 watching

Forks

Latest commit

 

History

65 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 

Repository files navigation

USM - The User Software Manager

Motivation

USM seeks to fill a hole that exists because of the way that software is stored under Linux and other Unix-like systems. Typically, there are two storage locations:

  • /usr and /usr/local are well-specified, and almost every tool recognizes these as locations where programs are stored. Typically, only administrative users can access these directories.
  • Users have access to their home directories, but software they compile for themselves is typically stored in ~/bin. It lacks the organization of the /usr and /usr/local hierarchies, and it is difficult to manage (dpkg knows what file /usr/share/foo/bar/baz belongs to - do you know what program created the file ~/bin/this/that/the-other?).

USM is meant to make organizing your personal software easier. It is not a package manager - there are no repositories, no automatic updates, no dependency tracking, etc. USM will, however, configure you $PATH and other variables to make running these programs easy. It also provides a location to store you programs, which is sensibly organized, rather than stuffing everything under ~/bin.

Installation

All you need to install USM is a Bourne-compatible POSIX shell, like dash, bash, zsh, etc. First, you need to clone the USM source tree (alternatively, if you have already downloaded a tarball, you can skip this step):

git clone git://github.com/adamnew123456/USM

Next, figure out where you want to put your USM applications directory - the default is ~/Apps. If not using the default, you'll need to pass it as an argument to the bootstrap script.

cd USM
sh boostrap.sh 

## You can change the default installation directory to $X via:
sh bootsrap.sh -i $X
## The bootstrap script also has some other options
sh bootstrap.sh -h

At this point, you'll want to add the line source ~/.usm-env to load the USM startup script, which configures $PATH and other variables. You should also add the source ~/.usm-env line to the end of your shell's RC file, so these variables will be set every time your shell starts.

Important Note For zsh Users

zsh's default word splitting mode is not POSIX compatible, so before you dot-source ~/.usm-env, make sure to run setopt SH_WORD_SPLIT.

Example Usage

The best source of documentation for USM is meant to be the man page - you should be able to run man usm (after sourcing ~/.usm-env, which updates $MANPATH). The man page is mean to be comprehensive, yet understandable - if something is not clear there, raise an issue on GitHub and I'll do my best to fix any ambiguities.

USM also has some built-in documentation, which can be accessed by running usm help.

With that in mind, let's walk through installing a very simple program - GNU Hello.

  1. Download the source tarball for GNU Hello, version 2.9, and unpack it in /tmp/hello; then, cd /tmp/hello.
  2. Run usm add hello 2.9 - this creates a place where GNU Hello can be installed, and also makes 2.9 the default version.
  3. Run ./configure --prefix "$(usm path hello 2.9)" - this tells GNU Hello to install itself into USM.
  4. Run make && make install to install GNU Hello.
  5. Finally, source ~/.usm-env and type in hello. You should see GNU Hello run.

Other Tools

USM also comes with additional utilities. Each has a man page that you can read for additional information:

  • usm-lib-helper: Runs programs with $LD_LIBRARY_PATH set to the app's lib/ directory.
  • usm-install-npm: Install and upgrade npm packages as isolated USM applications.

About

The User Software Manager - Stores Your Compiled Programs

Resources

Stars

23 stars

Watchers

1 watching

Forks

Releases

Packages

Used by

Contributors

Languages

0