• Linux软件包常见的几种下载、安装方法


    在线源下载和安装

    如果服务器是处于在线状态,在使用默认下载源是外国的情况下,安装更新软件包往往会比较痛苦的存在,下载了许久来一个超时就gg了。国内有许多镜像源,完美的解决了这个问题。

    对于rpm系列的Linux,源就是存放在/etc/yum.repos.d/的文件,一个文件为一个源。

    复制代码
    # 备份一下
    mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.bak
    # 下载阿里的源替换
    wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo
    
    # 清除旧缓存,生成新缓存
    yum clean all
    yum makecache
    复制代码

    deb系列下的源为保存在/etc/apt/sources.list文件。

    # 先备份
    mv /etc/apt/sources.list /etc/apt/sources.list.bak
    
    # debian 11
    echo -e 'deb https://mirrors.aliyun.com/debian/ bullseye main non-free contrib\ndeb-src https://mirrors.aliyun.com/debian/ bullseye main non-free contrib\ndeb https://mirrors.aliyun.com/debian-security/ bullseye-security main\ndeb-src https://mirrors.aliyun.com/debian-security/ bullseye-security main\ndeb https://mirrors.aliyun.com/debian/ bullseye-updates main non-free contrib\ndeb-src https://mirrors.aliyun.com/debian/ bullseye-updates main non-free contrib\ndeb https://mirrors.aliyun.com/debian/ bullseye-backports main non-free contrib\ndeb-src https://mirrors.aliyun.com/debian/ bullseye-backports main non-free contrib'

    具体可以看阿里云主页debian镜像

    其他的发行版本的其他源配置方法也有可供参考。

    离线下载和安装

    不是所有的服务器都是对外服务,也有的服务器为局域网内提供一些运算、文件共享等服务,为了安全起见,所以会切断与外网的通信。

    • 如果需要安装软件包,一般情况有两种方法。
      • 下载可执行的二进制比如.rpm和.deb文件来安装,或者是下载源代码编译安装。
      • 配置局域网内的本地yum、apt源。

    软件包下载安装

    需要使用一台可以联网的设备,不安装只下载安装包,再将下载好的安装包通过scp等之类的方式上传到其系统中。

    rpm系列有专门的工具yumdownlode,使用起来还是很方便的。

    # 下载相关包以及依赖
    yumdownloader --resolve --destdir=/local/yum <包名>
    
    # 这里使用-i也同理,-U为upgrade
    rpm -Uvh --force --nodeps <包路径>

    deb的可能有点麻烦,需要依赖需要手动下载,而且要先安装才可以看到依赖。

    复制代码
    # 查看依赖
    apt depends <包名>
    
    # 查看包信息
    apt-cache show <包名>
    
    # 查看包下载路径url
    apt policy <包名>
    
    # 只下载并且下载到当前位置
    apt-get download <包名>
    复制代码

    结合起来的命令

    复制代码
    #下载
    apt-get download <包名>
    apt depends <包名> | awk '{print $2}' | xargs apt-get download
    
    # 安装
    dpkg --force-all -i <包路径>
    复制代码

    码源安装

    还是需要一台已经联网可以下载源代码的压缩包的设备,可以从官网、github等下载自己对应发行版本和处理器架构的源码包,再使用scp之类的方式上传到离线的服务器。

    一般情况都要经过解压、配置(configure)、编译(make)、安装(make install)。下面以我之前的安装openlava为例子。

    复制代码
    # 解压到当前文件夹,会生成个同名openlava文件夹
    tar -zxvf openlava-4.0.tar.gz
    
    # 进入源码文件夹中
    cd openlava-4.0
    
    # 配置configgure,加上prefix参数,配置安装路径,方便以后维护
    . /configure --prefix=/data/openlava
    
    # 编译make,这里的-j参数定义了使用线程数,这里是2线程
    # 可以用下面的命令查看线程数
    # grep 'processor' /proc/cpuinfo | sort -u | wc -l
    make -j 2
    
    # 安装
    make install
    复制代码

    不过源代码也不是这么好找的啦。

    本地源

    本地yum源

    通过系统iso镜像制作本地源,先挂载系统镜像。

    mount /dev/cdrom /挂载路径

    yum的下载源的相关配置文件在/etc/yum.repos.d/目录中,修改名称全部为bak。

    cd /etc/yum.repo.d/
    ls -l | awk '{print $9}' | xargs -I{} mv {} {}.bak

      新建个文件<名字>.repo,这里新建Local.repo。

    复制代码
    # local yum
    [Local] #取名
    name=Local  #取名
    baseurl=file://挂载镜像绝对路径  #比如file:///media/cdrom
    enabled=1    #是否使用源,1开0关  
    gpgcheck=0  #检查,1开0关
    复制代码

    完成后生成缓存

    yum clean all
    yum makecache

     本地yum源挂载共享

    也许你的服务器有若干台,每一台都使用单独iso挂载可能有点麻烦,可以尝试使用NFS、SMB等方式实现网络挂载,将本机设置为Server,共享iso镜像的挂载路径,其他Linux创建同名的路径挂载,scp将之前编辑的/etc/yum.repos.d/Local.repo配置文件,即可实现共享。

    本地yum源http共享

    在编辑repo文件时候,baseurl是可以直接写http/s的url的,只要我们将挂载iso镜像通过http共享出来。

    需要安装Nginx

    复制代码
    # 会在/etc/yum.repos.d/生成nginx.repo
    rpm -ivh http://nginx.org/packages/centos/7/noarch/RPMS/nginx-release-centos-7-0.el7.ngx.noarch.rpm
    
    # 再安装 nginx,没有第一步安装nginx会提示找不到
     yum -y install nginx
    
    # 编辑一下/etc/nginx/nginx.conf配置文件在http{}里面加
    # 或者看到include /etc/nginx/conf.d/*.conf;在conf.d里面的*.conf里加
    # 比如default.conf
    server {
    listen 8080; # 端口看自己需求
    server_name localhost;
    root /mnt;   # 这里的路径对应你挂载iso的路径
    index index.html;
    }
    复制代码

    修改/etc/yum.repos.d/Local.repo,中的baseurl为http://192.168.2.149:8080/挂载目录。

    基于此,可以拓展出基于docker制作http共享源哈哈。

  • 相关阅读:
    Docker Tomcat 搭建文件服务器
    vue3中的setup
    Win11快捷安装到鼠标右键的快捷栏里(亲测有用哦)
    js实现轮播图自动轮播
    物联网应用系统与网关
    要如何选择报修工单管理系统?需要注意哪些核心功能?
    一汽大众迈腾车前悬架系统设计
    Python脚本2 打印文本内两个日期之间的所有小时
    【LeetCode.384打乱数组】Knuth洗牌算法详解
    如何可视化编写和编排你的 K8s 任务
  • 原文地址:https://www.cnblogs.com/alittlemc/p/16647486.html