Ubuntu 搭建 APT 仓库

前言

最近公司需要搭建一个 APT 仓库,方便安装内部开发的 Debian 包,然后就研究了一下 APT 仓库的部署。因为我比较懒目前使用的 Debian 包比较少,所以就搭建了一个简单的仓库甚至没有添加校验。简单版的仓库没有对 Debian 包进行分类,不简单版本的仓库可以参考 Debian/Ubuntu 的官方仓库,这里就不说明了,以后可能会更新一篇博客说明吧。

原理

使用 http 服务器对外提供访问的地址和端口,仓库本身的一些 list 文件使用 apt 和 dpkg 的工具生成,校验方面使用 gpg 的密钥。搭建好仓库之后,客户端需要添加信任仓库的公钥,再配上源地址就可以从仓库中下载安装 Debian 包了。下面的例子使用 Apache 搭建 http 服务器,使用 Nginx 也可以。但是我没试过。

APT 仓库搭建

安装 Apache2

1)安装
$ sudo apt install apache2

2)查看 Apache 服务状态
$ systemctl status apache2
默认是安装完自启动的,没有启动的话可以用命令启动:
$ sudo systemctl start apache2

3)修改 Apache 端口号
默认使用的端口是 80 ,我发现好像很多服务端口默认都是 80 的,建议修改成其他,以免冲突。修改前先查一下端口有没有被占用。
例如,查看 8080 端口是否被占用
$ netstat -ap | grep 8080

修改 Apache 端口
把 /etc/apache2/ports.conf 文件 “Listen 80” 的 80 改成你想要的端口。
文件的注释说还要修改 /etc/apache2/sites-enabled/000-default 文件,把这个文件 VirtualHost 语句的 80 也改成你想要的端口。

改完两个文件应该稳了,重启服务
$ sudo systemctl restart apache2

4)测试 Apache
浏览器输入URL:http://[IP]:[PORT]
本机测试 IP 可以填 localhost ,PORT 填刚才修改的端口。
如无意外,你可以看到 Apache 的宣传页面。有意外的话,出门左转百度一下

APT 仓库配置

Apache 服务默认的目录是 “/var/www/html”,要改成其他路径的话,修改 “/etc/apache2/sites-available/000-default.conf” 文件的 “DocumentRoot” 语句,把后面的路径改成你想要的就可以了,改完需要重启服务。

1)创建目录
用于存放你的 Debian 包,在 Apache 的目录下就好
$ sudo mkdir -p /var/www/html/debian/release
把 Debian 包拷贝到这个目录

2)扫描 Debian 包生成 Packages 文件
Packages 文件记录当前目录所有 Debian 包的信息,类似 list 文件。
$ cd /var/www/html/debian/release
$ dpkg-scanpackages -m . > Packages

3)生成 Release 文件
Release 文件包含了 Packages 等文件的大小和校验和(包括MD5/SHA256/SHA512),主要用于客户端校验。新版本的 APT 为了加强安全性,需要仓库生成一个 Release 文件做校验,如果 Release 文件描述和实际读取的不一致,APT 就会拒绝这个仓库,好像在 Ubuntu 16.04 和之后的版本都是这样。
生成 Release 文件
$ cd /var/www/html/debian/release
$ apt-ftparchive release . > Release

密钥

使用 gpg 生成的密钥做签名和校验。

1)生成密钥
安装 gnupg
$ sudo apt install gnupg

生成密钥
$ gpg --gen-key
根据提示完成操作

查看用户密钥
$ gpg --list-keys

2)生成 Release.gpg 文件和 InRelease 文件
Release.gpg 是签名文件,和 Release 一起使用,旧版本 APT 只认这两个文件;
InRelease 是内嵌签名的(可以当做是 Release.gpg 和 Release 的组合),新版本 APT 支持;

生成 Release.gpg
$ cd /var/www/html/debian/release
$ gpg --armor --detach-sign -o Release.gpg Release

