一些自己开发或者修改的debian程序,如果想使用apt-get工具进行安装的话,需要自己搭建debian软件源,本文简要介绍一下搭建方法。

  • 目录结构:
buildd@debian:~/debian-dev$ tree -d -L 4
.
├── dists
│   ├── jessie
│   │   ├── contrib
│   │   │   ├── binary-all
│   │   │   ├── binary-amd64
│   │   │   ├── binary-armel
│   │   │   ├── binary-armhf
│   │   │   └── source
│   │   ├── main
│   │   │   ├── binary-all
│   │   │   ├── binary-amd64
│   │   │   ├── binary-armel
│   │   │   ├── binary-armhf
│   │   │   └── source
│   │   └── non-free
│   │       ├── binary-all
│   │       ├── binary-amd64
│   │       ├── binary-armel
│   │       ├── binary-armhf
│   │       └── source
│   ├── jessie-dev -> jessie/
│   └── stable -> jessie
└── pool├── contrib├── main│   ├── a│   │   └── audit│   └── libs│       ├── libselinux│       └── libsepol└── non-free31 directories

dists目录用于存储repo信息,pool目录用于存储软件代码和编译好的deb包。

  • 修改Release配置文件,便于使用工具管理:
buildd@debian:~/debian-dev$ cat apt-release.cnf
APT::FTPArchive::Release::Codename "jessie-dev";
APT::FTPArchive::Release::Origin "ZWB";
APT::FTPArchive::Release::Components "main contrib non-free";
APT::FTPArchive::Release::Label "Debian ZWB";
APT::FTPArchive::Release::Architectures "amd64 armel armhf";
APT::FTPArchive::Release::Suite "stable";
  • 生成gpg密钥,用于对Release文件和deb包签名:
buildd@debian:~/debian-dev$ gpg --gen-key
gpg (GnuPG) 1.4.18; Copyright (C) 2014 Free Software Foundation, Inc.
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.请选择您要使用的密钥种类:(1) RSA and RSA (default)(2) DSA and Elgamal(3) DSA (仅用于签名)(4) RSA (仅用于签名)
您的选择? 4
RSA 密钥长度应在 1024 位与 4096 位之间。
您想要用多大的密钥尺寸?(2048)2048
您所要求的密钥尺寸是 2048 位
请设定这把密钥的有效期限。0 = 密钥永不过期<n>  = 密钥在 n 天后过期<n>w = 密钥在 n 周后过期<n>m = 密钥在 n 月后过期<n>y = 密钥在 n 年后过期
密钥的有效期限是?(0) 10y
密钥于 2026年03月22日 星期日 15时13分27秒 CST 过期
以上正确吗?(y/n)y您需要一个用户标识来辨识您的密钥;本软件会用真实姓名、注释和电子邮件地址组合
成用户标识,如下所示:“Heinrich Heine (Der Dichter) <heinrichh@duesseldorf.de>”真实姓名:your name
电子邮件地址:your_email@xxx.com
注释:comm
您选定了这个用户标识:“your name (comm) <your_email@xxx.com>”更改姓名(N)、注释(C)、电子邮件地址(E)或确定(O)/退出(Q)?o
您需要一个密码来保护您的私钥。我们需要生成大量的随机字节。这个时候您可以多做些琐事(像是敲打键盘、移动
鼠标、读写硬盘之类的),这会让随机数字发生器有更好的机会获得足够的熵数。随机字节不够多。请再做一些其他的琐事,以使操作系统能搜集到更多的熵!
(还需要190字节)
......+++++
..+++++
gpg: 密钥 A9A6BBB3 被标记为绝对信任
公钥和私钥已经生成并经签名。gpg: 正在检查信任度数据库
gpg: 需要 3 份勉强信任和 1 份完全信任,PGP 信任模型
gpg: 深度:0 有效性:  2 已签名:  0 信任度:0-,0q,0n,0m,0f,2u
gpg: 下次信任度数据库检查将于 2026-03-22 进行
pub   2048R/A9A6BBB3 2016-03-24 [有效至:2026-03-22]
密钥指纹 = 5BBC 569F A8D9 F81F 6F11  BC0C E3CF 8397 A9A6 BBB3
uid                  your name (comm) <your_email@xxx.com>请注意这把密钥还不能用来加密,您必须先用“--edit-key”指令
生成用于加密的子钥。
#可以使用 gpg --list-keys 进行密钥对的查询
#可以使用 gpg --export A9A6BBB3 > Release.gpg 导出公钥,用于使用者添加信任密钥
  • 编写软件源自动化管理脚本:
