【保姆级教程】动手搭建一个私有的apt服务器

动手搭建一个私有的apt服务器


需求描述

在系统软件开发中,我们自己创建的安装包,安装到其他机器上,单个拷贝安装特别是在机器数量比较多时比较麻烦,能否像我们安装vim编辑器那样安装简单呢?这时就需要搭建私有apt服务器,来进行部署。不同架构的机器只需要设置不同的订阅(源)地址即可。
环境:ubuntu18.04 Nginx

1、安装Nginx服务器

sudo apt-get install nginx -y

查看Nginx版本

sudo nginx -v

会出现版本号

nginx version: nginx/1.14.0 (Ubuntu)

然后访问地址 http://<ip地址>
我这里是http://47.102.45.31/ (临时地址)
Nginx默认界面

2、修改Nginx配置

sudo  vim /etc/nginx/sites-enabled/default

在 server 中

root   /var/www/html     #这里是默认的目录,可以修改为自定义目录

在location 中添加

autoindex on;    #让Nginx显示目录,注意不要漏掉分号

让Nginx显示目录
重启Nginx服务

sudo systemctl restart nginx.service

3.放入提前准备好的deb包

先创建目录myubuntu,在Nginx目录中(默认是/var/www/html,如果修改配置,则是配置的目录中)

mkdir myubuntu

在本机通过scp命令上传至服务器
这里有两个测试包,分别是hellotest.deb 和test2.deb

scp hellotest.deb test2.deb root@47.102.45.31:/var/www/html/myubuntu

通过ls命令能够查看到当前目录中有这两个包

hellotest.deb  test2.deb

在Nginx目录中(默认是/var/www/html,如果修改配置,则是配置的目录中)的上面创建的myubuntu中执行

sudo dpkg-scanpackages .|gzip -c9>Packages.gz

出现下面提示即可

dpkg-scanpackages: info: Wrote 2 entries to output Packages file.

在浏览器输入 http://47.102.45.31/myubuntu/ (根据实际情况替换IP和目录名字)
在这里插入图片描述

4.本机设置

本机添加自定义apt服务器源

echo "deb [trusted=yes] http://47.102.45.31/myubuntu ./" | sudo tee -a /etc/apt/sources.list > /dev/null 

命令解释
(1)echo “deb [trusted=yes] http://47.102.45.31/myubuntu ./”将源信息的字符串输出到标准输出中
(2)使用 tee -a /etc/apt/sources.list从标准输出中取得字符串并依附到sources.list文件的末尾。
(3)>/dev/null是将执行结果丢到空设备中,这样终端中就不会显示执行结果。
(4) 私有源网址,没有ssl证书。所以使用[trusted=yes]让系统下载的时候信任这个源,不会进行证书检查。

也可以用sudo vim /etc/opt/sources.list 自己手动添加deb [trusted=yes] http://47.102.45.31/myubuntu ./

更新源sudo apt-get update会出现我们自定义的apt服务器地址
在这里插入图片描述

安装程序测试

sudo apt-get install test2

在这里插入图片描述
运行test2程序

test2

在这里插入图片描述

附录

1、test2程序源代码

test2.cpp

#include <iostream>
#include <stdio.h>
#include <time.h>
#include <unistd.h>
using namespace std;
void currentTimetoStr(void)
{
    char tmp[64];
    time_t t = time(NULL);
    tm *_tm = localtime(&t);
    int year = _tm->tm_year + 1900;
    int month = _tm->tm_mon + 1;
    int date = _tm->tm_mday;
    int hh = _tm->tm_hour;
    int mm = _tm->tm_min;
    int ss = _tm->tm_sec;
    sprintf(tmp, "%04d-%02d-%02d %02d:%02d:%02d", year, month, date, hh, mm, ss);
    cout << "当前时间为:" << tmp << endl;
}

int main()
{
    cout << "************************************************************" << endl;
    cout << "**************分享一些名言**********************************" << endl;
    cout << "莫扎特曾经说过大胆地踏上旅途吧,我不知道路途的前方究竟有什么,但是,我们还是迈出了步伐,我们仍在旅途之中" << endl;
    cout << "1、Talk is cheap. Show me the code. —— Linus Torvalds" << endl;
    cout << "2、Stay hungry. Stay foolish. ——Steve Jobs" << endl;
    cout << "3、Any fool can write code that a computer can understand. Good programmers write code that humans can understand. ——Martin Fowler" << endl;
    cout << "4、If all you have is a hammer, everything seems to be a nail. ——Robert Sedgewick" << endl;
    cout << "5、If it hurts, do it more frequently, and bring the pain forward." << endl;
    cout << "************************************************************" << endl;
    cout << "************************************************************" << endl;
    currentTimetoStr();
    sleep(1);
    return 0;
}

2、deb包打包方法

1、先将test2编译成可执行程序

g++ test2.cpp  -o test2

2、制作deb包

mkdir package  #创建目录package
cd package
mkdir -p usr/bin
mv  test2    usr/bin/   #把可执行文件拷贝到usr/bin/目录  这里是test2(这里的路径要写正确)
mkdir DEBIAN
vim DEBIAN/control

这是control里的内容,注意复制时要把里面的注释去掉

Package: test2          #注意包名构成只能是小写字母和"-+"的字符
Version: 1.0
Section: custom(代表软件类别)
Priority: optional
Architecture: all
Essential: no
Installed-Size: 1024
Maintainer: test2.org
Description: 打印一些名言   #描述信息

然后查看一下package的目录结构
在这里插入图片描述

cd ..
dpkg-deb --build package/ test2.deb  #在package目录的上一层打包package

然后上传到服务器对应目录即可,详见上面正文步骤3


结尾

欢迎分享自己的看法,一起沟通交流!
  • 3
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 4
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值