长期支持版本

    社区创新版本

      搭建repo服务器

      说明:
      openEuler提供了多种repo源供用户在线使用,各repo源含义可参考[系统安装](./../Releasenotes/系统安装.md)。若用户无法在线获取openEuler repo源,则可使用openEuler提供的ISO发布包创建为本地openEuler repo源。本章节中以openEuler-20.03-LTS-SP2-aarch64-dvd.iso发布包为例,请根据实际需要的ISO发布包进行修改。

      概述

      将openEuler提供的ISO发布包openEuler-20.03-LTS-SP2-aarch64-dvd.iso创建为repo源,如下以使用nginx进行repo源部署,提供http服务为例进行说明。

      创建/更新本地repo源

      使用mount挂载,将openEuler的ISO发布包openEuler-20.03-LTS-SP2-aarch64-dvd.iso创建为repo源,并能够对repo源进行更新。

      获取ISO发布包

      请从如下网址获取openEuler的ISO发布包:

      https://repo.openeuler.org/openEuler-20.03-LTS-SP2/ISO/

      挂载ISO创建repo源

      在root权限下使用mount命令挂载ISO发布包。

      示例如下:

      # mount /home/openEuler/openEuler-20.03-LTS-SP2-aarch64-dvd.iso /mnt/
      

      挂载好的mnt目录如下:

      .
      │── boot.catalog
      │── docs
      │── EFI
      │── images
      │── Packages
      │── repodata
      │── TRANS.TBL
      └── RPM-GPG-KEY-openEuler
      

      其中,Packages为rpm包所在的目录,repodata为repo源元数据所在的目录,RPM-GPG-KEY-openEuler为openEuler的签名公钥。

      创建本地repo源

      可以拷贝ISO发布包中相关文件至本地目录以创建本地repo源,示例如下:

      # mount /home/openEuler/openEuler-20.03-LTS-SP2-aarch64-dvd.iso /mnt/
      $ mkdir -p ~/srv/repo/
      $ cp -r /mnt/Packages ~/srv/repo/
      $ cp -r /mnt/repodata ~/srv/repo/
      $ cp -r /mnt/RPM-GPG-KEY-openEuler ~/srv/repo/
      

      从而本地repo目录如下:

      .
      │── Packages
      │── repodata
      └── RPM-GPG-KEY-openEuler
      

      Packages为rpm包所在的目录,repodata为repo源元数据所在的目录,RPM-GPG-KEY-openEuler为openEuler的签名公钥。

      更新repo源

      更新repo源有两种方式:

      • 通过新版本的ISO更新已有的repo源,与创建repo源的方式相同,即挂载ISO发布包或重新拷贝ISO发布包至本地目录。

      • 在repo源的Packages目录下添加rpm包,然后通过createrepo命令更新repo源

        $ createrepo --update --workers=10 ~/srv/repo
        

        其中,--update表示更新,--workers表示线程数,可自定义。

        说明:
        若命令打印信息为“createrepo:未找到命令”,则表示未安装createrepo软件,可在root权限下执行dnf install createrepo进行安装。

      部署远端repo源

      安装openEuler操作系统,在openEuler上通过nginx部署repo源。

      nginx安装与配置

      1. 请自行下载nginx工具并在root权限下安装nginx。

      2. 安装nginx之后,在root权限下配置/etc/nginx/nginx.conf。

        说明:
        文档中的配置内容仅供参考,请用户根据实际情况(例如安全加固需要)进行配置。

        user  nginx;
        worker_processes  auto;                          # 建议设置为core-1
        error_log  /var/log/nginx/error.log  warn;       # log存放位置
        pid        /var/run/nginx.pid;
        
        events {
            worker_connections  1024;
        }
        
        http {
            include       /etc/nginx/mime.types;
            default_type  application/octet-stream;
        
            log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
                              '$status $body_bytes_sent "$http_referer" '
                              '"$http_user_agent" "$http_x_forwarded_for"';
        
            access_log  /var/log/nginx/access.log  main;
            sendfile        on;
            keepalive_timeout  65;
        
            server {
                listen       80;
                server_name  localhost;                 # 服务器名(url)
                client_max_body_size 4G;
                root         /usr/share/nginx/repo;                 # 服务默认目录
        
                location / {
                    autoindex            on;            # 开启访问目录下层文件
                    autoindex_exact_size on;
                    autoindex_localtime  on; 
                }
        
            }
        
        }
        

      启动nginx服务

      1. 在root权限下通过systemd启动nginx服务:

        # systemctl enable nginx
        # systemctl start nginx
        
      2. nginx是否启动成功可通过下面命令查看:

        $ systemctl status nginx
        
        • 图1表示nginx服务启动成功

          图 1 nginx服务启动成功

        • 若nginx服务启动失败,查看错误信息:

        $ systemctl status nginx.service --full
        

        图 2 nginx服务启动失败

        图2所示nginx服务创建失败,是由于目录/var/spool/nginx/tmp/client_body创建失败,在root权限下手动进行创建,类似的问题也这样处理:

        # mkdir -p /var/spool/nginx/tmp/client_body
        # mkdir -p /var/spool/nginx/tmp/proxy
        # mkdir -p /var/spool/nginx/tmp/fastcgi
        # mkdir -p /usr/share/nginx/uwsgi_temp
        # mkdir -p /usr/share/nginx/scgi_temp
        

      repo源部署

      1. 在root权限下创建nginx配置文件/etc/nginx/nginx.conf中指定的目录/usr/share/nginx/repo:

        # mkdir -p /usr/share/nginx/repo
        
      2. 在root权限下修改目录/usr/share/nginx/repo的权限:

        # chmod -R 755 /usr/share/nginx/repo
        
      3. 设置防火墙规则,开启nginx设置的端口(此处为80端口),在root权限下通过firewall设置端口开启:

        # firewall-cmd --add-port=80/tcp --permanent
        # firewall-cmd --reload
        

        在root权限下查询80端口是否开启成功,输出为yes则表示80端口开启成功:

        # firewall-cmd --query-port=80/tcp
        

        也可在root权限下通过iptables来设置80端口开启:

        # iptables -I INPUT -p tcp --dport 80 -j ACCEPT
        
      4. nginx服务设置好之后,即可通过ip直接访问网页,如图3

        图 3 nginx部署成功

      5. 通过下面几种方式将repo源放入到/usr/share/nginx/repo下:

        • 在root权限下拷贝镜像中相关文件至/usr/share/nginx/repo下,并修改目录权限。

          # mount /home/openEuler/openEuler-20.03-LTS-SP2-aarch64-dvd.iso  /mnt/
          # cp -r /mnt/Packages /usr/share/nginx/repo
          # cp -r /mnt/repodata /usr/share/nginx/repo
          # cp -r /mnt/RPM-GPG-KEY-openEuler /usr/share/nginx/repo
          # chmod -R 755 /usr/share/nginx/repo
          

          openEuler-20.03-LTS-SP2-aarch64-dvd.iso存放在/home/openEuler目录下。

        • 使用root在/usr/share/nginx/repo下创建repo源的软链接。

          # ln -s /mnt /usr/share/nginx/repo/os
          

          /mnt为已经创建好的repo源,/usr/share/nginx/repo/os将指向/mnt。

      使用repo源

      repo可配置为yum源,yum(全称为 Yellow dog Updater, Modified)是一个Shell前端软件包管理器。基于RPM包管理,能够从指定的服务器自动下载RPM包并且安装,可以自动处理依赖性关系,并且一次安装所有依赖的软件包,无须繁琐地一次次下载和安装。

      repo配置为yum源(软件源)

      构建好的repo可以配置为yum源使用,在/etc/yum.repos.d/目录下使用root权限创建***.repo的配置文件(必须以.repo为扩展名),分为本地和http服务器配置yum源两种方式:

      • 配置本地yum源

        在/etc/yum.repos.d目录下创建openEuler.repo文件,使用构建的本地repo源作为yum源,openEuler.repo的内容如下:

        [base]
        name=base
        baseurl=file:///home/openEuler/srv/repo
        enabled=1
        gpgcheck=1
        gpgkey=file:///home/openEuler/srv/repo/RPM-GPG-KEY-openEuler
        

        说明:

        • [repoid]中的repoid为软件仓库(repository)的ID号,所有.repo配置文件中的各repoid不能重复,必须唯一。示例中repoid设置为base
        • name为软件仓库描述的字符串。
        • baseurl为软件仓库的地址。
        • enabled为是否启用该软件源仓库,可选值为1和0。默认值为1,表示启用该软件源仓库。
        • gpgcheck可设置为1或0,1表示进行gpg(GNU Private Guard)校验,0表示不进行gpg校验,gpgcheck可以确定rpm包的来源是有效和安全的。
        • gpgkey为验证签名用的公钥。
      • 配置http服务器yum源

        在/etc/yum.repos.d目录下创建openEuler.repo文件。

        • 若使用用户部署的http服务端的repo源作为yum源,openEuler.repo的内容如下:

          [base]
          name=base
          baseurl=http://192.168.139.209/
          enabled=1
          gpgcheck=1
          gpgkey=http://192.168.139.209/RPM-GPG-KEY-openEuler
          

          说明:
          “192.168.139.209”为示例地址,请用户根据实际情况进行配置。

        • 若使用openEuler提供的openEuler repo源作为yum源,以AArch64架构的OS repo源为例,openEuler.repo的内容如下:

          [base]
          name=base
          baseurl=http://repo.openeuler.org/openEuler-20.03-LTS-SP2/OS/aarch64/
          enabled=1
          gpgcheck=1
          gpgkey=http://repo.openeuler.org/openEuler-20.03-LTS-SP2/OS/aarch64/RPM-GPG-KEY-openEuler
          

      repo优先级

      当有多个repo源时,可通过在.repo文件的priority参数设置repo的优先级(如果不设置,默认优先级是99,当相同优先级的源中存在相同rpm包时,会安装最新的版本)。其中,1为最高优先级,99为最低优先级,如给openEuler.repo配置优先级为2:

      [base]
      name=base
      baseurl=http://192.168.139.209/
      enabled=1
      priority=2
      gpgcheck=1
      gpgkey=http://192.168.139.209/RPM-GPG-KEY-openEuler
      

      dnf相关命令

      dnf命令在安装升级时能够自动解析包的依赖关系,一般的使用方式如下:

      dnf <command> <packages name>
      

      常用的命令如下:

      • 安装,需要在root权限下执行。

        # dnf install <packages name>
        
      • 升级,需要在root权限下执行。

        # dnf update <packages name>
        
      • 回退,需要在root权限下执行。

        # dnf downgrade <packages name>
        
      • 检查更新

        $ dnf check-update
        
      • 卸载,需要在root权限下执行。

        # dnf remove <packages name>
        
      • 查询

        $ dnf search <packages name>
        
      • 本地安装,需要在root权限下执行。

        # dnf localinstall <absolute path to package name>
        
      • 查看历史记录

        $ dnf history
        
      • 清除缓存目录

        $ dnf clean all
        
      • 更新缓存

        $ dnf makecache
        

      文档捉虫

      “有虫”文档片段

      问题描述

      提交类型 issue

      有点复杂...

      找人问问吧。

      PR

      小问题,全程线上修改...

      一键搞定!

      问题类型
      规范和低错类

      ● 错别字或拼写错误;标点符号使用错误;

      ● 链接错误、空单元格、格式错误;

      ● 英文中包含中文字符;

      ● 界面和描述不一致,但不影响操作;

      ● 表述不通顺,但不影响理解;

      ● 版本号不匹配:如软件包名称、界面版本号;

      易用性

      ● 关键步骤错误或缺失,无法指导用户完成任务;

      ● 缺少必要的前提条件、注意事项等;

      ● 图形、表格、文字等晦涩难懂;

      ● 逻辑不清晰,该分类、分项、分步骤的没有给出;

      正确性

      ● 技术原理、功能、规格等描述和软件不一致,存在错误;

      ● 原理图、架构图等存在错误;

      ● 命令、命令参数等错误;

      ● 代码片段错误;

      ● 命令无法完成对应功能;

      ● 界面错误,无法指导操作;

      风险提示

      ● 对重要数据或系统存在风险的操作,缺少安全提示;

      内容合规

      ● 违反法律法规,涉及政治、领土主权等敏感词;

      ● 内容侵权;

      您对文档的总体满意度

      非常不满意
      非常满意
      提交
      根据您的反馈,会自动生成issue模板。您只需点击按钮,创建issue即可。
      文档捉虫
      编组 3备份