buildd@debian:~/debian-dev$ cat auto.sh
#!/bin/sh

ARCH="amd64 armhf armel"
COMP="contrib main non-free"for arch in $ARCH
dofor cc in $COMP dodpkg-scanpackages -a $arch pool/$cc > dists/jessie/$cc/binary-$arch/Packagesgzip -9c dists/jessie/$cc/binary-$arch/Packages > dists/jessie/$cc/binary-$arch/Packages.gzdone
donefor cc in $COMP
dodpkg-scansources pool/$cc > dists/jessie/$cc/source/Sourcesgzip -9c dists/jessie/$cc/source/Sources > dists/jessie/$cc/source/Sources.gz
donerm -f dists/jessie/Release
rm -f dists/jessie/InRelease
rm -f dists/jessie/Release.gpg
apt-ftparchive -c /home/buildd/debian-dev/apt-release.cnf  release dists/jessie > .Release
mv .Release dists/jessie/Release
gpg --clearsign -o dists/jessie/InRelease dists/jessie/Release
gpg -o dists/jessie/Release.gpg -abs dists/jessie/Release#以上脚本用于生成Packages文件和Sources文件,并生成.gz压缩包;
#apt-ftparchive release时用到了上一步的apt-release.cnf配置文件,用于Release文件头部分信息的生成;
  • 软件源的使用:
    本地软件源可以使用file::///形式进行配置,也可使用Apache服务器进行网络发布,具体参照/etc/apt/source.list文件进行配置。需要注意的是:使用之初需要添加自己的公钥为信任密钥,可使用apt-key add进行导入。
buildd@debian:~/debian-dev$ cat /etc/apt/sources.listdeb http://192.168.1.2/debian-dev jessie-dev contrib main
deb-src http://192.168.1.2/debian-dev jessie-dev contrib maindeb http://ftp.debian.org/debian jessie contrib main
deb-src http://ftp.debian.org/debian jessie contrib main
  • 其他问题

原件源的优先级问题
如果source.list文件中配置的两个软件源有重复软件,需要使用Pin-Priority进行定义优先级。例如:

buildd@debian:~/debian-dev$ cat /etc/apt/preferences
Package: *
Pin: release n=jessie-dev
Pin-Priority: 600Package: *
Pin: release n=jessie
Pin-Priority: 500#本例中软件源的发行版name设定为jessie-dev,优先级为600,官方源优先级定义为500,所有在使用apt-get的时候如果有重复的软件会根据优先级进行判别从哪个源进行下载安装;#可使用apt-cache policy package_name进行查看软件现在地址细节

deb包签名:

dpkg-sig --sign builder file1.deb

