Ubuntu/Debian 自有软件包构建私有源详解

以下是“Ubuntu/Debian自有软件包构建私有源”的详细攻略:

什么是自有软件包构建私有源?

自有软件包构建私有源是指在Ubuntu/Debian系统上,自行构建软件包并发布到自己的私有源(也称为APT存储库)中,在系统中安装这些软件包时可以通过APT包管理器来进行。这样做可以方便地管理自己的软件包,同时也能够在多台服务器上共享同一个源。

构建私有源的步骤

  1. 安装构建软件包所需的工具和依赖:

首先需要安装build-essentialdevscriptsdh-make等软件包来构建源代码、打包和编译软件包。同时也需要安装其他软件的构建依赖,例如GNU Autotools(autoconf、automake、libtool和pkg-config)以及CMake、Python等,这些依赖因软件包而异。

$ sudo apt-get update
$ sudo apt-get install build-essential devscripts dh-make autotools-dev cmake python
  1. 构建软件包:

构建软件包的方式也因软件包而异,一般是从源码、二进制文件、RPM包等打包格式中下载源代码,在本地进行打包和编译。以下是从源码构建软件包的流程:

  • 下载源代码
  • 解压缩源代码,并进入源代码目录
  • 在源代码目录下运行debian/rules binary命令,该命令会按照Debian的标准方式进行打包,生成.deb文件

以下是构建nginx软件包的示例:

$ wget https://nginx.org/download/nginx-1.21.3.tar.gz
$ tar -xf nginx-1.21.3.tar.gz
$ cd nginx-1.21.3
$ sudo apt-get build-dep nginx    # 安装构建依赖
$ debuild -us -uc    # 构建软件包
  1. 安装和配置APT存储库:

构建软件包完成后,需要将软件包发布到APT存储库中,这样才能在其他机器上安装这些软件包。以下是创建APT存储库并将软件包上传的步骤:

  • 安装reprepro软件包,该软件能够创建APT存储库和上传软件包
  • 创建APT存储库
  • 将生成的*.deb软件包添加到APT存储库
  • 生成APT存储库的metadata
  • 上传APT存储库到服务器

以下是创建APT存储库并将软件包上传到该存储库的命令:

$ sudo apt-get update
$ sudo apt-get install reprepro
$ mkdir -p ~/myrepo/{conf,dists,indices,logs,pool}
$ cd ~/myrepo
$ nano conf/distributions  # 配置存储库信息

conf/distributions文件中添加以下信息:

Origin: Your Name
Label: Your Label
Codename: yourcodename
Architectures: i386 amd64   # 软件包支持的CPU架构
Components: main
Description: Your custom software repository
SignWith: YOUR_SIGNING_KEY_ID

添加软件包到APT存储库:

$ cp /path/to/nginx_1.21.3-1_amd64.deb pool/main/n/nginx/
$ reprepro includedeb yourcodename /path/to/nginx_1.21.3-1_amd64.deb

生成APT存储库的metadata和签名:

$ reprepro export
$ gpg --armor --output ~/myrepo/public.key --export YOUR_SIGNING_KEY_ID
$ reprepro export | gpg --clearsign --default-key YOUR_SIGNING_KEY_ID | tee ~/myrepo/Release.gpg
$ rm -f ~/myrepo/inRelease   # 删除旧的metadata
$ cd ~/myrepo
$ reprepro --verbose -Vb . includedeb yourcodename /path/to/nginx_1.21.3-1_amd64.deb
$ reprepro --verbose -Vb . export

将APT存储库上传到服务器:

$ scp -r ~/myrepo/ user@server:~/myrepo/
  1. 配置APT源:

在客户端上配置APT源,即可安装从私有源中构建的软件包:

$ sudo apt-get update
$ sudo apt-get install apt-transport-https
$ sudo nano /etc/apt/sources.list.d/mysources.list

/etc/apt/sources.list.d/mysources.list文件中添加以下内容:

deb [trusted=yes] https://myserver/myrepo/ yourcodename main

执行以下命令以完成最后一步更新并安装nginx:

$ sudo apt-get update
$ sudo apt-get install nginx

实战:构建Nginx和Redis软件包,发布到私有源中

以上是构建APT存储库的流程,本节将以Nginx和Redis软件包的构建和发布为例进行说明。

  1. 从官网下载Nginx和Redis源代码
$ wget https://nginx.org/download/nginx-1.21.3.tar.gz
$ wget http://download.redis.io/releases/redis-6.2.5.tar.gz
  1. 构建Nginx软件包
$ tar -xf nginx-1.21.3.tar.gz
$ cd nginx-1.21.3
$ sudo apt-get build-dep nginx
$ debuild -us -uc
  1. 构建Redis软件包
