EIC Jana包经理
ejpm的Python项目详细描述
EJPM
ejpm代表ejanapacketmanagerhelper
ejpm的主要目标是提供简单的体验:
- 安装ejana重建框架和相关软件包
- 统一不同环境的安装:各种操作系统、Docker映像等。
第二个目标是帮助用户进行e^jana插件开发周期。
tl;dr;centos/rhel7示例
# INSTALL PREREQUESTIES ejpm req centos ejana # get list of OS packets required to build jana and deps sudo yum install ... # install watever 'ejpm req' shows# or if you are a lucky bash user (yes, csh is still common in physics): sudo yum install $(ejpm req centos ejana)# SETUP EJPM ejpm --top-dir=<where-to> # Directory where packets will be installed ejpm set root `$ROOTSYS`# (optional) if you have CERN.ROOT or other monster packets: # INSTALL PACKETS ejpm install ejana # install ejana and dependencies (like genfit, jana and rave) ejpm install g4e # install 'Geant 4 EIC' and dependencies (like vgm, hepmc)# SET RIGHT ENVIRONMENT source<$(ejpm env)# set environment variables, source ~/.local/share/ejpm/env.sh # more convenient way. Use *.csh file for tcsh
动机
ejpm在这里是因为hep和np中没有关于如何分发和安装软件包的标准约定 和它的依赖关系。一些包(如eigen、xerces等)通常由 操作系统维护人员,而其他人(cern root、geant4、rave)通常由用户或 其他包管理器,可以位于任何位置。“版本地狱”成倍增加了软件人力的缺乏 (例如,在发行版级别上持续维护包,甚至修复github问题) 我们仍然爱我们的用户,并试图让他们的事情更容易! 这里是ejpm。
在这一点上,ejpm尝试统一体验,并使部署e^jana变得简单:
- RHEL 7和CentOS上的用户
- ubutnu上的用户(以及带有wsl的windows)**
- Docker和其他容器
构建和安装名为“ejana”的包应该和> ejpm install ejana
一样简单
以及它的依赖性。但它也应该提供采用现有设施的可能性。
并对依赖项进行精细控制:> ejpm set root /opt/root6_04_16
ejpm不是:
- 它不是自动解决依赖关系的real包管理器, 下载二进制文件(使用gpg密钥等),找到最快的镜像,管理…等
- ejpm不是ejana的必要条件。它不是ejana的一部分 构建系统,无需ejpm就可以编译和安装ejana
安装ejana
逐步解释说明:
安装先决条件使用OS数据包管理器:
# To see the prerequesties ejpm req ubuntu # for all packets that ejpm knows ejpm req centos ejana # for ejana and its dependencies only# To put everything into packet manager apt-get -y install `ejpm req ubuntu --all`# debian yum -y install `ejpm req centos --all`# centos/centos
此时,req命令的已知单词只有'ubuntu'和'centos'。放置:
- ubuntu对于debian家族
- centos用于rhel和centos系统。
在将来,这将被更新以支持macos,并有更详细的版本
set top目录。这里将安装所有丢失的数据包。
ejpm --top-dir=<where-to-install-all>
注册已安装的数据包。您可能已经安装了cern.root(需要版本=6.14.00)。运行此:
ejpm set root `$ROOTSYS`
您可以为其他已安装的依赖项设置路径组合:
ejpm install ejana --missing --explain # to see missing dependencies ejpm set <name> <path> # to set dependency path
或者您可以跳过这一步,直接通过ejpm安装所有内容
install ejana和所有缺少的依赖项:
ejpm install ejana
set环境。执行此操作有三种方法:
ejpm env
命令的动态源输出(推荐)source <(ejpm env)# works for bash only
将
ejpm env
命令的输出保存到文件(可能有用)ejpm env sh > your-file.sh # get environment for bash or compatible shells ejpm env csh > your-file.csh # get environment for CSH/TCSH
使用ejpm生成的
env.sh
和env.csh
文件(懒惰且方便)$HOME/.local/share/ejpm/env.sh # bash and compatible$HOME/.local/share/ejpm/env.csh # for CSH/TCSH
(!)每当
ejpm <command>
在ejpm中更改某些内容时,都会重新生成这些文件。 如果您自己更改db.json
,ejpm不会自动跟踪它,因此请调用“ejpm env” 重新生成这两个文件
环境
EJPM_DATA_PATH
-设置配置db.json和env.sh、env.csh所在的路径
每次提姆如果你更改数据包,
ejpm生成env.sh
和env.csh
文件,
可以在标准应用程序用户目录中找到。
对于Linux,它位于xdg_data_home:
~/.local/share/ejpm/env.sh # sh version
~/.local/share/ejpm/env.csh # csh version
~/.local/share/ejpm/db.json # open it, edit it, love it
XDG is the standard POSIX paths to store applications data, configs, etc. EJPM uses XDG_DATA_HOME to store
env.sh
,env.csh
anddb.json
anddb.json
使用ejpmenv
命令,您总能获得新鲜的环境
ejpm env
您可以直接从以下来源获取:
source<(ejpm env)
您可以通过设置EJPM_DATA_PATH
环境变量来控制ejpm存储数据的位置。