Linux系列讲解 —— 创建apt-get私有源

ubuntu用户应该都用过apt和apt-get这两个包管理器,其工作原理大致上就是访问/etc/apt/sources.list记录的url地址(也就是我们说的源地址),从上面下载deb包到本地,然后再把该deb包安装到系统中。

本篇文章介绍一下如何创建私有源。所谓私有源就是个人创建的源,一般情况不配置外网,遂只是在局域网内可以使用。不同于ubuntu官方源,阿里云源,清华源等,可以让整个互联网用户进行访问。

1.创建一个程序

sun@sun-pc:~/myProjects$ mkdir -p pri_src_test/src
sun@sun-pc:~/myProjects$ cd pri_src_test/src/
sun@sun-pc:~/myProjects/pri_src_test/src$ vi pri_src_test.cpp

打开pri_src_test.cpp后,内容如下:

#include <iostream>

using namespace;

int main()
{
    cout << "This is In_engineer test" << endl;
    return 0;
}

保存退出cpp文件后,接着执行

sun@sun-pc:~/myProjects/pri_src_test/src$ g++ pri_src_test.cpp -o pri_src_test   //编译cpp文件生成可执行文件pri_src_test
sun@sun-pc:~/myProjects/pri_src_test/src$ ./pri_src_test   //执行pri_src_test,得到结果如下
This is In_engineer test

2. 将程序打包成deb包

sun@sun-pc:~/myProjects/pri_src_test$ mkdir package     #创建个目录,用来存放创建deb包时所需文件
sun@sun-pc:~/myProjects/pri_src_test$ cd package
sun@sun-pc:~/myProjects/pri_src_test/package$ mkdir -p usr/bin
sun@sun-pc:~/myProjects/pri_src_test/package$ mv ../src/pri_src_test usr/bin/   #把执行文件拷贝到usr/bin/目录
sun@sun-pc:~/myProjects/pri_src_test/package$ mkdir DEBIAN
sun@sun-pc:~/myProjects/pri_src_test/package$ vi DEBIAN/control

编辑内容如下:

Package: privatesrc          #注意包名构成只能是小写字母和"-+"的字符
Version: 1.0
Section: custom(代表软件类别)
Priority: optional
Architecture: all
Essential: no
Installed-Size: 1024
Maintainer: privatesrc.org
Description: Print test strings on the screen

继续执行

sun@sun-pc:~/myProjects/pri_src_test/package$ tree   #确认一下package结构有没有问题,和下面一样就可以了
.
├── DEBIAN
│   └── control
└── usr
    └── bin
        └── pri_src_test

3 directories, 2 files
sun@sun-pc:~/myProjects/pri_src_test/package$ cd ../
sun@sun-pc:~/myProjects/pri_src_test$ dpkg-deb --build package/ privatesrc.deb  #将package打包为privatesrc.deb

3. 发布deb包到Apache

sun@sun-pc:~$ sudo apt-get install apache2      #如果没有安装过apache,先进行安装
sun@sun-pc:~$ cd /var/www/html                  #安装完apache后,根目录下会出现/var/www/的目录,cd到其中的html目录
sun@sun-pc:~$ mkdir debian
sun@sun-pc:/var/www/html/debian$ sudo cp ~/myProjects/pri_src_test/privatesrc.deb ./    #把deb包拷贝到此目录下
sun@sun-pc:/var/www/html/debian$ su root
root@sun-pc:/var/www/html/debian# sudo dpkg-scanpackages . | gzip -c9 > Packages.gz     #创建deb包索引

发布完之后,局域网内用户正常都可以访问了,如下图可以看到前文提到的Packages.gz和deb包全都在这里
在这里插入图片描述

4. 私有源使用

如果别人(张三)要使用此私有源,依据下面操作即可

zhangsan@zhangsan-pc:~$ echo "deb [trusted=yes] http://192.42.1.24/debian ./"
 | sudo tee -a /etc/apt/sources.list > /dev/null   #见注解	
zhangsan@zhangsan-pc:~$ sudo apt-get update   #由于sources.list有变更,所以使用之前先更新软件列表
zhangsan@zhangsan-pc:~$ sudo apt-get install privatesrc    #安装我们软件源上的privatesrc软件,成功!
正在读取软件包列表... 完成
正在分析软件包的依赖关系树       
正在读取状态信息... 完成       
下列软件包是自动安装的并且现在不需要了:
  activity-log-manager gconf-service gconf-service-backend gconf2 gconf2-common geoclue 
  geoclue-ubuntu-geoip indicator-applet indicator-bluetooth indicator-datetime 
  indicator-keyboard indicator-messages
  indicator-power libaccounts-glib0 libappindicator1 libfcitx-config4 libfcitx-gclient1 
  libfcitx-utils0 libgconf-2-4 libgeoclue0 libgeonames-common libgeonames0 libido3-0.1-0 libindicator7
  liblightdm-gobject-1-0 libnm-glib4 libnm-gtk0 libnm-util2 libpanel-applet3 libtimezonemap-data 
  libtimezonemap1 libunity-control-center1 libunity-settings-daemon1 liburl-dispatcher1
  linux-hwe-5.4-headers-5.4.0-84 linux-hwe-5.4-headers-5.4.0-86 linux-hwe-5.4-headers-5.4.0-87 
  linux-hwe-5.4-headers-5.4.0-89 linux-hwe-5.4-headers-5.4.0-90 ubuntu-touch-sounds unity-settings-daemon
