C02S05-Linux的软件安装

一、编译安装

1. 相关知识概述

编译安装是从软件的源代码开始,通过编译过程生成可执行文件,然后安装这些可执行文件到系统中。

  • 源码包:所有源代码文件的集合。
  • 程序:未执行的代码。
  • 进程:正在执行的代码。
  • 线程:进程中实际运行的单位,每条线程并行执行不同的任务。

2. 软件安装过程

以在Ubuntu系统上安装Nginx为例

  1. 关闭系统的防火墙开机自启动,以免其他网络无法访问相关程序。非必要步骤。

    ufw disable
    
  2. 安装程序的依赖环境。

    apt -y install libpcre3-dev zlib1g-dev libssl-dev build-essential
    
    • libpcre3-dev:这是 Perl 兼容正则表达式库(PCRE)的开发包。提供了开发库和头文件,用于在其他程序中使用 PCRE 库。

    • zlib1g-dev:这是 zlib 库的开发包。提供了开发库和头文件,用于在其他程序中使用 zlib 进行数据压缩和解压缩。

    • libssl-dev:这是 OpenSSL 库的开发包。提供了开发库和头文件,用于在其他程序中使用 OpenSSL 进行安全通信。

    • build-essential:这是一个元包,它自动安装编译 C 和 C++ 程序所需的基本工具和库,包括 gcc(GNU 编译器集合)、g++(GNU C++ 编译器)、make(构建工具)等。

  3. 创建程序的执行用户。

    useradd -M -s /sbin/nologin nginx
    
    • -M:不创建用户的家目录。
    • -s:设置用户的登录 shell。/sbin/nologin是一个特殊的shell,禁止用户登录。通常用于不需要交互式登录,只用于运行特定服务的用户。
    • nginx:创建的用户名。
  4. 软件包解压缩。

    tar -xf nginx-1.22.0.tar.gz
    
  5. 进入软件源码包,执行configure文件,配置程序的安装路径和执行用户。

    ./configure --prefix=/usr/local/nginx --user=nginx --group=nginx
    
  6. 编译并安装。

    make && make install
    
  7. 创建软链接,便于直接使用nginx命令来调用Nginx程序。

    ln -s /usr/local/nginx/sbin/nginx /usr/local/sbin/
    
  8. 在安装目录下创建一个run目录,用于存放Nginx程序的PID文件。并修改安装目录的所有者和所有组。

    mkdir /usr/local/nginx/run
    
    chown -R nginx.nginx /usr/local/nginx
    
  9. 进入Nginx程序安装目录下的配置目录conf,修改配置文件nginx.conf,设置Nginx程序PID文件的位置。

    pid        /usr/local/nginx/run/nginx.pid;
    

    保存退出后,执行下面的命令,查看配置是否存在问题。

    nginx -t
    
  10. 编写Nginx程序的系统服务。

    vim /lib/systemd/system/nginx.service
    

    在文件中写入以下内容:

    [Unit]
    Description=nginx - high performance web server
    Documentation=http://nginx.org/en/docs/
    After=network-online.target remote-fs.target nss-lookup.target
    Wants=network-online.target
    [Service]
    Type=forking
    PIDFile=/usr/local/nginx/run/nginx.pid
    #注意文件位置,如果不对 启动不了
    ExecStart=/usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf 
    #注意启动文件位置
    ExecReload=/bin/kill -s HUP $MAINPID
    ExecStop=/bin/kill -s TERM $MAINPID
    [Install]
    WantedBy=multi-user.target
    
  11. 启动Nginx服务。

    # 配置完服务文件后,重新加载系统服务
    systemctl daemon-reload
    
    # 设置Nginx服务开机自启动
    systemctl enable nginx
    
    # 启动Nginx服务
    systemctl start nginx # restart是重启
    
  12. 查看Nginx程序的PID。

    netstat -anutp | grep nginx
    
  13. 在本机浏览器中访问虚拟机的Nginx服务,IP为虚拟机的IP地址,端口为80,可不写。还可以编辑Nginx安装目录下html目录中的index.html文件,自定义页面显示内容。

3. 编译安装的优缺点

优点:

  • 开源,用户可以根据需求修改源代码,自定义模块和功能。

缺点:

  • 耗时费力,过程复杂,并且不易于后续的维护。对新手不友好。

二、RPM安装和DPKG安装

1. RPM安装

RPM安装是用于CentOS系统的安装方式,软件包都是以.rpm结尾。使用rpm命令来实现RPM包的安装。

