当前位置: 首页>>技术教程>>正文


创建Debian软件包和本地软件包存储库的简便方法

, ,

本文介绍了一种简单的方法来创建自制的debian软件包并将其包含在本地软件包存储库中。尽管我们可以使用现有的Debian /Ubuntu软件包,但我们将从头开始创建和打包自己的琐碎应用程序。包准备好后,我们会将其包含在本地包存储库中。本文介绍了一种非常简单的方法,但是它可以在许多不同的情况下用作模板。

在本教程中,您将学习:

  • 如何创建琐碎的Debian软件包
  • 如何创建本地Debian存储库
  • 如何将存储库添加到软件源列表中

使用的软件要求和约定

软件要求和Linux命令行约定
类别 要求,约定或使用的软件版本
系统 德比安
软件 build-essential封装
其他 运行中的Apache Web服务器和root权限
约定 -要求linux命令可以直接以root用户或通过使用root特权来执行sudo命令$-要求linux命令以普通非特权用户身份执行

创建一个二进制可执行文件

我们需要做的第一件事是创建一个简单的C++程序,对其进行编译和测试。如果您想编写一个简单的C程序,请访问我们综合的C编程教程。我们的程序仅在屏幕上打印”linuxconfig.org”,就不会执行其他任何操作。这是代码:

#include <iostream>
int main() {
    using namespace std;
    cout << "linuxconfig.org\n";
}

将上面的代码另存为linuxconfig.cc。要编译程序,我们需要g++编译器,由build-essential软件包提供。我们可以通过运行以下命令进行安装:

$ sudo apt-get install build-essential

要编译代码,我们使用以下代码linux命令:

$ g++ linuxconfig.cc -o linuxconfig
$ ./linuxconfig
linuxconfig.org

一切都很好。此时,我们应该有一个名为”linuxconfig”的可执行文件,该可执行文件会在屏幕上打印一些字符串。




(adsbygoogle = window.adsbygoogle || [])。push({});


创建一个Debian软件包

现在我们已经准备好了可执行二进制文件形式的小程序,我们可以创建一个debian软件包了。为此,我们使用dpkg-deb工具。首先,我们需要创建debian软件包结构。构建debian软件包所需的唯一文件是:

  • DEBIAN /控制
  • 自定义文件将成为软件包的一部分(不是必需的)

第一创建一个目录linuxconfig。此目录将包含所有必需的软件包文件:

$ mkdir linuxconfig

接下来,创建DEBIAN目录和控制文件:

$ mkdir linuxconfig/DEBIAN
$ vi linuxconfig/DEBIAN/control

在控制文件中,我们输入以下信息:

Package: linuxconfig
Version: 1.0
Section: custom
Priority: optional
Architecture: all
Essential: no
Installed-Size: 1024
Maintainer: linuxconfig.org
Description: Print linuxconfig.org on the screen

太好了,唯一缺少的是我们的linuxconfig程序。在 – 的里面linuxconfig在目录中,我们创建一个目录树,该目录树表示将程序安装到系统中的路径,并将可执行文件复制到其中:

$ mkdir -p linuxconfig/usr/bin/
$ cp /path/to/linuxconfig linuxconfig/usr/bin/

至此,我们准备创建包:

$ dpkg-deb --build linuxconfig
dpkg-deb: building package `linuxconfig' in `linuxconfig.deb'.
$ ls
linuxconfig  linuxconfig.deb

您可能需要更改软件包的名称,以使其包含程序版本和软件包体系结构。例如:

$ mv linuxconfig.deb linuxconfig-1.0_amd64.deb

全做完了 !我们的包裹已经准备好了! (注意:这只是一个例子,创建官方软件包需要更多工作)。

设置本地软件包存储库

要创建本地软件包存储库,我们需要工作。在这种情况下,我们假设使用Apache使用默认设置。至安装Apache Web服务器,我们要做的就是运行:

$ sudo apt-get install apache2


(adsbygoogle = window.adsbygoogle || [])。push({});


安装完成后,要验证网络服务器是否正常运行,我们可以导航到该计算机的IP地址(如果在该计算机本身上运行浏览器,则可以导航到’http://localhost’),本例中为http://10.1.1.4。我们应该看到著名的有用!信息。

Web服务器软件正在运行,但尚未添加任何内容。的DocumentRoot默认的ApacheVirtualHost,是/var/www/html:这是我们将创建存储库的地方。

让我们在其中创建”debian”目录 /var/www/html并复制其中的linuxconfig-1.0_amd64.deb软件包:

$ sudo mkdir /var/www/html/debian
$ sudo cp /path/to/linuxconfig-1.0_amd64.deb /var/www/html/debian/

下一步包括生成软件包列表。我们进入debian目录,并使用dpkg-scanpackages实用程序来完成任务。您可能需要安装dpkg-dev包装以防万一dpkg-scanpackages命令丢失:

$ dpkg-scanpackages . | gzip -c9  > Packages.gz
dpkg-scanpackages: info: Wrote 1 entries to output Packages file.

现在我们的本地存储库已准备就绪。

将资源库添加到软件源

此时,为了能够从我们创建的本地存储库中安装我们的软件包,我们需要编辑/etc/apt/sources.list文件,添加相对于它的条目(更改IP地址以反映您的计算机的IP地址),并同步存储库:

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

确保添加以上内容[trusted=yes]避免出现以下错误信息:


 Release' does not have a Release file.                   
N: Updating from such a repository can't be done securely, and is therefore disabled by default.

同步存储库:


$ sudo apt-get update
Ign:1 http://10.1.1.4/debian ./ InRelease
Ign:2 http://10.1.1.4/debian ./ Release
Ign:3 http://10.1.1.4/debian ./ Packages
Ign:3 http://10.1.1.4/debian ./ Packages
Ign:3 http://10.1.1.4/debian ./ Packages
Get:3 http://10.1.1.4/debian ./ Packages [303 B]

要安装我们的软件包,我们现在可以使用apt-get工具:

$ sudo apt-get install linuxconfig
Reading package lists... Done
Building dependency tree
Reading state information... Done
The following NEW packages will be installed:
  linuxconfig
0 upgraded, 1 newly installed, 0 to remove and 8 not upgraded.
Need to get 3174 B of archives.
After this operation, 1,049 kB of additional disk space will be used.
WARNING: The following packages cannot be authenticated!
  linuxconfig
Install these packages without verification [y/N]? y

执行:

$ linuxconfig
linuxconfig.org

要从系统中删除软件包,只需运行:

$ sudo apt-get remove linuxconfig
Reading package lists... Done
Building dependency tree
Reading state information... Done
The following packages will be REMOVED:
  linuxconfig
0 upgraded, 0 newly installed, 1 to remove and 3 not upgraded.
After this operation, 1049 kB disk space will be freed.
Do you want to continue? [Y/n] y

参考资料

本文由Ubuntu问答整理, 博文地址: https://ubuntuqa.com/article/10788.html,未经允许,请勿转载。