制作deb仓库

1.如何制作简单的deb仓库?
一个简单的deb仓库可以采用apt-get install *的方式来进行快速软件安装。制作软件包仓库其实很简单:
首先, 将制作好的deb包放在一个目录下,当然您也可以依据软件名称建立子目录,再存放deb包,如您建立一个repos的目录存放已经建立的软件包
随后,采用sudo dpkg-scanpackages repos /dev/null | gzip -9c >Packages.gz建立仓库索引文件
然后,解开Packages.gz以便编辑:gzip -d Packages.gz, 此时得到Packages文件
编辑,nano Packages,采用替换功能去掉Packages里面的repos/字段,然后保存
重新打包gzip Packages Packages.gz放到目录repos中。
现在设定/etc/apt/sources.list中的仓库源,如果repos目录在你系统中的/var/www/repos下的话,可在/etc/apt/sources.list加入:
deb file:///var/www/repos/ /
保存后,采用apt-get update更新,此时就可以采用apt-get install bioinfoserv-base-directories_1.1-22_i386.deb安装你创建好的deb软件了。

然如果您需要将这个软件仓库发布到互联网上,假定您的网络地址为http://www.bioinfoserv.org,其互联网访问的路径为http:
//www.bioinfoserv.org/BioinfoServDeb/repos,那么在/etc/apt
/spurce.list中添加:
2.如何制作比较复杂的deb仓库?
#### 简单软件仓库结构: 创建仓库主目录 ${REPO}, deb文件放在 pool目录下, 
##  在主目录下运行 apt-ftparchive packages pool/ | gzip -9c > Packages.gz   结构如下: 
|-- Packages.gz
|-- pool
|   |-- abc.deb
|   |-- def.deb
`
#### 使用:  加入源
deb file:///media/g/ubt/debs/ /
#### apt-get update 生成的软件包列表
/var/lib/apt/lists/_media_g_ubt_debs_Packages
#### 标准deb仓库结构: 创建仓库主目录 ${REPO}, deb文件放在分层的pool目录下
##  创建 dists{发行版名}/{分类名}/{机器体系} 目录, 生成分类的包列表, 生成版本签名,生成内容包
##  创建仓库,并建立相关文件:  
mkdir /media/g/myubtrepo
cd /media/g/myubtrepo
mkdir project
gpg -K  # 生成自己的gpg密钥(略), 列出自己的密钥ID,并导出到文件
gpg --export -a 4B1D5487  > project/myubtrepo-keyring.gpg
mkdir -p dists/jaunty/{main,multiverse,restricted,universe}/{binary-amd64,binary-i386,i18n,source}
mkdir -p pool/{main,multiverse,restricted,universe}
# 在 pool 目录下放入一些有效的deb文件
apt-ftparchive packages pool/main     >  dists/jaunty/main/binary-i386/Packages
apt-ftparchive packages pool/universe >  dists/jaunty/universe/binary-i386/Packages
cat dists/jaunty/main/binary-i386/Packages     | gzip -9c > dists/jaunty/main/binary-i386/Packages.gz
cat dists/jaunty/universe/binary-i386/Packages | gzip -9c > dists/jaunty/universe/binary-i386/Packages.gz
cat > dists/jaunty/main/binary-i386/Release  dists/jaunty/universe/binary-i386/Release  dists/jaunty/pt.conf  dists/jaunty/Contents-i386.gz
# 签名包列表
apt-ftparchive -c dists/jaunty/pt.conf  release dists/jaunty > dists/jaunty/Release
gpg -a --detach-sign -o dists/jaunty/Release.gpg dists/jaunty/Release
##  目录结构:  
|-- dists
|   |-- jaunty
|   |   |-- Contents-i386.gz
|   |   |-- pt.conf
|   |   |-- Release
|   |   |-- Release.gpg
|   |   |-- main
|   |   |   |-- binary-amd64
|   |   |   |-- binary-i386
|   |   |   |   |-- Packages
|   |   |   |   |-- Packages.gz
|   |   |   |   |-- Release
|   |   |   |-- i18n
|   |   |   |-- source
|   |   |-- multiverse
|   |   |   |-- binary-amd64
|   |   |   |-- binary-i386
|   |   |   |-- i18n
|   |   |   |-- source
|   |   |-- restricted
|   |   |   |-- binary-amd64
|   |   |   |-- binary-i386
|   |   |   |-- i18n
|   |   |   |-- source
|   |   |-- universe
|   |   |   |-- binary-amd64
|   |   |   |-- binary-i386
|   |   |   |   |-- Packages
|   |   |   |   |-- Packages.gz
|   |   |   |   |-- Release
|   |   |   |-- i18n
|   |   |   |-- source
|-- pool
|   |-- main
|   |   |-- a
|   |   |   |-- abc.deb
|   |   |-- b
|   |   |   |-- bcd.deb
|   |   |-- f
|   |   |   |-- fci.deb
|   |-- multiverse
|   |-- restricted
|   |-- universe
|   |   |-- s
|   |   |   |-- stu.deb
|   |   |-- t
|   |   |   |-- test1.deb
|-- project
|   |-- myubtrepo-keyring.gpg
#### 使用源: 在 /etc/apt/sources.list.d/20-myubtrepo.list 加入   
deb     file:///media/g/myubtrepo/ jaunty main universe
#deb-src file:///media/g/myubtrepo/ jaunty main universe
# 类型: deb,deb-src (二进制或源码包)
# 路径: file:///path/to,   http://www.name.org/ubuntu,   ftp://ftp.name.org/ubuntu,
# 发行版名: intrepid, jaunty,
# 软件包分类: main restricted universe multiverse (ubuntu默认固定使用)
#### 添加签名公钥
# 下载仓库的签名公钥并加入
sudo apt-key add myubtrepo-keyring.gpg
#### apt-get update 生成的软件包列表(下划线分隔目录,原目录下划线变成%5f)
/var/lib/apt/lists/_media_g_myubtrepo_dists_jaunty_main_binary-i386_Packages
/var/lib/apt/lists/_media_g_myubtrepo_dists_jaunty_Release
/var/lib/apt/lists/_media_g_myubtrepo_dists_jaunty_Release.gpg

/var/lib/apt/lists/_media_g_myubtrepo_dists_jaunty_universe_binary-i386_Packages


##############################################################################################################

首先下载好debian的全部iso, 我下的是最新的6.0.7, 一共8张

安装环境是虚拟机

给虚拟机再添加7个光驱, 把debian的所有的iso都挂载上去

新建一个目录/var/sources/

用于存储debian光盘里面全部的软件包

挂载iso后, 把iso下所有的pool文件全部拷贝到 /var/sources/

cp -R /mnt/cd0/pool /var/sources/
cp -R /mnt/cd1/pool /var/sources/
cp -R /mnt/cd2/pool /var/sources/
cp -R /mnt/cd3/pool /var/sources/
cp -R /mnt/cd4/pool /var/sources/
cp -R /mnt/cd5/pool /var/sources/
cp -R /mnt/cd6/pool /var/sources/
cp -R /mnt/cd7/pool /var/sources/

安装dpkg-scanpackages

apt-get install dpkg-dev

这个工具就是debian带的源操作的工具

/var/sources/下新建2个目录, 用于存放Pakcages

mkdir -p /var/sources/dists/squeeze/main/binary-amd64
mkdir -p /var/sources/dists/squeeze/contrib/binary-amd64

由于我是用的64位squeeze, 具体目录名字对应版本修改下

最后通过dpkg-scanpackages扫描pool下的全部软件包, 该操作会用很长时间, 具体我没记

dpkg-scanpackages pool/main | gzip > dists/squeeze/main/binary-amd64/Packages.gz
dpkg-scanpackages pool/contrib | gzip > dists/squeeze/contrib/binary-amd64/Packages.gz

Packages.gz备份一份 然后执行

gunzip Packages.gz

最后再还原成Packages.gz

生成Release文件

apt-ftparchive release . \
-o APT::FTPArchive::Release::Origin="Debian" \
-o APT::FTPArchive::Release::Label="Debian" \
-o APT::FTPArchive::Release::Suite="stable" \
-o APT::FTPArchive::Release::Version="6.0.7" \
-o APT::FTPArchive::Release::Codename="squeeze" \
-o APT::FTPArchive::Release::Date="Sat, 23 Feb 2013 10:54:11 UTC" \
-o APT::FTPArchive::Release::Architectures="amd64" \
-o APT::FTPArchive::Release::Components="main contrib" \
-o APT::FTPArchive::Release::Description="Description: Debian 6.0.7 Released 23 February 2013" \
> Release

生成Release.gpg

gpg -abs -o Release.gpg Release

等待扫描完毕后, 将/var/sources/发布到web目录上

我是拿nginx直接指向过去的

配置/etc/apt/sources.list

deb http://127.0.0.1/ squeeze main contrib

然后执行apt-get update, 接着安装想要的软件. 速度相当快


**************************************************************************************



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值