Linux包管理-新手笔记

Mac OS下的包管理通常会使用Homebrew,通常一行命令就能解决问题,包括所有的依赖库也能一并配好。为了使用某些开源项目而转战linux后,在配环境方面又是大问题。好在Linux自带的apt-get和相关的包管理指令能够很好地解决这类问题,甚至比Homebrew的使用更简便。正好自学的过程中找到了一份不错的入门级教程,顺带记录一下,以后方便找。

教程链接:https://itsfoss.com/apt-get-linux-guide/

两个核心工具:apt-getapt-cache,前者主要用于安装、更新和清理包,后者用于寻找新的包。

运用apt-get进行本地更新

apt-get指令是基于数据库的操作,这个数据库管理着可用的安装包。因此,在刚刚安装Linux系统时,需要先执行更新数据库的指令,让系统知晓是否有新安装包可用:

sudo apt-get update

更新过程中,安装包通常会有三种标记:hit/ign/get

hit表示包版本没有变化;ign表示忽略更新(包已经是最新或者检索中出现未知问题);get表示发现了更新,并记录了更新信息(但还没有下载)

更新之后是升级(upgrade),这两个关键词挺容易弄混。全盘升级可执行以下指令:

sudo apt-get upgrade

如果要制定某一个程序升级,则在上述语句后加入程序包的名称。

将上述两步合二为一:

sudo apt-get update && sudo apt-get upgrade -y

这样就完成了本地软件包的更新。

运用apt-cache搜索新包

上文已提到apt-cache主要用于搜索新安装包。它的用法也很简单,主要分两类。

第一种是知道包的大致名称,但不确定其准确名称,则使用:

apt-cache search <search term>

<search term>即为搜索关键词,比如我需要安装OpenImageIO这个包,但不确定包名称,即可先使用这个指令进行搜索。搜索会返回与此相关的准确包名称和简短的描述。

另一种是知道包名称的一部分,希望了解更多相关版本,可使用:

apt-cache pkgnames <search_term>

搜索会返回所有头部包含搜索关键词的安装包。

当知道准确的包名称后,就可以使用showpkg来探索安装包的内容了:

apt-cache showpkg <package_name>

运用apt-get安装新包

apt-cache的帮助下,我们已经知道了安装包的准确名称,下面就可以直接使用apt-get安装它们了。

sudo apt-get install <package_name>

此命令的一个优点是可以自动补全,当不确定包的名称时,也可以通过按TAB键让终端显示更多与之名称相似的安装包。

如果已安装,apt-get会自动检索新版本,若发现则会更新已有的包。如果不希望更新又不确定是否安装,可以通过加入--no-upgrade尾缀实现。

如需安装指定版本的包,则需先确认版本号,后通过以下指令实现(这一点相比mac下的brew version好用太多..因为brew version和相关方法都已经废弃了):

sudo apt-get install <package_name>=<version_number>

删除、清理和其他操作

有两种方式删除已安装的包:

sudo apt-get remove <package_name>
sudo apt-get purge <package_name>

前者直接删除但保留一些参数和环境(下次安装后仍可用),后者是彻底删除。大部分情况下使用第一种方式就够了。

同样有两种方式清理已安装的包:

sudo apt-get clean
sudo apt-get autoclean

这两点的差别感觉原作者写的有点糊..暂时用不到

最后还有个autoremove,用于清理那些在安装时作为依赖项附加安装的包,但被依赖包已经被删除的情况(这么说有点拗口,举个例子:安装A包时,B、C包作为A依赖的环境包也被附加安装,之后A包被删除,如果B、C包不被其他包依赖,则执行autoremove就会删除B和C包)。


目前就是这些,其他想到再补。