Skip to content

bencouturier/lbpkr

 
 

Repository files navigation

lbpkr

Build Status

lbpkr is a Go-based re-implementation of RpmInstall.

Installation

$ 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

Usage

list available packages

$ 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

install a (list of) package(s) (and its dependencies)

$ lbpkr install \
   LCG_70_AIDA_3.2.1_x86_64_slc6_gcc48_opt \
   LCG_70root6_AIDA_3.2.1_x86_64_slc6_gcc48_opt

lbpkr INFO    installing RPMs [LCG_70_AIDA_3.2.1_x86_64_slc6_gcc48_opt LCG_70root6_AIDA_3.2.1_x86_64_slc6_gcc48_opt]
lbpkr INFO    installing LCG_70_AIDA_3.2.1_x86_64_slc6_gcc48_opt-1.0.0-12 and dependencies
lbpkr INFO    installing LCG_70root6_AIDA_3.2.1_x86_64_slc6_gcc48_opt-1.0.0-12 and dependencies
lbpkr INFO    found 8 RPMs to install:
lbpkr INFO    	[001/008] AIDA-3fe9f_3.2.1_x86_64_slc6_gcc48_opt-1.0.0-7
lbpkr INFO    	[002/008] LCGMeta_70_externals_x86_64_slc6_gcc48_opt-1.0.0-12
lbpkr INFO    	[003/008] LCGMeta_70root6_externals_x86_64_slc6_gcc48_opt-1.0.0-13
lbpkr INFO    	[004/008] LCG_70_AIDA_3.2.1_x86_64_slc6_gcc48_opt-1.0.0-12
lbpkr INFO    	[005/008] LCG_70_gcc_4.8.1_x86_64_slc6-1.0.0-71
lbpkr INFO    	[006/008] LCG_70root6_AIDA_3.2.1_x86_64_slc6_gcc48_opt-1.0.0-12
lbpkr INFO    	[007/008] LCG_70root6_gcc_4.8.1_x86_64_slc6-1.0.0-16
lbpkr INFO    	[008/008] gcc_4.8.1_x86_64_slc6-1.0.0-1
lbpkr INFO    [001/008] downloaded http://cern.ch/service-spi/external/rpms/lcg/LCG_70root6_gcc_4.8.1_x86_64_slc6-1.0.0-16.noarch.rpm
lbpkr INFO    [002/008] downloaded http://cern.ch/service-spi/external/rpms/lcg/LCG_70_gcc_4.8.1_x86_64_slc6-1.0.0-71.noarch.rpm
lbpkr INFO    [003/008] downloaded http://cern.ch/service-spi/external/rpms/lcg/LCGMeta_70root6_externals_x86_64_slc6_gcc48_opt-1.0.0-13.noarch.rpm
lbpkr INFO    [004/008] downloaded http://cern.ch/service-spi/external/rpms/lcg/LCG_70_AIDA_3.2.1_x86_64_slc6_gcc48_opt-1.0.0-12.noarch.rpm
lbpkr INFO    [005/008] downloaded http://cern.ch/service-spi/external/rpms/lcg/LCGMeta_70_externals_x86_64_slc6_gcc48_opt-1.0.0-12.noarch.rpm
lbpkr INFO    [006/008] downloaded http://cern.ch/service-spi/external/rpms/lcg/LCG_70root6_AIDA_3.2.1_x86_64_slc6_gcc48_opt-1.0.0-12.noarch.rpm
lbpkr INFO    [007/008] downloaded http://cern.ch/service-spi/external/rpms/lcg/AIDA-3fe9f_3.2.1_x86_64_slc6_gcc48_opt-1.0.0-7.noarch.rpm
lbpkr INFO    [008/008] downloaded http://cern.ch/service-spi/external/rpms/lcg/gcc_4.8.1_x86_64_slc6-1.0.0-1.noarch.rpm
lbpkr INFO    installing [8] RPMs...
Preparing...                ##################################################
AIDA-3fe9f_3.2.1_x86_64_slc6##################################################
gcc_4.8.1_x86_64_slc6       ##################################################
LCG_70root6_gcc_4.8.1_x86_64##################################################
LCG_70_gcc_4.8.1_x86_64_slc6##################################################
LCGMeta_70_externals_x86_64_##################################################
LCGMeta_70root6_externals_x8##################################################
LCG_70root6_AIDA_3.2.1_x86_6##################################################
LCG_70_AIDA_3.2.1_x86_64_slc##################################################

