我用 LinuxLinux学习|Gentoo/Arch/FreeBSDLinux

你所知道的Linux(四)——Debian Packager漫谈

2019-10-07  本文已影响0人  淀粉月刊

        大家好,我是无用挂件。这篇文章里,我们来谈谈包管理器。

        先来看下上次留下来的问题:那个“大佬”,荒谬在哪里?

        回顾一下基本事实。Jay Freeman(Saurik)当年顺手编译了Debian Packager当作Cydia的包管理器,因而Cydia具有某些令我们熟悉而不愉快的特性(比如缓慢的APT,比如dpkg/lock)。当然,好处也是显然的:稳定。凭借着强大、稳定而不失开放的体系,Cydia极大地发掘了iOS的潜能,这点必须得到公认。所以我们可以顺理成章地得出结论,即Cydia使用了Debian Packager,仅仅表明了Debian Packager在类UNIX系统中具有可移植性而已,并不能得出iOS和Debian的关系。

        回归正题,我们来看一下Linux下主要的包管理器。先从Debian讲起。

        Debian的包管理器为Debian Packager,上层是APT(Advanced Packaging Tool)

       注意点:

请以root身份运行(或者直接sudo执行)

apt和apt-get均可,Debian官方建议使用apt

[PackageName]为软件包名,支持插入通配符

       基本命令:

更新当前软件源:apt update

更新所有软件包(跳过依赖冲突):apt upgrade

更新所有软件包(依优先级处理依赖冲突):apt dist-upgrade / apt full-upgrade

列举符合条件的软件包:apt list [PackageName]

安装指定软件包:apt install [PackageName]

重新安装指定软件包:apt reinstall [PackageName]

修复所有包错误:apt install -f

移除指定包(保留配置文件):apt remove [PackageName]

彻底删除指定包(不保留配置文件):apt purge [PackageName]

清理无用包及缓存:apt clean && apt autoremove

下载指定包的源代码:apt source

       以上是APT的常用命令,基本覆盖日常使用的所有操作(我大概只能想起这么多)。这里,我们有必要理清APT的基本工作流程。

       APT是一个典型的C/S(客户/服务器)系统。APT使用genbasedir分析每个软件包的Header并记录在置于base目录下的一个索引清单中。Client获取该索引清单,并将其解压至/apt/lists,亦即“更新本地数据库”的操作。APT在接收到相关指令时,会先在本地数据库中进行检索以获知其依赖关系,并从Server(源)获取这些软件包。

       应当讲,这种设计是相当优秀的,甚而包含了现在日趋流行的去中心化的思想。只需一条命令(rsync -av –delete-after {SourceURL} {YourPublicdir}),任何人都可以建立具有完整功能的镜像源。用户可以自由选择遍布全球的镜像源,镜像源之间也可以互相重定向以解决突发问题、保证服务正常进行。

       源列表存放于/etc/apt/sources.list文件内。国内著名的教育网镜像源有USTC(中科大)、Tuna(清华大学)、SJTUG(上海交大,不推荐),多线BGP镜像源有阿里云、网易、腾讯云、华为云(不推荐)等提供的服务。以tuna镜像源为例,我们可以这样配置Debian 9 Stretch的源列表:

        执行sudo vim /etc/apt/sources.list,按Ctrl+I切换模式,删除其中所有内容,添加内容如下。

deb https://mirrors.tuna.tsinghua.edu.cn/debian/ stretch main contrib non-free

deb-src https://mirrors.tuna.tsinghua.edu.cn/debian/ stretch main contrib non-free

deb https://mirrors.tuna.tsinghua.edu.cn/debian/ stretch-updates main contrib non-free

deb-src https://mirrors.tuna.tsinghua.edu.cn/debian/ stretch-updates main contrib non-free

deb https://mirrors.tuna.tsinghua.edu.cn/debian/ stretch-backports main contrib non-free

deb-src https://mirrors.tuna.tsinghua.edu.cn/debian/ stretch-backports main contrib non-free

deb https://mirrors.tuna.tsinghua.edu.cn/debian-security/ stretch/updates main contrib non-free

deb-src https://mirrors.tuna.tsinghua.edu.cn/debian-security/ stretch/updates main contrib non-free

        随后按Esc切换模式,再按两次Shift+Z保存并退出。执行sudo apt update,新的源列表生效。

        最后给出思考题:请自行Google了解一下其它著名发行版的包管理器,并考察其与Debian Packager的异同及优劣差别。预告一下,我们下期将对赫赫有名的AUR进行介绍。


本文首发于淀粉月刊:https://dfkan.com

本文作者:无用挂件

上一篇下一篇

猜你喜欢

热点阅读