美文网首页我用 LinuxLinux学习|Gentoo/Arch/FreeBSDLinux
你所知道的Linux(四)——Debian Packager漫谈

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

作者: 淀粉月刊 | 来源:发表于2019-10-07 12: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

    本文作者:无用挂件

    相关文章

      网友评论

        本文标题:你所知道的Linux(四)——Debian Packager漫谈

        本文链接:https://www.haomeiwen.com/subject/vccmpctx.html