使用'sudo apt autoremove'来卸载它(它们)。
下列【新】软件包将被安装:
  privatesrc
升级了 0 个软件包,新安装了 1 个软件包,要卸载 0 个软件包,有 48 个软件包未被升级。
需要下载 3,296 B 的归档。
解压缩后会消耗 1,049 kB 的额外空间。
获取:1 http://192.42.1.24/debian ./ privatesrc 1.0 [3,296 B]
已下载 3,296 B,耗时 0(0 B/s)       
正在选中未选择的软件包 privatesrc。
(正在读取数据库 ... 系统当前共安装有 303336 个文件和目录。)
正准备解包 .../privatesrc_1.0_all.deb  ...
正在解包 privatesrc (1.0) ...
正在设置 privatesrc (1.0) ...

zhangsan@zhangsan-pc:~$ pri_src_test   #执行安装的程序。deb包名是privatesrc,二进制可执行文件名字是pri_src_test,这两个不要搞混
This is In_engineer test   #可以看到执行的结果正是我们的程序

注:
(1) 对【 echo “deb [trusted=yes] http://192.42.1.24/debian ./” | sudo tee -a /etc/apt/sources.list > /dev/null 】解释一下,这里边有三条命令,先用echo “deb [trusted=yes] http://192.42.1.24/debian ./”将源信息的字符串输出到标准输出中,然后使用 tee -a /etc/apt/sources.list从标准输出中取得字符串并依附到sources.list文件的末尾。最后一条>/dev/null是将执行结果丢到空设备中,这样终端中就不会显示执行结果。
(2) 还有一点,因为是私有源网址,没有证书。所以使用[trusted=yes]让系统下载的时候信任这个源,不会进行证书检查。

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 4
    评论
### 回答1: apt 和 apt-get 都是 Debian 发行版的包管理器,但是有些细微的差别。apt 由 apt-get 和 apt-cache 组成,它们使用相同的,但是 apt 更加友好,更易于使用。apt-get 只能用于安装和删除软件包,而 apt 可以用于更新系统,更新现有的软件包,查找软件包,及其他操作。 ### 回答2: 在Linux系统中,apt和apt-get是两个用于包管理的命令行工具。 apt-getDebianUbuntu等基于Debian的发行版中常用的包管理工具,而apt是apt-get的更高级版本。 区别如下: 1. 用户界面:apt采用更现代、友好的用户界面,提供颜色化的输出结果,而apt-get则较为简单,没有颜色化的输出。 2. 命令规范性:apt-get命令的选项和参数命名比较独特,如安装软件时使用"apt-get install",而apt则把命令选项名更改为一般的动词形式,如"apt install"。 3. 依赖关系处理:apt支持更智能的依赖关系处理机制。在安装或卸载软件时,apt会自动处理相关的依赖关系,使整个过程更加方便和简单。 4. 进度条:apt在下载和安装软件包时提供了进度条显示,能够更直观地展示当前的安装进度,而apt-get则没有这个功能。 总结来说,apt和apt-get的主要区别在于用户界面和命令规范性,apt提供了更好的用户体验和更智能的依赖关系处理机制。它们都是包管理工具,可以用来安装、卸载、更新和管理软件包。 ### 回答3: 在Linux系统中,apt和apt-get是两个用于软件包管理的命令行工具。它们之间的主要区别如下: 1. 用户界面:apt被设计成一个用户友好的包管理工具,它提供了进度条和彩色输出等增强功能,使软件包管理更方便。相比之下,apt-get没有这些附加功能,更偏向于命令行的简洁性。 2. 依赖解决:apt可自动处理为了满足软件包安装需求而需要添加的其他软件包,它会自动安装这些依赖关系。而apt-get则需要手动使用相应的命令来解决依赖关系。 3. 命令:apt提供了一组全新的命令,如apt list、apt search和apt show,用于更高效地搜索和查看软件包信息。apt-get只提供了主要的命令,如apt-get install、apt-get remove和apt-get update等。 4. 强制选项:apt允许使用--allow-downgrades和--allow-remove-essential等选项来进行强制操作,而apt-get没有类似的选项。 5. 性能:apt在解析和处理依赖关系时比apt-get更快一些,因此在执行大量操作时,apt通常会更有效率。 综上所述,apt在用户界面、依赖解决、命令和性能等方面相较于apt-get具有更多的功能和优势,因此在大多数Linux发行版中,建议使用apt进行软件包的管理和安装。但是,对于一些特殊需求或者老版本的Linux系统,apt-get仍然是一个可行的选择。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

星际工程师

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值