如何在Debian或Ubuntu上使用apt命令获取软件包的源代码
如何在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