目录
包管理器功能
包相当于软件,可实现某项专门的功能。包管理工具相当于软件管家,帮你实现“从哪里下载(源)”和“下载到哪里(环境)”的管理。Linux系统没有图形化界面,软件的下载普遍使用包管理工具实现。现在有很多流行的包管理工具,适用于不同的场景,如不同平台(win Linux)和语言(python javascript)
源:包仓库,包管理工具从源获取包。如conda的默认源是国外的anaconda官网的服务器,可换为清华源、阿里源等镜像源。
环境:指运行程序需要的软硬件的集合。如某python程序的环境包括[电脑、python3.8、import的包]。为使用不同的环境,形成了虚拟环境的概念,比如相互隔离的python3.7和3.8虚拟环境。
虚拟环境实现隔离的具体方法:可打开由conda创建的虚拟环境文件夹,里面包含不同版本的动态链接库dll文件,它们为虚拟环境提供了不同的服务。
常用的包管理器有:conda、pip;dnf、rpm;vcpkg
conda
特点:是一个跨平台、跨语言的包管理工具
能在conda环境中安装包(但不能在其他环境如已有的python环境环境安装)
操作:创建虚拟环境create、激活虚拟环境active、下载包install、换源config --add
Anaconda
集成了conda工具和一些常用包的软件,相似的还有更轻量级的miniconda。它们可以实现的功能相同,anaconda更大,miniconda需要手动配置。
pip
是一个python专用包管理器,只能安装python包。
rpm dnf yum apt apt-get
都是Linux系统的包管理器,主要用于安装Linux软件。其中:
- dnf是yum的升级版(相当于新版本),它们是Rocky Linux(近似于CentOS新版),RedHat Federal 系统的包管理工具
- dnf和yum能够处理rpm的包依赖关系
- apt 和 apt-get 是Ubuntu系统的包管理工具,apt-get先出现,apt是apt-get 、apt-cache 和 apt-config 中最常用命令选项的集合。
vcpkg
是一个跨平台的C++包管理工具,能够在各个位置使用标准编译器不包含的头文件,如同使用普通头文件一样。
特点:限语言C++;跨平台;但和vs studio结合紧密
使用场景:计算机图形学使用的openGL API需要单独下载,并在每个vs studio工程中,通过右键属性添加配置,比较麻烦。用vcpkg管理则只需下载,ctrl+F5一键运行。
如何在Linux(CentOS7)中使用vcpkg管理C包_在键盘上弹钢琴的菜菜的博客-CSDN博客_vcpkg
Wget
wget 是一个从网络上自动下载文件的自由工具,也可用来下载包
总结
总之,包管理工具并没有多么复杂,它们完成的工作主要是从源获取信息,并根据相关配置安装到指定位置。在程序运行时,也会按照相关配置查找到包并使用。
不同的包管理器负责管理不同的包,将不同的环境隔离开来,避免相互干扰。
故在使用包管理器安装包出问题时,可以考虑一下几个方面:
- 源仓库不含要下载的包,可通过换源等方法修正
- 使用的包管理工具不合适,比如pip无法下载包含外部依赖的python包
- 包管理工具未将包下载到使用者预期位置,导致无法顺利使用,如conda环境和pip的python环境