在ubuntu中,apt是一个LST版本提供的非常常用的包安装工具。其核心逻辑是进行deb包的安装,并且可以使用apt install命令进行直白的网络获取,网络安装。
deb包本身的结果,deb包可以使用dpkg-deb工具进行打包,项目目录下包含control文件,这个文件描述Package包名、Version版本、Maintainer作者、Description描述,并在使用工具进行打包时根据项目文件根目录自动进行deb安装时的文件展开。
APT执行install <name>命令时,会首先/var/lib/apt/lists/目录下寻找tar.gz这样的文件,这样的文件是由类似dpkg-scanpackages这样的工具,在服务器端(apt的deb包提供端)进行deb包的根目录下遍历形式的打包。
APT的install命令维护由update和upgrade命令完成,update的含义是,更新/var/lib/apt/lists/目录下由source.list文件指定镜像源的package索引文件,upgrade的意思是,检查/var/lib/apt/lists/目录下的索引文件是否存在source.list所引用,顺便还会检查软件包版本是不是可以更新了。
所以,完成一次APT调用的客户端动作为:
修改/etc/apt/sources.list文件中指定的镜像源
执行apt update命令,从新的镜像源获取package文件
执行apt upgrade命令,升级已有软件版本并清理无源的package文件
执行install命令,apt首先检查/var/lib/apt/lists/下的package文件中是否有<name>对应的包,如果有,就依照package文件中描述的源发送get命令给服务端,下载后视为执行deb安装
完成一次APT调用的服务端行为是:
软件开发好后,以dpkg-deb工具进行deb打包
部署反向代理,将https或ftp的镜像代理指向本地目录
在反向代理标记的目录中,把deb包丢过去,并且在目录下执行dpkg-scanpackages生成package文件
等apt发送请求来获取文件即可