lbpkr
is a Go
-based re-implementation of RpmInstall
.
$ go get github.com/lhcb-org/lbpkr
or, if you prefer the binary:
$ curl -O -L http://cern.ch/lhcbproject/dist/rpm/lbpkr && chmod +x ./lbpkr
$ ./lbpkr help
$ lbpkr list LHCB
LHCBEXTERNALS_v68r0_x86_64_slc6_gcc48_opt-1.0.0-1
LHCB_v37r1-1.0.0-1
LHCB_v37r1_x86_64_slc6_gcc48_opt-1.0.0-1
LHCB_v37r3-1.0.0-1
LHCB_v37r3_x86_64_slc6_gcc48_dbg-1.0.0-1
LHCB_v37r3_x86_64_slc6_gcc48_opt-1.0.0-1
lbpkr INFO Total matching: 6
$ lbpkr install -type=atlas LCGCMT_LCGCMT_67b_i686_slc6_gcc47_opt-1-1
lbpkr INFO installing RPM LCGCMT_LCGCMT_67b_i686_slc6_gcc47_opt 1 1
lbpkr INFO installing LCGCMT_LCGCMT_67b_i686_slc6_gcc47_opt and dependencies
lbpkr INFO found 31 RPMs to install:
lbpkr INFO [001/031] AtlasSetup-00.03.74-1
lbpkr INFO [002/031] CLHEP_1_9_4_7_i686_slc6_gcc47_opt-1-1
lbpkr INFO [003/031] CASTOR_2_1_13_6_i686_slc6_gcc47_opt-1-1
lbpkr INFO [004/031] ROOT_5_34_13_i686_slc6_gcc47_opt-1-1
lbpkr INFO [005/031] Expat_2_0_1_i686_slc6_gcc47_opt-1-1
lbpkr INFO [006/031] GCCXML_0_9_0_20120309p2_i686_slc6_gcc47_opt-1-1
lbpkr INFO [007/031] Boost_1_53_0_python2_7_i686_slc6_gcc47_opt-1-1
[...]
lbpkr INFO downloading http://atlas-computing.web.cern.ch/atlas-computing/links/reposDirectory/lcg/slc6/yum//noarch/AIDA_3_2_1_noarch-1-1.noarch.rpm to /opt/cern-sw/tmp/AIDA_3_2_1_noarch-1-1.rpm
$ lbpkr installed
AIDA-3fe9f_3.2.1_x86_64_slc6_gcc48_opt-1.0.0-4
Boost-f9e91_1.55.0_python2.7_x86_64_slc6_gcc48_opt-1.0.0-4
CASTOR-9ccc5_2.1.13_6_x86_64_slc6_gcc48_opt-1.0.0-4
[...]
vdt-d9030_0.3.6_x86_64_slc6_gcc48_opt-1.0.0-4
xqilla-cefdd_2.2.4p1_x86_64_slc6_gcc48_opt-1.0.0-4
xrootd-3a806_3.2.7_x86_64_slc6_gcc48_opt-1.0.0-4
$ lbpkr provides gaudirun.py
GAUDI_v25r1-1.0.0-1 (/opt/cern-sw/lhcb/GAUDI/GAUDI_v25r1/Gaudi/scripts/.svn/prop-base/gaudirun.py.svn-base)
GAUDI_v25r1_x86_64_slc6_gcc48_opt-1.0.0-1 (/opt/cern-sw/lhcb/GAUDI/GAUDI_v25r1/InstallArea/x86_64-slc6-gcc48-opt/scripts/gaudirun.py)
$ lbpkr deps ROOT-6ef81_5.34.18_x86_64_slc6_gcc48_opt
CASTOR-9ccc5_2.1.13_6_x86_64_slc6_gcc48_opt-1.0.0-4
GSL-a0511_1.10_x86_64_slc6_gcc48_opt-1.0.0-4
Python-31787_2.7.6_x86_64_slc6_gcc48_opt-1.0.0-5
Qt-f642c_4.8.4_x86_64_slc6_gcc48_opt-1.0.0-4
dcap-cdd28_2.47.7_1_x86_64_slc6_gcc48_opt-1.0.0-4
fftw-0c601_3.1.2_x86_64_slc6_gcc48_opt-1.0.0-4
gcc_4.8.1_x86_64_slc6-1.0.0-1
gfal-6fc75_1.13.0_0_x86_64_slc6_gcc48_opt-1.0.0-4
graphviz-a8340_2.28.0_x86_64_slc6_gcc48_opt-1.0.0-4
mysql-c4d2c_5.5.27_x86_64_slc6_gcc48_opt-1.0.0-4
oracle-e33b7_11.2.0.3.0_x86_64_slc6_gcc48_opt-1.0.0-4
sqlite-4b60e_3070900_x86_64_slc6_gcc48_opt-1.0.0-4
srm_ifce-be254_1.13.0_0_x86_64_slc6_gcc48_opt-1.0.0-4
xrootd-3a806_3.2.7_x86_64_slc6_gcc48_opt-1.0.0-4
$ lbpkr dep-grap -o graph.dot GAUDI
GAUDI_v25r2-1.0.0-1
GAUDI_v25r2_x86_64_slc6_gcc48_opt-1.0.0-1
$ cat graph.dot
digraph rpms {
"GAUDI_v25r2_x86_64_slc6_gcc48_opt-1.0.0-1"->"LHCBEXTERNALS_v68r0_x86_64_slc6_gcc48_opt-1.0.0-1";
"GAUDI_v25r2_x86_64_slc6_gcc48_opt-1.0.0-1"->"GAUDI_v25r2-1.0.0-1";
"GAUDI_v25r2-1.0.0-1" [ epoch="0", name="GAUDI_v25r2", release="1", version="1.0.0" ];
"GAUDI_v25r2_x86_64_slc6_gcc48_opt-1.0.0-1" [ epoch="0", name="GAUDI_v25r2_x86_64_slc6_gcc48_opt", release="1", version="1.0.0" ];
"LHCBEXTERNALS_v68r0_x86_64_slc6_gcc48_opt-1.0.0-1" [ epoch="0", name="LHCBEXTERNALS_v68r0_x86_64_slc6_gcc48_opt", release="1", version="1.0.0" ];
}
## dump the full graph rooted in GAUDI_v25r2_x86_64_slc6_gcc48_opt
$ lbpkr dep-graph -o graph.dot -rec-lvl=-1 GAUDI_v25r2_x86_64_slc6_gcc48_opt
$ lbpkr help
lbpkr - installs software in MYSITEROOT directory.
Commands:
check check for RPM updates from the yum repository
dep-graph dump the DOT graph of installed RPM packages [<name-pattern> [<version-pattern> [<release-pattern>]]]
deps list all deps RPM packages satisfying <name-pattern> [<version-pattern> [<release-pattern>]]
install install a RPM from the yum repository
installed list all installed RPM packages satisfying <name-pattern> [<version-pattern> [<release-pattern>]]
list list all RPM packages satisfying <name-pattern> [<version-pattern> [<release-pattern>]]
provides list all installed RPM packages providing the given file
remove remove a RPM from the yum repository
rpm rpm passes through command-args to the RPM binary
self admin/internal operations for lbpkr
update update RPMs from the yum repository
version print out script version
Use "lbpkr help <command>" for more information about a command.