如何在Debian或Ubuntu上使用apt命令获取软件包的源代码

时间:2020-01-09 10:39:15  来源:igfitidea点击:

如何在Debian或Ubuntu上使用apt-get命令或apt命令安装的软件包的源代码。
如何在Debian或Ubuntu系统上获取或下载软件包的源代码?
如何下载Ubuntu/Debian软件包的源代码?
源代码不过是Debian或Ubuntu软件的文本文件版本。
通常,我们使用apt-get命令/apt命令安装编译的软件。
但是,有时我们需要直接用编程语言编写的源代码。
源代码对于应用自定义补丁或从软件添加/删除现有功能很有用。
第一步是下载源代码。
让我们看看如何使用命令行下载源代码(DEB文件)。

如何使用apt-get/apt命令获取软件包的源代码

对于Ubuntu Linux,下载源代码的过程如下。

请注意,apt-get确实支持第三方封闭源应用程序。
您只能下载开源软件的源代码。

步骤1启用源代码存储库

通常不安装源。
因此,只有在知道软件包名称并启用它们后才能安装它们。
因此,编辑/etc/apt/sources.list文件,运行:

$ sudo vi /etc/apt/sources.list

确保deb-src类型引用如下的Ubuntu发行版源代码:

# Sources specification for the Ubuntu 20.04 LTS distro #
deb-src http://archive.ubuntu.com/ubuntu focal main restricted universe multiverse
deb-src http://archive.ubuntu.com/ubuntu focal-updates main restricted universe multiverse
deb-src http://security.ubuntu.com/ubuntu focal-security main restricted universe multiverse

其中:

  • deb-src:表明您需要.DEB文件的源代码。
  • http://archive.ubuntu.com/ubuntu:获取索引和.deb文件源代码的URL。
  • focal:Ubuntu Linux 20.04 LTS代号
  • mainstrict Universe multiverse:Repo的状态组件名称,例如main,受限,Universe和multiverse

步骤2更新索引

运行以下命令,以从/etc/apt/sources.list中的deb-src关键字定义的软件包索引文件源重新同步(对于Ubuntu Linux)

$ sudo apt-get update
# OR #
$ sudo apt update

步骤3下载Ubuntu软件包源代码

让我们下载bash shell的源代码,运行:

$ sudo apt-get source {pkg1}
$ sudo apt-get source bash

如果您忘记按照步骤1中的说明设置deb-src,则可能会看到以下错误:

E: You must put some source URIs in your sources.list
E:您必须在sources.list中放入一些源URI。

步骤4了解下载的源代码文件

让我们运行ls命令查看源代码:

$ ls -l
total 5512
drwxrwxr-x 15 Hyman Hyman    4096 Jul 19 10:32 bash-5.0
-rw-r--r--  1 Hyman Hyman   74356 Jun 29 14:43 bash_5.0-6ubuntu1.1.debian.tar.xz
-rw-r--r--  1 Hyman Hyman    2418 Jun 29 14:43 bash_5.0-6ubuntu1.1.dsc
-rw-r--r--  1 Hyman Hyman 5554808 Jan 14  2019 bash_5.0.orig.tar.xz

默认情况下,源代码被提取到bash-5.0目录中:

$ cd bash-5.0
$ ls

以.tar.xz结尾的bash源tar包存储在bash_5.0.orig.tar.xz文件中。
以.dsc结尾的描述文件包含包名称,包名称,内容(在Source:关键字之后)。
一个压缩包,对上游源进行了任何更改,以及为Debian软件包创建的所有文件都存储在bash_5.0-6ubuntu1.1.debian.tar.xz文件中。

如果将--download-only选项传递给apt-get命令,则不会解压缩源包:

$ sudo apt-get --download-only source source bash

下载后,我们可以按以下步骤提取bash的源文件:

$ dpkg-source -x /path/to/pkg.dsc
$ dpkg-source -x bash_5.0-6ubuntu1.1.dsc

也可以构建软件包:

$ sudo apt-get --build source {pkg}
$ sudo apt-get --build source bash

另一个选择是在debian/rules文件中进行更改

$ vi bash-5.0/debian/rules

接下来,我们可以构建自定义bash包,如下所示:

$ export EDITOR=vim
$ dch -n

确保我们满足源软件包的构建依赖关系,并避免安装这些库和工具时出错:

$ sudo apt-get -y build-dep bash

最后,构建一个Debian软件包:

$ debuild

验证新软件包:

$ cd ..
$ ls *.deb

安装它们:

$ sudo dpkg -i bash_{version}*.deb

如何下载Debian软件包源代码

该过程与Ubuntu发行版相同,但是URL语法更改如下:

$ sudo vi /etc/apt/sources.list

编辑/更新如下:

# source repo for Debian 10 buster #
deb-src deb http://deb.debian.org/debian buster main

在vim中保存并关闭文件,然后运行以下命令:

$ sudo apt-get update

让我们下载Apache Web服务器的源代码:

$ apt-get source apache2