install a project

$ lbpkr install-project -platforms=all GAUDI v25r5
lbpkr INFO    installing project GAUDI v25r5
lbpkr INFO    installing project name="GAUDI" version="v25r5" for archs=[x86_64_slc6_gcc48_dbg x86_64_slc6_gcc48_opt]
lbpkr INFO    installing GAUDI_v25r5_x86_64_slc6_gcc48_dbg-1.0.0-1 and dependencies
lbpkr INFO    installing GAUDI_v25r5_x86_64_slc6_gcc48_opt-1.0.0-1 and dependencies
lbpkr INFO    found 186 RPMs to install:
lbpkr INFO    	[001/186] AIDA-3fe9f_3.2.1_x86_64_slc6_gcc48_dbg-1.0.0-12
lbpkr INFO    	[002/186] AIDA-3fe9f_3.2.1_x86_64_slc6_gcc48_opt-1.0.0-7
lbpkr INFO    	[003/186] Boost-f9e91_1.55.0_python2.7_x86_64_slc6_gcc48_dbg-1.0.0-12
[...]
lbpkr INFO    [001/184] downloaded http://cern.ch/service-spi/external/rpms/lcg/LCG_70root6_srm_ifce_1.13.0_0_x86_64_slc6_gcc48_opt-1.0.0-12.noarch.rpm
[...]
lbpkr INFO    [186/186] downloaded http://cern.ch/service-spi/external/rpms/lcg/ROOT-90bb1_6.02.01_x86_64_slc6_gcc48_dbg-1.0.0-12.noarch.rpm
lbpkr INFO    installing [186] RPMs...
Preparing...                ##################################################
[...]
GAUDI_v25r5_x86_64_slc6_gcc4##################################################

list installed packages

$ 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

find which package provides a file

$ 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)

list the dependencies of a given package

$ 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

dump the depencency graph of installed RPMs

$ 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 -maxdepth=-1 GAUDI_v25r2_x86_64_slc6_gcc48_opt

manage yum repositories

# list current yum repositories
$ lbpkr repo-ls
lcg: "http://cern.ch/service-spi/external/rpms/lcg" (enabled)
lhcb: "http://cern.ch/lhcbproject/dist/rpm/lhcb" (enabled)
lhcbext: "http://cern.ch/lhcbproject/dist/rpm/lcg" (enabled)

# add a test repo
$ lbpkr repo-add my-repo /tmp/somewhere

# list
$ lbpkr repo-ls
lcg: "http://cern.ch/service-spi/external/rpms/lcg" (enabled)
lhcb: "http://cern.ch/lhcbproject/dist/rpm/lhcb" (enabled)
lhcbext: "http://cern.ch/lhcbproject/dist/rpm/lcg" (enabled)
my-repo: "/tmp/somewhere" (enabled)

# remove the test repo
$ lbpkr repo-rm my-repo

# list
$ lbpkr repo-ls
lcg: "http://cern.ch/service-spi/external/rpms/lcg" (enabled)
lhcb: "http://cern.ch/lhcbproject/dist/rpm/lhcb" (enabled)
lhcbext: "http://cern.ch/lhcbproject/dist/rpm/lcg" (enabled)

help

$ 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
    deps            list deps of RPM packages
    install         install a (list of) RPM(s) from the yum repository
    install-project install-project a whole project from the yum repository
    installed       list installed RPM packages
    list            list RPM packages
    provides        list all installed RPM packages providing the given file
    repo-add        add a repository
    repo-ls         list repositories
    repo-rm         remove a repository
    rm              remove a RPM from the yum repository
    rpm             pass through command-args to the RPM binary
    self            admin/internal operations for lbpkr
    update          update RPMs from the yum repository (bump the release number)
    upgrade         upgrade RPMs from the yum repository (bump the version number)
    version         print out script version

Use "lbpkr help <command>" for more information about a command.

References

About

Go-based installer for RPMs and Dockers

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages

  • Go 99.5%
  • Makefile 0.5%