众所周知,Linux是个友好的操作系统,在Linux世界里软件包管理器基本上就是它的生命,而由于Linux发行版众多,所以软件包管理器也是鱼龙混杂。有Debian系的apt/dpkg,Redhat系的yum/dnf/rpm,还有小众的ArchLinux的pacman以及从源码开始编译的ports(这货咱先不讲,它是FreeBSD的)和emerge。

基础软件包管理dpkg/rpm

先讲开山鼻祖dpkg吧,远古时期上世纪90年代的Linux都是将软件用源码来编译的,但是并不是所有的电脑都会自带诸如gcc/clang一类的编译工具,就算你有了这些编译工具,你也需要像make这种将所有头文件和源代码一并编译和链接的工具,否则你可能编译只花了10分钟,但是打命令就用了20分钟,如果一些比较大的软件包像gcc要更新的话,至少要一个小时左右,就算你有make这样的工具你依然会疯掉......

dpkg就是救世主般的存在,它直接将二进制的文档复制进计算机的/usr目录中,省去你大量编译的时间(毕竟现在电脑不是i686就是x86_64),这也拯救了那些没有自带编译器的系统。然而,你要知道就算你想装的软件包只有一个,你还是得装大量的软件包,这就是Linux界软件包的依赖关系。一个软件包会调用其他软件包的可执行文件(如python脚本),以及库文件(那些以lib开头的文件),这就很蛋疼了。

商业大佬Redhat因为对Debian的dpkg羡慕嫉妒恨,也开发了一个叫rpm的软件包管理器,其本质也是和dpkg相似,都是将二进制可执行文件/字节码/脚本复制到计算机硬盘中。

网络时代——apt/yum/dnf

为了解决依赖关系这个蛋♂疼的事情,Debian系和Redhat系分别开发出了自己的工具。

apt是Debian开发的软件包管理器,apt可以通过从网络站点下载软件包,并自动解决Debian系统的软件包依赖关系,这就是为什么你装一个GNOME3可能你要装一大堆没有用的软件包,当然如果你是精简派人物你也可以用--no-install-recommends参数解决。

而Redhat用了yum这个软件包管理器,和apt不同,yum用python进行编写,这样就表明了它具有比apt更好的拓展性,可以用一些python脚本添加一些功能。however,这是有代价的,由于使用的是脚本语言,速度会慢于apt。由于python2式微,现在Redhat在使用新的软件包管理器dnf(不是游戏是管理器!!!),它用python3编写,还支持多线程下载,apt到现在还是没有这个功能。

但是在用户界面友好性上我觉得apt更胜一筹,因为apt的用户界面aptitude支持在TUI界面搜索和安装软件包,还有新立德软件包管理器(GNOME3下,话说它不支持Wayland)。而且apt下软件包最常见的,要么是自动安装,要么是手动安装,卸载时不会有大量依赖包残留。

冷门系列——pacman/AUR

pacman是ArchLinux的软件包管理器,众所周知,Arch系的系统都是滚动更新的,所以基本上软件包版本是不会因为发行版的版本而限制,所有的软件包都是最新的。Arch系最大的特点就是更新时只要用pacman -Syyu来更新就行了。然而,Arch系的软件包的安全性和稳定性就不得而知了——比起Debian的stable分支而言,Arch系统的稳定性还是比较差的,所以Arch有一个著名的砖业名词“滚挂”。当然,有一些替代的发行版,比如Manjaro,它的源和ArchLinux源是完全独立的。Arch的一大特色就是AUR了,但是用户提供的,稳定性也就不得而知了。

坚守传统——emerge

emerge是gentoo的软件包管理器,也就是让你编译一下午的软件包管理器。emerge将源代码从镜像站上下载,编译,安装。因为从源代码编译可以进行自行调整,很多人比较喜欢从源代码编译,做一回抖M去折腾自己。编译的另外一个好处就是可以跨架构安装,就可以节约镜像站的空间。

兄弟们,春光灿烂,实为三连的好时候,再点一个关注,就更香了。关注过千我给大家开课(手动滑稽)。

