apt-get安装和 ./configure make make install安装

linux下安装某个软件,可以这样:

root@ubuntu:/home# wget https://www.kernel.org/pub/software/scm/git/git-2.2.1.tar.xz

即wget+安装包的链接,就方便的得到了安装包,再安装。

 
apt-get 下载后,软件所在路径是:
/var/cache/apt/archives

ubuntu 默认的PATH为
PATH=/home/brightman/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:
/usr/bin:/sbin:/bin:/usr/games
apt-get install安装目录是包的维护者确定的,不是用户
$ dpkg -L packagename
 
dpkg -L +软件包的名字,可以知道这个软件包包含了哪些文件
 
系统安装软件一般在/usr/share,可执行的文件在/usr/bin,配置文件可能安装到了/etc下等。
文档一般在 /usr/share
可执行文件 /usr/bin

配置文件 /etc

lib文件 /usr/lib


ps:: apt-get 安装的软件,软件的部件分在好几个不同的文件夹下,不利于开发管理,

以后啊,安装软件得使用./configure, make, make install 形式安装,现安装在哪就安装在哪,文件集中分布,很好。


# Dockerfile to build OpenSees, OpenSeesSP and OpenSeesMP # .. utilizes ubuntu:20.04 LTS as base # .. it will build all applications and place in /usr/local/bin # .. it will also install openmpi # .. to run OpenSeesSP and OpenSeesMP use mpiexec, e.g. mpiexec -n 2 OpenSeesSP example.tcl # written: fmk FROM ubuntu:20.04 SHELL ["/bin/bash", "-c"] WORKDIR /opensees RUN cp /etc/apt/sources.list /etc/apt/sources.list~ \ && sed -Ei 's/^# deb-src /deb-src /' /etc/apt/sources.list \ && apt-get update \ && DEBIAN_FRONTEND=noninteractive TZ=Etc/UTC apt-get -y install tzdata git \ && apt-get install -y sudo \ && sudo apt-get install -y cmake gcc g++ gfortran liblapack-dev git python3-pip \ && sudo apt-get install -y openmpi-bin openmpi-common libopenmpi-dev libscalapack-openmpi-dev \ && pip3 install conan==1.60.1 \ && git clone --depth 1 --branch hdf5-1_12_2 https://github.com/HDFGroup/hdf5.git \ && cd hdf5 \ && ./configure --prefix=/usr/local/hdf5 \ && make \ && cd .. \ && git clone https://github.com/OpenSees/mumps.git \ && cd mumps \ && mkdir build \ && cd build \ && cmake .. -Darith=d \ && cmake --build . \ && cd ../.. \ && git clone https://github.com/OpenSees/OpenSees.git \ && cd OpenSees \ && mkdir build \ && cd build \ && conan install .. --build missing \ && cmake .. -DMUMPS_DIR=$PWD/../../mumps/build -DOPENMPI=TRUE -DSCALAPACK_LIBRARIES="/usr/lib/x86_64-linux-gnu/libscalapack-openmpi.so.2.1" \ && cmake --build . --config Release --target OpenSees \ && cmake --build . --config Release --target OpenSeesSP \ && cmake --build . --config Release --target OpenSeesMP \ && cp ./bin/* /usr/local/bin \ && cp -r ./lib/tcl8.6 /usr/local/lib \ && cd ../.. \ && rm -fr OpenSees \ && rm -fr hdf5 \ && rm -fr mumps # Dockerfile to build OpenSees, OpenSeesSP and OpenSeesMP # .. utilizes ubuntu:20.04 LTS as base # .. it will build all applications and place in /usr/local/bin # .. it will also install openmpi # .. to run OpenSeesSP and OpenSeesMP use mpiexec, e.g. mpiexec -n 2 OpenSeesSP example.tcl # written: fmk FROM ubuntu:20.04 SHELL ["/bin/bash", "-c"] WORKDIR /opensees RUN cp /etc/apt/sources.list /etc/apt/sources.list~ \ && sed -Ei 's/^# deb-src /deb-src /' /etc/apt/sources.list \ && apt-get update \ && DEBIAN_FRONTEND=noninteractive TZ=Etc/UTC apt-get -y install tzdata git \ && apt-get install -y sudo \ && sudo apt-get install -y cmake gcc g++ gfortran liblapack-dev git python3-pip \ && sudo apt-get install -y openmpi-bin openmpi-common libopenmpi-dev libscalapack-openmpi-dev \ && pip3 install conan==1.60.1 \ && git clone --depth 1 --branch hdf5-1_12_2 https://github.com/HDFGroup/hdf5.git \ && cd hdf5 \ && ./configure --prefix=/usr/local/hdf5 \ && make \ && cd .. \ && git clone https://github.com/OpenSees/mumps.git \ && cd mumps \ && mkdir build \ && cd build \ && cmake .. -Darith=d \ && cmake --build . \ && cd ../.. \ && git clone https://github.com/OpenSees/OpenSees.git \ && cd OpenSees \ && mkdir build \ && cd build \ && conan install .. --build missing \ && cmake .. -DMUMPS_DIR=$PWD/../../mumps/build -DOPENMPI=TRUE -DSCALAPACK_LIBRARIES="/usr/lib/x86_64-linux-gnu/libscalapack-openmpi.so.2.1" \ && cmake --build . --config Release --target OpenSees \ && cmake --build . --config Release --target OpenSeesSP \ && cmake --build . --config Release --target OpenSeesMP \ && cp ./bin/* /usr/local/bin \ && cp -r ./lib/tcl8.6 /usr/local/lib \ && cd ../.. \ && rm -fr OpenSees \ && rm -fr hdf5 \ && rm -fr mumps
最新发布
03-09
<think>嗯,用户给了一个Dockerfile的内容,想让我介绍或者解释一下。首先,我需要仔细看看这个Dockerfile的结构各个步骤。用户可能想知道这个Dockerfile的作用,以及它是如何构建OpenSees及其并行版本的。不过,我发现用户提供的Dockerfile内容重复了两次,可能是复制粘贴的时候不小心重复了。我需要先确认这一点,避免在解释的时候重复说明同样的步骤。 接下来,我需要分析Dockerfile的每个部分。首先是基础镜像用的是Ubuntu 20.04 LTS,这是一个长期支持版本,稳定性较好。然后设置工作目录为/opensees。接下来的RUN指令有很多步骤,包括更新软件源、安装依赖项、配置HDF5、克隆构建MUMPS库,然后构建OpenSees的不同版本,最后复制生成的可执行文件到系统目录,并清理源代码。 用户可能对其中某些步骤不太清楚,比如为什么要安装openmpi,或者conan的作用是什么。此外,Dockerfile中涉及到的命令如cmake、git clone、make等,可能需要简要解释。还需要注意是否有潜在的问题,比如依赖项是否正确安装,路径是否正确,特别是动态链接库的路径是否正确设置。 另外,用户提供的Dockerfile中有两个FROM指令,这会导致错误,因为Dockerfile只能有一个FROM指令,除非是多阶段构建。但这里明显是重复了,所以需要指出这个错误,并建议用户删除重复的部分,否则构建会失败。这是关键点,必须提醒用户修正。 在解释过程中,要分步骤说明每个部分的作用,比如安装必要的编译工具、配置HDF5MUMPS依赖库,使用Conan管理依赖,以及构建OpenSees的不同版本。同时,也要提到如何运行并行版本的程序,比如使用mpiexec命令。 最后,总结整个Dockerfile的目的,即创建一个包含OpenSees及其并行版本的环境,方便用户直接使用,而无需手动处理复杂的依赖编译过程。同时,提醒用户注意Dockerfile中的错误,并给出修正建议,确保他们能够顺利构建镜像。</think>我注意到你提供的Dockerfile内容存在重复(出现了两次完整内容),这会导致构建失败。以下是针对这个Dockerfile的逐步解析(已修正重复问题): **1. 基础镜像** ```Dockerfile FROM ubuntu:20.04 ``` - 使用Ubuntu 20.04 LTS作为基础镜像,确保系统环境稳定性 **2. 环境配置** ```Dockerfile SHELL ["/bin/bash", "-c"] WORKDIR /opensees ``` - 设置默认shell为bash - 创建工作目录`/opensees` **3. 软件源配置** ```Dockerfile RUN cp /etc/apt/sources.list /etc/apt/sources.list~ \ && sed -Ei 's/^# deb-src /deb-src /' /etc/apt/sources.list \ && apt-get update ``` - 备份源列表 - 启用deb-src源(用于获取软件源码) - 更新软件包索引 **4. 依赖安装** ```Dockerfile DEBIAN_FRONTEND=noninteractive TZ=Etc/UTC apt-get -y install tzdata git \ && apt-get install -y sudo \ && sudo apt-get install -y cmake gcc g++ gfortran liblapack-dev git python3-pip \ && sudo apt-get install -y openmpi-bin openmpi-common libopenmpi-dev libscalapack-openmpi-dev \ && pip3 install conan==1.60.1 ``` - 安装编译工具链(gcc, cmake等) - 安装并行计算支持(OpenMPI) - 安装Python包管理工具pip - 安装Conan包管理器(版本1.60.1) **5. HDF5库编译** ```Dockerfile git clone --depth 1 --branch hdf5-1_12_2 https://github.com/HDFGroup/hdf5.git \ && cd hdf5 \ && ./configure --prefix=/usr/local/hdf5 \ && make ``` - 克隆HDF5 1.12.2版本源码 - 配置安装路径为`/usr/local/hdf5` - 编译源码 **6. MUMPS库编译** ```Dockerfile git clone https://github.com/OpenSees/mumps.git \ && cd mumps \ && mkdir build \ && cd build \ && cmake .. -Darith=d \ && cmake --build . ``` - 克隆MUMPS线性方程组求解器 - 使用CMake构建双精度版本(-Darith=d) **7. OpenSees编译** ```Dockerfile git clone https://github.com/OpenSees/OpenSees.git \ && cd OpenSees \ && mkdir build \ && cd build \ && conan install .. --build missing \ && cmake .. -DMUMPS_DIR=$PWD/../../mumps/build -DOPENMPI=TRUE \ -DSCALAPACK_LIBRARIES="/usr/lib/x86_64-linux-gnu/libscalapack-openmpi.so.2.1" \ && cmake --build . --config Release --target OpenSees \ && cmake --build . --config Release --target OpenSeesSP \ && cmake --build . --config Release --target OpenSeesMP ``` - 构建三个版本: - `OpenSees`:单线程版 - `OpenSeesSP`:共享内存并行版 - `OpenSeesMP`:分布式内存并行版 **8. 文件部署与清理** ```Dockerfile cp ./bin/* /usr/local/bin \ && cp -r ./lib/tcl8.6 /usr/local/lib \ && cd ../.. \ && rm -fr OpenSees \ && rm -fr hdf5 \ && rm -fr mumps ``` - 将可执行文件复制到系统路径 - 安装TCL 8.6运行时库 - 清理编译中间文件 **使用建议:** 1. 并行版本运行示例: ```bash mpiexec -n 4 OpenSeesMP example.tcl # 使用4个进程 ``` 2. 构建前需删除重复的FROM指令 3. 建议添加`ENTRYPOINT`指令定义默认执行命令 该Dockerfile实现了从源码编译OpenSees及其并行版本的全自动化过程,最终生成包含以下可执行文件的镜像: - `OpenSees` - `OpenSeesSP` - `OpenSeesMP` 所有程序均安装在`/usr/local/bin`目录下,可直接调用。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值