最近在做一个项目要用搭建一个我们自己的ubuntu的源更新仓库。于是查找了一些debian和ubuntu的一些资料。并根据理解搭建了一个自己的DEB仓库。
ubuntu的更新源仓库主要是根据目录结构以及一些index contents 以及relase来进行分析的。客户端会自动根据版本平台已经仓库的提供的相关信息进行自动更新,就是我我们只要将目录结构搭建正确,相关文件生成的正确就完成仓库的搭建了,下面说一下ubuntu的目录结构和相关文件
|--repository
| |-- dists
| | |-- stable
| | | |-- Contents-i386.gz
| | | |-- apt.conf
| | | |-- Release
| | | |-- Release.gpg
| | | |-- main
| | | | |-- binary-amd64
| | | | |-- binary-i386
| | | | | |-- Packages
| | | | | |-- Packages.gz
| | | | |-- source
| | | |-- multiverse
| | | | |-- binary-amd64
| | | | |-- binary-i386
| | | | |-- source
| | | |-- restricted
| | | | |-- binary-amd64
| | | | |-- binary-i386
| | | | |-- source
| | | |-- universe
| | | | |-- binary-amd64
| | | | |-- binary-i386
| | | | | |-- Packages
| | | | | |-- Packages.gz
| | | | |-- source
| |-- pool
| | |-- main
| | | |-- p
| | | | |-- pidgind_2.5.6_ie86.deb
| | |-- multiverse
| | |-- restricted
| | |-- universe
| |-- project
| | |-- keyring.gpg
目录结构基本上就是这样
repository:是仓库的主目录没有什么要求随便定义
dists:注意这个目录是位于主目录下名字必须是这个名字用于存放一些仓库的的相关信息archieve 以及 package 和 platorm信息的。
pool:这个是用于存放deb的目录所有的deb必须放在这个下面,子目录会在后面说。
project:用于存放项目的相关文件的信息,比如gpg的密钥文件。
dists/{stable,unstable,notfree,contrib}下的子目录 这个目录下面可以有多个目录 是每个archieve 的名字。名字可以自己定义
dists/stable/{main,restrict,universe} 这个是component名字,这个名字也可以自己定义但一般按照规范会定义成符合规范的名字。
dists/stable/main/{binary-i386,binary-arm,binary-amd64..} 这个目录是根据平台来定义的,目录的名字必须以binary-平台 形式来定义,客户端更新时会根据自己的平台查到相应的目录所以文件。
dists/stable/main/source 用于存在源代码的索引文件的目录。
pool/{main,restrict,universe} 这个目录是根据component的名字来定义这个名字应该可以不一样,但我没试过,
基本目录已经基本说完。下面说一下各个目录的文件。
| | | |-- Contents-i386.gz --内容的索引文件(干什么用的,我没具体看,但看名字知道 格式:Contents-平台.gz
| | | |-- apt.conf --apt-get时使用的相关信息
| | | |-- Release--相关的release 文件
| | | |-- Release.gpg --gpg对releaese的签名文件
| | | | |-- binary-i386
| | | | | |-- Packages --该平台下的索引文件
| | | | | |-- Packages.gz --该平台下的索引的压缩文件
基本的概念基本已经完成,下面说一下基本的搭建仓库的步骤和命令。
首先创建目录结构
mkdir -p respo/dists/stable/{main,restrict}/{binary-i386,binary-amd64}
mkdir -p respo/pool/{main,restrict}
mkdir -p respo/project
然后创建GPG的加密文件
gpg -K (如果没有生成过配置文件,则会创建一些相关的信息。创建过会列车密钥)
gpg --gen-key (生成密钥)
gpg --export -a BC907093 > respo/project/keyring.gpg #导出密钥文件到项目目录下
然后拷贝几个可以安装的 deb包到 respol/pool/main 下面
这里我们就用main和i386平台来做演示
下面这个步骤很重要
cd respo 如果不在仓库目录则更新时下载的deb路径会有问题
#生成索引文件
apt-ftparchive packages pool/main > dists/stable/main/binary-i386/Packages
cat dists/stable/main/binary-i386/Packages | gzip -9c > dists/stable/main/binary-i386/Packages.gz
#生成内容文件
apt-ftparchive contents pool/ | gzip -9c > dists/stable/Contents-i386.gz
#生成apt.conf文件
echo "APT::FTPArchive::Release {" >> dists/stable/apt.conf
echo "Origin \"ubuntu\";" >> dists/stable/apt.conf
echo "Label \"Ubuntu\";" >> dists/stable/apt.conf
echo "Suite \"stable\";" >> dists/stable/apt.conf
echo "Codename \"$ARCHIVE_NAME\";" >> dists/stable/apt.conf
echo "Versin \"2.1\";" >> dists/stable/apt.conf
echo "Architecture \"arm i386\";" >> dists/stable/apt.conf
echo "Components \"main\";" >> dists/stable/apt.conf
echo "Description \"my arm\";" >> dists/stable/apt.conf
echo "};" >> dists/stable/apt.conf
#生成release文件
apt-ftparchive -c dists/stable/apt.conf release dists/stable> dists/stable/Release
#签名release文件
gpg -a --detach-sign -o dists/stable/Release.gpg dists/stable/Release
忘记说ubuntu的源配置了:
/etc/apt/source.list 下修改
deb http://.../respo stable main
然后
去project 目录 apt-key add keyring.gpg 添加密钥文件
最后 apt-get update 可以看到效果
参考文档:
http://forum.ubuntu.org.cn/viewtopic.php?f=56&t=194650&view=next
分享到:
相关推荐
apt-mirror搭建ubuntu本地仓库源 apt-mirror是一种强大的本地源镜像工具,可以指定要下载的发布版本、架构、包类型等,非常适合内部源解决流量、速度和可访问性的问题。在这里,我们将详细介绍如何使用apt-mirror...
在Ubuntu系统上搭建Jenkins是构建自动化服务器的一个常见选择,尤其对于开源软件和Java项目而言。Jenkins是一款功能丰富的持续集成工具,可以帮助开发者自动化构建、测试和部署代码,提高开发效率。下面我们将详细...
### 如何搭建本地Ubuntu镜像服务器 #### 一、需求背景与分析 随着企业规模的扩大,对于软件和系统的更新及维护效率提出了更高的要求。在实际工作中,常常遇到因网络不稳定或国外源下载速度慢等问题导致系统安装和...
在Ubuntu系统上安装Oracle数据库需要遵循一定的步骤,因为Oracle数据库...通过正确安装JDK和相关依赖,可以顺利地在Ubuntu环境中搭建Oracle数据库。记得在安装过程中保持耐心,仔细阅读错误提示,以便找出并解决问题。
在 Ubuntu 上获取 Android 源码之前,首先需要安装 `repo`,这是一个用于管理 Android 源代码仓库的工具。 ```bash mkdir ~/bin PATH=~/bin:$PATH curl http://android.git.kernel.org/repo > ~/bin/repo ...
这个项目的目标是为那些希望快速搭建自己的Debian或Ubuntu系统软件仓库的用户提供一个简单易用的解决方案。在压缩包文件名称列表中,我们可以看到"deb-simple-master",这通常意味着包含了项目的源代码主分支。 在...
`apt-mirror`是一款开源的Linux工具,用于从官方的apt仓库下载软件包和元数据,然后在本地创建一个完整的镜像。它可以根据配置文件选择要同步的源,支持多种发行版,包括Ubuntu、Debian等。通过使用`apt-mirror`,...
根据提供的文件信息,本文将详细解析与Ubuntu系统配置、Android资源编译以及开发环境搭建相关的知识点。 ### Ubuntu系统源配置 在进行任何Android资源编译之前,确保Ubuntu系统的软件源配置正确是至关重要的一步。...
在Ubuntu系统中搭建Android开发环境并下载源码是Android开发者必须掌握的一项技能。本文将详细介绍这一过程,包括VMware虚拟机中的Ubuntu安装、VMware Tools的安装、Android开发环境的配置以及Android源码的下载。 ...
### Ubuntu Android 开发环境搭建详解 #### 一、概述 本文档主要介绍如何在Ubuntu 10.04环境下搭建Android开发环境。由于Android开发涉及多个工具和技术栈,因此搭建一个稳定且高效的开发环境至关重要。本文将从...
### Ubuntu系统搭建Android开发环境 #### 一、概述 随着移动互联网的发展,Android操作系统作为全球最流行的移动操作系统之一,其应用开发与系统定制的需求日益增长。对于开发者而言,选择一个高效稳定的开发环境...
创建`.deb`包之后,如果想要建立一个`apt`源仓库,让其他用户可以通过`apt-get`或`apt`命令来安装这些软件,需要做以下几步: - 准备仓库目录结构,包括`dists`,`pool`,`Release`和`InRelease`等。 - 将`.deb`...
本文档详细介绍了如何在 Ubuntu 10.04 LTS 下使用 VirtualBox 虚拟机编译 Android 2.2 的源代码,包括环境搭建、文件夹共享配置、源代码编译环境配置、编译过程中的问题解决以及 `out` 目录的说明。这对于那些希望...
在Ubuntu 16中搭建QT开发环境,需要添加QT官方仓库并安装QT Creator及开发库。首先导入QT仓库密钥: ```bash sudo apt-key adv --keyserver keys.gnupg.net --recv-keys 0x00F6A53B ``` 然后添加仓库: ```bash echo...
GitLab 是一个用于仓库管理系统的开源项目,使用 Git 作为代码管理工具,并在此基础上搭建起来的 web 服务。它提供 Git 版本控制版本控制、代码检查、Bug 跟踪和 Wiki,它可以通过 LDAP 或活动目录来进行安全认证和...
使用虚拟机软件如VMware来搭建Ubuntu环境并安装ROS是一种既便捷又安全的方式。本文将详细介绍如何在VMware中安装Ubuntu及ROS,帮助新手快速入门。 #### 二、准备工作 1. **下载VMware Workstation或Player**: - ...
在Ubuntu 20.04上搭建LNMP(Linux、Nginx、MySQL/MariaDB、PHP)环境是一项常见的任务,对于开发人员来说至关重要。以下将详细介绍如何在Ubuntu 20.04上逐步完成这一过程。 首先,我们需要了解LNMP架构。LNMP是一个...
在Ubuntu 18.04上设置uhttpd,可以为个人或小型企业搭建简单的网站或管理界面。以下将详细介绍uhttpd的安装、配置以及依赖包的管理。 ### 一、uhttpd的安装 1. **添加源**: 首先,由于uhttpd可能不在Ubuntu默认的...
### Ubuntu 下安装 Oracle-XE 并建立数据库脚本测试 #### 安装Oracle-XE 在 Ubuntu 系统上安装 Oracle-XE(Oracle Express Edition)并进行基础配置,需要完成以下步骤: 1. **设置 Oracle-XE 版本源** 首先...