包管理工具 apt 和 yum

包管理工具aptyum

一、RPM与DPKG简介

发布源码

在 Linux 的发展过程中,出现了很多开源软件,它们都会使用 tarball 来发布源代码。

发布安装包

而 Linux 发行厂商或社区则会将这些源代码在特定的硬件编译后,将安装所需的文件打包成一个特殊的格式并发布。

软件管理机制

被发布的软件就是一个适用于指定 Linux 发行版本的安装包,用户可以通过安装命令进行安装。在安装包中,会包含检测系统与软件依赖的脚本,在安装前进行环境检测,若符合安装条件,就会安装该软件。
软件安装后还会将相关信息写入软件管理机制中,以便将来进行软件的升级或删除等。


1、软件管理器

通过源码编译安装的方式,可以将相同的软件安装在几乎所有的 Linux 发行版。但编译过程比较长,安装过程比较繁琐。如果能像 Windows 那样,由开发者将源码在已知的环境中配置并编译好,而用户直接安装会省很多力气。
这时,软件管理器应运而生。软件管理器是 Linux 发行厂商或社区提供,可以在特定的 Linux 发行版本上,进行软件安装、卸载、升级、验证等功能的软件管理程序。
在 Linux 系统中主要有两种软件管理器,分别是 RedHat 的 RPM 和 Debian 的 DPKG

  • RPM - 由 Red Hat 公司开发,Fedora、CentOS 等发行版本都使用该软件管理器。

  • DPKG - 由 Debian 社区开发,Ubuntu 等发现版本都是用该软件管理器。

yum 与 apt
无论是 RPM 还是 DPKG,都会遇到软件依赖问题。如,安装软件 A 时,需要先安装软件 B,而安装软件 B 又要先安装软件 C。因此,需要一种依赖管理机制。
RPM 和 DPKG 都提供了在线升级机制,能够从指定的服务器自动下载安装包,并能自动处理依赖关系,且可以一次性自动安装软件及其依赖。
在 RPM 中,使用 yum 命令进行软件安装、依赖管理、在线升级等。
而在 DPKG 中,则使用 apt,DPKG 提供了软件管理机制,但它并不具备在线安装、依赖管理等功能。而 apt 用于远程软件包的获取、依赖关系处理及安装管理等。。

2、RPM 软件管理器

2.1、RPM

RPM(Red-Hat Package Manager,红帽软件包管理器),遵循 GPL 规则且功能强大方便,让 Linux 软件更加易于安装、升级。
RPM 是一种预编译后的打包文件,其编译打包后的软件格式为 .rpm。通过 RPM 安装软件的方式类似如下:

清除命令:make clean
打包命令:make rpm
安装命令:rpm -ivh your-package.rpm
卸载命令:rpm -e your-package

RPM 具有以下优点:

RPM 包含了已编译的程序及配置文件,省去了用户编译的过程
RPM 在安装前会检查系统软硬件信息,避免软件被错误安装
RPM 文件本身提供了版本、软件依赖、软件用途等信息,方便了解软件信息
RPM 使用数据库记录了 RPM 文件的相关参数,方便升级、删除、查询等后期操作

2.2、SRPM-源码格式的RPM包

RPM 安装的是编译后的二进制软件安装包,这些安装包只能适用特定的 Linux 发行版,甚至相同发行版的不同版本。RPM 安装包要安装成功有一些必要,如:软件安装环境必须与打包环境一致、要满足软件依赖。

如果想使用其它发行版的软件该怎么办呢?这时可以使用 SRPM(Source RPM),SRPM 中包含了软件的源文件,SRPM 安装包通常使用 *.src.rpm 的命名方式。与Tarball不同,除了软件源代码外,SRPM 中还包含了软件配置文件(configure和makefile)。使用 SRPM 安装软件通常分为以下两步:

将软件源码编译为 RPM 文件
将 RPM 文件安装到系统中
相对于 RPM 来说,SRPM 有一定的好处,就是可以通过修改参数配置,生成自定义的 RPM 文件。

3、DPKG软件管理器

DPKG(Debian Pakager),是由 Debian 开发的一套管理套件。
DPKG 使用 .deb 作为预编译安装文件格式,通过 DPKG 安装软件的方式类似如下:

打包:dpkg -b ./your-package/ ./your-package.deb
卸载:dpkg -r your-package
安裝:dpkg -i your-package.deb
强制安装:sudo dpkg -i --force-depends

二、软件包管理工具

1、什么是apt-getYum

apt-get

apt-get是一条linux命令,适用于deb包管理式的操作系统,主要用于自动从互联网的软件仓库中搜索、安装、升级、卸载软件或操作系统。

Yum

Yum(全称为 Yellow dog Updater, Modified)是一个在Fedora和RedHat以及CentOS中的Shell前端软件包管理器。基于RPM包管理,能够从指定的服务器自动下载RPM包并且安装,可以自动处理依赖性关系,并且一次安装所有依赖的软件包,无须繁琐地一次次下载、安装。

Yumapt-get的区别

