Linux centos8.1安装Nodejs

本文详细介绍了在Linux CentOS 8.1系统中安装Node.js的步骤,包括从官方网站下载Node.js安装包,解压缩,配置环境变量,并通过pm2管理Node.js服务。

Linux centos8.1安装Nodejs

  • Node.js 安装包及源码下载地址为:https://nodejs.org/en/download/,你可以根据不同平台系统选择你需要的 Node.js 安装包,这里选择的是 Linux Binaries (x64)

  • 安装

    wget https://nodejs.org/dist/v12.18.1/node-v12.18.1-linux-x64.tar.xz    // 下载
    tar xf node-v12.18.1-linux-x64.tar.xz                                   // 解压
    cd node-v12.18.1-linux-x64                                              // 进入解压目录
    
  • 修改linux系统的环境变量(profile)来设置直接运行命令

    #先备份
    cp /etc/profile /etc/profile.bak
    vim /etc/profile
    #在最下面添加 export PATH=$PATH: 后面跟上node下bin目录的路径
    export PATH=$PATH:/package/node-v12.18.0-linux-x64/bin
    #立即生效
    source /etc/profile
    #任意目录查看 node -v
    v12.18.0
    
  • 其他
    使用pm2,
    pm2 log 查看当前node服务
    pm2 stop 0 停止 id为 0的指定应用程序
    pm2 start 0 开启 id为 0的指定应用程序

