https://github.com/dongli/starman
Another package manager for HPC warriors.
https://github.com/dongli/starman
package-manager
Last synced: 2 months ago
JSON representation
Another package manager for HPC warriors.
- Host: GitHub
- URL: https://github.com/dongli/starman
- Owner: dongli
- Created: 2018-02-18T01:24:01.000Z (over 8 years ago)
- Default Branch: master
- Last Pushed: 2024-01-02T10:43:57.000Z (over 2 years ago)
- Last Synced: 2024-01-02T11:45:55.277Z (over 2 years ago)
- Topics: package-manager
- Language: Ruby
- Homepage: https://dongli.github.com/starman
- Size: 474 KB
- Stars: 66
- Watchers: 5
- Forks: 15
- Open Issues: 5
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
Introduction
============
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:
* [X] User can use `load` command to change shell environment for specific packages
like `modules`.
* [X] Use database to manage information.
* [ ] Support package update which is lacked in previous version.
Prerequisites
=============
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
Installation
============
Put STARMAN in any location, and add the following `source` statement in your `.bashrc`:
```
source /setup/bashrc
```
Relogin. Then run setup command to kickoff:
```
starman setup --install-root \
--rc-root \
--cache-root
```
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.*
Usage
=====
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 -h/--help
```
```
_______ _______ _______ ______ __ __ _______ __ _
| || || _ || _ | | |_| || _ || | | |
| _____||_ _|| |_| || | || | || |_| || |_| |
| |_____ | | | || |_||_ | || || |
|_____ | | | | || __ || || || _ |
_____| | | | | _ || | | || ||_|| || _ || | | |
|_______| |___| |__| |__||___| |_||_| |_||__| |__||_| |__|
STARMAN: Another package manager for Linux/Mac programmer.
Copyright (C) 2015-2018 - All Rights Reserved.
>>> starman install ... [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.
```
Install package
---------------
```
$ starman install netcdf
```
or
```
$ starman install hdf5 -j 4 # Currently only works for hdf5 and netcdf.
```
to use more threads to build hdf5.
Load package
------------
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.
Uninstall package
-----------------
```
$ starman uninstall netcdf
```
or
```
$ starman rm netcdf
```
Contribution
============
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](https://github.com/dongli/starman/blob/master/packages/netcdf-c.rb).