🦄 2024 独立开发者训练营,一起创业!查看介绍 / 立即报名(剩余10个优惠名额) →

路径(十一):管理 Linux 上的软件

管理 Linux 系统上的软件可以使用包管理工具,不同版本的 Linux 用的包管理工具不太一样。比如 Redhat,Fedora,CentOS 上面用的是 yum 或者 rpm。Debian,Ubuntu 可以使用 aptitude。使用包管理工具,可以用命令,去查询,下载,安装,删除系统上的软件。下面我们在 CentOS 系统上学一下 yum 这个包管理工具,你可以用 Vagrant 在本地创建一个 CentOS 系统的虚拟机

Packages

Packages,包。包就是包裹,包裹里面包含了一些东西。这里说的包指的是软件包,它里面不仅仅包含软件本身,还有相关的文档,管理脚本,软件所依赖的其它东西的列表。包管理工具会使用包里的内容去定位,安装,升级,还有删除软件。包有不同的格式,Redhat  跟 CentOS 上用的是 .rpm 格式的包,Debian,Ubuntu 用的是 .deb 格式的包,你可以把这个格式想成是一种包装跟发行软件的标准。

Package Manager

Package Manager,就是管理 Package 用的工具。yum,rpm,apt-get ...

Repositories

Repositories,是存放软件包的地方。可以想成是一个仓库,系统里定义了一些仓库,使用包管理工具去安装软件的时候,就会到这些仓库里面下载需要的东西。你也可以手工为系统添加新的仓库。

Dependencies

一个软件包里面如果需要用到其它库(Library)提供的功能,就会把它们定义成 Dependencies,也就是依赖。 在安装这个软件包的时候,管理工具会查看软件包需要的依赖,看看系统里有没有这些东西,如果没有,就会去下载并且安装好这些依赖,然后再去安装软件包本身,这样可以确保软件包能正常的运行。

yum

yum 与 rpm 是用在 Redhat,Fedora,CentOS  ...  这些系统上的包管理工具。它们有点区别,yum 可以自动去下载并且安装软件包,rpm 一般用来安装已经下载到本地的软件包( .rpm 格式的软件包)。

搜索包

在用 yum 安装包之前,如果不确定要安装的包是什么,可以先去搜索一下。搜索可以判断你想安装的包,能不能通过 yum 去安装,如果没有找到结果,你可能要手工为系统去添加新的仓库,或者把包下载到本地,再用 rpm 去安装。

yum search 关键词

比如你要安装 Apache 这个 Web 服务器,可以搜索一下 apache 或者 httpd ,httpd 是包的名字,apache 这个词包含在包的介绍里。

yum search httpd

返回:

...
httpd.x86_64 : Apache HTTP Server
httpd-devel.i686 : Development interfaces for the Apache HTTP server
httpd-devel.x86_64 : Development interfaces for the Apache HTTP server
httpd-manual.noarch : Documentation for the Apache HTTP server
httpd-tools.x86_64 : Tools for use with the Apache HTTP Server
...

在搜索结果里,会包含找到的包的名字还有描述,被搜索的关键词会高亮显示。仔细看一下包的名字,然后再读一下描述,来判断这个包是不是自己想要的那个。注意包的名字里有一些特别的后缀,这些后缀表示的是包对硬件架构的最小需求。

  • .x86_64:表示在 64 位架构上运行的包。
  • .i686:一般表示 32 位的架构,常见的还有 .i386。
  • .noarch:表示这个包不受架构的限制。

查看包

知道了自己想要的包以后,可以再查看一下这个包的具体的信息,比如版本号,尺寸,所属仓库,网址等等。

yum info 包的名字

比如查看一下要 httpd 这个包的信息:

yum info httpd

返回:

Available Packages
Name        : httpd
Arch        : x86_64
Version     : 2.2.15
Release     : 39.el6.centos
Size        : 825 k
Repo        : base
Summary     : Apache HTTP Server
URL         : http://httpd.apache.org/
License     : ASL 2.0
Description : The Apache HTTP Server is a powerful, efficient, and extensible
            : web server.

Arch 表示包需要的硬件架构,Repo 是这个包所属的 Repository 。

安装包

安装包用的是 yum install,yum 很多命令需要用到超级管理员的权限,所以你需要在命令的前面加上 sudo ,比如 sudo yum install ...  或者先执行一下 su 这个命令。

su

在 su 命令后面没加任何选项,默认就是用 root 用户登录,会出现提示,让你输入密码,输入 root 用户的密码,然后回车,你现在的身份就变成 root 了。如果你用的是 vagrant ,默认 root 用户的密码是 vagrant 。

yum install 包的名字

比如去安装一下 httpd :

yum install httpd

返回:

Dependencies Resolved

