当前位置: 首页 > news >正文

公司内部建立apt源

有一篇建立pypi源的在这里需要的可以查看:公司内部建立pypi源-CSDN博客

背景,公司内部有很多工具仅供内部使用,如果用apt的方式就比较方便,只需要修改sources.list将源添加进去就可以了。我们接下来的操作就是为了实现这个需求。

一共三部分,第一部分,安装nginx搭建web 服务器!第二部分,建立APT源目录结构!第三部分客户端添加源到sources.list并测试安装成功!

1.安装nginx搭建web服务器:

sudo apt install nginx

(1)在/var/www/html/目录下创建apt源文件夹
 

cd /var/www/html/

mkdir ubuntu

配置web服务器参数:

sudo vim /etc/nginx/sites-availabe/test 

内容修改如下:

server {
        listen 80;
        server_name 8.8.8.8;
        root /var/www/html;
        index index.nginx-debian.html; #这里的文件按照/var/www/html目录下面实际的文件填!不要一上来就写index.html!这里是一个小坑
        location /ubuntu { #这里也不是非要写ubuntu 具体要按照实际填写,俺准备将apt源放在ubuntu下面,ubuntu是我上面新创建的文件夹
                autoindex on;
                try_files $uri $uri/ = 404;
       }
}
sudo ln -s /etc/nginx/sites-availabe/test /etc/nginx/sites-enable

开启服务器:

systemctl restart nginx.service
systemctl status nginx.service

如果nginx server启动不成功,执行下面命令进行分析:

sudo nginx -t

上面这个命令会提示你/etc/nginx/sites-available/test是否有错误,我就是第一次没成功,因为我把root /var/www/html 写成了 billxu /var/www/html 这里自己不要瞎改哦!浪费时间!

好了,现在你解决了一些问题,或者直接就启用成功,恭喜,你现在可以在其他可以ping通你这个server服务器,web 页面访问你的服务器了!

浏览器输入:http://8.8.8.8

页面显示如下:

说明你成功了!

你也可以访问:http://8.8.8.8/ubuntu 这时候会出现目录,但是你的目录目前是空的。

2.建立APT源目录结构(不要着急执行命令,先看一下5~7行命令注意事项)

准备工作,安装包管理工具dpkg:

sudo apt install dpkg-dev

这里要啰嗦几句,咳咳,apt对目录十分敏感,所以我们创建文件目录什么的要绝对认真!

1.cd /var/www/html/ubuntu
2.sudo mkdir -p dists/focal/main/binary-amd64
3.sudo mkdir -p pool/main
4.sudo cp /home/xu/tool-1.0.0-amd64.deb pool/main
5.sudo apt-ftparchive packages pool/main/ > dists/focal/main/binary-amd64/Packages
6.sudo apt-ftparchive -c=release.conf release dists/focal > /var/www/html/ubuntu/dists/focal/Release
7.sudo gpg --output dists/focal/InRelease --clearsign /var/www/html/ubuntu/dists/focal/Release

1~4行命令不会有什么问题,从第5行开始就需要注意了!

第5行生成的Packages文件中包括Filename:pool/main/tool-1.0.0-amd64.deb 这里是告诉apt 这个deb的下载目录,我一开始的错误命令是这样的:

sudo apt-ftparchive packages /var/www/html/ubuntu/pool/main/ > /var/www/html/ubuntu/dists/focal/main/binary-amd64/Packages 大错特错的!!!千万不要这样写!!!这个命令Packages文件中,Filename:/var/www/html/ubuntu/pool/main/tool-1.0.0-amd64.deb这样会导致在web服务器根本下载不下来这个deb,因为根本不存在!!!

第6行有一个-c=release.conf ,这个也是在测试才发现的,如果不加这个参数客户端提示如下:

查了一下原因是因为Release文件没有Codename!创建文件release.conf内容如下:

(py38) xu@xu-ArcherCity:/var/www/html/ubuntu$ cat release.conf
APT::FTPArchive::Release {
  Origin "YourRepo";
  Label "YourRepo";
  Suite "stable";
  Codename "focal";
  Architectures "amd64";
  Components "main";
  Description "Local APT Repository";
};

第7行如果提示‘‘No secret key’’执行失败,在运行之前要执行:

