一、引言
就像iPhone的App Store、Windows的Microsoft Store,Linux同样也有“应用商店”(软件源),本文以deepin系统为例讲解衍生于Debian系统的在线升级工具APT。
APT(Advanced Packaging Tool)工具套件包括apt、apt-get、apt-cache、apt-config等,官方推荐使用apt,不过我觉得后面几个工具更好用。
软件源地址存放在/etc/apt/sources.list。好了,开始吧。
二、apt-cache命令
这个工具的所有命令都是访问与软件源保持一致的本地cache。
1、检索满足条件的软件:apt-cache search
//示例
apt-cache search samba
这条命令的执行结果会有多条,只要软件名或者软件描述中包含给定的关键字则列出。
观察检索结果,第一条4pane似乎就和samba没有任何关系,无论名称或者描述。别急,在deepin系统中软件描述分为长描述与短描述,这条命令检索长描述,但显示短描述(有点怪)。
2、检索满足条件的软件:apt-cache search --names-only
//示例
apt-cache search --names-only samba
增加一个参数names-only,表示只有软件名包含给定的关键字则列出,因为不再检索软件描述,结果大为减少。
观察检索结果,所有列出的软件名均包含samba。
通过检索获得软件的准确名称,接下来需要了解该软件各个方面的信息。
3、查询软件版本:apt-cache madison
//示例
apt-cache madison samba
观察运行结果,列出了软件samba最近的3个版本。不过说实话,这个版本号看着别扭,而且为什么要保留这么多的历史版本?
4、查询软件综合信息:apt-cache show
//示例
apt-cache show samba
观察运行结果,按版本列出了软件的各项信息,samba有3个版本,所以分3个部分列出。通过执行这条命令可以体会一下apt-cache的处理对象是本地cache(对标的是软件源),不是本机已安装的软件。
5、整简单点,我就想知道某个软件是否安装:apt-cache policy
//示例
apt-cache policy samba
结果按版本列出,100与500表示每个源的优先级(priority),100表示已安装,500表示未安装,还是整的有点复杂啊。
通过apt-cache的命令可以充分了解这个“应用商店”,接下来就是“购买商品”——apt-get。
三、apt-get命令
1、同步包索引文件(官方解释):apt-get update
//示例
apt-get update
执行apt-cache命令时的cache来自哪里?答案在这里,通过这条命令建立或更新包索引文件,存放在目录/var/lib/apt/lists,除安装软件外其他需要访问软件源的命令均访问索引文件(这正是索引的意义所在)。
试一试删除这个目录下的所有文件,然后运行:apt-cache search samba,结果有什么变化?
2、安装系统所有软件的最新版本:apt-get upgrade
//示例
apt-get upgrade
对系统的全面升级(除内核外),与apt-get update搭配使用,先update包索引文件,再upgrade软件。
3、安装或升级指定的软件:apt-get install
//示例
apt-get install samba
没啥说的,注意给定软件名称就行(如果要给出带版本号的文件名简直是反人类设计了)。
4、移除指定的软件:apt-get remove
//示例
apt-get remove samba
真没啥说的。
5、清除本地仓库(local repository):apt-get clean
//示例
apt-get clean
观察两个目录/var/cache/apt和/var/cache/apt/archives在命令执行后几乎所有的文件都被清除了,个人觉得本地仓库可以近似理解为安装或升级软件时留下的包文件。
尚不明确本地仓库与包索引文件的关系,也就是/var/cache/apt与/var/lib/apt/lists目录下文件之间的关系,但我觉得两者之间肯定有非常紧密的联系。
四、总结
Debian系Linux为了提高访问软件源的速度引入了本地cache机制,在APT命令的划分上分为apt-cache与apt-get两大门类,整体设计清晰合理,值得我们在日常工作中学习借鉴。