Debian本地源的搭建方法相关推荐

  1. Debian本地源的创建及应用

    一.创建本地源 1.apt-get install dpkg-dev (先把dpkg-scanpackages命令装上) 2.cd /data/mysql mkdir /data/mysql/pool ...

  2. 解决安装rpm包依赖关系的烦恼 - yum工具介绍及本地源配置方法

    1.背景概述 在实际生产环境下,对于在linux系统上安装rpm包,主要面临两个实际的问题 1)安装rpm包过程中,不断涌现的依赖关系问题,导致需要按照提示或者查询资料,手工安装更多的包 2)由于内外 ...

  3. [zz]Ubuntu建立本地源实用案例

    Ubuntu建立本地源非常实用,很多服务器在局域网没有网络或者网络很慢的情况下,或者需要批量安装同样的软件的时候,如果每一台服务器都去外网下载,是不是很慢,而且也不是一个运维工程师愿意这么干的!那有什 ...

  4. Ubuntu制作本地源

    背景 平时apt-get install安装软件时,下载的deb文件都会存放在/var/cache/apt/archives/下,为了今后重装或给别人用,特别是没有网络时,这些deb文件实际上是可以派 ...

  5. ubuntu linux本地源,搭建Ubuntu 12.04 本地源

    搭建Ubuntu 12.04 本地源,彻底实现以后的内网安装OpenStack. 1. 安装apt-mirror工具 sudo apt-get install apt-mirror 或者下载源码编译, ...

  6. linux本地yum源与软件包管理,【Linux系统中的】本地yum源的搭建与使用yum源进行软件的下载...

    前言: 当我们在使用Linux系统时,有时需要一些辅助工具帮助我们实现某项功能, 例如画图.wps.等功能,而这些功能并不是系统自带的,需要我们下载相关的 软件,那如何去下载这些软件那,这里我们不得不 ...

  7. juju部署,本地源搭建

    本地源搭建与使用 说明 为ubuntu.maas.juju提供apt和stream的本地更新源. 目前暂时搞不定snap源,部署中依然需要访问海外网站访问下载少量文件及文件列表 juju必须使用htt ...

  8. bclinux使用yum卡主解决方法、bclinux用rpm安装本地源方法、Failed to set locale, defaulting to C.UTF-8解决方法、bclinux镜像下载地址

    文章目录 环境说明 bclinux使用yum卡主解决方法 说明 解决方法 方法1 方法2 bclinux用rpm安装离线源 下载http包 安装http包 测试 Failed to set local ...

  9. 安装及管理程序(yum搭建本地源,了解rmp命令,查询卸载软件包,编译安装的过程)

    文章目录 安装及管理程序 前言 linux命令与应用程序的关系 典型应用程序的目录结构 常见的软件包封装类型 查询RPM软件包信息 rpm概述 RPM机制封装命令格式 查询RPM软件包信息 查询未安装 ...

最新文章

  1. 数据科学的积累:海平面下的冰山 | 清华信息技术研究院郑方
  2. header+php+xiazai_php使用header函数实现文件下载
  3. 借入单的后续处理-借入归还
  4. 阿里云开发者大会核心看点揭晓,开发者最好的时代来了?
  5. 关于 SAP Spartacus 和 SmartEdit 集成的问题
  6. AltiumDesigner中PCB如何添加 Logo
  7. python3中的int类型占64位,有没有什么办法来强制Python来使用64位整数的Windows?
  8. apk 打包 java出错_Android Release 打包提示 错误:找不到符号
  9. 新加坡金融管理局主席:数字货币会使传统风险变得更加明显
  10. hnu 暑期实训之选美比赛
  11. Glib2版本差异初始化(三)
  12. 记录自己的心路文字~
  13. 配置RADIUS服务器
  14. c语言对称矩阵的压缩存储_对称矩阵的压缩存储和输出
  15. IDEA 中添加@author注释(live templates)
  16. 感恩—父亲节、母亲节由来及日期
  17. ECTouch多语言插件,ECSHOP手机版多语言翻译,ecshop手机端多国语言翻译切换,ECSHOP网站多语言切换
  18. 胡水生:中小型企业如何应对互联网的发展
  19. Dell服务器进入双系统按键,dell进bios按什么键 戴尔进bios的方法
  20. vs2017u5 exists, deleting.

热门文章

  1. alt在计算机中代表什么,计算机中alt+enter是什么快捷键
  2. Kubernetes学习二:资源管理及入门实战
  3. 图像处理学习 灰度图像与二值图像
  4. word07如何插入和删除分节符
  5. Xamarin for android学习总结一
  6. 计算机专业招聘人才的需求,对计算机专业人才需求现状
  7. 史上最全的大数据入门手册!
  8. C补习--------->第六天,二级指针、指针和数组的关系、选择排序
  9. html怎么搞一个微信图标,怎样在微信名字添加图标和微信名字里怎么加表情?什么系统都可以...
  10. Vue3实现将页面转成PDF并下载或直接打印