[Linux] yum和apt-get用法及区别

一般来说著名的linux系统基本上分两大类:

  1. RedHat系列:Redhat、Centos、Fedora等

  2. Debian系列:Debian、Ubuntu等

RedHat 系列

1 常见的安装包格式 rpm包,安装rpm包的命令是“rpm -参数”
2 包管理工具 yum
3 支持tar包

Debian系列

1 常见的安装包格式 deb包,安装deb包的命令是“dpkg -参数”
2 包管理工具 apt-get
3 支持tar包

tar 只是一种压缩文件格式,所以,它只是把文件压缩打包而已。
rpm 相当于windows中的安装文件,它会自动处理软件包之间的依赖关系。
优缺点来说,rpm一般都是预先编译好的文件,它可能已经绑定到某种CPU或者发行版上面了。
tar一般包括编译脚本,你可以在你的环境下编译,所以具有通用性。
如果你的包不想开放源代码,你可以制作成rpm,如果开源,用tar更方便了。
tar一般都是源码打包的软件,需要自己解包,然后进行安装三部曲,./configure, make, make install. 来安装软件。

linux系统有个让人蛋疼的通病,软件包依赖,好在当前主流的两大发行版本都自带了解决方案,Redhat 有 yum,Ubuntu 有 apt-get

2、什么是Homebrew

Homebrew 简称 brew,是MacOS上的软件包管理工具,能在Mac中方便的安装软件或者卸载软件。

Homebrew 官网有一句话:Homebrew complements macOS( Homebrew 使 macOS 更完整)。Homebrew 是 macOS 的套件管理工具,是高效下载软件的一种方法,相当于 Linux 下的 yumapt-get 神器,用于下载存在依赖关系的软件包。通俗地说,Homebrew 是类似于 Mac App Store 的一个软件商店。

三、Linux yum 命令

yum( Yellow dog Updater, Modified)是一个在 Fedora 和 RedHat 以及 SUSE 中的 Shell 前端软件包管理器。

基于 RPM 包管理,能够从指定的服务器自动下载 RPM 包并且安装,可以自动处理依赖性关系,并且一次安装所有依赖的软件包,无须繁琐地一次次下载、安装。

yum 提供了查找、安装、删除某一个、一组甚至全部软件包的命令,而且命令简洁而又好记。

yum 语法

yum [options] [command] [package ...]
  • options:可选,选项包括-h(帮助),-y(当安装过程提示选择全部为 “yes”),-q(不显示安装的过程)等等。
  • command:要进行的操作。
  • package:安装的包名。

yum常用命令

  • \1. 列出所有可更新的软件清单命令:yum check-update
  • \2. 更新所有软件命令:yum update
  • \3. 仅安装指定的软件命令:yum install <package_name>
  • \4. 仅更新指定的软件命令:yum update <package_name>
  • \5. 列出所有可安裝的软件清单命令:yum list
  • \6. 删除软件包命令:yum remove <package_name>
  • \7. 查找软件包命令:yum search
  • \8. 清除缓存命令:
    • yum clean packages: 清除缓存目录下的软件包
    • yum clean headers: 清除缓存目录下的 headers
    • yum clean oldheaders: 清除缓存目录下旧的 headers
    • yum clean, yum clean all (= yum clean packages; yum clean oldheaders) :清除缓存目录下的软件包及旧的 headers

实例 1

安装 pam-devel

[root@www ~]# yum install pam-devel
Setting up Install Process
Parsing package install arguments
Resolving Dependencies  <==先检查软件的属性相依问题
--> Running transaction check
---> Package pam-devel.i386 0:0.99.6.2-4.el5 set to be updated
--> Processing Dependency: pam = 0.99.6.2-4.el5 for package: pam-devel
--> Running transaction check
---> Package pam.i386 0:0.99.6.2-4.el5 set to be updated
filelists.xml.gz          100% |=========================| 1.6 MB    00:05
filelists.xml.gz          100% |=========================| 138 kB    00:00
-> Finished Dependency Resolution
……(省略)

实例 2

移除 pam-devel

[root@www ~]# yum remove pam-devel
Setting up Remove Process
Resolving Dependencies  <==同样的,先解决属性相依的问题
--> Running transaction check
---> Package pam-devel.i386 0:0.99.6.2-4.el5 set to be erased
--> Finished Dependency Resolution

Dependencies Resolved

=============================================================================
 Package                 Arch       Version          Repository        Size
=============================================================================
Removing:
 pam-devel               i386       0.99.6.2-4.el5   installed         495 k

Transaction Summary
=============================================================================
Install      0 Package(s)
Update       0 Package(s)
Remove       1 Package(s)  <==还好,并没有属性相依的问题,单纯移除一个软件

Is this ok [y/N]: y
Downloading Packages:
Running rpm_check_debug
Running Transaction Test
Finished Transaction Test
Transaction Test Succeeded
Running Transaction
  Erasing   : pam-devel                    ######################### [1/1]

Removed: pam-devel.i386 0:0.99.6.2-4.el5
Complete!

