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

Linux系列讲解 —— 创建apt-get私有源,第1张

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

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

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

1.创建一个程序
sun@sun-pc:~/myProjects$ mkdir -p priv_src_test/src
sun@sun-pc:~/myProjects$ cd priv_src_test/src/
sun@sun-pc:~/myProjects/priv_src_test/src$ vi priv_src_test.cpp

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

#include 

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) ...

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

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/5698407.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-17
下一篇 2022-12-17

发表评论

登录后才能评论

评论列表(0条)

保存