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不是:

  1. 它不是自动解决依赖关系的real包管理器, 下载二进制文件(使用gpg密钥等),找到最快的镜像,管理…等
  2. ejpm不是ejana的必要条件。它不是ejana的一部分 构建系统,无需ejpm就可以编译和安装ejana

安装ejana

逐步解释说明:

  1. 安装先决条件使用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,并有更详细的版本

  2. set top目录。这里将安装所有丢失的数据包。

    ejpm --top-dir=<where-to-install-all>
    
  3. 注册已安装的数据包。您可能已经安装了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安装所有内容

  4. install ejana和所有缺少的依赖项:

    ejpm install ejana
    
  5. set环境。执行此操作有三种方法:

    1. ejpm env命令的动态源输出(推荐)

      source <(ejpm env)# works for bash only
    2. 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
    3. 使用ejpm生成的env.shenv.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.shenv.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 and db.json and db.json

使用ejpmenv命令,您总能获得新鲜的环境

ejpm env

您可以直接从以下来源获取:

source<(ejpm env)

您可以通过设置EJPM_DATA_PATH环境变量来控制ejpm存储数据的位置。



欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java Eclipse画布侦听器从未调用   java为什么我对Facebook Graph API的调用没有显示任何内容?   java AutoSearchTextView首次不显示数据   java Springboot jersey:资源不是自动发现   在java中从url中删除端口号   java Ajax导航问题返回按钮   java对Tic-Tac-Toe的建议   java在显示DialogFragment活动时出错   java JList从JList检索数据   java使用AppComponent。在不同的活动中注入()(Dagger2)   Java可以有效地删除字符串末尾的最后一个字符   java Netty4:channelRead0从未收到HttpObject消息   集合在Java 8中如何按列表的元素对列表的元素进行分组   java创建一个包含矩形和整数的数组   java当我为JerseyTest注册JacksonFeature时,我可以使用对Jackson ObjectMapper的引用吗?   java面板占用相同的空间   java IllegalArgumentexception索引超出groovy的范围   java简单遗传算法时间表教程?