$ tar -xf redis-6.2.5.tar.gz
$ cd redis-6.2.5
$ debuild -us -uc
  1. 安装和配置APT存储库

按照上述的APT存储库配置流程,将构建好的Nginx和Redis软件包添加到APT存储库中即可。

  1. 客户端安装Nginx和Redis

在客户端上执行以下命令即可从私有源中安装Nginx和Redis:

$ sudo apt-get update
$ sudo apt-get install apt-transport-https
$ sudo nano /etc/apt/sources.list.d/mysources.list

/etc/apt/sources.list.d/mysources.list文件中添加以下内容:

deb [trusted=yes] https://myserver/myrepo/ yourcodename main

执行以下命令以完成最后一步更新并安装nginx和redis:

$ sudo apt-get update
$ sudo apt-get install nginx redis-server

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Ubuntu/Debian 自有软件包构建私有源详解 - Python技术站

(0)
上一篇 2023年5月14日
下一篇 2023年5月14日

相关文章

  • linux安装图形化界面的操作方法

    安装图形化界面是 Linux 上的一个常见需求,它可以使你更加方便、直观地使用 Linux 系统。本文将详细介绍在 Linux 上安装图形化界面的操作方法。 步骤一:选择安装方式 在 Linux 上,安装图形化界面的方法有很多,你可以选择使用桌面环境或窗口管理器。桌面环境是一组应用程序和工具集合,通常包括窗口管理器、文件管理器、终端仿真器、面板等,比较常见的…

    Linux 2023年5月14日
    00
  • Ubuntu配置软件镜像源

    ​    主机系统:Ubuntu 22.04.1 LTS _Jammy Jellyfish_ – Release amd64   Ubuntu如何配置软件镜像源?   在网速可以的情况下,有时我们在使用 apt-get update 指令时会发现更新软件列表的速度很慢,一般出现这个问题的原因是用来更新软件源的服务器距离太远。    在这里,我们就需要通过添加…

    Linux 2023年5月2日
    00
  • Linux(Redhat)安装python3.6虚拟环境(推荐)

    下面是“Linux(Redhat)安装python3.6虚拟环境(推荐)”的详细攻略: 1. 确认系统已安装Python3.6 在终端输入以下命令: python3.6 如果系统已经安装了Python3.6,终端会显示Python3.6的版本信息。 2. 安装virtualenv virtualenv是一个用于创建Python虚拟环境的工具,可以让每个项目使…

    Linux 2023年5月14日
    00
  • Linux cancel命令

    以下是关于Linux cancel命令的完整攻略。 简介 cancel命令用于取消指定的打印任务,并将其从打印队列中移除。同时,它还提供了一些可选参数,可以用于指示要取消的特定打印任务或设置取消后打印机的行为。 语法 cancel [-u <user>] [-a] [-h <hostname>] [-t <destination…

    Linux 2023年3月28日
    00
  • centos 7 安装卸载apache(httpd)服务的详细步骤

    以下是“CentOS 7安装卸载Apache(httpd)服务的详细步骤”的完整使用攻略,包含两个示例说明。 CentOS 7安装Apache(httpd)服务 以下是在CentOS 7上安装Apache(httpd)服务的步骤: 使用yum包管理器安装Apache(httpd)服务: bash sudo yum install httpd 启动Apache…

    Linux 2023年5月13日
    00
  • Ubuntu18.04(linux)安装MySQL的方法步骤

    下面是Ubuntu18.04安装MySQL的步骤: 准备工作 在开始前,请确保您的Ubuntu系统已经更新到最新版本,可以使用以下命令更新软件源: sudo apt-get update sudo apt-get upgrade 安装MySQL 打开终端,并输入以下命令安装MySQL: sudo apt-get install mysql-server 然后…

    Linux 2023年5月14日
    00
  • 安装Linux操作系统过程及出现的问题

    写在前面的话:由于是昨天装的,很多图片没来得及及时的保存,只好凭记忆回想,出现的问题只能回忆起大致的操作及应用软件。        另外,目前是小白一枚。   在安装时,我一开始想直接采用硬盘安装,参考帖子:http://www.linuxidc.com/Linux/2014-10/108430p3.htm   但是所有的步骤完成之后,电脑重启不能正确的进入…

    Linux 2023年4月11日
    00
  • linux centos7安装mysql8的教程

    下面是“linuxcentos7安装mysql8的教程”的完整攻略: 安装MySQL8 在CentOS 7上安装MySQL8前,需要先卸载已经安装的旧版本MySQL,卸载指令如下: sudo systemctl stop mysqld sudo yum remove mysql-server mysql mysql-libs sudo rm -rf /var…

    Linux 2023年5月14日
    00
合作推广
合作推广
分享本页
返回顶部