gpg --full-generate-key #生成密钥,按照提示执行
gpg --list-keys #查看刚才填写的密钥uid
gpg --armor --output /var/www/html/ubuntu/public.key --export uidname # 这个public.key 客户端需要用

好了所有步骤执行完之后我们进行最后一步!

3.客户端添加源到source.list并测试安装成功!

客户端执行操作非常容易:

首先,将第二步生成的public.key添加到自己的目录

sudo apt-key add public.key

其次,修改source.list

sudo vi /etc/apt/sources.list
deb http://8.8.8.8/ubuntu focal main #添加进去

最后执行apt update 更新源

sudo apt update

最最后就可以执行sudo apt install tool!!!发现可以执行成功!

ps:sudo gpg --output dists/focal/InRelease --clearsign /var/www/html/ubuntu/dists/focal/Release 这个命令我执行了好几次,没有执行成功,提示:clear-sign failed: No secret key ,后来发现是有个clear-sign的进程一直在执行,后面kill了就好!

pss:

gpg:          Version :2.2.19-3ubuntu2.2

dpkg-dev :Version: 1.19.7ubuntu3.2

nginx:       Version: 1.18.0-0ubuntu1.5


文章转载自:
http://animadversion.dmyyro.cn
http://cetin.dmyyro.cn
http://biofacies.dmyyro.cn
http://biocoenose.dmyyro.cn
http://algorithmic.dmyyro.cn
http://bluesman.dmyyro.cn
http://bogbean.dmyyro.cn
http://cairene.dmyyro.cn
http://accumulative.dmyyro.cn
http://atactic.dmyyro.cn
http://bluestone.dmyyro.cn
http://avestan.dmyyro.cn
http://belowground.dmyyro.cn
http://busby.dmyyro.cn
http://brenner.dmyyro.cn
http://bakehouse.dmyyro.cn
http://chevalet.dmyyro.cn
http://arrisways.dmyyro.cn
http://camorrista.dmyyro.cn
http://antagonise.dmyyro.cn
http://bingy.dmyyro.cn
http://assur.dmyyro.cn
http://angioma.dmyyro.cn
http://bulbiform.dmyyro.cn
http://bezel.dmyyro.cn
http://budge.dmyyro.cn
http://autnumber.dmyyro.cn
http://cation.dmyyro.cn
http://abscond.dmyyro.cn
http://brobdingnag.dmyyro.cn
http://www.dtcms.com/a/123374.html

相关文章:

  • Animated Movement Color
  • 【书籍】DeepSeek谈《持续交付2.0》
  • 第5篇:Linux程序访问控制FPGA端LEDR<三>
  • 如何用 nvm alias default 18.20.8 实现全局 Node.js 版本管理?一篇保姆级指南!!!
  • 深入解析回环检测:从原理到C++实战
  • 批量清空图片的相机参数、地理位置等敏感元数据
  • 电商素材革命:影刀RPA魔法指令3.0驱动批量去水印,实现秒级素材净化
  • 【C++】右值引用、移动语义与完美转发
  • 【倍增】P10264 [GESP202403 八级] 接竹竿|普及+
  • java继承练习
  • 走多远(拓扑排序,dp)
  • ChatRoom测试报告
  • 手眼标定-眼在手上
  • 安卓设备配置PAC代理服务器的完整指南:实现智能分流与开发加速
  • OfficePlus去掉PDF文件右键菜单里的PDF转换
  • Java Map和Set集合应用
  • docker安装nginx,基础命令,目录结构,配置文件结构
  • 0410 | 软考高项笔记:项目管理概述
  • jQuery多库共存
  • 甘特图和里程碑趋势图在项目监控中有哪些实际应用?
  • 本地laravel项目【dcat-admin】部署到liunx服务器
  • 论文笔记:Dynamic Spectral Graph Anomaly Detection
  • 先占个日常,等会写。
  • 如何白嫖Grok3 API? 如何使用Grok3 API调用实例?怎么使用Grok3模型?
  • 从零实现Agent智能体配置使用(Ragflow)
  • 多模态大模型在目标检测领域的最新进展
  • JS包装类型Object
  • AutoKeras 处理图像回归预测
  • spark-core学习内容总结
  • 【完美解决】VSCode连接HPC节点,已配置密钥却还是提示需要输入密码