生成 InRelease
$ gpg --clearsign -o InRelease Release

3)导出公钥
导出的公钥提供给客户端添加信任,可以把公钥上传到服务器提供下载。

导出公钥
$ cd /var/www/html/debian/release
$ gpg --armor --output lk.asc --export lk@163.com
这里导出公钥的文件名是 lk.asc 可以自定义
邮箱填写你 创建密钥时填写的邮箱

客户端使用

添加软件源

可以把源地址直接添加到 /etc/apt/sources.list 文件,这里新建文件保存。
$ echo “deb http://[IP]:[PORT]/debian/release ./” | sudo tee /etc/apt/sources.list.d/lk.list

PS:
1)/etc/apt/sources.list.d 目录可以存放不同的第三方源,文件后缀是 .list 即可;
2)IP 和 PORT 填写 Apache 服务器的;
3)不需要校验的话,可以添加信任选项,加上 [trusted=yes] 字段,就不用添加公钥了,源地址改为:
deb [trusted=yes] http://[IP]:[PORT]/debian/release ./

添加公钥

1)从 Apache 服务器下载前面生成的公钥文件
$ wget http://[IP]:[PORT]/debian/release/lk.asc

2)添加公钥
$ sudo apt-key add lk.asc

如果不需要了,可以删除公钥,步骤:
查看公钥列表
$ apt-key list
删除公钥
$ sudo apt-key del lk@163.com
邮箱填导出公钥时的邮箱,也可以用公钥的 ID(公钥列表有)

安装 Debian 包

1)更新软件包列表
$ sudo apt update

2)安装
$ sudo apt install xxxx

PS:
如果想对服务器的 Debian 包做简单的分类可以在服务器创建不同的目录,构建多个仓库,然后客户端把对应的源地址添加上就可以了。虽然有点麻烦,但也是不是不能用。如果确实比较详细的分类,可以参考 Ubuntu/Debian 的官方仓库来部署。

  • 3
    点赞
  • 21
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
搭建Ubuntu局域网apt-get源是为了提供一个内部网络上的软件下载和更新服务,以减少对外部网络的依赖并提高下载速度。 首先,我们需要一台拥有Ubuntu操作系统的服务器作为apt-get源服务器。确保该服务器能够连接至互联网,并设置一个静态IP地址,以便其他设备能够访问到它。 接下来,打开终端并以root用户身份登录服务器。首先我们需要安装apache2软件包来搭建一个Web服务器。在终端中输入以下命令进行安装: sudo apt-get update sudo apt-get install apache2 安装完成后,我们需要配置apt仓库的根目录。默认情况下,apt仓库的根目录位于/var/www/html目录下。我们可以通过修改默认的配置文件来更改该目录。在终端中输入以下命令打开配置文件: sudo nano /etc/apache2/sites-available/000-default.conf 在编辑器中,找到并修改以下行: DocumentRoot /var/www/html 将其修改为你希望的apt仓库的根目录路径。保存文件并退出。 接下来,我们需要在该根目录下创建一个文件夹作为apt仓库的存储位置。在终端中输入以下命令: sudo mkdir -p /var/www/html/ubuntu 然后,将需要的Ubuntu软件包拷贝到该文件夹下。你可以通过下载这些软件包,然后使用以下命令将其复制到该文件夹下: sudo cp [软件包路径] /var/www/html/ubuntu 注意,你可以将多个软件包复制到该文件夹下,以便提供不同的软件选择。 最后,我们需要更新apt源列表以添加新的源。在终端中输入以下命令: sudo apt-get update 现在,你的局域网内的其他设备就可以通过以下命令来访问并安装这些软件包: sudo apt-get install [软件包名称] 通过搭建Ubuntu局域网apt-get源,你的内部网络就能够更高效地下载和更新软件,减少对外部网络的依赖。同时,你也可以根据需要添加更多的软件包到apt仓库中,以提供更多的选择。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值