添加和删除软件
ADDING AND REMOVING SOFTWARE
Linux 或任何操作系统中最基本的任务之一便是添加和删除软件。您经常需要安装发行版中没有附带的软件,或者删除不需要的软件,这样就不会占用硬盘空间。
有些软件安装需要依赖其他软件才能运行,有时您会发现您可以在软件包安装过程中一次性下载所需的所有软件,软件包是一组文件(通常是库和其他依赖项),您需要这些文件才能使软件成功运行。当您安装一个包时,包中的所有文件连同一个脚本一起安装,以简化软件的加载。
在本章中,我们将研究添加新软件的三个关键方法:apt包管理器、基于 gui 的安装管理器和git。
使用 APT 处理软件
在基于 debian 的 Linux 发行版(包括 Kali 和 Ubuntu)中,默认的软件包管理器是高级打包工具 apt,其主要命令是 apt-get。在最简单和最常见的形式中,您可以使用 apt-get 下载和安装新的软件包,但也可以使用它更新和升级软件。
搜索软件包
在下载软件包之前,您可以检查所需的软件包是否在存储库中可用,存储库是操作系统存储信息的地方。apt 工具有一个搜索功能,可以检查包是否可用。语法很简单:
aptcache search keyword
注意,我们使用 apt-cache 命令搜索 apt 缓存,或者它存储软件包名的位置。例如,如果您正在搜索入侵检测系统 Snort,您将输入图表 4-1 所示的命令。
kali >apt-cache search snort
fwsnort Snorttoiptables rule translator
ippl IP protocols logger
- snip -
snort flexible Network Intrusion Detection System
snortcommon flexible Network Intrusion Detection System common files
- snip -
清单 4-1:使用 apt-cache 在系统中搜索 Snort
如您所见,许多文件中都有snort关键字,但是在输出的中间我们看到snort - flexible Network Intrusion Detection System。这就是我们要找的!
添加软件
现在您已经知道 snort 包存在于存储库中,可以使用 apt-get 下载软件。
要在终端中从操作系统的默认存储库中安装软件,请使用apt-get命令,后面是关键字install,然后是要安装的包的名称。语法是这样的:
aptget install packagename
让我们通过在系统上安装 Snort 来尝试一下。输入 apt-get install snort 作为命令语句,如清单 4-2 所示。
kali >apt-get install snort
Reading package lists... Done
Building dependency tree
Reading state information... Done
Suggested packages:
snortdoc
The following NEW packages will be installed: snort
snip
Install these packages without verification [Y/n]?
清单 4-2:使用 apt-get 安装安装 Snort
您看到的输出结果告诉您正在安装什么。如果一切正常,在出现提示时输入y,您的软件安装将继续。
删除软件
在删除软件时,使用带有remove选项的apt-get,后面跟着要删除的软件的名称(参见清单 4-3)。
kali >apt-get remove snort
Reading package lists... Done
Building dependency tree
Reading state information... Done
The following packages were automatically installed and are no longer
required:
libdaq0 libprelude2 oinkmaster snortcommonlibraries snortrulesdefault
snip
Do you want to continue [Y/n]?
清单 4-3:使用 apt-get remove 删除 Snort
同样,您将看到实时完成的任务,并将询问您是否希望继续。您可以输入Y来卸载,但是您可能希望继续使用 Snort,因为我们将再次使用它。remove 命令不会删除配置文件,这意味着您可以在将来重新安装相同的包,而无需重新配置。如果您确实希望在删除包的同时删除配置文件,可以使用清除选项,如清单 4-4 所示。
kali >apt-get purge snort
Reading package lists... Done
Building dependency tree
Reading state information... Done
The following packages were automatically installed and are no longer required: libdaq0 libprelude2 oinkmaster snortcommonlibraries snortrulesdefault
snip
Do you want to continue [Y/n]?
清单 4-4:使用 apt-get 清除删除 Snort 和附带的配置文件
只需在提示符处输入Y,继续清除软件包和配置文件。
您可能已经注意到,在输出中显示有提示:The following packages were automatically installed and are no longer required 。为了保持事物的小型和模块化,许多 Linux 包被分解成许多不同程序可能使用的软件单元。在安装 Snort 时,您安装了 Snort 运行所需的几个依赖项或库。现在您正在删除 Snort,不再需要其他库或依赖项,因此也删除了它们。
更新软件
软件库将定期使用新软件或现有软件的新版本进行更新。这些更新不会自动进行,因此您必须手动请求它们,以便将这些更新应用到您自己的系统中。更新(update)与升级(upgrade)不同:更新只是更新可从存储库下载的包列表,而升级将把包升级到存储库中的最新版本。
您可以通过输入apt-get命令和关键字update来更新您的系统。这将搜索系统上的所有包并检查是否有更新。如果是,则下载更新(请参见清单 4-5)。
kali >apt-get update
Get:1 http://mirrors.ocf.berkeley.edu/kali kalirolling InRelease [30.5kb] Get:2 http://mirrors.ocf.berkeley.edu/kali kalirolling/main amd64 Packages
[14.9MB]
Get:3 http://mirrors.ocf.berkeley.edu/kali kalirolling nonfree amd64 Packages [163kb]
Get:4 http://mirrors.ocf.berkeley.edu/kali kalirolling/contrib amd64 Packages [107 kB]
Fetched 15.2 MB in 1min 4s (236 kB/s) Reading package lists... Done
清单 4-5:使用 apt-get 更新更新所有过时的包
系统存储库中可用软件的列表将被更新。如果更新成功,您的终端将声明 Reading package lists... Done,如清单 4-5 所示。注意,存储库的名称和值(时间、大小等等)在您的系统上可能是不同的。
升级软件
要升级系统上的现有软件包,请使用 apt-get 升级。因为升级包可能会更改软件,所以必须以 root 用户身份登录,或者在输入 apt-get 升级之前使用sudo命令。这个命令将升级 apt 列表存在的系统上的每个软件包,这意味着只升级存储在存储库中的包(参见清单 4-6)。升级可能很耗时,因此您可能暂时无法使用您的系统。
kali >apt-get upgrade
Reading package lists... Done
Building dependency tree... Done
Calculating upgrade... Done
The following packages were automatically installed and no longer required:
snip
The following packages will be upgraded:
snip
1101 upgraded, 0 newly installed, 0 to remove and 318 not upgraded. Need to get 827 MB of archives.
After this operation, 408 MB disk space will be freed.
Do you want to continue? [Y/n]
清单 4-6:使用 apt-get 升级升级所有过时的包
您应该在输出中看到系统估计软件包所需的硬盘空间。如果您想继续,并且有足够的硬盘空间进行升级,请输入Y。
添加软件仓库到 SOURCES.LIST 文件
为 Linux 的特定发行版保存软件的服务器称为存储库。几乎每个发行版都有自己的软件存储库(为该发行版开发和配置的),这些存储库可能不能很好地工作,或者根本不能与其他发行版一起工作。尽管这些存储库通常包含相同或类似的软件,但它们并不相同,有时它们具有相同软件的不同版本或完全不同的软件。
当然,您将使用 Kali 存储库,它有大量的安全和黑客软件。但由于 Kali 专门从事安全和黑客攻击,它不包括一些特殊的软件和工具,甚至一些普通的软件。如果系统没有在 Kali 软件存储库中找到特定的软件,那么值得添加一两个备份存储库供系统搜索。
您的系统将搜索的软件存储库存储在sources.list文件中。您可以更改此文件,以定义要从哪个存储库下载软件。我经常在sources.list中的 Kali 存储库之后添加 Ubuntu 存储库。这样,当我请求下载一个新的软件包时,我的系统将首先查看 Kali 存储库,如果没有软件包,它将查看 Ubuntu 存储库。
你可以找到sources.list文件在/etc/apt/sources.list。使用任何文本编辑器列出并打开它。我还是用 Leafpad 打开此文件。sources.list文件在终端中输入以下内容,用你自己使用的编辑器名称替换 leafpad:
kali >leafpad /etc/apt/sources.list
输入此命令后,您应该会看到一个类似于 Kali 默认存储库列表中的窗口。
图 4-1:source .list 中 Kali 的默认存储库
许多 Linux 发行版将存储库划分为不同的类别。例如,Ubuntu 将其存储库分类如下:
main包含受支持的开源软件
universe包含社区维护的开源软件
multiverse包含受版权或其他法律问题限制的软件
restricted 包含专有设备驱动程序
backports包含来自后续版本的包
我不建议在sources.list中使用测试、实验性或不稳定的存储库。因为他们可以下载有问题的软件到你的系统。没有经过全面测试的软件可能会破坏您的系统。
当您要求下载一个新的软件包时,系统会按顺序查看sources.list中列出的存储库。并在找到所需的包时停止,首先检查存储库是否与您的系统兼容。和 Ubuntu 一样,Kali 也是在 Debian 上构建的,所以这些存储库在每个系统上都能很好地工作。
要添加存储库,只需编辑sources.list。打开文件通过向列表中添加存储库的名称,然后保存该文件。例如,您想在 Kali 上安装 Oracle Java 8。默认的 Kali 源代码中没有适用于 Oracle Java 8 的 apt 包,但是在线快速搜索显示 WebUpd8 的优秀人员已经创建了一个。如果您将它们的存储库添加到sources.list中,那么您可以使用 apt-get install oracle-java8-installer 安装程序命令来安装 Oracle Java 8。在编写本文时,您需要将以下存储库位置添加到sources.list中,以便添加必要的存储库:
deb http://ppa.launchpad.net/webupd8team/java/ubuntu trusty main
debsrc http://ppa.launchpad.net/webupd8team/java/ubuntu precise main
使用基于 Gui 的安装程序
Kali 的新版本不再包含基于 gui 的软件安装工具,但是您可以使用 apt-get 命令来安装它。最常见的两种基于 gui 的安装工具是 Synaptic 和 Gdebi。让我们安装 Synaptic 并使用它来安装 Snort 包:
kali >apt-get install synaptic
Reading package lists... Done
Building dependency tree
Reading state information... Done
snip
Processing triggers for menu (2.1.47)...
kali >
一旦你安装了 synaptic,你可以从设置 ▸ 新立得软件包管理器(Settings ▸ Synaptic Package Manager),应该打开窗口如图 42。
图 4-2:Synaptic 包管理器接口
现在您可以搜索您正在寻找的包,只需单击 Search 选项卡打开一个搜索窗口。因为您再次寻找 Snort,所以在搜索窗口中输入 Snort 并单击 search。向下滚动搜索结果以找到您要查找的包。选中 snort 旁边的复选框,然后单击 Apply 选项卡,如图 4-3 所示。Synaptic 现在将从存储库下载并安装 Snort 以及任何必要的依赖项。
图 4-3:从 Synaptic 包管理器下载 Snort
使用 GIT 安装软件
有时,您想要的软件在任何存储库中都不可用——尤其是在它是全新的情况下——但是它可能在 github (https://www.github.com/)上可用,这个站点允许开发人员与其他人共享他们的软件,以便下载、使用和提供反馈。例如,如果您想要蓝牙攻击和渗透套件 bluediving,但是在 Kali 存储库中找不到它,那么您可以通过在浏览器搜索栏中输入bluediving来搜索。如果它存在于 github 上,您应该在搜索结果中看到它的存储库。
在 github 上找到软件后,可以通过输入 git clone 命令及其 github URL 从终端安装软件。例如,bluediving 位于https://www.github.com/balle/bluediving.git。要将其克隆到您的系统中,请输入清单4-7所示的命令。
kali >git clone https://[www.github.com/balle/bluediving.git](http://www.github.com/balle/bluediving.git)
Cloning into 'bluediving'...
remote: Counting objects: 131, Done.
remote: Total 131 (delta 0), reused 0 (delta 0), packreused 131 Receiving objects: 100% (131/131), 900.81 KiB | 646.00 KiB/s, Done.
Resolving deltas: 100% (9/9), Done.
Checking connectivity... Done.
清单 4-7:使用 git clone 克隆 bluediving
git clone 命令将所有数据和文件从该位置复制到您的系统中。您可以使用目标目录上的长列表命令 ls -l 检查它们是否已成功下载,如下所示:
kali >ls -l
如果您已经成功地将 bluediving 克隆到您的系统中,您应该会看到以下输出:
total 80
drwxrxrx 7 root root 4096 Jan 10 22:19 bluediving
drwxrxrx 2 root root 4096 Dec 5 11:17 Desktop
drwxrxrx 2 root root 4096 Dec 5 11:17 Documents
drwxrxrx 2 root root 4096 Dec 5 11:17 Downloads
drwxrxrx 2 root root 4096 Dec 5 11:17 Music
snip
如您所见,bluediving 已成功地克隆到系统中,并为其文件创建了一个名为 bluediving 的新目录。
总结
在本章中,您学习了许多在 Linux 系统上下载和安装新软件的方法。软件包管理器(如 apt)、基于 gui 的安装程序和 git clone 是有抱负的黑客需要知道的最常见和最关键的方法。你很快就会发现自己对它们都很熟悉了。