1. 服务端软件源构建

1.1. 获取软件包

软件包的获取来源根据需求选择:

  • 自己构建的 deb 软件包
  • 从其他存储获取的 deb 软件包
  • 从软件源获取目标软件包,如果不知道有哪些依赖包,可以在能上网的机器上执行 apt-get install *** 安装一次软件,默认安装包会存储在 /var/cache/apt/archives。将获取的软件归置在一个目录中,例如 : /var/packages。如果不需要安装可以使用 sudo apt-get -d install <包名> 只下载不安装

1.2. 构建本地 apt 源(apt版本低于1.5)

使用 dpkg-scanpackages 命令生成 APT 可以使用的软件包索引文件

$ cd /var/
$ dpkg-scanpackages packages /dev/null | gzip> packages/Packages.gz 
$ dpkg-scanpackages sources /dev/null | gzip> packages/Sources.gz

注意一下路径问题。等待系统扫描完所有的软件包后,会返回命令行,并且在 packages 文件夹中生成一个名为 Packages.gz 的压缩文件,存有这个文件夹中的软件包信息及其依赖关系。

/etc/apt/sources.list 中添加

deb file:///var/packages/ hasty main universe multiverse
或者
deb file:///var/    packages/

注意斜杠和空格!

打开终端,输入

#apt-get update(修改了sources.list文件之后一定要执行一下这个命令)

以更新本地的软件包列表

1.3. 构建本地 apt 源(apt版本高于1.5)

同上获取软件包

生成索引文件

apt-ftparchive packages . > Packages 
apt-ftparchive release . > Release 

生成签名

以下操作在 /opt/debs 目录下进行

生成私钥信息

$ gpg --gen-key

......

gpg: /root/.gnupg/trustdb.gpg: trustdb created
gpg: key A035D65B714C3CED marked as ultimately trusted
gpg: directory '/root/.gnupg/openpgp-revocs.d' created
gpg: revocation certificate stored as '/root/.gnupg/openpgp-revocs.d/B394614D9EE5DB4DBC84B26FA035D65B714C3CED.rev'
public and secret key created and signed.

pub   rsa3072 2021-05-07 [SC] [expires: 2023-05-07]
      B394614D9EE5DB4DBC84B26FA035D65B714C3CED
uid                      wenyu <wenyu@gmail.com>
sub   rsa3072 2021-05-07 [E] [expires: 2023-05-07]

过程需要填写用户名和邮箱信息提示,以及配置密码信息提示。随后会生成秘钥,但是过程中需要有足够的随机场景获取熵,如果等待时间较长,参考 FAQ 中 "运行GPG --GEN-KEY生成KEY时出现卡住的问题"

添加私钥

gpg -a --export B394614D9EE5DB4DBC84B26FA035D65B714C3CED | apt-key add -
OK

认证

gpg --clearsign -o InRelease Release
gpg -abs -o Release.gpg Release

配置 sources.list 文件

deb file:///opt/debs/ /

1.4. 构建 http 源

使用 nginx / httpd 或其他 web 服务器,将网站的根路径指定为软件源的根路径

1.5. 构建 ftp 源

使用 vsftpd 或其他 ftpd 服务器,将网站的根路径指定为软件源的根路径

1.6. FAQ

1.6.1. 运行GPG --GEN-KEY生成KEY时出现卡住的问题

背景 在搭建Ubuntu16.04的本地apt源时,需要运行“gpg --gen-key”命令,但是在执行该命令时,出现了:“Not enough random bytes available. Please do some other work to give the OS a chance to collect more ”的提示,而且一直卡住。

分析

更详细的提示,参加:

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.

根据提示,该命令生成key时,需要kernel为该程序生成足够多的随机数,因此,我们只需要为kernel生成随机数即可。

解决方法:

安装 rng-tools 工具,该工具可以像指定文件生成随机数。这里,我们不需要退出原正在执行 gpg --gen-key命令的 console,新建一个终端,执行如下命令。命令执行完成后,原来卡住的界面就恢复运行了。

$ apt-get install rng-tools
$ rngd -r /dev/urandom

1.6.2. does not have a Release file.

然后可以用 apt-get install 命令安装本地源中含有的软件包了。

如果上面的步骤中报错说

The repository 'file:/media debs/ Release' does not have a Release file.

可用 apt-get update --allow-insecure-repositories,这个时侯错误就会变成警告,也能正常安装软件。

Copyright © 温玉 2021 | 浙ICP备2020032454号 all right reserved,powered by Gitbook该文件修订时间: 2023-06-19 08:59:50

results matching ""

    No results matching ""