欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

Linux 安装及管理程序详解

程序员文章站 2022-06-28 11:10:58
...

前言

在主机中安装了Linux操作系统之后,就具备了提供软件服务,网络服务等功能的基础。然而随着操作系统一起安装的软件包毕竟只有少数,实现的功能也比较有限,当需要为主机提供更多功能时,安装新的应用程序就成为必然要面对的工作。

一:Linux应用程序基础

1.1:应用程序与系统命令的关系

在Linux系统中,一直以来命令和应用程序并没有特别明确的区别,从长期使用习惯来看,我们可以通过以下描述来对两者进行区别。

系统命令 应用程序
文件位置 一般在/bin和/sbin目录中,称为Shell内部指令 通常在/usr/local目录中
主要用途 完成对系统的基本管理工作,如IP配置工具(ipconfig) 完成相对独立的其他辅助任务,如网页浏览器
适用环境 一般只在字符操作界面中运行 根据实际需要,有些程序可以在图形界面中运行
运行格式 一般包括命令字,命令选项和命令参数 通常没有固定的执行格式

1.2:典型应用程序的目录结构

文件类型 保存目录
普通执行程序文件 /usr/bin(管理员和其他用户都可以使用)
服务器执行程序文件和管理程序文件 /usr/sbin(仅管理员使用)
应用程序配置文件 /etc(应用程序配置文件默认路径)
日志文件 /var/log(可变长文件存放位置)
应用程序文档文件 /usr/share/doc(一般都是一些说明文档在此)
应用程序手册页文件 /usr/share/man(man手册可以查看命令帮助信息和程序帮助信息)

都是默认安装路径

1.3:常见的软件包封装类型

文件类型 保存目录
rpm软件包 一键安装,扩展名为“.rpm”只能在使用RPM(RPM Package Manager,RPM软件包管理器)机制的Linux操作系统中安装,如RHEL,Fedora,CentOS等。
deb软件 扩展名为“.deb”只能在使用DPKG(Debian Package,Debian包管理器)机制的Linux操作系统中进行安装,如Debian,Ubuntu等。
源代码软件包 一般为“.tar.gz”,“.tar.bz2”等格式的压缩包,这种软件包是程序员开发完成的原始代码,因多数使用tar命令打包而成,所以经常被称为“TarBall”。安装源码软件包需要使用相应的编译工具,如Linux中的C语言编译器gcc。
绿色免安装的软件包 在压缩包内提供已编译好的执行程序文件,解开压缩包后的文件即可直接使用。免安装,硬盘版,直接用

二:查询RPM软件包信息

2.1:RPM概述

RPM软件包管理机制最早由Red Hat公司提出,后来随着版本的升级逐渐融入了更多的优秀特性,称为众多Linux发行版中公认的软件包管理标准。

RPM包管理器通过建立统一的文件数据库,对在Linux系统中安装,卸载,升级的各种.rpm软件包进行了详细的记录,并能够自动分析软件包之间的依赖关系,保持各个应用程序在一个协调没有虚的整体环境中运行。

RPM Package Manager
由Red Hat公司提出,被众多Linux发行版所采用
建立统一的数据库文件
详细记录软件包安装,卸载等变化信息
自动分析软件包依赖关系

RPM机制封装的软件包文件拥有约定俗成的命名格式,一般使用“软件名 - 软件版本 - 发布次数.操作系统类型.硬件架构类型.rpm”的文件名形式。例如:

Linux 安装及管理程序详解

2.2:查询RPM软件包信息

使用rpm命令的查询功能可以检查某个软件包是否已经安装,了解软件包的用途,软件包复制到系统中的文件等各种相关信息,以便更好地管理Linux系统中的应用程序。

2.21:查询已安装的RPM软件包信息
使用命令的基本格式
rpm -q[子选项] [软件名]
常用选项有以下几种
-qa
-qi
-ql
-qf
-qc
-qd
例如,查询系统中已安装RPM软件包个数
[aaa@qq.com ~]# rpm -qa | wc -l
例如: 查询是否已安装elinks 和lynx 软件包
    [aaa@qq.com ~]# rpm -q elinks lynx

命令 解释
rpm -qa 查看系统中以RPM方式安装的所有软件列表
rpm -qi 软件包的详细信息(查看指定软件包的名称,版本,许可协议,用途等描述信息)
rpm -ql 软件包当中的所有文件,显示指定的软件包在当前系统中安装的所欲目录,文件列表
rpm -qf 根据指定文件或目录查看是属于哪个软件包安装的
rpm -qc 查看软件包所有配置文件。如conf cnf ini 都是配置文件
rpm -qd 查看软件包的文档
2.22:查询未安装的RPM软件包文件中信息

使用“-qp”选项时,必须以RPM包文件的路径作为参数(可以有多个),而不是软件包名称。

命令都与“-q”类似

