赞
踩
目录
软件安装共2种安装方式,通过rpm包安装或通过yum仓库库安装。
查询已安装的软件包
RPM软件可以实现几乎所有的功能,新增,删除,更新等
选项 | 功能效果 |
---|---|
rpm -qa(all) | 显示当前系统中以 RPM 方式安装的所有软件列表 |
rpm -q 软件名 | 查询指定软件是否已安装 |
rpm -qi 软件名 | 查看指定软件包的名称、版本、许可协议、用途描述等详细信息 |
rpm -ql(list) 软件名 | 显示指定的软件包在当前系统中安装的所有目录、文件列表 |
rpm -qc (configfiles ) 软件名 | 列出已安装的指定软件的配置文件 |
rpm -qd(docfiles) 软件名 | 列出已安装的指定软件的软件包文档所在位置 |
rpm -qR (requires) 软件名 | 列出已安装的指定软件的依赖的软件包及文件 |
rpm -qf(file) 软件名 | 查看指定的文件或目录是由哪个软件包所安装的 |
rpm-qpd | 查询未安装指定软件包的文档位置 |
rpm -qpi | 查询未安装指定软件包的完整名称详细信息 |
rpm -qpl | 查询未安装指定软件包的文件列表 |
rpm -qpc | 查询未安装指定软件包的配置文件位置 |
- [root@localhost system]# rpm -qa
- #查询所有的已rpm方式安装的软件列表
-
- [root@localhost data]# rpm -q httpd
- #查看httpd有没有安装
- httpd-2.4.6-67.el7.centos.x86_64
-
- [root@localhost data]# rpm -qi httpd
- [root@localhost data]# rpm -qi tree
- #查看httpd的详细信息
-
- [root@localhost data]# rpm -ql httpd
- [root@localhost data]# rpm -ql tree
- #目录或文件列表
-
- [root@localhost data]# rpm -qc httpd
- #配置文件位置
-
- [root@localhost data]# rpm -qd tree
- #软件包文档所在位置
- /usr/share/doc/tree-1.6.0/LICENSE
- /usr/share/doc/tree-1.6.0/README
- /usr/share/man/man1/tree.1.gz
-
- [root@localhost data]# rpm -qR tree
- #查看依赖包
- libc.so.6()(64bit)
- libc.so.6(GLIBC_2.14)(64bit)
- libc.so.6(GLIBC_2.2.5)(64bit)
- libc.so.6(GLIBC_2.3)(64bit)
- libc.so.6(GLIBC_2.3.4)(64bit)
- libc.so.6(GLIBC_2.4)(64bit)
- rpmlib(CompressedFileNames) <= 3.0.4-1
- rpmlib(FileDigests) <= 4.6.0-1
- rpmlib(PayloadFilesHavePrefix) <= 4.0-1
- rtld(GNU_HASH)
- rpmlib(PayloadIsXz) <= 5.2-1
-
- [root@localhost Packages]# rpm -qf /usr/bin/ls
- #查看命令程序由那个包安装的
- coreutils-8.22-18.el7.x86_64
-
- [root@localhost Packages]# rpm -qpi tree-1.6.0-10.el7.x86_64.rpm
- #查看未安装软件的
- [root@localhost Packages]# rpm -qpc httpd-2.4.6-67.el7.centos.x86_64.rpm
- /etc/httpd/conf.d/autoindex.conf
- /etc/httpd/conf.d/userdir.conf
- /etc/httpd/conf.d/welcome.conf
- /etc/httpd/conf.modules.d/00-base.conf6
- /etc/httpd/conf.modules.d/00-dav.conf
-
- [root@localhost Packages]# rpm -ivh httpd-2.4.6-67.el7.centos.x86_64.rpm
- 错误:依赖检测失败:
- /etc/mime.types 被 httpd-2.4.6-67.el7.centos.x86_64 需要
- httpd-tools = 2.4.6-67.el7.centos 被 httpd-2.4.6-67.el7.centos.x86_64 需要
- libapr-1.so.0()(64bit) 被 httpd-2.4.6-67.el7.centos.x86_64 需要
- libaprutil-1.so.0()(64bit) 被 httpd-2.4.6-67.el7.centos.x86_64 需要
- #####依赖关系原因需要安装以下包
- rpm -ivh apr-util-1.5.2-6.el7.x86_64.rpm
- rpm -ivh apr-1.4.8-3.el7.x86_64.rpm
- rpm -ivh mailcap-2.1.41-2.el7.noarch.rpm
- rpm -ivh httpd-tools-2.4.6-67.el7.centos.x86_64.rpm
- rpm -ivh httpd-2.4.6-67.el7.centos.x86_64.rpm
-
-
-
- [root@localhost Packages]# rpm -q tree
- #查询是否安装
- 未安装软件包 tree
- [root@localhost Packages]# rpm -ivh tree
- #安装软件包 tree
- [root@localhost Packages]# rpm -ivh tree-1.6.0-10.el7.x86_64.rpm
- #安装软件包 tree
- [root@localhost Packages]# rpm -q tree
- #查看是否安装
- tree-1.6.0-10.el7.x86_64
- [root@localhost Packages]# rpm -qi tree
- #详细信息
- Name : tree
- Version : 1.6.0
- Release : 10.el7
- Architecture: x86_64
- Install Date: 2021年08月27日 星期五 10时42分26秒
- Group : Applications/File
- Size : 89505
- License : GPLv2+
- Signature : RSA/SHA256, 2014年07月04日 星期五 13时36分46秒, Key ID 24c6a8a7f4a80eb5
- Source RPM : tree-1.6.0-10.el7.src.rpm
- Build Date : 2014年06月10日 星期二 03时28分53秒
- Build Host : worker1.bsys.centos.org
- Relocations : (not relocatable)
- Packager : CentOS BuildSystem <http://bugs.centos.org>
- Vendor : CentOS
- URL : http://mama.indstate.edu/users/ice/tree/
- Summary : File system tree viewer
- Description :
- The tree utility recursively displays the contents of directories in a
- tree-like format. Tree is basically a UNIX port of the DOS tree
- utility.
- [root@localhost Packages]# rpm -ql tree
- #文件列表
- /usr/bin/tree
- /usr/share/doc/tree-1.6.0
- /usr/share/doc/tree-1.6.0/LICENSE
- /usr/share/doc/tree-1.6.0/README
- /usr/share/man/man1/tree.1.gz
- [root@localhost Packages]# rpm -qc vsftpd
- #配置文件
- /etc/logrotate.d/vsftpd
- /etc/pam.d/vsftpd
- /etc/vsftpd/ftpusers
- /etc/vsftpd/user_list
- /etc/vsftpd/vsftpd.conf
-
- [root@localhost Packages]# rpm -qd tree
- #文档位置
- /usr/share/doc/tree-1.6.0/LICENSE
- /usr/share/doc/tree-1.6.0/README
- /usr/share/man/man1/tree.1.gz
-
- [root@localhost Packages]# rpm -qR tree
- #查看已安装的包依赖关系
- libc.so.6()(64bit)
- libc.so.6(GLIBC_2.14)(64bit)
- libc.so.6(GLIBC_2.2.5)(64bit)
- libc.so.6(GLIBC_2.3)(64bit)
- libc.so.6(GLIBC_2.3.4)(64bit)
- libc.so.6(GLIBC_2.4)(64bit)
- rpmlib(CompressedFileNames) <= 3.0.4-1
- rpmlib(FileDigests) <= 4.6.0-1
- rpmlib(PayloadFilesHavePrefix) <= 4.0-1
- rtld(GNU_HASH)
- rpmlib(PayloadIsXz) <= 5.2-1
-
-
-
- [root@localhost Packages]# type rpm
- rpm 已被哈希 (/usr/bin/rpm)
- [root@localhost Packages]# rpm -qf /usr/bin/rpm
- rpm-4.11.3-25.el7.x86_64
- #查看软件来自哪个rpm包
- ###不要卸载rpm包否则无法再次安装
-
-
- [root@localhost Packages]# rpm -K tree-1.6.0-10.el7.x86_64.rpm
- tree-1.6.0-10.el7.x86_64.rpm: rsa sha1 (md5) pgp md5 确定
- #查看相关的 签名是否合法
挂载含义:外部存储设备连接到文件系统上,使这些外部存储设备中的文件可以被系统识别和访问
mount 设备 加文件夹路径 (已存在且是空的文件夹,原来的数据将被隐藏)
挂载规则
一个挂载点同一时间只能挂载一个设备
一个挂载点同一时间挂载了多个设备,只能看到最后一个挂载设备的数据,其它设备上的数据将被隐藏
一个设备可以同时挂载到多个挂载点
通常挂载点一般是已存在空的目录
-t fstype 指定要挂载的设备上的文件系统类型,如:ext4,xfs
-r readonly,只读挂载
-w read and write, 读写挂载,此为默认设置,可省略
-n 不更新/etc/mtab,mount不可见
-a 自动挂载所有支持自动挂载的设备(定义在了/etc/fstab文件中,且挂载选项中有auto功能)
-L 'LABEL' 以卷标指定挂载设备
-U 'UUID' 以UUID指定要挂载的设备
-B, --bind 绑定目录到另一个目录上
-o options:(挂载文件系统的选项),多个选项使用逗号分隔
async 异步模式,内存更改时,写入缓存区buffer,过一段时间再写到磁盘中,效率高,但不安全
sync 同步模式,内存更改时,同时写磁盘,安全,但效率低下
atime/noatime 包含目录和文件
diratime/nodiratime 目录的访问时间戳
auto/noauto 是否支持开机自动挂载,是否支持-a选项
exec/noexec 是否支持将文件系统上运行应用程序
dev/nodev 是否支持在此文件系统上使用设备文件
suid/nosuid 是否支持suid和sgid权限
remount 重新挂载
ro/rw 只读、读写
user/nouser 是否允许普通用户挂载此设备,/etc/fstab使用
acl/noacl 启用此文件系统上的acl功能
loop 使用loop设备
_netdev 当网络可用时才对网络资源进行挂载,如:NFS文件系统
defaults 相当于rw, suid, dev, exec, auto, nouser, async
mount -a 的意思是将/etc/fstab的所有内容重新加载。
mount 是可以显示/etc/fstab的内容。mount -a 是自动挂载 /etc/fstab 里面的东西。
不过这东西开机时已经挂载了,你如果没有修改 fstab 增加新的东西那就肯定没输出。 mount -a 会忽略所有已经完成的操作,也就是开机时 fstab 已经挂载后,而且你没有修改 fstab 。你再运行 mount -a ,他会自动忽略全部 fstab 内容。
基本格式
rpm [选项] rpm软件包
选项 | 效果 |
---|---|
-i | 安装一个新的RPM软件包 |
-U | 升级某个软件包,若未安装过则进行安装 |
-F | 升级某个软件包,若未安装过则直接结束 |
-h | 在安装或升级过程中已#号显示读条 |
-v | 显示安装过程的详细信息 |
--force | 强制安装某个软件包 |
-e 软件名 | 卸载指定的软件 |
--nodeps | 在安装或升级、卸载一个软件包时,不检查与其他包的依赖关系 |
rpm:Redhat Package Manager 多用于红帽系列的系统,例如Redhat、Centos等,优点是直接安装,缺点是虽然可以检查依赖关系但是不会将依赖包直接安装,若强行跳过依赖包安装可能会导致程序故障,以“.rpm”为结尾的文件认为是软件的安装包。
rpm使用格式: rpm [选项] 软件名
[选项] -i 表示安装(若有其他依赖包,会提示但是不会直接安装)
-v 表示显示安装过程
-h 人性话显示
-e 卸载软件(只能卸载一个,不会卸载安装的依赖包)
-q 查看软件是否已安装###
-qc 查看已安装所有配置文件###
-qi 软件包的详细信息
-ql 该软件的所有文件列表
-qf 该软件出自哪个安装包
-qa 查看系统已安装的所有软件
- [root@localhost Packages]#rpm -e tree
- [root@localhost Packages]#rpm -ive tree
-
- [root@localhost Packages]# rpm -ivh httpd-2.4.6-67.el7.centos.x86_64.rpm
- #进入
- 错误:依赖检测失败:
- httpd-tools = 2.4.6-67.el7.centos 被 httpd-2.4.6-67.el7.centos.x86_64 需要
安装路径 | 含 义 |
---|---|
/etc/ | 配置文件安装目录 |
/usr/bin/ | 可执行的命令安装目录 |
/usr/lib/ | 程序所使用的函数库保存位置 |
/usr/share/doc/ | 基本的软件使用手册保存位置 |
/usr/share/man/ | 帮助文件保存位置 |
1.重建RPM数据库
当RPM 数据库发生损坏,可通过 重建RPM 数据库 修复
rpm --rebuild 或者 rpm --initdb
2.导入验证公钥
在没有导入用于数字签名验证的公钥之前,安装光盘中的一部分RPM 包时会报错。需要向RPM数据库中导入位于光盘根目录下的公钥文件。
/var/lib/rpm
#安装文件的信息都在这个里面
[root@localhost Packages]# mount /dev/sr0
[root@localhost Packages]# rpm --import /mnt/RPM-GPG-KEY-CentOS-7
例子安装tree
- [root@localhost Packages]# mount /dev/sr0 /mnt/
- [root@localhost Packages]# df
- 文件系统 1K-块 已用 可用 已用% 挂载点
- /dev/mapper/centos-root 10475520 4733364 5742156 46% /
- devtmpfs 917600 0 917600 0% /dev
- tmpfs 933524 5400 928124 1% /dev/shm
- tmpfs 933524 9188 924336 1% /run
- tmpfs 933524 0 933524 0% /sys/fs/cgroup
- /dev/sda1 5223424 182388 5041036 4% /boot
- /dev/sr0 4414592 4414592 0 100% /mnt
- tmpfs 186708 36 186672 1% /run/user/0
- [root@localhost ~]# cd /mnt/Packages/
- [root@localhost Packages]# ls
- [root@localhost Packages]# ls |grep tree
- texlive-pst-tree-svn24142.1.12-38.el7.noarch.rpm
- tree-1.6.0-10.el7.x86_64.rpm
- [root@localhost Packages]# rpm -ivh tree-1.6.0-10.el7.x86_64.rpm
- 准备中... ################################# [100%]
- 正在升级/安装...
- 1:tree-1.6.0-10.el7 ################################# [100%]
-
- [root@localhost Packages]# rpm -e tree
- #卸载tree软件包
- [root@localhost Packages]# rpm -qa |grep tree
-
-
-
- rpm2cpio tree-1.6.0-10.el7.x86_64.rpm |cpio -tv
- #查看rpm包里的信息
大部分是c语言开发的,更方便的使用
软件版本比较新,新功能,修复bug
可以自行定义配置文件的路径
源码可能有100个功能,红帽认为你可能不需要会自行处理砍掉,自行定制50
程序包编译安装:
源代码-->预处理-->编译-->汇编-->链接-->执行
多文件:文件中的代码之间,很可能存在跨文件依赖关系
虽然有很多开源软件将软件打成包,供人们使用,但并不是所有源代码都打成包,如果想使用开源软
件,可能需要自已下载源码,进行编译安装。另外即使提供了包,但是生产中需要用于软件的某些特
性,仍然需要自行编译安装。但是利用源代码编译安装是比较繁琐的,庆幸的是有相关的项目管理工具
可以大大减少编译过程的复杂度
YUM(Yellow dog Updater,Modified)
yum是一个基于RPM包(是Red-Hat Package Manager红帽软件包管理器的缩写)构建的软件更新机制,能够自动解决软件包之间的依赖关系。解决了日常工作中的大量查找安装依赖包的时间
yum仓库:rpm的加强版,使用C/S架构可以直接安装且会将依赖关系安装
yum仓库安装软件原理:
①首先客户端通过配置文件找到服务端。配置文件目录:/etc/yum.repos.d/
②服务端提供元信息下载。 元信息:安装包的位置以及安装包的依赖关系
③客户端根据元信息下载安装包到本地的缓存目录
④安装软件,安装完成后删除软件包
yum安装: yum install 软件名 -y (表示同意安装,有依赖包也会直接安装)
yum卸载:yum remove 软件名 (只能卸载一个,不会卸载安装的依赖包)
很多情况下公司是内网环境,不能使用/etc/yum.repos.d/配置文件中的外网源进行下载软件,此时就需要我们建立本地的yum库来安装程序。
yum本地库建立步骤:
①首先将硬盘挂载。挂载:将硬件设备和系统内的一个文件夹做关联,访问此文件夹就相当于访问硬件设备
挂载命令: mount命令 + 硬件设备文件夹 挂载点
解挂载:umount + 挂载的文件夹,若挂载失败查看设备状态是否都已勾选
②将配置文件中的外网源备份到一个目录中以防后面使用
③创建一个本地配置文件并将配置填写
④清除之前的缓存
⑤重新建立元数据
⑥安装软件验证本地yum库
具体命令如下:
test.repo文件内容
验证本地yum库是否可以安装软件
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。