===============================================================================
 Package                       Arch                   Version                  
===============================================================================
Installing:
 httpd                         x86_64                 2.2.15-39.el6.centos      
Installing for dependencies:
 apr                           x86_64                 1.3.9-5.el6_2             
 apr-util                      x86_64                 1.3.9-3.el6_0.1           
 apr-util-ldap                 x86_64                 1.3.9-3.el6_0.1           
 httpd-tools                   x86_64                 2.2.15-39.el6.centos      
 mailcap                       noarch                 2.1.31-2.el6              

Transaction Summary
================================================================================
Install       6 Package(s)

Total download size: 1.1 M
Installed size: 3.6 M
Is this ok [y/N]:

如果要安装的包需要一些依赖,会出现提示 Dependencies Resolved ,会列出你打算安装的包,这里就是 httpd ,下面是这个包需要安装的 dependencies,然后给你个总结,说要安装的包一共有多少个,大小是多小,安装后的尺寸。Is this ok [y/N],问你要继续吗?输入 y 表示同意,之后又会出现一次确定,再次输入 y 。你可以在执行命令的时候,加上一个 -y 参数(yum install httpd -y),这样出现这种确认的提示会自动填上 y ,不需要自己动手了。

列出包

list 这个命令可以列出仓库里的或者已经安装到系统上的包。

列出所有可用的包

yum list available

列出已经安装的包

yum list installed

在这些命令的后面可以加上 less ,这样可以分页显示:

yum list installed | less

也可以使用 grep ,找到包含特定字符的包,比如找出已经安装的名字里带 http 的包:

yum list installed | grep http

判断文件来自哪个包

用 provides 命令可以查看某个文件是来自哪个包。

yum provides 文件的路径

试一下:

yum provides /etc/httpd/conf/httpd.conf

返回:

httpd-2.2.15-39.el6.centos.x86_64 : Apache HTTP Server
Repo        : base
Matched from:
Filename    : /etc/httpd/conf/httpd.conf



httpd-2.2.15-39.el6.centos.x86_64 : Apache HTTP Server
Repo        : installed
Matched from:
Other       : Provides-match: /etc/httpd/conf/httpd.conf

上面显示 /etc/httpd/conf/httpd.conf 这个文件,属于 httpd-2.2.15-39.el6.centos.x86_64 这个包。

仓库

先查看一下系统里所有被启用的仓库列表:

yum repolist

返回:

repo id                                 repo name                                status
base                                    CentOS-6 - Base                          6,518
extras                                  CentOS-6 - Extras                        36
updates                                 CentOS-6 - Updates                       649
repolist: 7,203

再去安装一个叫 epel( Extra Packages for Enterprise Linux ) 的仓库:

yum install epel-release

然后再用 yum repolist 查看一下系统上启动的仓库,你会看到刚才安装的 epel 仓库。用 yum list 命令查看所有的可用的包,会出现来自 epel 仓库的包,加上 grep 可以只显示 epel 这个仓库里的包。

yum list | grep epel

升级

升级用的是 update ,后面可以加上要升级的包的名字,不加的话,会去升级所有的包。

yum update
yum update 包的名字

删除包

移除不想要的包可以使用 remove 或者 erase,会把包还有可能的依赖删除掉。

yum remove 包的名字

比如:

yum remove httpd -y

加上 -y 参数,不需要手工确认了。

rpm

有些包你可能想先下载到本地,然后再去安装,这样就可以使用 rpm 这个工具。

安装下载到本地的包

rpm -ivh 包文件的路径

检查包是不是已经安装了

rpm -q 包名字

查看包

rpm -qi package_file

检查文件属于哪个包

rpm -qf 文件的路径

更新安装的包

rpm -Uvh 包文件

移除安装的包

rpm -e 包的名字

显示安装在系统上的包

rpm -qa | less

附件

yum 参考手册:https://access.redhat.com/sites/default/files/attachments/rh_yum_cheatsh...

路径 CentOS yum rpm 包管理 Linux

评论

请问epel( Extra Packages for Enterprise Linux )这个仓库在Ubuntu上可以添加吗?
另外我想在Ubuntu上添加php扩展库,请问只有这一种方法吗:add-apt-repository ppa:ondrej/php
还有没有其他php扩展库?因为这个ppa库在运行apt-get时老是提示一个错误,找不到方法来解决

谢谢

微信好友

用微信扫描二维码,
加我好友。

微信公众号

用微信扫描二维码,
订阅宁皓网公众号。

240746680

用 QQ 扫描二维码,
加入宁皓网 QQ 群。

统计

15260
分钟
0
你学会了
0%
完成

社会化网络

关于

微信订阅号

扫描微信二维码关注宁皓网,每天进步一点