使用命令的基本格式
rpm -qp[子选项] RPM包文件
常用选项有以下几种
-qpi
-qpl
-qpc
-qpd

三:安装,升级,卸载RPM软件包

使用rpm命令实现安装,升级,卸载软件包这些操作时,需要了解基本的命令选项。

命令 解释
-i 在当前系统中安装(Install)一个新的RPM软件
-e 卸载指定名称的软件包
-U 检查并升级系统中的某个软件包,若该软件包原来并未安装,则等同于“-i”选项
-F 检查并更新系统中的某个软件包,若该软件包原来并未安装,则放弃安装
–force 强制安装某个软件包,当需要替换现已安装的软件包及文件,或者安装一个比之前使用的软件版本更旧的软件时,可以使用此选项。
–nodeps 在安装或升级,卸载一个软件包时,不检查与其他软件包的依赖关系
-h 在安装或升级软件包的过程中,以“#”号显示安装进度
-v 显示软件安装过程中的详细信息
命令 解释
rpm -ivh 安装
rpm -evh 卸载
df -h 查看挂载

3.1:安装,升级软件包

使用rpm命令安装软件包时,需要指定完整的包文件名作为参数(可以有多个)

而卸载软件包时,只需要指定软件名称即可。

若要一次性安装多个RPM软件包,可以使用通配符“*”,这种方式在安装存在相互依赖关系的多个软件包时特别有用,系统会自动检查依赖性并决定安装顺序,而无需管理员去判断应该先装哪一个包。

在安装一个新的软件包时,通常使用“-ivh”的组合选项,这样便于了解软件安装的过程信息,及时跟踪安装进度。

若是使用新版本的软件包替换旧版本的软件包,只需将“-i”替换成“-U”即可。

命令使用格式
rpm [选项] RPM包文件
常用选项有
-i
-U
-F

3.2:卸载软件包

卸载一个软件包时,主要使用“-e”选项。

命令的使用格式
rpm -e 软件名
例如:卸载已安装的 elinks软件
[aaa@qq.com~]#rpm -e elinks

3.3:维护RPM数据库

用于记录在Linux系统中安装,卸载,升级应用程序的相关信息,由RPM包管理系统自动完成维护,一般不需要用户干预。当RPM数据库发生损坏(误删文件,非法关机,病毒破坏等导致),且Linux系统无法自动完成修复时,当导致无法使用rpm命令正常的安装,卸载及查询软件包。

这时候可以使用rpm命令的“–rebuilddb”或“–initdb”功能对RPM数据库进行重建。

例如
[aaa@qq.com~]#rpm --rebuilddb
或者
[aaa@qq.com~]#rpm --initdb

db的意思是数据库(database)
init的意思是初始化

3.4:Linux系统挂载Windows系统的文件

前提:Windows被挂载的文件需要开启共享,共享功能需要设置好。

smbclient:在计算机上,可以使用 smbclient 实用程序列出到共享的连接

例如:查看共享计算机的共享文件
[aaa@qq.com ~]# smbclient -L //192.168.100.3/
Enter SAMBA\root's password: 

	Sharename       Type      Comment
	---------       ----      -------
	ADMIN$          Disk      远程管理
	C$              Disk      默认共享
	D$              Disk      默认共享
	E$              Disk      默认共享
	F$              Disk      默认共享
	G$              Disk      默认共享
	IPC$            IPC       远程 IPC
	Users           Disk      
	ccc    Disk      
Reconnecting with SMB1 for workgroup listing.
do_connect: Connection to 192.168.100.3 failed (Error NT_STATUS_RESOURCE_NAME_NOT_FOUND)
Failed to connect with SMB1 -- no workgroup available

例如:将Windows共享文件ccc挂载到Linux /etc/sss
[aaa@qq.com ~]# mount.cifs //192.168.100.3/ccc /etc/sss
Password for aaa@qq.com//192.168.100.3/ccc:  
查看是否挂载成功   我们用df -h查看是否挂载成功
[aaa@qq.com ~]# df -h
文件系统             容量  已用  可用 已用% 挂载点
/dev/sda2             20G  3.3G   17G   17% /
devtmpfs             898M     0  898M    0% /dev
tmpfs                912M     0  912M    0% /dev/shm
tmpfs                912M  9.0M  903M    1% /run
tmpfs                912M     0  912M    0% /sys/fs/cgroup
/dev/sda5             10G   37M   10G    1% /home
/dev/sda1            6.0G  174M  5.9G    3% /boot
tmpfs                183M   12K  183M    1% /run/user/42
tmpfs                183M     0  183M    0% /run/user/0
//192.168.100.3/ccc  444G  2.6G  441G    1% /etc/sss

