Apt本地源制作
方法一
缓存deb包
# apt install XXX
# mkdir -p /usr/local/mydebs
# find /var/cache/apt/archives/ -name *.deb | xargs -i mv {} /usr/local/mydebs/
搭建repo服务
# apt install nginx
# rm -rf /etc/nginx/sites-enabled/default
# vim /etc/nginx/sites-enabled/openstack-slushee.vhost
server {
listen 80;
server_name openstack-slushee;
# Logging
access_log /var/log/nginx/openstack-slushee.access.log;
error_log /var/log/nginx/openstack-slushee.error.log;
location / {
root /var/www/repo/;
autoindex on;
expires 5h;
}
}
# ln -s /usr/local/mydebs/ /var/www/repo
# systemctl restart nginx
创建GPG KEY
### 生成随机数
# apt install rng-tools
# rngd -r /dev/urandom
### 创建密钥
# gpg --gen-key
gpg (GnuPG) 1.4.20; Copyright (C) 2015 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.
Please select what kind of key you want:
(1) RSA and RSA (default)
(2) DSA and Elgamal
(3) DSA (sign only)
(4) RSA (sign only)
Your selection? 4
RSA keys may be between 1024 and 4096 bits long.
What keysize do you want? (2048) 1024
Requested keysize is 1024 bits
Please specify how long the key should be valid.
0 = key does not expire
<n> = key expires in n days
<n>w = key expires in n weeks
<n>m = key expires in n months
<n>y = key expires in n years
Key is valid for? (0)
Key does not expire at all
Is this correct? (y/N) y
You need a user ID to identify your key; the software constructs the user ID
from the Real Name, Comment and Email Address in this form:
"Heinrich Heine (Der Dichter) <heinrichh@duesseldorf.de>"
Real name: Repository
Email address:
Comment:
You selected this USER-ID:
"Repository"
Change (N)ame, (C)omment, (E)mail or (O)kay/(Q)uit? O
You need a Passphrase to protect your secret key.
gpg: gpg-agent is not available in this session
We need to generate a lot of random bytes. It is a good idea to perform
some other action (type on the keyboard, move the mouse, utilize the
disks) during the prime generation; this gives the random number
generator a better chance to gain enough entropy.
...+++++
+++++
gpg: /root/.gnupg/trustdb.gpg: trustdb created
gpg: key 3F21CDF4 marked as ultimately trusted
public and secret key created and signed.
gpg: checking the trustdb
gpg: 3 marginal(s) needed, 1 complete(s) needed, PGP trust model
gpg: depth: 0 valid: 1 signed: 0 trust: 0-, 0q, 0n, 0m, 0f, 1u
pub 1024R/3F21CDF4 2017-04-13
Key fingerprint = 2207 F410 60C5 D2D8 8168 60D0 E21E 0ADD 3F21 CDF4
uid Repository
Note that this key cannot be used for encryption. You may want to use
the command "--edit-key" to generate a subkey for this purpose.
导出key文件
# cd /var/www/repo
# gpg --list-keys
/root/.gnupg/pubring.gpg
------------------------
pub 1024R/3F21CDF4 2017-04-13
uid Repository
# gpg --output keyFile --armor --export 3F21CDF4
生成Packages.gz、Release、InRelease、Release.gpg文件
### 每次添加新deb包后都需要重新执行下面命令
# cd /var/www/repo
# 生成索引文件
# apt-ftparchive packages . > Packages
# gzip -c Packages > Packages.gz
# apt-ftparchive release . > Release
### 输入前面设置的GPG KEY密码
# gpg --clearsign -o InRelease Release
# gpg -abs -o Release.gpg Release
设置软件源
# apt-key add /var/www/repo/keyFile
# vim /etc/apt/sources.list
deb http://192.168.200.15/ ./
问题处理
gpg --gen-key失败
Not enough random bytes available. Please do some other work to give the OS a chance to collect more entropy! (Need 300 more bytes)
解决办法
# apt install rng-tools
# rngd -r /dev/urandom
方法二
使用apt-cacher-ng制作缓存
- 安装apt-cacher-ng
# apt install apt-cacher-ng
# vim /etc/apt-cacher-ng/acng.conf
CacheDir: /var/www/repo/pkg-cache
LogDir: /var/log/apt-cacher-ng
Port: 3142
BindAddress: 0.0.0.0
Remap-debrep: file:deb_mirror*.gz /debian ; file:backends_debian # Debian Archives
Remap-uburep: file:ubuntu_mirrors /ubuntu ; file:backends_ubuntu # Ubuntu Archives
Remap-debvol: file:debvol_mirror*.gz /debian-volatile ; file:backends_debvol # Debian Volatile Archives
Remap-cygwin: file:cygwin_mirrors /cygwin # ; file:backends_cygwin # incomplete, please create this file or specify preferred mirrors here
Remap-sfnet: file:sfnet_mirrors # ; file:backends_sfnet # incomplete, please create this file or specify preferred mirrors here
Remap-alxrep: file:archlx_mirrors /archlinux # ; file:backend_archlx # Arch Linux
Remap-fedora: file:fedora_mirrors # Fedora Linux
Remap-epel: file:epel_mirrors # Fedora EPEL
Remap-slrep: file:sl_mirrors # Scientific Linux
ReportPage: acng-report.html
PidFile: /var/run/apt-cacher-ng
ExTreshold: 4
LocalDirs: acng-doc /usr/share/doc/apt-cacher-ng
PassThroughPattern: .*
- 修改软件源
# echo "Acquire::http::Proxy \"http://192.168.200.10:3142\";" > /etc/apt/apt.conf.d/00apt-cacher-proxy
- 下载软件
# apt update
### deb将被缓存到/var/www/repo/pkg-cache目录
# apt install vim
将apt-cacher缓存的源做成镜像
- 复制目录结构
# cd /var/www/repo
### 打印apt-cacher-ng缓存的deb
# tree pkg-cache
├── mirror.rackspace.com
│ └── mariadb
│ └── repo
│ └── 10.0
│ └── ubuntu
│ ├── dists
│ │ └── xenial
│ │ ├── InRelease
│ │ ├── InRelease.head
│ │ └── main
│ │ ├── binary-amd64
│ │ │ ├── Packages.gz
│ │ │ └── Packages.gz.head
│ │ └── binary-i386
│ │ ├── Packages.gz
│ │ └── Packages.gz.head
│ └── pool
│ └── main
│ ├── g
│ │ └── galera-3
│ │ ├── galera-3_25.3.19-xenial_amd64.deb
│ │ └── galera-3_25.3.19-xenial_amd64.deb.head
│ └── m
│ └── mariadb-10.0
│ ├── libmariadbclient18_10.0.30+maria-1~xenial_amd64.deb
│ ├── libmariadbclient18_10.0.30+maria-1~xenial_amd64.deb.head
│ ├── libmariadbclient-dev_10.0.30+maria-1~xenial_amd64.deb
│ ├── libmariadbclient-dev_10.0.30+maria-1~xenial_amd64.deb.head
│ ├── libmysqlclient18_10.0.30+maria-1~xenial_amd64.deb
│ ├── libmysqlclient18_10.0.30+maria-1~xenial_amd64.deb.head
│ ├── mariadb-client-10.0_10.0.30+maria-1~xenial_amd64.deb
│ ├── mariadb-client-10.0_10.0.30+maria-1~xenial_amd64.deb.head
│ ├── mariadb-client_10.0.30+maria-1~xenial_all.deb
│ ├── mariadb-client_10.0.30+maria-1~xenial_all.deb.head
│ ├── mariadb-client-core-10.0_10.0.30+maria-1~xenial_amd64.deb
│ ├── mariadb-client-core-10.0_10.0.30+maria-1~xenial_amd64.deb.head
│ ├── mariadb-common_10.0.30+maria-1~xenial_all.deb
│ ├── mariadb-common_10.0.30+maria-1~xenial_all.deb.head
│ ├── mariadb-galera-server-10.0_10.0.30+maria-1~xenial_amd64.deb
│ ├── mariadb-galera-server-10.0_10.0.30+maria-1~xenial_amd64.deb.head
│ ├── mysql-common_10.0.30+maria-1~xenial_all.deb
│ └── mysql-common_10.0.30+maria-1~xenial_all.deb.head
├── ubuntu-cloud.archive.canonical.com
│ └── ubuntu
│ ├── dists
│ │ └── xenial-updates
│ │ └── newton
│ │ ├── main
│ │ │ ├── binary-amd64
│ │ │ │ ├── Packages.gz
│ │ │ │ └── Packages.gz.head
│ │ │ └── binary-i386
│ │ │ ├── Packages.gz
│ │ │ └── Packages.gz.head
│ │ ├── Release
│ │ ├── Release.gpg
│ │ ├── Release.gpg.head
│ │ └── Release.head
│ └── pool
│ └── main
│ ├── d
│ │ └── dnsmasq
│ │ ├── dnsmasq_2.76-4~cloud0_all.deb
│ │ ├── dnsmasq_2.76-4~cloud0_all.deb.head
│ │ ├── dnsmasq-base_2.76-4~cloud0_amd64.deb
│ │ ├── dnsmasq-base_2.76-4~cloud0_amd64.deb.head
│ │ ├── dnsmasq-utils_2.76-4~cloud0_amd64.deb
│ │ └── dnsmasq-utils_2.76-4~cloud0_amd64.deb.head
│ └── p
│ ├── pyopenssl
│ │ ├── python-openssl_16.1.0-1~cloud0_all.deb
│ │ └── python-openssl_16.1.0-1~cloud0_all.deb.head
│ ├── python-cryptography
│ │ ├── python-cryptography_1.5-2ubuntu0.1~cloud0_amd64.deb
│ │ └── python-cryptography_1.5-2ubuntu0.1~cloud0_amd64.deb.head
│ └── python-setuptools
│ ├── python-pkg-resources_26.1.1-1~cloud0_all.deb
│ ├── python-pkg-resources_26.1.1-1~cloud0_all.deb.head
│ ├── python-setuptools_26.1.1-1~cloud0_all.deb
│ └── python-setuptools_26.1.1-1~cloud0_all.deb.head
### 复制源目录结构
# cp -r pkg-cache/mirror.rackspace.com/mariadb/repo/10.0/ubuntu/ mariadb
# cp -r pkg-cache/ubuntu-cloud.archive.canonical.com/ubuntu/ ubuntu-cloud
- 修改软件源
# tree mariadb/dists
# tree ubuntu-cloud/dists
### 1.deb url中的url指向的是dists和pool的父目录
### 2.deb url后面的格式规范:第一个是能找到Release/InRelease文件的目录结构,例如mariadb的就是xenial,ubuntu-cloud就是xenial-updates/newton;第二个就是第一个的子目录名,例如mariadb的就是main,ubuntu-cloud也是main
### 3.如果apt update的时候提示对应deb源的packages没找到,则需要删除对应项,例如"deb http://172.29.248.10:8181/ubuntu-repo xenial-security main universe multiverse"提示"Err:14 http://172.29.248.10:8181/ubuntu-repo xenial-security/multiverse Translation-en 404",则修改源为"deb http://172.29.248.10:8181/ubuntu-repo xenial-security main universe"即可
# vim /etc/apt/sources.list
deb http://172.29.248.10:8181/mariadb xenial main
deb http://172.29.248.10:8181/ubuntu-cloud xenial-updates/newton main
### 如果更新失败,去ubuntu keyserver上下载对应gpg添加上即可
# apt update
参考资料
Apt本地源制作的更多相关文章
- YUM本地源制作与yum网络版仓库
1.修改本机上的YUM源配置文件,将源指向自己 cd /etc/yum.repos.d/ 备份原有的YUM源的配置文件 rename .repo .repo.bak * rename CentOS-M ...
- 【linux】yum本地源制作
在/etc/yum.repos.d/ 目录下,有两个文件 CentOS-Base.repo和 CentOS-Media.repo 其中CentOS-Base.repo 记录着网络上的 yum 源的地 ...
- CentOS 6.5 PYPI本地源制作
转载:blog.csdn.net/tantexian 一.安装pip2pi工具: pip install pip2pi 或 git clone https://github.com/wolever ...
- Yum本地源制作
参考文档 环境准备 # cat /etc/os-release NAME="CentOS Linux" VERSION="7 (Core)" ID=" ...
- centos 7_本地源制作
1.安装工具 yum install yum-utils createrepo yum-plugin-priorities 2.自己创建一个阿里源 vim /etc/yum.repos.d/ope ...
- ubuntu制作本地源
背景 平时apt-get install安装软件时,下载的deb文件都会存放在/var/cache/apt/archives/下,为了今后重装或给别人用,特别是没有网络时,这些deb文件实际上是可以派 ...
- Ubuntu 16.04 LTS制作本地源
平时apt-get install安装软件时,下载的deb文件都会存放在/var/cache/apt/archives/下,没有网络时就需要将这些deb制作成本地源.另外,如果在本机架一个简单的网络服 ...
- ubuntu下的apt-get内网本地源的搭建
APT本地源的搭建(可用于局域网apt-get源搭建或者本地源) 本文档介绍使用apt-mirror软件搭建apt本地源 需求:内网开发环境由于其特定原因不能上外网,所以需要本地环境下的内网源来方便开 ...
- Linux软件源书写格式解析及本地yum源制作
1.Debian类系统 配置文件:/etc/apt/sources.list 例子:deb https://mirrors.aliyun.com/kali kali-rolling main cont ...
随机推荐
- 【题解】P4247 [清华集训]序列操作(线段树修改DP)
[题解]P4247 [清华集训]序列操作(线段树修改DP) 一道神仙数据结构(DP)题. 题目大意 给定你一个序列,会区间加和区间变相反数,要你支持查询一段区间内任意选择\(c\)个数乘起来的和.对1 ...
- AsyncHttpClien访问网络案例分析
Android数据存储的四种方式分别是:SharedPreferences存储.File文件存储.Network网络存储和sqlite数据库存储,网络存储需要使用AsyncHttpClient发送请求 ...
- CMMI过程改进反例
近期一直在看CMMI的资料,越看认为越有意思.今天看到过程改进的时候,突然想起来之前所在的公司发生的过程改进相关的事儿来. 公司通过CMMI3级认证之后.PMO部门经理(公司还有质量管理部门经理 ...
- linux c编程:文件的读写
Linux系统中提供了系统调用函数open()和close()用于打开和关闭一个存在的文件 int open(const char *pathname,int flags) int open(cons ...
- PHP接口中的静态变量、常量与类中静态变量、常量的区别
接口: 1 不能够定义静态变量(常量除外) 2 定义的常量 const YOUCONST = VALUE,不能在子类中覆盖,在子类中以 interfaceName::YOUCONST的方式调用 3 不 ...
- 微信小程序开发:学习笔记[2]——WXML模板
微信小程序开发:学习笔记[2]——WXML模板 快速开始 介绍 WXML 全称是 WeiXin Markup Language,是小程序框架设计的一套标签语言,结合小程序的基础组件.事件系统,可以构建 ...
- PAT 甲级 1041. Be Unique (20) 【STL】
题目链接 https://www.patest.cn/contests/pat-a-practise/1041 思路 可以用 map 标记 每个数字的出现次数 然后最后再 遍历一遍 找到那个 第一个 ...
- iOS 多语言支持
如果app将来面向国际化,比如说中国需要使用,美国也需要使用,此时就需要考虑app支持多国语言 具体方式如下 首先在Supporting Files中新建 Strings 起名: Localizabl ...
- matplotlib和numpy 学习笔记
1. 在二维坐标系中画一个曲线 import matplotlib.pyplot as plt #data len=400, store int value data = [] #set x,y轴坐标 ...
- BZOJ 4435 [Cerc2015]Juice Junctions 分治最小割+hash
分治最小割的题目,要求n2. 之前用的n3的方法自然不能用了. 于是用hash,设hash[i][j]表示在最小割为i的时候,j是否与S联通. 看懂这个需要理解一下最小割树的构造. 这种题建议用EK写 ...