rpm命令来自英文词组redhat package manager的缩写,功能是在Linux系统下对软件包进行安装、卸载、查询、验证、升级等工作,常见的主流系统(如RHEL、CentOS、Fedora等)。安装软件固定搭配“rpm-ivh 软件包名”,而卸载软件则用固定搭配“rpm -evh 软件包名”。

rpm 选项 软件包

常见的选项:

选项功能
-e卸载软件包
-h以#显示安装进度
-i安装软件包
-q查看指定软件包是否安装
-v显示过程

2. DPKG安装

DPKG是Ubuntu系统的安装方式,软件包都是以.dpkg结尾。使用dpkg命令来实现软件包的安装。

dpkg命令来自英文词组Debian package的缩写,功能是管理软件安装包,是在Debian系Linux系统中最常用的软件安装、管理、卸载的实用工具。

dpkg 选项 软件包

常见的选项:

选项功能
-i安装软件包
-l显示软件包是否已安装
-P完全清除软件包(不推荐)
-r卸载软件包

三、Yum安装和Apt安装

1. Yum安装

1.1 yum命令

Yum是一个基于RPM的软件包管理器,可以自动解决依赖关系,也就是说安装一个软件包时,它会自动安装所有必需的依赖项;可以轻松地更新和升级系统中的所有软件包;允许用户配置和管理多个软件仓库,以便从不同的软件源安装软件。Yum安装使用的是yum命令。

yum命令来自英文词组yellow dog updater modified的缩写,功能是在Linux系统中基于RPM技术进行软件包的管理工作。

yum 选项 [软件包]

常见的选项:

选项功能
install安装软件包
update更新软件包
remove清除软件包
search搜索软件包
clean清除过期缓存
makecache更新元数据缓存

1.2 配置本地Yum源

配置本地Yum源是指将Yum软件包管理器配置为从本地服务器或本地目录获取软件包,而不是从远程服务器下载。这样可以提高安装和更新软件的速度、减少对外部网络的依赖、以及在没有互联网连接的情况下管理软件包。

  1. 查看虚拟机的光盘镜像。

    ls /dev | grep cdrom
    
  2. 挂载光盘镜像。

    mount /dev/sr0 /mnt
    

    使用mount命令挂载是临时挂载,要永久挂载就需要配置/dev/fstab来实现自动挂载。

    挂载准则:一个设备只能挂载一个目录;挂载点就是Linux的目录,而且最好是空目录。

  3. 编写Yum源文件,文件必须在/etc/yum.repo.d目录下,而且源文件以.repo结尾。

    编写一个名为local.repo的源文件。

    [local] # 源名称,和文件名一致
    # 源描述
    name=local
    # 源路径,也就是镜像挂载点
    baseurl=file:///mnt
    # 1表示启用当前yum源
    enabled=1
    # 0表示不检查公钥
    gpgcheck=0
    
  4. 在/etc/yum.repo.d目录下创建一个backup目录,将系统自带的yum源文件移动到该文件。

    cd /etc/yum.repos.d
    
    mkdir backup
    
    mv C* backup/
    
  5. 清除yum缓存信息,并更新元数据缓存。

    yum clean all && yum makecache
    

1.3 配置阿里云Yum源

  1. 下载阿里云Yum文件。

    wget -o /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo
    # 或者
    curl -o /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo
    
  2. 清除yum缓存信息,并更新元数据缓存。

    yum clean all && yum makecache
    

2. Apt安装

2.1 apt命令

Apt是一个基于dpkg的软件包管理器,与Yum类似,也能够实现自动解决软件包的依赖关系。Apt安装使用的是apt-get命令或apt命令,apt命令被视作是apt-get的替代。

apt命令来自英文词组advanced package tool的缩写,功能是在Linux系统中基于DPKG技术进行软件包的管理工作。

apt 选项 [软件包]

常用的选项:

选项功能
update更新软件包列表
upgrade更新软件包
install安装软件包
remove卸载软件包