解除挂载的命令
[aaa@qq.com ~]# umount /etc/sss
查看是否解除挂载
[aaa@qq.com ~]# df -h
文件系统        容量  已用  可用 已用% 挂载点
/dev/sda2        20G  3.3G   17G   17% /
devtmpfs        898M     0  898M    0% /dev
tmpfs           912M     0  912M    0% /dev/shm
tmpfs           912M  9.0M  903M    1% /run
tmpfs           912M     0  912M    0% /sys/fs/cgroup
/dev/sda5        10G   37M   10G    1% /home
/dev/sda1       6.0G  174M  5.9G    3% /boot
tmpfs           183M   12K  183M    1% /run/user/42
tmpfs           183M     0  183M    0% /run/user/0

四:Yum概述与常用命令(简单的介绍)

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

4.1:Yum常用命令

安装软件(以foo-x.x.x.rpm为例)
yum install foo-x.x.x.rpm

删除软件
yum remove foo-x.x.x.rpm
或者
yum erase foo-x.x.x.rpm

升级软件
yum upgrade foo
或者
yum update foo

查询信息
yum info foo

搜索软件(以包含foo字段为例)
yum search foo

显示软件包依赖关系
yum deplist foo

清空yum仓库缓存
yum clean all

五:源代码编译安装

5.1:源代码编译安装概述

Linux操作系统之所以能够在十余年的时间里发展壮大以至于风靡全球,其开放源代码的特性是很重要的原因之一,及Linux操作系统中包括内核在内的所有软件都可以获得源代码,并且可以经过定制修改后编译安装。

虽然现代的Linux发行版本大部分采用包管理机制对软件进行打包安装,可以省去软件的编译安装过程,但是还有些情况需要使用源代码编译的方式为系统安装新的应用程序。

安装较新版本的应用程序时
大多数的Linux发行版都提供了相当丰富的应用程序,而这些应用程序的版本往往滞后于该软件的最新源代码版本,所以下载应用程序的最新源代码包并编译安装,可以再程序功能,安全补丁等方面得到及时更新。
当前安装的程序无法满足应用需求时
对于RPM格式封装的应用程序,一般只包含了该软件所能实现的一小部分功能,而难以由用户自行修改,定制。通过对程序的源代码进行编译安装后,可以定制更灵活,更丰富的功能。许多Linux服务器程序都采用源代码编译的方式进行安装,以获得更适合于企业实际应用需求的服务。
为应用添加新的功能时
当需要利用现有的程序源代码进行适当的修改,以便增加新的功能时,必须释放出该软件的源代码,修改后再重新编译安装。
使用源代码安装软件的优点
获得最新的软件版本,及时修复bug
根据用户需要,灵活定制软件功能

编译源代码需要有相应 的开发环境,对于*软件来说,gcc和make是最佳的编译工具。Linux系统采用默认安装后没有安装gcc,我们可以使用rpm命令来安装gcc。所需的软件包在镜像文件中就有提供。

yum install gcc gcc-c++ -y

5.2:编译安装的基本过程

获得所需安装的软件源代码以后,安装的基本过程包括解包,配置,编译及安装。大多数开源软件的安装都遵循这个过程。

Linux 安装及管理程序详解

5.2.1:解包

开源软件的源代码包一般为TarBall形式,扩展名为“.tar.gz”或“.tar.bz2”,都可以使用tar命令进行解压。

在Linux系统中,通常将各种软件的源代码目录保存到“/sur/src”目录中,便于集中管理。

解包
习惯上将软件包解压到/sur/src/目录中
解包后源代码文件位置:/usr/src/软件名-版本号/
将httpd-2.2.6.tar.gz文件解包到/usr/src/目录中
[aaa@qq.com~]#tar zxvf httpd-2.2.6.tar.gz -C /usr/src/
5.2.2:配置

在编译应用程序之前,需要进入源代码目录,对软件的安装目录,功能选择等参数进行配置。

在Linux系统中通过源代码方式安装软件时,也可以将所有程序文件安装到同一个文件夹,当需要卸载软件时,只需将该文件夹删除即可。

配置
配置工作通常使用源码目录中的configure脚本完成
执行“./configure --help”可查看帮助
典型的配置选项:–prefix=软件安装目录(指定软件包安装的目标文件夹)
将软件包httpd-2.2.6安装到/usr/src/local/apache
[aaa@qq.com~]#cd /usr/src/httpd-2.2.6/
[aaa@qq.com~]#./configure --prefix=/usr/local/apache
5.2.3:编译

编译的过程主要是根据Makefile文件内的配置信息(若上一步的配置操作失败,将无法进行编译),将源代码文件进行编译而生成二进制的程序模块,动态链接库,可执行文件等。

配置完成后,只需要在源代码目录中执行“make”命令即可执行编译操作。

5.2.4:安装

编译完成后,就可以执行“make install”命令将软件的执行程序,配置文件,帮助文档等相关文件复制到Linux系统中了,也就是应用程序的最后“安装”过程。同样是在源代码目录中执行命令。