You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

搭建供内部使用的特定版本AOSP本地Git服务器步骤咨询

本地Git服务器搭建特定版本AOSP镜像及客户端使用指南

一、服务器端准备工作

1. 基础环境配置

  • 安装必备工具:
    # Debian/Ubuntu 系统
    apt update && apt install git repo openssh-server -y
    # CentOS/RHEL 系统
    yum install git repo openssh-server -y
    
  • 创建镜像存储目录并设置权限:
    mkdir -p /opt/aosp-mirror
    chmod 755 /opt/aosp-mirror
    
  • 确认磁盘空间:确保至少有250GB以上可用空间(AOSP android-12.1.0_r12镜像约200GB)。

2. 同步官方特定版本AOSP镜像

  • 进入镜像目录,初始化repo镜像模式:
    cd /opt/aosp-mirror
    repo init -u https://android.googlesource.com/platform/manifest -b android-12.1.0_r12 --mirror
    
  • 开始同步所有仓库:
    repo sync -j$(nproc)
    

    提示:-j$(nproc) 表示使用服务器全部CPU核心加速同步,若网络不稳定可适当降低线程数(如-j4)。

二、搭建Git访问服务(两种协议二选一)

选项1:SSH协议(推荐,安全且速度快)

  1. 创建专用git用户:
    useradd -m git
    passwd git  # 设置用户密码
    
  2. 调整镜像目录权限:
    chown -R git:git /opt/aosp-mirror
    
  3. 配置SSH密钥认证(可选,免密码访问):
    • 让客户端用户生成SSH密钥对(ssh-keygen -t ed25519),并将公钥内容发送给服务器管理员。
    • 在服务器上创建git用户的SSH目录并添加公钥:
      mkdir -p /home/git/.ssh
      touch /home/git/.ssh/authorized_keys
      chmod 700 /home/git/.ssh
      chmod 600 /home/git/.ssh/authorized_keys
      chown -R git:git /home/git/.ssh
      
      将客户端公钥逐行写入/home/git/.ssh/authorized_keys。
  4. 开放防火墙22端口:
    # Debian/Ubuntu
    ufw allow 22
    # CentOS/RHEL
    firewall-cmd --add-port=22/tcp --permanent
    firewall-cmd --reload
    

选项2:HTTP协议(无需SSH密钥,适合大规模访问)

  1. 安装Apache服务:
    # Debian/Ubuntu
    apt install apache2 gitweb -y
    # CentOS/RHEL
    yum install httpd gitweb -y
    
  2. 启用必要模块:
    # Debian/Ubuntu
    a2enmod cgi alias
    # CentOS/RHEL
    sed -i 's/#LoadModule cgi_module/LoadModule cgi_module/' /etc/httpd/conf.modules.d/00-base.conf
    
  3. 配置gitweb指向镜像目录:
    • 编辑/etc/gitweb.conf,修改项目根目录:
      $projectroot = "/opt/aosp-mirror";
      $git_temp = "/tmp";
      $home_link = $my_uri || "/";
      
  4. 配置Apache虚拟主机:
    • 创建配置文件/etc/apache2/sites-available/aosp-mirror.conf(Debian/Ubuntu)或/etc/httpd/conf.d/aosp-mirror.conf(CentOS/RHEL):
      <VirtualHost *:80>
          ServerName aosp.your-domain.com  # 替换为你的服务器域名/IP
          DocumentRoot /usr/share/gitweb
          Alias /git /usr/share/gitweb
          <Directory /usr/share/gitweb>
              Options +ExecCGI
              AddHandler cgi-script .cgi
              Require all granted
          </Directory>
          <Directory /opt/aosp-mirror>
              Require all granted
          </Directory>
      </VirtualHost>
      
  5. 调整镜像目录权限并重启服务:
    # Debian/Ubuntu
    chown -R www-data:www-data /opt/aosp-mirror
    a2ensite aosp-mirror.conf
    systemctl restart apache2
    # CentOS/RHEL
    chown -R apache:apache /opt/aosp-mirror
    systemctl restart httpd
    
  6. 开放防火墙80端口:
    # Debian/Ubuntu
    ufw allow 80
    # CentOS/RHEL
    firewall-cmd --add-port=80/tcp --permanent
    firewall-cmd --reload
    

三、修改Manifest仓库指向本地镜像

客户端repo init需要读取本地的manifest文件,因此需修改镜像中的manifest仓库,将所有项目的远程地址替换为本地服务器地址:

  1. 克隆manifest裸仓库到临时目录:
    git clone /opt/aosp-mirror/platform/manifest.git /tmp/manifest-tmp
    cd /tmp/manifest-tmp
    
  2. 编辑default.xml文件:
    • 修改<remote>标签的fetch属性:
      • SSH协议:<remote name="aosp" fetch="ssh://git@your-server-ip/opt/aosp-mirror/" />
      • HTTP协议:<remote name="aosp" fetch="http://aosp.your-domain.com/git/" />
    • 确保所有<project>标签使用remote="aosp"(默认已配置,无需额外修改)。
  3. 提交并推送修改:
    git add default.xml
    git commit -m "Update remote URLs to local AOSP mirror"
    git push origin android-12.1.0_r12
    
  4. 清理临时目录:
    rm -rf /tmp/manifest-tmp
    

四、客户端使用本地镜像

  1. 安装repo工具:
    mkdir -p ~/bin
    curl https://storage.googleapis.com/git-repo-downloads/repo > ~/bin/repo
    chmod a+x ~/bin/repo
    export PATH=~/bin:$PATH
    
  2. 初始化repo(根据服务器协议选择):
    • SSH协议:
      repo init -u ssh://git@your-server-ip/opt/aosp-mirror/platform/manifest.git -b android-12.1.0_r12
      
    • HTTP协议:
      repo init -u http://aosp.your-domain.com/git/platform/manifest.git -b android-12.1.0_r12
      
  3. 同步源码:
    repo sync -j$(nproc)
    

五、镜像维护(可选)

若需要同步官方该分支的后续更新,定期执行以下操作:

  1. 进入服务器镜像目录:
    cd /opt/aosp-mirror
    
  2. 同步官方更新:
    repo sync -j$(nproc)
    
  3. 重复三、修改Manifest仓库指向本地镜像的步骤,更新manifest文件中的项目地址(若官方有manifest变更)。

内容的提问来源于stack exchange,提问作者vijay panwar

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.19 20:23:12