第五章 获得软件包信息
对于APT系统来说有许多的前后端程序可以使得我们很容易的得到可以获得的安装包和已经安装的安装包列表,同时还可以得到一些诸如一个安装包所在的部分,他的优先级及其描述等等一些信息.
但是在这里我们的目的是要学习如何使用纯粹的APT.所以我们如何查找到我们要安装的软件包的名字呢?
对于这个任务我们有许多的办法.我们要从apt-cache开始.这个程序是APT系统用来维护他的数据库的.我们要简单的看一些实际的程序.
5.1 获得安装包名
例如,所如我们要怀念一下Atari 2600的日子.我们可以使用APT安装一个Atari模拟器,然后下载一些游戏.我们可以这样的来做:
# apt-cache search atari
aranym - Atari Running on Any Machine
atari-fdisk-cross - Partition editor for Atari (running on non-Atari)
stella - Atari 2600 Emulator for SDL & X windows
xmess-x - X binaries for the Multi Emulator Super System
这样我们就可以查到许多与我们所希望的安装包相关的软件包,同时附有一些简要的说明.如果要得以某一个安装包更为详细的说明信息,我们可以用下面的命令:
# apt-cache show stella
Package: stella
Priority: optional
Section: contrib/otherosfs
Installed-Size: 1628
Maintainer: Tom Lear <tom@trap.mtview.ca.us>
Architecture: i386
Version: 1.4.1-1
Depends: libc6 (>= 2.3.2.ds1-4), libgcc1 (>= 1:3.4.1-3), libpng12-0 (>= 1.2.5.0-4), libsdl1.2debian (>> 1.2.7-0), libstdc++5 (>= 1:3.3.4-1), zlib1g (>= 1:1.2.1)
Filename: pool/contrib/s/stella/stella_1.4.1-1_i386.deb
Size: 481058
MD5sum: fa90ff4ea5e2692ac6c649e140515376
Description: Atari 2600 Emulator for SDL & X windows
Stella is a portable emulator of the old Atari 2600 video-game console
written in C++. You can play most Atari 2600 games with it.
.
Homepage: http://stella.sf.net/
Tag: hardware::emulation, uitoolkit::sdl
在这个输出中,我们可以得到我们要安装(或是不要安装的)软件包的详细信息,同时附有关于这个软件包的全部的描述.如果我们的系统已经安装了一个软件包了同时也有一个更新的版本,我们就会得到这两个版本的信息.例如:
apt-cache show grub
Package: grub
Priority: optional
Section: admin
Installed-Size: 676
Maintainer: Grub Maintainers <pkg-grub-devel@lists.alioth.debian.org>
Architecture: i386
Version: 0.97-3
Depends: libc6 (>= 2.3.5-1), libncurses5 (>= 5.4-5)
Suggests: grub-doc, grubconf
Filename: pool/main/g/grub/grub_0.97-3_i386.deb
Size: 357734
MD5sum: 5ce5fdba383383e99616b9cc77ec7d9f
Description: GRand Unified Bootloader
GRUB is a GPLed bootloader intended to unify bootloading across x86
operating systems. In addition to loading the Linux kernel,
it implements the Multiboot standard, which allows for flexible loading
of multiple boot images (needed for modular kernels such as the GNU Hurd).
Tag: admin::boot, interface::shell, interface::text-mode, role::sw:application, uitoolkit::ncurses
Package: grub
Priority: optional
Section: admin
Installed-Size: 660
Maintainer: Grub Maintainers <pkg-grub-devel@lists.alioth.debian.org>
Architecture: i386
Version: 0.95+cvs20040624-19
Depends: libc6 (>= 2.3.5-1), libncurses5 (>= 5.4-5)
Suggests: grub-doc, grubconf
Filename: pool/main/g/grub/grub_0.95+cvs20040624-19_i386.deb
Size: 349222
MD5sum: ac7663a4869cec83212f95274298d61d
Description: GRand Unified Bootloader
GRUB is a GPLed bootloader intended to unify bootloading across x86
operating systems. In addition to loading the Linux kernel,
it implements the Multiboot standard, which allows for flexible loading
of multiple boot images (needed for modular kernels such as the GNU Hurd).
Tag: admin::boot, interface::shell, interface::text-mode, role::sw:application, uitoolkit::ncurses
Package: grub
Priority: optional
Section: admin
Installed-Size: 668
Maintainer: Grub Maintainers <pkg-grub-devel@lists.alioth.debian.org>
Architecture: i386
Version: 0.95+cvs20040624-17
Depends: libc6 (>= 2.3.2.ds1-4), libncurses5 (>= 5.4-1)
Suggests: grub-doc, grubconf
Filename: pool/main/g/grub/grub_0.95+cvs20040624-17_i386.deb
Size: 358684
MD5sum: be75f23a365eca1270960d305a70da54
Description: GRand Unified Bootloader
GRUB is a GPLed bootloader intended to unify bootloading across x86
operating systems. In addition to loading the Linux kernel,
it implements the Multiboot standard, which allows for flexible loading
of multiple boot images (needed for modular kernels such as the GNU Hurd).
在这里我们要注意到在这个列中第一个可以获得安装的软件包而第二个是我们已经安装的安装包.要得到关于某一个软件包的一般信息,我们可以用下面的命令:
# apt-cache showpkg penguin-command
Package: penguin-command
Versions:
1.6.10-1(/var/lib/apt/lists/10.1.10.8_mirror_debian_dists_testing_main_binary-i386_Packages)(/var/lib/apt/lists/10.1.10.8_mirror_debian_dists_unstable_main_binary-i386_Packages)
1.6.7-2(/var/lib/apt/lists/10.1.10.8_mirror_debian_dists_stable_main_binary-i386_Packages)
Reverse Depends:
Dependencies:
1.6.10-1 - libc6 (2 2.3.2.ds1-4) libsdl-image1.2 (2 1.2.3) libsdl-mixer1.2 (2 1.2.5) libsdl1.2debian (4 1.2.7+1.2.8)
1.6.7-2 - libc6 (2 2.3.1-1) libjpeg62 (0 (null)) libpng12-0 (0 (null)) libsdl-mixer1.2 (2 1.2.4-3) libsdl1.2debian (4 1.2.3) zlib1g (2 1:1.1.4)
Provides:
1.6.10-1 -
1.6.7-2 -
Reverse Provides:
而如果我们只是希望找出这个软件包的依赖关系,我们可以用下面的命令:
# apt-cache depends penguin-command
penguin-command
依赖: libc6
依赖: libsdl-image1.2
依赖: libsdl-mixer1.2
依赖: libsdl1.2debian
总之,我们可以有一系列的方法可以查找出我们要安装的软件包的名字.
5.2 使用dpkg查找软件包名
定位一个软件包名字的一个方法就是要知道可以在这个软件包中找到的一个重要文件的名字.例如要查找一个提供常规的".h"文件以供编译用的软件包,我们可以运行下面的命令:
$ dpkg -S stdio.h
libc6-dev: /usr/include/bits/stdio.h
perl: /usr/lib/perl/5.8.7/CORE/nostdio.h
libglib2.0-dev: /usr/include/glib-2.0/glib/gstdio.h
libc6-dev: /usr/include/stdio.h
或是用下面命令:
$ dpkg -S /usr/include/stdio.h
libc6-dev: /usr/include/stdio.h
要查找一些在我们的系统上已经安装了软件包,这样的查找方法是相当有用的.例如,如果我们要清除我们的硬件驱动,我们可以用下面的命令:
# dpkg -l | grep mozilla
ii flashplayer-mozilla 7.0.25-0.1 Macromedia Flash Player
ii mozilla-browser 1.7.12-1 The Mozilla Internet application suite - cor
ii mozilla-psm 1.7.12-1 The Mozilla Internet application suite - Per
使用这个命令会存在一个"打断(break)"软件包名字的问题.在上面的例子中,软件包的全名是mozilla-browser.要修正这个问题,我们可以用下面的方法来使用COLUMNS环境变量:
$ COLUMNS=132 dpkg -l | grep mozilla
ii flashplayer-mozilla 7.0.25-0.1 Macromedia Flash Player
ii mozilla-browser 1.7.12-1 The Mozilla Internet application suite - core and browser
ii mozilla-psm 1.7.12-1 The Mozilla Internet application suite - Personal Security Manager (PS
或是用下面的方法:
$ apt-cache search "Mozilla Web Browser"
mozilla - The Mozilla Internet application suite - meta package
mozilla-chatzilla - Mozilla Web Browser - irc client
mozilla-mailnews - The Mozilla Internet application suite - mail and news support
mozilla-psm - The Mozilla Internet application suite - Personal Security Manager (PSM)
flashplayer-mozilla - Macromedia Flash Player
5.3 如何安装所需的软件包
假设我们正在编译一个程序,但是突然出现一个错误,因为他需要一个我们所没有的.h文件.而这时auto-apt程序可以解决我们的问题.如果我们需要一个软件包,他就会询问我们安装这个软件包,停止相关的进程并会在软件包安装后继续执行.
我们所需要做只是运行下面的命令:
# auto-apt run command
在这里command就是我们要执行的也许会需要一些我们并没有的文件的命令.例如:
# auto-apt run ./configure
然后他会询问安装一些必需的软件包并会自动调用apt-get程序.如果我们正在运行X,就会使用一个图形界面而不是默认的文本界面.
auto-apt会保持一个有效顺序更新所需的数据库.这是由命令auto-apt update,auto-apt updatedb,auto-apt update-local来完成的.
5.4 如何查找一个文件属于哪一个软件包
如果我们要安装一个软件包而我们使用apt-cache并不能查找到搜索时用到的名字,但是我们却知道程序自己的名字,或是其他的一些属于这个安装包的文件名字,这时我们可以使用apt-file来查找这个软件包的名字.命令格式如下:
# apt-file search filename
他的工作方式与dpkg -S相类似,但是前者也会显示出一些我们并没有安装的而却包含这个文件的软件包.他可以用来查找哪些软件包包含我们在编译程序时丢失的文件,当然这样的问题我们也可以用auto-apt来解决.
我们可以用下面的命令来列出一个软件包中的内容:
# apt-file list packagename
apt-file保持一个含有包文件的数据库,这与auto-apt相类似,但是前者需要更新(up-to-date).我们可以用下面的命令来完成:
# apt-file update
在默认的情况下,apt-file会使用auto-apt的数据库.
5.5 如何保持一个软件包的更改信息
每一个软件包都会在他的文档安装目录(/usr/share/doc/packagename)安装一个名为changelog.Debian.gz的文件,在这个文件中包含有这个软件包自上一版本以来所做的更改.我们可以使用zless的帮助来阅读这些更新日志.但是在我们进行了一次完整的系统更新以后,要查找每一个软件包的更新日志并不是一件很容易的事情.
一个名为apt-listchanges的程序可以自动完成这样的任务.但是我们要保证我们的系统已经安装了这个软件包.在这个软件包的安装过程中,Debconf会对他进行配置.一些问题依赖于我们设置的Debconf所使用的优先级而并不会显示.依据我们所希望的来回答这些问题.
第一个问题是询问我们apt-listchanges如何显示更新.我们可以要他们发信给我们,这对于自动更新是一个不错的选择,或者是我们可以要他们在如less的一类的分页器中进行显示,这样我们就可以在继续更新以前进行检查.如果我们并不希望apt-listchanges在更新时自动运行我们可以回答none.
在安装了apt-listchanges以后,一旦apt有软件包下载(或是从CD得到或是磁盘),他就会在我们安将这些软件包之前显示更新列表.
分享到:
相关推荐
### APT学习资料知识点解析 #### 一、APT软件简介 **APT**(Alternative Transients Program)是一款...通过对APT的学习和使用,用户可以深入了解电力系统的动态特性,为电力系统的规划、设计和维护提供有力的支持。
2. **镜像同步**:使用特定工具如`apt-mirror`或`apt-cacher-ng`来同步镜像。`apt-mirror`可以定期或一次性下载整个仓库,而`apt-cacher-ng`更侧重于缓存,只在需要时下载未被本地用户使用的软件包。 3. **配置本地...
- 用户基础:由于面向的是对Linux有一定了解的用户,对于不熟悉Linux的Windows用户,使用apt-cyg可能需要一定的学习成本。 总结,apt-cyg为Windows用户提供了一种接近Linux的包管理体验,它在简化软件管理和维护...
Python金融数据挖掘实战教学使用,利用numpy、pandas、sklearn等库,对金融数据进行分析,可以直接提交,或者学习使用.
针对APT的检测,机器学习已经成为一种有效的工具。本文主要探讨了基于机器学习的APT检测过程中遇到的四个关键难点及其相应的解决方案。 首先,难点一涉及到如何从原始病毒文件中提取可分析的数据。解决这个问题的...
本文从得到的某APT组织样本入手,先选择攻击过程产生的DNS、TCP、HTTP/HTTPS流量抽取流量特征序列,然后使用AdaBoostRF算法对正常流量和恶意流量进行分类,得到三种流量的分类状态。最后使用因果知识杀伤链模型对...
在基于机器学习的APT(Advanced Persistent Threat)检测中,面临多个挑战,这些挑战主要涉及到数据预处理、模型训练与持久化、模型匹配、软件开发流程以及模型参数优化。以下是对这些难点的详细解析: **难点一:从...
6. 分析和学习:通过分析过去的APT攻击案例,了解攻击模式和趋势,以便更好地预测和防止未来的攻击。 总之,理解和防御APT攻击需要全面的安全策略,包括技术、流程和人员的综合管理。定期的读书笔记和研究能帮助...
APT编程优点:源语言接近自然语言,易为工艺人员接受,工艺人员不用学习数学方法和计算机编程技巧。APT编程缺点:无法实现设计制造一体化、不直观、发展早,没有采用计算机几何学的最新理论成果。 3. APT语言的构成...
6. **人工智能**:涵盖机器学习、深度学习等技术的应用。 7. **工业互联网**:实现制造业智能化升级的基础平台。 #### 二、“新基建”带来的影响 “新基建”不仅能够推动科技创新和产业升级,还能通过“补短板”...
#### 三、APT防护关键技术 在防御APT攻击方面,关键技术包括: - **威胁情报共享平台**:收集、分析和共享威胁信息,提高整体防御水平。 - **入侵检测与预防系统**(IDS/IPS):实时监测网络流量,识别并阻止潜在...
【企业反APT构想】 APT(Advanced Persistent Threat,高级持续性威胁)是一种针对特定目标进行长期、隐蔽且持续的网络攻击活动。...只有通过不断学习历史安全事件,持续改进安全体系,才能有效地抵御APT攻击。
#### 三、区块链辅助APT取证调查 **1. 透明且不可篡改的证据链** - **完整的取证记录:** 区块链技术提供了一个不可篡改的记录系统,用于记录APT事件的取证过程。 - **跨组织协作:** 分布式账本使得多个组织能够...
在这个“项目--apt管理”中,我们可能涉及到了一系列与使用和配置`apt`相关的实践操作。 首先,我们需要了解`apt`的基本用法。在终端中,`apt update`命令用于刷新软件包列表,确保获取到最新的可用版本。而`apt ...
【Ubuntu入门档案】这篇文档是为初学者提供Ubuntu操作系统的基础知识,主要涵盖了如何从零开始学习Ubuntu,包括制作U盘启动盘、系统安装与更新、常用软件安装以及特定软件如Adobe Flash Player的安装方法。...
### LabVIEW与APT指南知识点详解 #### 一、引言:LabVIEW与APT简介 - **LabVIEW**:LabVIEW是一种基于图形化编程语言的软件开发环境...通过这些知识点的学习,可以帮助读者更好地理解和掌握LabVIEW及APT的使用方法。
APT语言编程技术系列讲座(数控)涵盖了数控自动编程的过程、APT语言的基本组成、几何定义语句、刀具运动语句、工艺数据语句等方面的知识点,为数控编程技术的学习者提供了系统性的指导和参考。
1. 软件安装:使用`apt-get`命令安装各类软件,如Web服务器Apache、数据库MySQL等。 2. GPIO扩展板:如Cobbler Plus,方便快速连接GPIO引脚,简化硬件实验。 3.树莓派摄像头模块:可添加摄像头模块,实现拍照、录像...
在"ROS学习248第三十节"中,我们将深入探讨ROS的核心概念、工具以及如何在实际项目中应用它们。 1. **ROS基础知识**:ROS主要由节点、话题、服务、参数服务器、包和工作空间等核心概念组成。节点是执行特定任务的...
360追日团队(HelioSteam)专注于APT攻击的研究,已经发现了三十多个APT组织,并对它们的攻击行为进行监控和分析。 文档中还提到摩诃草组织的攻击手法,其中包括使用不同种类的漏洞利用技术和恶意工具。常见的攻击...