安装方式
软件包安装
Linux中的软件包,主要分为两类:
- RPM包:是由Red Hat 公司所开发的包管理系统。功能强大,安装、升级、查询和卸载都非常简单和方便,目前很多Linux发行版都在使用这种包管理机制,包括Fedora、CentOS、SuSE等。软件包文件后缀是 "
.rpm
"。 - DPKG包:是由Debian Linux 所开发出来的包管理机制,主要应用在Debian和Unbuntu中。软件包文件后缀是 "
.deb
"。
不论是RPM还是DPKG机制,都存在软件包依赖问题,比如软件包A依赖软件包B,软件包B又依赖软件包C,即依赖关系是 "A -> B -> C",那么就必须先安装C,在安装B,最后A才能安装成功。为了解决这种依赖问题,Linux开发商都提供了在线安装机制,通过这种机制可以自动解决依赖关系,安装A时会自动安装B和C,就不需要手动去一步步安装B和C了。基于RPM包管理机制开发出了YUM在线安装机制,基于DPKG包管理机制开发出了APT在线安装机制。
源码包安装
所谓源码包一般就是指C语言开发的源代码文件的一个压缩包(.tar.gz
或.tar.bz2
)。源码包的编译用到了linux系统里的编译器 gcc,利用它就可以把C语言变成可执行的二进制文件,所以如果要使用源码包安装必须先安装 gcc 编译器(可以使用 yum install -y gcc
完成安装)。
源码包安装步骤多,需要安装编译器,新手容易出现各种报错,但是源码包代码开源可自由更改定制,更适合熟悉linux系统的老手。
RPM 管理软件包
RPM 软件包的命名规则为:软件包名-版本-发布次数-Linux平台-硬件平台.rpm
以Apache软件包的包全名为例:“httpd-2.4.6-97.el7.centos.5.x86_64”
1、httpd:软件包名
2、2.4.6:软件版本
3、97:软件发布的次数
4、el7.centos.5:适合的Linux平台
5、x86_64:适合的硬件平台,这里表示64位
6、rpm:rpm包的扩展名,注意Linux是没有扩展名的概念,这里是为了方便管理员识别
RPM 包来源:
- 第一种方式,官网下载需要安装的RPM包
- 第二种方式,通过挂载安装光盘,光盘中包含所有的RPM包。
RPM 安装
安装命令:rpm -ivh 包全名
- 选项
-i
:安装(install)-v
:显示详细信息-h
:打印#显示安装进度--nodeps
:不检测依赖性安装。软件安装时会检测依赖性,如果所依赖的软件还未安装则会报错,加上这个选项则不检测依赖强制安装,但这样安装的软件一般不能使用,建议不要这样做。--replacefiles
:替换文件安装。如果安装的软件包中的部分文件已经存在,则会安装报错,使用该选项就会覆盖现有文件继续安装--replacepkgs
:替换软件安装。如果软件包已经安装,使用该选项可把软件包重新安装一遍--force
:强制安装。不管是否已经安装,都重新安装,相当于 "--replacefiles" 和 "--replacepkgs" 的综合--test
:测试安装。不会实际安装,只是检测一下依赖--prefix=安装路径
:指定安装路径。为安装的软件指定安装路径,而不是使用默认安装路径。注意:如果指定了安装路径,软件没有安装到默认路径中的话,系统会找不到这些安装的软件,而需要进行手工配置才能被系统识别,所以RPM包一般建议采用默认路径安装
RPM 升级
升级命令:rpm -Uvh 包全名
或 rpm -Fvh 包全名
- 选项
-U
:升级安装。如果没有安装过,系统直接安装,如果已安装的版本较旧,则升级到新版本-F
:升级安装。如果没有安装过,则不会安装,必须安装有较旧版本才能升级
RPM 卸载
卸载命令:rpm -e 包名
- 选项
-e
:卸载软件包--nodeps
:卸载时不检查依赖性。如果卸载的软件被其他软件依赖,卸载失败,加上此选项可强制卸载
注意:卸载已安装的软件使用包名即可,不需要使用包全名
RPM 查询
1. 查询软件包是否安装:rpm -q 包名
- 选项:
-q
:查询(query)
2. 查询系统中所有安装的软件包:rpm -qa
- 选项:
-a
:所有(all)
3. 查询软件包的详细信息
已安装:rpm -qi 包名
未安装:rpm -qip 包全名
- 选项:
-i
:查询软件信息(information)-p
:查询没有安装的软件包(package)
4. 查询软件包的文件列表和安装目录
已安装:rpm -ql 包名
未安装:rpm -qlp 包全名
- 选项:
-l
:列出软件包中所有文件和软件所安装的目录(list)
5. 查询系统文件属于哪个软件包:rpm -qf 系统文件
- 选项:
-f
:查询拥有指定文件的软件包(file)
6. 查询软件包所依赖的其他软件包
已安装:rpm -qR 包名
未安装:rpm -qRp 包全名
- 选项:
-R
:查询软件包的依赖性(required)
YUM 管理软件包
YUM 源文件介绍
yum 源指的就是获取 rpm 包的位置(默认就是官网服务器,包含所有的软件包)。yum源配置文件保存在 /etc/yum.repos.d/
目录下,一般有5个扩展名为 ".repo" 的文件 CentOS-Base.repo
、CentOS-fasttrack.repo
、CentOS-Vault.repo
、CentOS-Debuginfo.repo
、CentOS-Media.repo
。默认情况下只有 CentOS-Base.repo
文件是生效,例如:
[root@VM-0-14-centos ~]# vi /etc/yum.repos.d/CentOS-Base.repo
[base]
gpgcheck=1
gpgkey=http://mirrors.tencentyun.com/centos/RPM-GPG-KEY-CentOS-7
enabled=1
baseurl=http://mirrors.tencentyun.com/centos/$releasever/extras/$basearch/
name=Qcloud centos extras - $basearch
[os]
gpgcheck=1
gpgkey=http://mirrors.tencentyun.com/centos/RPM-GPG-KEY-CentOS-7
enabled=1
baseurl=http://mirrors.tencentyun.com/centos/$releasever/os/$basearch/
name=Qcloud centos os - $basearch
[updates]
gpgcheck=1
gpgkey=http://mirrors.tencentyun.com/centos/RPM-GPG-KEY-CentOS-7
enabled=1
baseurl=http://mirrors.tencentyun.com/centos/$releasever/updates/$basearch/
name=Qcloud centos updates - $basearch
在 CentOS-Base.repo 文件中有多个 yum 源容器,这里主要解释一下 [base]
容器(其他容器类似):
[base]
:容器名称,一定要放在 [ ] 中name
:容器说明,可以自定义,也可以不写,例子中就没写。mirrorlist
:镜像站点,这个可以注释掉,也可以不写,例子中就没写。baseurl
:yum源服务器的地址。mirrorlist是由yum程序自行去找镜像站点,baseurl则是指定固定的一个地址。enabled
:此容器是否生效,如果不写或者enabled=1则表示此容器生效,写成enabled=0则表示次容器不生效gpgcheck
:如果为1表示RPM的数字证书生效;如果为0表示RPM的数字证书不生效gpgkey
:数字证书的公钥文件保存位置
YUM 命令
yum命令是在Fedora和RedHat以及SUSE中基于 rpm 的软件包管理器,能够从指定的服务器自动下载RPM包并且安装,可以自动处理依赖性关系,并且一次安装所有依赖的软体包,无须繁琐地一次次下载、安装。
yum 命令格式:yum [选项] COMMAND [软件包]
- 选项:
-y
:自动回答"yes",不再询问。如果不加该选项,安装过程中每个涉及的包安装都要手工回答 "yes" or "no"-q
:静默模式。不显示安装过程-C
:完全从缓存中运行,而不去下载或者更新任何头文件
- COMMAND (要进行的操作)
install
:执行安装操作update
:执行升级操作remove
:执行卸载操作list
:显示可用软件包列表search
:根据关键字匹配软件包info
:显示软件包信息
- 软件包:如果为包名,则默认为软件包的最新版本;如果要指定软件包版本,则需要使用包全名
YUM 安装
安装指定软件包:yum -y install 包名
安装全部软件包:yum -y isntall
(不常用)
YUM 升级
升级指定软件包:yum -y update 包名
升级全部软件包:yum -y update
(不常用)
YUM 卸载
卸载指定软件包:yum remove 包名
YUM 查询
1. 查询软件包列表
查询yum源服务器上所有可安装的软件包列表:yum list
查询yum源服务器上是否存在某个软件包:yum list 包名
2. 查询关键字属于哪个软件包
命令格式:yum search 关键字
一般用于查找 某个指令 是由哪个软件包提供的。比如,要使用 "ifconfig" 指令,需要先安装 "net-tools" 包
[root@10-1-2-107 /]# yum search ifconfig
已加载插件:fastestmirror, langpacks
Loading mirror speeds from cached hostfile
================================================================================================= 匹配:ifconfig ==================================================================================================
net-tools.x86_64 : Basic networking tools
3. 查询指定软件包信息:yum info 软件包
YUM 缓存
默认情况下,通过 yum 成功安装软件后,会把下载的软件包删除。如果要保留下载的软件包,可以编辑配置文件 /etc/yum.conf
,把里面 "keepcache" 参数改为 1 (默认 keepcache=0 ),这样每次通过 yum 安装软件时,会把下载的软件包缓存在 /var/cache/yum/
目录下,下次再安装相同的软件时,可以从缓存中获取软件包,即使在没有网络的情况下也可正常安装。
1. 清除缓存:yum clean packages|headers|oldheaders|all
packages
:清除缓存目下的软件包
headers
:清除缓存目录下的 headers
oldheaders
:清除缓存目录下旧的 headers
all
:清除全部
2. 重新建立新的缓存:yum makecache
3. 只从缓存中查找软件包并安装:yum -C install 包名
DPKG 管理软件包
DPKG 软件包的命名规则为:软件包名_版本号-修订号_平台.deb
例如:openssh-server_8.2p1-4_amd64.deb
DPKG 命令
DPKG 包的管理工具是 dpkg
命令,命令格式:dpkg 选项 [软件包名]
DPKG 安装
安装命令:dpkg -i 包全名
- 选项
-i
:安装--unpack
:解开软件包--configure
:配置软件包
-i
选项所做操作包含解开软件包和配置软件包,相当于这两步操作:
dpkg --unpack 包全名
dpkg --configure 包名
DPKG 卸载
卸载命令:dpkg -r|-P 包名
- 选项
-r
:删除已安装的软件包,但保留配置文件-P
:删除已安装软件包,完全清除包(含配置文件)
DPKG 查询
1. 查询已安装软件包列表,命令:dpkg -l [包名]
- 选项
-l
:查询已安装软件包列表,包含状态、版本信息包名
:查询指定的软件包,如果省略查询全部已安装软件包。包名可使用通配符
2. 列出软件包关联文件,命令:dpkg -L 包名
或 dpkg -c 包全名
- 选项
-L
:列出已安装软件包关联文件列表-c
:列出未安装软件包关联文件列表
也可以通过该命令查看软件包文件安装目录位置
3. 显示软件包的详细状态,命令:dpkg -s 包名
- 选项
-s
或--status
:显示软件包的详细状态
4. 搜索含有指定文件的软件包,命令:dpkg -S 文件名
- 选项
-S
或--search
:搜索含有指定文件的软件包。文件名可使用通配符
5. 搜索系统中损坏的软件包,命令:dpkg -C
APT 管理软件包
APT 源文件介绍
APT 与 YUM 类似,都是从远程软件仓库获取软件包进行安装。其中相关文件说明如下:
/etc/apt/sources.list
:记录了软件源的地址
var/lib/dpkg/available
:文件的内容是软件包的描述信息,该文件包括当前系统所使用的安装源中的所有软件包,其中包括当前系统中已安装的和未安装的软件包信息
/var/lib/apt/lists/
:使用 "apt-get update
" 命令扫会描软件源服务器,并为源服务器所有软件资源建立索引文件保存至本地目录"/var/lib/apt/lists/"下,提高系统查询效率
/var/cache/apt/archives/
:通过 "apt-get" 安装下载的软件包都缓存在这里。
APT 命令
APT 管理软件包,主要由以下几个命令组成:
apt-get
:主要用来安装、升级和卸载软件,智能解决依赖关系(新版可用 apt
命令代替,去掉了"-get")
apt-cache
:查询软件包缓存文件
apt-file
:软件包查找工具,可以查到软件包所含的文件和安装的位置
刷新源
命令:apt-get update
该命令扫描源服务器,更新软件包列表。最好定期运行这一命令以确保软件包列表是最新的,或者在安装和升级软件之前执行该命令
APT 安装
安装命令:apt-get install 包名
APT 升级
升级命令:
apt-get upgrade
- 更新所有已安装软件。只是简单的更新包,不管这些依赖,它不能添加新的软件包,或是删除软件包,并且不更改相应软件的配置文件
apt-get dist-upgrade
- 可以根据依赖关系的变化,添加软件包,删除软件包,并且更改相应软件的配置文件,包括升级系统版本
APT 卸载
卸载命令:
apt-get remove 包名
- 删除指定软件,但是保留配置文件
apt-get --purge remove 包名
- 删除指定软件,同时删除配置文件
apt-get autoremove
- 删除系统内部不需要的依赖软件(一般指安装其他软件包时通过依赖安装的软件包)。该操作可能存在误删,无特殊需求尽量不要执行该命令
APT 缓存清理
使用 apt-get 安装软件时,会自动到软件源服务器下载需要的软件包(xxx.deb
文件),这些文件缓存在 "/var/cache/apt/archives" 目录下,如果不需要这些文件可以执行如下命令将其清除,节约磁盘空间。
缓存清理命令:
apt-get clean
- 删除/var/cache/apt/archives/ 和 /var/cache/apt/archives/partial/目录下所有".deb" 文件
apt-get autoclean
- 仅删除/var/cache/apt/archives/ 和 /var/cache/apt/archives/partial/目录下旧版本的软件包和无用的软件包文件,保留已安装软件包的 ".deb" 文件
APT 检查
检查软件包是否有损坏的依赖:apt-get check 包名
源码包安装
安装步骤
- 下载源码包
- 源码包格式一般为
xxx.tar.gz
或xxx.tar.bz2
。linux下载工具参考:wget 与 curl 命令详解 - 示例:
wget https://archive.apache.org/dist/httpd/httpd-2.2.15.tar.gz
- 源码包格式一般为
- 解压缩
- 一般习惯把下载的源码包解压缩到
/usr/local/src/
目录下。解压缩命令参考: Linux常用命令 - 示例:
tar -zxvf httpd-2.2.15.tar.gz -C /usr/local/src/
- 一般习惯把下载的源码包解压缩到
- 进入解压目录
- 示例:
cd /usr/local/src/httpd-2.2.15/
- 示例:
- 编译前准备,命令:
./configure --prefix=安装目录
--prefix=安装目录
:指定安装目录。如果不指定,默认情况下会安装在/usr/local/包名/bin
,/usr/local/包名/lib
等目录下,安装文件比较分散不利于删除configure
指令是每个源码包都自带的脚本程序(即解压目录下一个名为"configure"的脚本文件),非系统指令执行时必须指明路径,即"./
"表明是当前路径下。执行该指令主要有如下作用:- 安装之前检测系统环境是否符合安装要求
- 定义需要的功能选项。如通过 "--prefix=安装目录" 指定安装目录,其他更多功能选项可以通过 "
./configure --help
" 来查看 - 创建 Makefile 文件并把系统环境检测结果和定义的功能选项写入该文件,后续的编译和安装都需要依赖这个文件的内容
- 示例:
./configure --prefix=/usr/local/apache2
- 编译,命令:
make
make
会调用gcc
编译器,并读取 Makefile 文件中的信息进行系统软件编译。编译的目的就是把源码程序转变为能被 Linux 识别的可执行文件,这些可执行文件保存在当前目录下。编译过程较为消耗时间,需要耐心等待
- 报错清空编译内容(非必须步骤),命令:
make clean
- 如果在执行 "
./configure
" 或者 "make
" 命令时报错,解决报错问题后,需要重新执行命令时一定要先执行一下 "make clean
" 命令,它会清空 Makefile 文件和编译产生的 ".o" 头文件
- 如果在执行 "
- 安装,命令:
make install
- 这个才是真正的安装,一般会输出程序的安装位置。如果忘记指安装目录,则可以把这个命令的执行过程保存下来,以备将来删除软件使用
注意:
1.执行 ./configure
命令时可能会提示缺少 gcc
等依赖程序,所以需要使用 yum 等方式先安装依赖程序即可
2.并不是所有的源码包安装一定是执行 "./configure
"、"make
"、"make install
" 这三个命令,只有极少数源码包安装命令可能有些不同,比如 mysql 版本 5.5 以后的源码包安装时,使用 "cmake
" 命令替代了 "./configure
"。一般源码包解压后都有安装的说明文档,安装之前可以先阅读以下说明文档
3.一般去第三方官网下载源码包时,也会提供已经编译好的二进制包,这种二进制包里面包括了已经经过编译可以马上运行的程序,所以解压后直接进入 "xxx/bin/" 目录找到相关命令直接运行即可
卸载
通过源码包安装时如果指定了安装目录,比如 "./configure --prefix=/usr/local/apache2
",卸载时只需要删除整个安装目录就可以了 "rm -rf /usr/local/apache2
",而且是100%卸载,不会像windows那样经常会残留那多注册表之类的垃圾。
如果源码包安装时没有指定安装目录,那么安装软件生成的文件会分别存储在 /usr/local/ 下的 bin、lib、etc 等目录下,删除起来就比较麻烦一点了。所以建议源码包安装一定要指定安装目录,方便卸载。
非特殊说明,本博所有文章均为博主原创。
如若转载,请注明出处:https://tenkms.cn/archives/705
共有 0 条评论