一个简单的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 源
首先下载好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
,
接着安装想要的软件. 速度相当快
**************************************************************************************