>[success] # linux -- 软件包管理 ~~~ 1.软件包顾名思义就是将应用程序、配置文件和数据打包的产物,所有的'linux'发行版都采用了某种形式的 软件包系统,这使得'linux'软件管理和在'windows'下一样方便,'suse、red hat、fedora'等发行版都是用rpm包, Debian和Ubuntu则使用.deb格式的软件包。'windows' 使用的'exe'的软件包一样 2.早期在 Linux 系统中安装程序是一件非常困难、耗费耐心的事情,而且大多数 的服务程序仅仅提供源代码, 需要运维人员自行编译代码并解决许多的软件依赖关系,因此 要安装好一个服务程序,运维人员需要具备丰富知 识、高超的技能,甚至良好的耐心。而且在 安装、升级、卸载服务程序时还要考虑到其他程序、库的依赖关系 ,所以在进行校验、安装、 卸载、查询、升级等管理软件操作时难度都非常大 3.软件包管理工具可以理解成是应用商店,在应用商店上可以送到各种包和进行安装,也可以对安装包进行管理卸载 看到发行版本 ~~~ >[danger] ##### 一些软件包管理工具 ~~~ 1.dpkg(ubuntu):`package manager for Debin`,是基于 `Debian` 系统的包管理器。可以安装、删除,但无法解决 依赖项 2.rpm(centos): 红帽软件包管理器会建 立统一的数据库文件,详细记录软件信息并能够自动分析依赖关系 ~~~ >[danger] ##### 简单好用的管理 ~~~ 1.可以自动解决依赖关系软件包管理工具 1.1.'yum',红帽系列rpm包管理工具 1.2.'apt-get'现在使用'apt' 是'deb' 包管理工具 ~~~ >[danger] ##### 镜像 [阿里镜像](https://developer.aliyun.com/mirror/) ~~~ 1.以centos 镜像为例说明,centos 安装使用的是yum 安装 1.1.'/etc/yum.conf' 存放着yum 配置 1.2.'/etc/yum.repos.d' 存放着安装源,其中有个两个文件分别是'CentOS-Base.repo' 和' CentOS-Epel.repo'(第三方包) 安装时候会依次在这两个文件指向的地址查找安装的包文件 ~~~ * CentOS-Base.repo 文件字段说明 ~~~ [base] name=CentOS-$releasever enabled=1 failovermethod=priority baseurl=http://mirrors.cloud.aliyuncs.com/centos/$releasever/os/$basearch/ gpgcheck=1 gpgkey=http://mirrors.cloud.aliyuncs.com/centos/RPM-GPG-KEY-CentOS-7 ~~~ | 字段 | 含义 | | --- | --- | | base | 容器名称,一定要放在\[\]中 | | name | 容器说明,可以自己随便写 | | mirrorlist | 镜像站点,可以注释掉 | | baseurl | YUM源服务器的地址,默认是CentOS官方的YUM源 | | enable | 此容器是否生效 不写或者写成enable=1表示生效,写成enable=0表示不生效 | | gpgcheck | 如果是1就是指 RPM的数字证书生效,如果是0则表示不生效 | | gpgkey | 数字证书的公钥文件保存位置,不用改 | * 如果安装的包在仓库中找不到自己配置仓库 ~~~ 1.创建一个包地址 vim /etc/yum.repos.d/mongodb-org-3.4.repo 添加以下内容: [mongodb-org-3.4] name=MongoDB Repository baseurl=https://repo.mongodb.org/yum/redhat/$releasever/mongodb-org/3.4/x86_64/ gpgcheck=1 enabled=1 gpgkey=https://www.mongodb.org/static/pgp/server-3.4.asc 这里可以修改 gpgcheck=0, 省去gpg验证 yum makecache 就是把服务器的包信息下载到本地电脑缓存起来 2.这样当上面'CentOS-Base.repo' 和' CentOS-Epel.repo' 找不到时候会自动使用这个新配置的 ~~~ * yum makecache -- 更新缓存 >[danger] ##### 总结 一般来说著名的 Linux 系统基本上分两大类:  [RedHat](https://so.csdn.net/so/search?q=RedHat&spm=1001.2101.3001.7020)系列:Redhat、Centos、Fedora 等  [Debian](https://so.csdn.net/so/search?q=Debian&spm=1001.2101.3001.7020)系列:Debian、Ubuntu 等 | 对比项 | rpm | yum | dpkg | apt | | --- | --- | --- | --- | --- | | 系列 | RedHat系 | RedHat系 | Debian系 | Debian系 | | 区别 | 包安装工具 | 依赖管理工具 | 包安装工具 | 依赖管理工具 | | 查询已安装 | rpm -qa | yum list installed | dkpg -l | apt list --installed | | 安装 | rpm -i package.rpm 或 rpm –ivh [http://www.xxx.net/package.rpm](http://www.xxx.net/package.rpm) | yum install -y | dpkg -i package.deb | apt-get install package | | 更新 | rpm –U software.rpm | yum update |   | apt upgrade | | 移除软件包 | rpm -e \[module1\]\[module2\]… | yum remove | dpkg -r package | apt remove package | | 移除软件包及配置 |   |   | dpkg -P | apt purge package | | 下载的包存放位置 |   |   |   | /var/cache/apt/archives | | 软件安装默认位置 | rpm -ql |   |   | /usr/share | | 可执行文件位置 | /usr/bin |   |   | /usr/bin | | 配置文件位置 | /etc |   |   | /etc | | lib文件位置 | /usr/lib |   |   | /usr/lib | | 使用手册 | /usr/share/doc |   |   |   | | 帮助文档 | /usr/share/man |   |   |   | | 更新 |   |   |   |   |