python包管理工具ports_Linux软件包管理器讲解相关推荐

  1. linux软件包管理工具,Linux 软件包管理器-----yum配置详解一

    一.yum简介 Yum(全称为 Yellow dog Updater, Modified)是一个在Fedora和RedHat以及CentOS中的Shell前端软件包管理器.基于RPM包管理,能够从指定 ...

  2. linux更换包管理工具,linux 软件包管理

    1.Linux软件包管理 Redhat, SUSE: RPM Redhat Package Manager PRM is Package Manager 前端工具:yum, apt-get 后端工具: ...

  3. Windows磁盘管理软件/磁盘管理工具/硬盘分区管理工具

    说到磁盘管理软件/磁盘管理工具/硬盘分区管理工具,大家可能会想到Windows自带的磁盘管理器,可以做简单的创建.删除.格式化.压缩.扩展卷.基本盘/动态盘互转.MBR/GPT盘格式互转等操作.但是对 ...

  4. Windows磁盘管理工具Diskpart之一 管理基本磁盘

    Windows磁盘管理工具Diskpart之一 管理基本磁盘 环境:    WinXP 系统(也可以是Win2003) Vmware 7.1 准备:    系统有三块磁盘0和1还有2,磁盘0为系统磁盘 ...

  5. 使用MySQL Workbench远程管理工具进行远程管理Mysql的错误及解决办法

    概述: 最近要使用MySQL Workbench远程管理工具进行远程管理虚拟机上的MySQL.可是,在配置的过程中,遇到了一些问题,下面是这个问题(HOSt ip is not allowed to ...

  6. helm部署仓库中没有的包_Kubernetes的Helm软件包管理器简介

    helm部署仓库中没有的包 Before we dive into the Helm package manager, I'm going to explain some key concepts t ...

  7. 【Linux系统】开发工具(上) {软件包管理器yum,更新yum源,文本编辑器vim,vim的四种基本模式,vim指令集,代码编译器gcc/g++}

    一.软件包管理器:yum 1.1 yum是什么? Linux下软件的安装方法: 源码安装:下载源码,在本地自行编译,然后才能安装. rpm安装:红帽软件包管理工具,属于安装包安装. yum安装:本身会 ...

  8. 3-1:常见任务和主要工具之软件包管理

    文章目录 前言 一:软件包系统 二:软件包系统的工作方式 (1)软件包文件 (2)库 (3)依赖关系 (4)高级和低级软件包工具 三:常见软件包管理任务 (1)在库里面查看软件包 (2)安装软件包 ( ...

  9. apt包管理 Android,apt软件包管理学习(示例代码)

    软件通常以软件包的形式存储在仓库中,管理软件一般叫做软件包管理.本文主要记录apt包管理工具的基本使用:查找,安装,升级和删除. 包管理工具 软件包一般是一个压缩文件,里面包括编译好的二进制文件和需要 ...

最新文章

  1. 在Mac上利用pip3安装pyecharts模块
  2. linux下开机启动oracle
  3. dataframe转换成dict和列表的技巧
  4. C++lowest common ancestor最近公共祖先算法(附完整源码)
  5. 14:IO之字符字节流
  6. .NET 简单的smtp协议发邮件
  7. Dubbo面试 - dubbo 负载均衡策略和集群容错策略都有哪些?
  8. HTML系列(四):编辑图像
  9. 三星5G手机全球销量200万台:年底将翻番
  10. 微服务升级_SpringCloud Alibaba工作笔记0012---Gateway常用的Filter
  11. 【100题】第十一题(二叉树中节点的最大距离)
  12. 对聊天室项目的NABCD的分析
  13. idea无法使用mvn命令
  14. 页眉设置为章节名(WPS)
  15. DAO:去中心化的新兴领导者
  16. 3-5数据链路层-局域网
  17. 图像处理-机器学习一些科普材料汇集 - 持续更新中_拔剑-浆糊的传说_新浪博客...
  18. 机器人瓦力材质库下载_机器人总动员 4K蓝光原盘下载+高清MKV版/ 大空奇兵·威E(港) / 瓦力(台) 2008 60.4G...
  19. 互联网大脑的云反射弧路径选择问题,兼谈ET大脑模糊认知反演理论
  20. C# AutoCAD画线时设置线的颜色与线的宽度

热门文章

  1. 基于阿里云天池的飞猪平台用户行为分析——MySQL
  2. Vue中 对Table表格中的输入项进行校验
  3. 致传统企业朋友:不够痛就别微服务,有坑 (2)
  4. linux下设置时钟,linux 如何设置时钟服务器
  5. OpenCV3 和 Qt5 计算机视觉:6~10
  6. 计算机班级logo设计图案简单,为自己的班级设计一枚标志图案,并说明你所设计图案的含义...
  7. Bootstrap系列之文本(Text)
  8. js打印,基础知识,数据类型
  9. 跨国语音翻译家app下载
  10. linux卸载sshpass,linux – sshpass中的多个命令