This is the third time I rewrote this package manager, and hope this will be the final version. This time I try to simplify the design to make STARMAN robust and focus on HPC usage. I set down the following goals:
- User can use
load
command to change shell environment for specific packages likemodules
. - Use database to manage information.
- Support package update which is lacked in previous version.
STARMAN is implemented by using Ruby programming language which is good at writing DSL (Domain Specific Language), so the system should have Ruby installed.
- Ruby >= 2.0
- SQLite
Put STARMAN in any location, and add the following source
statement in your .bashrc
:
source <STARMAN_directory>/setup/bashrc
Relogin. Then run setup command to kickoff:
starman setup --install-root <where_you_want_to_put_installed_software> \
--rc-root <where_store_config_and_db_files> \
--cache-root <where_store_packages_and_temporary_files>
Where rc_root
(default is $USER/.starman
) stores config
and history.db
which should be accessible by anyone who needs to use STARMAN, and cache_root
(default is /tmp/starman
) is used to store package source codes. You can put
predownloaded packages into cache_root
to avoid download.
When first use, you need to edit the configuration by running:
starman config
An example is:
---
install_root: /nfs/software
cache_root: /tmp/starman
defaults:
compiler_set: ifort_2013.2.146
compiler_sets:
ifort_2013.2.146:
c: /nfs/software/intel/composer_xe_2013.2.146/bin/intel64/icc
cxx: /nfs/software/intel/composer_xe_2013.2.146/bin/intel64/icpc
fortran: /nfs/software/intel/composer_xe_2013.2.146/bin/intel64/ifort
You are advised to give each compiler set a good name, and NEVER change them since they will be casted into packages' prefix.
You can list the help message of each command by:
$ starman <command> -h/--help
_______ _______ _______ ______ __ __ _______ __ _
| || || _ || _ | | |_| || _ || | | |
| _____||_ _|| |_| || | || | || |_| || |_| |
| |_____ | | | || |_||_ | || || |
|_____ | | | | || __ || || || _ |
_____| | | | | _ || | | || ||_|| || _ || | | |
|_______| |___| |__| |__||___| |_||_| |_||__| |__||_| |__|
STARMAN: Another package manager for Linux/Mac programmer.
Copyright (C) 2015-2018 - All Rights Reserved.
>>> starman install <package_name> ... [options]
-r, --rc-root PATH Set runtime configuration root directory.
-d, --debug Print debug information.
-v, --verbose Print more information including build output.
-c, --compiler-set NAME Set the active compiler set by its name set in conf file.
-k, --skip-test Skip possible build test (e.g., make test).
-j, --make-jobs NUMBER Set the number of making jobs (currently only works for hdf5 and netcdf).
-h, --help Print this help message.
$ starman install netcdf
or
$ starman install hdf5 -j 4 # Currently only works for hdf5 and netcdf.
to use more threads to build hdf5.
In your .bashrc
after STARMAN source statement, add the load commands:
starman load netcdf
This command will load the environment settings (e.g., PATH
,
LD_LIBRARY_PATH
) into current shell (currently only BASH). You can use
NETCDF_ROOT
environment variable in any place you need to refer to the
location of netcdf.
$ starman uninstall netcdf
or
$ starman rm netcdf
If you are familiar with package installation and system admin, you can
contribute new packages by writing a package DSL
file in Ruby language as
netcdf-c.rb.