2.2 配置阿里云Apt源

  1. 进入/etc/apt目录下的源配置文件sources.lists,在文件末尾加入以下内容。

    deb http://mirrors.aliyun.com/ubuntu/ jammy main restricted
    deb-src http://mirrors.aliyun.com/ubuntu/ jammy main restricted
    deb http://mirrors.aliyun.com/ubuntu/ jammy-updates main restricted
    deb-src http://mirrors.aliyun.com/ubuntu/ jammy-updates main restricted
    deb http://mirrors.aliyun.com/ubuntu/ jammy universe
    deb-src http://mirrors.aliyun.com/ubuntu/ jammy universe
    deb http://mirrors.aliyun.com/ubuntu/ jammy-updates universe
    deb-src http://mirrors.aliyun.com/ubuntu/ jammy-updates universe
    deb http://mirrors.aliyun.com/ubuntu/ jammy multiverse
    deb-src http://mirrors.aliyun.com/ubuntu/ jammy multiverse
    deb http://mirrors.aliyun.com/ubuntu/ jammy-updates multiverse
    deb-src http://mirrors.aliyun.com/ubuntu/ jammy-updates multiverse
    deb http://mirrors.aliyun.com/ubuntu/ jammy-backports main restricted universe multiverse
    deb-src http://mirrors.aliyun.com/ubuntu/ jammy-backports main restricted universe multiverse
    deb http://mirrors.aliyun.com/ubuntu jammy-security main restricted
    deb-src http://mirrors.aliyun.com/ubuntu jammy-security main restricted
    deb http://mirrors.aliyun.com/ubuntu jammy-security universe
    deb-src http://mirrors.aliyun.com/ubuntu jammy-security universe
    deb http://mirrors.aliyun.com/ubuntu jammy-security multiverse
    deb-src http://mirrors.aliyun.com/ubuntu jammy-security multiverse
    
  2. 保存文件后,执行下面命令,更新软件包列表并升级软件包。

    apt update && apt upgrade
    

3. 安装位置

通过yum和apt安装的应用程序,相关文件位置都比较分散,下面是各种文件的默认具体位置:

  • 可执行文件:/usr/bin
  • 库文件:/usr/lib
  • 配置文件:/etc
  • 其他支持文件:/usr/share
在执行 `make` 命令时遇到错误提示 `arm-v01c02-linux-musleabi-gcc: Command not found`,通常意味着系统无法找到指定的交叉编译器。以下是几种可能的原因及对应的解决方法: ### 1. 检查交叉编译工具链是否已正确安装 确认交叉编译工具链 `arm-v01c02-linux-musleabi-` 是否已经安装在系统中。可以通过以下命令检查是否存在该编译器: ```bash which arm-v01c02-linux-musleabi-gcc ``` 如果没有输出路径,则表示该工具链未安装或未正确配置。需要下载并安装该工具链,例如从官方或第三方提供的预编译包中获取。 ### 2. 配置环境变量 PATH 确保交叉编译工具链的可执行文件路径已添加到系统的 `PATH` 环境变量中。可以编辑 `~/.bashrc` 或 `/etc/profile` 文件,添加如下内容: ```bash export PATH=/path/to/arm-v01c02-linux-musleabi/bin:$PATH ``` 然后执行以下命令使配置生效: ```bash source ~/.bashrc ``` 替换 `/path/to/arm-v01c02-linux-musleabi` 为实际的工具链安装路径。 ### 3. 检查 Makefile 中的编译器名称 确保 `Makefile` 中使用的编译器名称与系统中安装的工具链名称一致。例如,如果工具链的前缀是 `arm-v01c02-linux-musleabi-`,则 `Makefile` 中的 `CC` 变量应设置为: ```makefile CC = arm-v01c02-linux-musleabi-gcc ``` 如果名称不匹配,修改为正确的编译器名称。 ### 4. 创建符号链接(Symbolic Link) 如果工具链已经安装,但名称与 `Makefile` 中使用的不一致,可以创建符号链接。例如,如果实际的编译器名称为 `arm-none-linux-gnueabi-gcc`,可以执行以下命令创建符号链接: ```bash sudo ln -s /usr/bin/arm-none-linux-gnueabi-gcc /usr/bin/arm-v01c02-linux-musleabi-gcc ``` 这样,系统就能识别 `arm-v01c02-linux-musleabi-gcc` 命令并将其映射到实际存在的编译器。 ### 5. 权限问题 如果使用了 `sudo` 执行 `make` 命令,但提示找不到编译器,可能是由于 `sudo` 的环境变量与普通用户的环境变量不同。可以通过以下方式解决: - 使用 `sudo su` 切换到 root 用户,然后手动设置 `PATH`。 - 修改 `sudoers` 文件,确保 `PATH` 包含交叉编译工具链的路径。 ### 6. 检查工具链依赖项 某些交叉编译工具链依赖于特定的库文件(如 `libstdc++`、`glibc` 等)。如果缺少这些依赖项,可能导致编译器无法运行。可以通过以下命令安装缺失的依赖: ```bash sudo apt-get install libstdc++6 ``` ### 7. 验证工具链的完整性 如果工具链已经安装,但仍然无法找到编译器,可能是工具链文件损坏或未完整安装。尝试重新安装工具链,确保所有文件完整。 ### 8. 使用容器或虚拟机 如果在主机环境中配置工具链遇到困难,可以考虑使用容器(如 Docker)或虚拟机(如 VirtualBox)来运行一个已经配置好工具链的开发环境。 ---
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值