<think>我们正在讨论DNF包管理器如何实现多版本软件共存。首先,我们需要理解DNF(Dandified YUM)是Fedora、RHEL、CentOSLinux发行版的包管理器,它是YUM的下一代版本。多版本软件共存指的是在同一系统上安装并运行同一个软件包的多个不同版本。 在传统的包管理系统中,通常一个软件包只能安装一个版本,因为包管理器会确保依赖关系的一致性。但是,有些场景需要同时安装多个版本(例如,不同项目需要不同版本的Python或Node.js)。DNF本身并不直接支持多版本共存,但是可以通过一些机制和工具来实现。 实现原理: 1. **模块化(Modularity)**:Fedora和RHEL/CentOS 8及更高版本引入了模块(Modules)的概念。模块允许你在同一系统上提供同一软件的不同版本和不同流(streams)。每个模块流代表一个主要版本,并且可以同时启用多个流(但通常一个模块只能启用一个流,除非使用特定的技巧)。模块通过定义不同的仓库和软件包集合来实现多版本共存。 2. **使用软件集合(Software Collections - SCL)**:在RHEL/CentOS 7中,可以通过Software Collections来安装多个版本。SCL创建了一个独立的目录结构(例如`/opt/rh/`),每个软件集合包含一个软件的不同版本及其依赖。用户通过`scl enable`命令来临时切换环境变量,从而使用特定版本。 3. **使用容器或虚拟环境**:虽然不是DNF直接提供的功能,但DNF可以安装容器工具(如Podman、Docker)或虚拟环境工具(如Python的virtualenv、Node.js的nvm),这些工具可以在隔离的环境中安装不同版本的软件。 4. **并行安装(Parallel Installation)**:某些软件包被设计为可以并行安装多个版本。例如,在Fedora中,Python的不同版本可以通过不同的包名(如`python36`、`python38`)来安装,并且它们被安装在不同的路径(如`/usr/bin/python3.6`和`/usr/bin/python3.8`)。这样,用户可以通过指定完整路径或使用替代机制(如`alternatives`)来选择使用哪个版本。 5. **DNF插件**:有一些DNF插件可以帮助管理多个版本,例如`dnf-plugin-copr`可以启用额外的仓库,这些仓库可能提供同一软件的不同版本。 具体到DNF如何实现模块化(Modularity)来支持多版本: - 模块化仓库:在仓库中,软件包被组织成模块,每个模块有多个流(例如:postgresql:9.6, postgresql:10, postgresql:11)。每个流代表一个主要版本。 - 模块流的选择:用户可以通过`dnf module`命令来启用某个模块的特定流。例如: ``` dnf module enable postgresql:12 dnf install postgresql ``` 这样,安装的postgresql就会是12版本。 - 多个流同时启用:默认情况下,一个模块只能启用一个流。但是,可以通过模块化的“profiles”和“streams”特性来安装不同流的软件包到不同的位置。例如,使用`dnf module install <module:stream>/<profile>`可以安装特定流的特定配置(profile)。但是,同一个模块的不同流通常不能同时启用,除非它们被设计为可以共存(例如,通过不同的包名和安装路径)。 另一种方法是通过软件集合(SCL)实现多版本共存: 在RHEL/CentOS 7中,可以使用SCL。例如,安装Python 3.6和Python 3.8: 首先,启用SCL仓库,然后安装: ``` yum install centos-release-scl yum install rh-python36 rh-python38 ``` 安装后,可以通过以下命令来启用其中一个: ``` scl enable rh-python36 bash ``` 或者同时启用多个: ``` scl enable rh-python36 rh-python38 bash ``` 在启用的bash会话中,环境变量(如PATH)被修改,使得相应版本的软件可被访问。 总结:DNF本身并不直接支持在同一系统上安装同一个软件包的多个版本(即不能通过同一个包名安装多个版本),但是通过模块化、软件集合、并行安装(不同包名)以及容器/虚拟环境等技术,可以实现多版本共存。 现在,根据用户的问题,我们生成了以下相关问题: §§相关问题§§ 1. 在Fedora或RHEL/CentOS 8及以上版本中,如何使用模块(Modules)安装同一软件的不同版本? 2. 软件集合(SCL)在RHEL/CentOS 7中如何工作?如何配置和使用? 3. 除了DNF,还有哪些工具或方法可以在Linux系统中实现多版本软件共存? 4. 如何为同一个软件的不同版本设置默认版本或切换版本? 5. 在实现多版本共存时,如何处理依赖冲突?</think>### DNF包管理器多版本软件共存的实现原理 DNF包管理器实现多版本软件共存主要通过以下核心机制: 1. **模块化仓库(Modularity)** - 核心创新:引入模块流(Module Streams)概念,允许同一软件包的不同版本并存 - 实现方式: $$ \text{软件包} \rightarrow \begin{cases} \text{模块流A (版本X)} \\ \text{模块流B (版本Y)} \end{cases} $$ - 每个模块流拥有独立依赖树,避免版本冲突[^1] - 使用命令:`dnf module list <package>`查看可用版本流 2. **并行安装路径** - 版本隔离:不同版本安装在独立目录路径 $$ \text{路径规则:} \frac{\text{/usr/lib/}}{\text{软件名/版本号/}} $$ - 示例:Python多版本共存 ```bash /usr/bin/python3.6 /usr/bin/python3.9 ``` 3. **环境模块系统** - 通过`module`命令动态切换环境变量 - 工作流程: ```mermaid graph LR A[安装版本X] --> B{环境模块配置} C[安装版本Y] --> B B --> D[module load version_X] B --> E[module load version_Y] ``` 4. **符号链接管理** - 使用`alternatives`系统创建版本切换入口 $$ \text{/usr/bin/软件名} \xrightarrow{\text{symlink}} \text{/etc/alternatives/软件名}$$ - 切换命令:`update-alternatives --config 软件名` 5. **依赖隔离技术** - 依赖关系解析改进: $$ \text{DNF} \begin{cases} \text{精确依赖计算} \\ \text{冲突检测算法} \\ \text{沙盒安装环境} \end{cases}$$ - 使用SAT求解器确保不同版本依赖不冲突[^1] **典型应用场景示例**: 1. 开发环境需同时使用Node.js 14和18: ```bash dnf module install nodejs:14 dnf module install nodejs:18 scl enable nodejs-14 bash # 进入14环境 scl enable nodejs-18 bash # 进入18环境 ``` 2. 生产服务器运行多版本PHP: ```bash dnf install php7.4 php8.1 update-alternatives --config php # 切换默认版本 ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值