实例 3

利用 yum 的功能,找出以 pam 为开头的软件名称有哪些?

[root@www ~]# yum list pam*
Installed Packages
pam.i386                  0.99.6.2-3.27.el5      installed
pam_ccreds.i386           3-5                    installed
pam_krb5.i386             2.2.14-1               installed
pam_passwdqc.i386         1.0.2-1.2.2            installed
pam_pkcs11.i386           0.5.3-23               installed
pam_smb.i386              1.1.7-7.2.1            installed
Available Packages <==底下则是『可升级』的或『未安装』的
pam.i386                  0.99.6.2-4.el5         base
pam-devel.i386            0.99.6.2-4.el5         base
pam_krb5.i386             2.2.14-10              base

国内 yum 源

网易(163)yum 源是国内较好的 yum 源之一 ,无论是速度还是软件版本,都非常的不错。

将yum源设置为163 yum,可以提升软件包安装和更新的速度,同时避免一些常见软件版本无法找到。

安装步骤

首先备份/etc/yum.repos.d/CentOS-Base.repo

mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.backup

下载对应版本 repo 文件, 放入 /etc/yum.repos.d/ (操作前请做好相应备份)

  • CentOS5 :http://mirrors.163.com/.help/CentOS5-Base-163.repo
  • CentOS6 :http://mirrors.163.com/.help/CentOS6-Base-163.repo
  • CentOS7 :http://mirrors.163.com/.help/CentOS7-Base-163.repo
wget http://mirrors.163.com/.help/CentOS6-Base-163.repo
mv CentOS6-Base-163.repo CentOS-Base.repo

运行以下命令生成缓存

yum clean all
yum makecache

除了网易之外,国内还有其他不错的 yum 源,比如中科大和搜狐。

中科大的 yum 源,安装方法查看:https://lug.ustc.edu.cn/wiki/mirrors/help/centos

sohu 的 yum 源安装方法查看: http://mirrors.sohu.com/help/centos.html

阿里云的源:https://developer.aliyun.com/mirror/centos

四、Linux apt 命令

apt(Advanced Packaging Tool)是一个在 Debian 和 Ubuntu 中的 Shell 前端软件包管理器。

apt 命令提供了查找、安装、升级、删除某一个、一组甚至全部软件包的命令,而且命令简洁而又好记。

apt 命令执行需要超级管理员权限(root)。

apt 语法

  apt [options] [command] [package ...]
  • options:可选,选项包括 -h(帮助),-y(当安装过程提示选择全部为"yes"),-q(不显示安装的过程)等等。
  • command:要进行的操作。
  • package:安装的包名。

apt 常用命令

  • 列出所有可更新的软件清单命令:sudo apt update

  • 升级软件包:sudo apt upgrade

    列出可更新的软件包及版本信息:apt list --upgradeable

    升级软件包,升级前先删除需要更新软件包:sudo apt full-upgrade

  • 安装指定的软件命令:sudo apt install <package_name>

    安装多个软件包:sudo apt install <package_1> <package_2> <package_3>

  • 更新指定的软件命令:sudo apt update <package_name>

  • 显示软件包具体信息,例如:版本号,安装大小,依赖关系等等:sudo apt show <package_name>

  • 删除软件包命令:sudo apt remove <package_name>

  • 清理不再使用的依赖和库文件: sudo apt autoremove

  • 移除软件包及配置文件: sudo apt purge <package_name>

  • 查找软件包命令: sudo apt search

  • 列出所有已安装的包:apt list --installed

  • 列出所有已安装的包的版本信息:apt list --all-versions

实例

查看一些可更新的包:

sudo apt update

升级安装包:

sudo apt upgrade

可以将以下两个命令组合起来,一键升级:

sudo apt update && sudo apt upgrade -y

安装 mplayer 包:

sudo apt install mplayer

如过不太记得完整的包名,我们可以只输入前半部分的包名,然后按下 Tab 键,会列出相关的包名:

sudo apt install reds
以上实例我们输入来`reds`,然后按下`Tab`键,输出来四个相关的包。
redshift			redshift-gtk			redskull-br-meta			redssocks

如果我们想安装一个软件包,但如果软件包已经存在,则不要升级它,可以使用 –no-upgrade 选项:

sudo apt install <package_name> --no-upgrade

安装 mplayer 如果存在则不要升级:

sudo apt install mplayer --no-upgrade

如果只想升级,不要安装可以使用 –only-upgrade 参数:

sudo apt install <package_name> --only-upgrade

只升级 mplayer,如果不存在就不要安装它:

sudo apt install mplayer --only-upgrade

如果需要设置指定版本,语法格式如下:

sudo apt install <package_name>=<version_number>

package_name 为包名,version_number 为版本号。

移除包可以使用 remove 命令:

sudo apt remove mplayer

查找名为 libimobile 的相关包:

apt search libimobile

查看 pinta 包的相关信息:

apt show pinta

列出可更新的软件包:

apt list --upgradeable

清理不再使用的依赖和库文件:

sudo apt autoremove
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值