Linux 命令大全(六)——软件安装

六、软件安装
RPM
RPM 软件的安装、删除、更新只有 root 权限才能使用;对于查询功能任何用户都可以操作;如果普通
用户拥有安装目录的权限,也可以进行安装。
初始化 rpm 数据库
通过 rpm 命令查询一个 rpm 包是否安装了,也是要通过 rpm 数据库来完成的;所以我们要经常用下面
的两个命令来初始化 rpm 数据库;
[root@localhost beinan]# rpm --initdb
[root@localhost beinan]# rpm --rebuilddb 注:这个要花好长时间;
注:这两个参数是极为有用,有时 rpm 系统出了问题,不能安装和查询,大多是这里出了问题;
/var/lib/rpm 目录下的数据库记录所有软件的升级需求,记录已经安装的所有软件,数字证书记录等,这
个目录下的文件非常重要。
RPM软件包管理的查询功能:
命令格式
rpm {-q|--query} [select-options] [query-options]
RPM 的查询功能是极为强大,是极为重要的功能之一;举几个常用的例子,更为详细的具体的,请参考
#man rpm
1、查询系统已安装的软件;
语法:rpm -q 软件名
举例:
[root@localhost beinan]# rpm –q gaim
gaim-1.3.0-1.fc4
-q 就是 --query ,中文意思是“问”,此命令表示的是,是不是系统安装了 gaim ;如果已安装会有
信息输出;如果没有安装,会输出 gaim 没有安装的信息;查看系统中所有已经安装的包,要加 -a 参
数;
[root@localhost RPMS]# rpm -qa
如果分页查看,再加一个管道 |和 more 命令;
[root@localhost RPMS]# rpm -qa |more
在所有已经安装的软件包中查找某个软件,比如说 gaim ;可以用 grep 抽取出来;
[root@localhost RPMS]# rpm -qa |grep gaim
上面这条的功能和 rpm -q gaim 输出的结果是一样的;
等 37448
2、查询一个已经安装的文件属于哪个软件包;
语法 rpm -qf 文件名 注:文件名所在的绝对路径要指出举例:
[root@localhost RPMS]# rpm -qf /usr/lib/libacl.la
libacl-devel-2.2.23-8
3、查询已安装软件包都安装到何处;
语法:rpm -ql 软件名 或 rpm rpmquery -ql 软件名举例:
[root@localhost RPMS]# rpm -ql lynx
[root@localhost RPMS]# rpmquery -ql lynx
4、查询一个已安装软件包的信息
语法格式: rpm -qi 软件名
举例:
[root@localhost RPMS]# rpm -qi lynx
5、查看一下已安装软件的配置文件;
语法格式:rpm -qc 软件名
举例:
[root@localhost RPMS]# rpm -qc lynx
6、查看一个已经安装软件的文档安装位置:
语法格式: rpm -qd 软件名
举例:
[root@localhost RPMS]# rpm -qd lynx
7、查看一下已安装软件所依赖的软件包及文件;
语法格式: rpm -qR 软件名
举例:
[root@localhost beinan]# rpm -qR rpm-python
查询已安装软件的总结:对于一个软件包已经安装,我们可以把一系列的参数组合起来用;比如 rpm
-qil ;比如:
[root@localhost RPMS]# rpm -qil lynx
对已安装软件包查询的一点补充;
[root@localhost RPMS]# updatedb
[root@localhost RPMS]# locate 软件名或文件名
通过 updatedb,我们可以用 locate 来查询一些软件安装到哪里了;系统初次安装时要执行 updatedb ,
每隔一段时间也要执行一次;以保持已安装软件库最新;updatedb 是 slocate 软件包所有;如果您没
有这个命令,就得安装 slocate ;举例:
[root@localhost RPMS]# locate gaim
对于未安装的软件包的查看:
查看的前提是您有一个.rpm 的文件,也就是说对既有软件 file.rpm 的查看等;
1、查看一个软件包的用途、版本等信息;
语法: rpm -qpi file.rpm
举例:
[root@localhost RPMS]# rpm -qpi lynx-2.8.5-23.i386.rpm
2、查看一件软件包所包含的文件;
语法: rpm -qpl file.rpm
举例:
[root@localhost RPMS]# rpm -qpl lynx-2.8.5-23.i386.rpm3、查看软件包的文档所在的位置;
语法: rpm -qpd file.rpm
举例:
[root@localhost RPMS]# rpm -qpd lynx-2.8.5-23.i386.rpm
4、查看一个软件包的配置文件;
语法: rpm -qpc file.rpm
举例:
[root@localhost RPMS]# rpm -qpc lynx-2.8.5-23.i386.rpm
5、查看一个软件包的依赖关系
语法: rpm -qpR file.rpm
举例:
[root@localhost archives]# rpm -qpR yumex_0.42-3.0.fc4_noarch.rpm
/bin/bash
/usr/bin/python
config(yumex) = 0.42-3.0.fc4
pygtk2
pygtk2-libglade
rpmlib(CompressedFileNames) <= 3.0.4-1
rpmlib(PayloadFilesHavePrefix) <= 4.0-1
usermode
yum >= 2.3.2
软件包的安装、升级、删除等;
1、安装和升级一个rpm 包;
[root@localhost beinan]#rpm -vih file.rpm 注:这个是用来安装一个新的 rpm 包;
[root@localhost beinan]#rpm -Uvh file.rpm 注:这是用来升级一个 rpm 包;
如果有依赖关系的,请解决依赖关系,其实软件包管理器能很好的解决依赖关系,请看前面的软件包管理器
的介绍;如果您在软件包管理器中也找不到依赖关系的包;那只能通过编译他所依赖的包来解决依赖关系,
或者强制安装;语法结构:
[root@localhost beinan]# rpm -ivh file.rpm --nodeps --force
[root@localhost beinan]# rpm -Uvh file.rpm --nodeps --force
更多的参数,请查看 man rpm 举例应用:
[root@localhost RPMS]# rpm -ivh lynx-2.8.5-23.i386.rpm
Preparing... ########################################### [100%]
1:lynx ########################################### [100%]
[root@localhost RPMS]# rpm -ivh --replacepkgs lynx-2.8.5-23.i386.rpm
Preparing... ########################################### [100%]
1:lynx ########################################### [100%]
注: --replacepkgs 参数是以已安装的软件再安装一次;有时没有太大的必要;测试安装参数 --test ,
用来检查依赖关系;并不是真正的安装;
[root@localhost RPMS]# rpm -ivh --test gaim-1.3.0-1.fc4.i386.rpm
Preparing... ########################################### [100%]由新版本降级为旧版本,要加 --oldpackage 参数;
[root@localhost RPMS]# rpm -qa gaim
gaim-1.5.0-1.fc4
[root@localhost RPMS]# rpm -Uvh --oldpackage gaim-1.3.0-1.fc4.i386.rpm
Preparing... ########################################### [100%]
1:gaim ########################################### [100%]
[root@localhost RPMS]# rpm -qa gaim
gaim-1.3.0-1.fc4
为软件包指定安装目录:要加 -relocate 参数;下面的举例是把 gaim-1.3.0-1.fc4.i386.rpm 指定安装在
/opt/gaim 目录中;
[root@localhost RPMS]# rpm -ivh --relocate /=/opt/gaim gaim-1.3.0-1.fc4.i386.rpm
Preparing... ########################################### [100%]
1:gaim ########################################### [100%]
[root@localhost RPMS]# ls /opt/
gaim
为软件包指定安装目录:要加 -relocate 参数;下面的举例是把 lynx-2.8.5-23.i386.rpm 指定安装在
/opt/lynx 目录中;
[root@localhost RPMS]# rpm -ivh --relocate /=/opt/lynx --badreloc lynx-2.8.5-23.i386.rpm
Preparing... ########################################### [100%]
1:lynx ########################################### [100%]
我们安装在指定目录中的程序如何调用呢?一般执行程序,都放在安装目录的 bin 或者 sbin 目录中;看下
面的例子;如果有错误输出,就做相应的链接,用 ln -s ;
[root@localhost RPMS]# /opt/lynx/usr/bin/lynx
Configuration file /etc/lynx.cfg is not available.
[root@localhost RPMS]# ln -s /opt/lynx/etc/lynx.cfg /etc/lynx.cfg
[root@localhost RPMS]# /opt/lynx/usr/bin/lynx www.linuxsir.org
RPM 管理包管理器支持网络安装和查询;
比如我们想通过 Fedora Core 4.0 的一个镜像查询、安装软件包;地址:
http://mirrors.kernel.org/fedora/core/4/i386/os/Fedora/RPMS/ 举例:命令格式:
rpm 参数 rpm 包文件的 http 或者 ftp 的地址
# rpm -qpi http://mirrors.kernel.org/fedora/core/4/i386/os/
Fedora/RPMS/gaim-1.3.0-1.fc4.i386.rpm
# rpm -ivh http://mirrors.kernel.org/fedora/core/4/i386/os/
Fedora/RPMS/gaim-1.3.0-1.fc4.i386.rpm
2、删除一个rpm 包;
首先您要学会查询 rpm 包 ;请看前面的说明; [root@localhost beinan]#rpm -e 软件包名 举例:我想
移除 lynx 包,完整的操作应该是:
[root@localhost RPMS]# rpm -e lynx
如果有依赖关系,您也可以用--nodeps 忽略依赖的检查来删除。但尽可能不要这么做,最好用软件包管理
器 systerm-config-packages 来删除或者添加软件;
[root@localhost beinan]# rpm -e lynx --nodeps
RPM验证与数字证书:
导入签名:[root@localhost RPMS]# rpm --import 签名文件 举例:
[root@localhost fc40]# rpm --import RPM-GPG-KEY
[root@localhost fc40]# rpm --import RPM-GPG-KEY-fedora
RPM 验证作用是使用/var/lib/rpm 下面的数据库内容来比较目前 linux 系统的环境下的所有软件文件,也就
是说当你有数据不小心丢失,或者不小心修改到某个软件的文件内容,就用这个简单的方法验证一下原本的
文件系统
#rpm –Va
列出目前系统上面所有可能被改动过的文件
rpm软件包抽取文件;
命令格式: rpm2cpio file.rpm |cpio -div
举例:
[root@localhost RPMS]# rpm2cpio gaim-1.3.0-1.fc4.i386.rpm |cpio -div
抽取出来的文件就在当用操作目录中的 usr 和 etc 中;其实这样抽到文件不如指定安装目录来安装软件来
的方便;也一样可以抽出文件;为软件包指定安装目录:要加 -relocate 参数;下面的举例是把
gaim-1.3.0-1.fc4.i386.rpm 指定安装在 /opt/gaim 目录中;
[root@localhost RPMS]# rpm -ivh --relocate /=/opt/gaim gaim-1.3.0-1.fc4.i386.rpm
Preparing... ########################################### [100%]
1:gaim ########################################### [100%]
[root@localhost RPMS]# ls /opt/
gaim
这样也能一目了然;gaim 的所有文件都是安装在 /opt/gaim 中,我们只是把 gaim 目录备份一下,然后卸
掉 gaim;这样其实也算提取文件的一点用法;
RPM的配置文件;
RPM 包管理,的配置文件是 rpmrc ,我们可以在自己的系统中找到;比如 Fedora Core 4.0 中的 rpmrc 文
件位于;
[root@localhost RPMS]# locate rpmrc
/usr/lib/rpm/rpmrc
/usr/lib/rpm/redhat/rpmrc
我们可以通过 rpm --showrc 查看;具体的还得我们自己来学习。呵。。。不要问我,我也不懂;只要您
看了这篇文章,认为对您有用,您的水平就和我差不多;咱们水平是一样的,所以我不能帮助您了;请
理解。
YUM
YUM配置文件
创建容器,位置在/etc/yum.repos.d,扩展名必须是.repo
#cd /etc/yum.repos.d
#vim yum.repo
新建一个仓库文件,名字可以随便定义,在文件中写如下内容
[base]
#代表容器名称,中括号一定要存在,里面的名字可随便取
name=base #说明这个容器的意义,随便写都可以
baseurl=ftp://192.168.0.6/pub/Server
#192. 168. 0. 6 是你的 YUM 源地址,这个很重要。
enabled=1
#是否启动,=0 则不启动,不启动就无法使用该源
gpgcheck=0 #是否验证. 可不要
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-redhat-release #验证的密钥. 可不要命令:#yum repolist all
显示目前所使用的容器有哪些
如果查询出来的容器,status disabled,要将配置文件,如上 enabled=1
/etc/yum.conf
yum.conf 这个配置文件主要是 yum 客户端使用,里面主要规定了要去用的 rpm 包的 yum 服务器的信
息。
[main] #main 开头的块用于对客户端进行配置,在 main 后也可以指定 yum 源(不推荐这样做),与
/etc/yum.repo.d 中指定 yum 源相同
cachedir=/var/cache/yum
#cachediryum 缓存的目录,yum 在此存储下载的 rpm 包和数据库,一般是/var/cache/yum
keepcache=0 #0 表示不保存下载的文件,1 表示保存下载的文件,默认为不保存
debuglevel=2
#debuglevel:除错级别,0──10,默认是 2 貌似只记录安装和删除记录
logfile=/var/log/yum.log
#指定 yum 的日志文件
pkgpolicy=newest
#包的策略,如果配置多了 yum 源,同一软件在不同的 yum 源中有不同版本,
newest 则安装最新版本,该值为 lastest,则 yum 会将服务器上 ID 按照字母序排列,选择最后那个服务器上
的软件安装
distroverpkg=centos-release
#指定一个软件包,yum 会根据这个包判断你的发行版本,默认是 redhat-release,也可以是安装的任何
针对自己发行版的 rpm 包。
tolerant=1
#tolerent,也有 1 0 两个选项,表示 yum 是否容忍命令行发生与软件包有关的错误,比如你要安装
1,2,3 三个包,而其中 3 此前已经安装了,如果你设为 1,yum 不会出现错误信息。默认是 0
exactarch=1
#exactarch,有两个选项 1 0,代表是否只升级和你安装软件包 cpu 体系一致的包,如果设为 1,则如
你安装了一个 i386 rpm,则 yum 不会用 i686 的包来升级。
retries=20
#retries,网络连接发生错误后的重试次数,如果设为 0,则会无限重试。
obsoletes=1
gpgcheck=1
#gpgchkeck= 1 0 两个选择,分别代表是否是否进行 gpg 校验,如果没有这一项,默认是检查的。
plugins = 1
#是否启用插件,默认 1 为允许,0 表示不允许
reposdir=/etc/yy.rm #默认是 /etc/yum.repos.d/ 低下的 xx.repo 后缀文件
#默认都会被include 进来 也就是说 /etc/yum.repos.d/xx.repo 无论配置文件有多少个 每个里面有多少
[name]最后其实都被整合到 一个里面看就是了 重复的[name]应该是前面覆盖后面的--还是后面的覆盖前
面的呢?enabled 测试是后面覆盖前面
exclude=xxx
#exclude 排除某些软件在升级名单之外,可以用通配符,列表中各个项目要用空格隔开,这个对于安
装了诸如美化包,中文补丁的朋友特别有用。
keepcache=[1 or 0]
#设置 keepcache=1yum 在成功安装软件包之后保留缓存的头文件 (headers) 和软件包。默认值为
keepcache=0 不保存
reposdir=[包含 .repo 文件的目录的绝对路径]
#该选项用户指定 .repo 文件的绝对路径。.repo 文件包含软件仓库的信息 (作用与 /etc/yum.conf 文件
中的 [repository] 片段相同)。中YUM命令
YUM 安装删除软件 yum install xxxyum 会查询数据库,有无这一软件包,如果有,则检查其依赖冲
突关系,如果没有依赖冲突,那么最好,下载安装;如果有,则会给出提示,询问是否要同时安装依赖,或
删除冲突的包,你可以自己作出判断。
删除的命令是,yum remove xxx,同安装一样,yum 也会查询数据库,给出解决依赖关系的提示。
YUM安装软件包
命令:yum install
YUM删除软件包
命令:yum remove
YUM 查询软件信息,我们常会碰到这样的情况,想要安装一个软件,只知道它和某方面有关,但又
不能确切知道它的名字。这时 yum 的查询功能就起作用了。你可以用 yum search keyword 这样的命令来进
行搜索,比如我们要则安装一个 Instant Messenger,但又不知到底有哪些,这时不妨用 yum search messenger
这样的指令进行搜索,yum 会搜索所有可用 rpm 的描述,列出所有描述中和 messeger 有关的 rpm 包,于是
我们可能得到 gaimkopete 等等,并从中选择。有时我们还会碰到安装了一个包,但又不知道其用途,我
们可以用 yum info packagename 这个指令来获取信息。
1.使用 YUM 查找软件包
命令:yum search
2.列出所有可安装的软件包
命令:yum list
3.列出所有可更新的软件包
命令:yum list updates
4.列出所有已安装的软件包
命令:yum list installed
5.列出所有已安装但不在 Yum Repository 內的软件包
命令:yum list extras
6.列出所指定的软件包
命令:yum list
7.使用 YUM 获取软件包信息
命令:yum info
8.列出所有软件包的信息
命令:yum info
9.列出所有可更新的软件包信息
命令:yum info updates
10.列出所有已安裝的软件包信息
命令:yum info installed
11.列出所有已安裝但不在 Yum Repository 內的软件包信息
命令:yum info extras
12.列出软件包提供哪些文件
命令:yum provides 清除YUM缓存
yum 会把下载的软件包和 header 存储在 cache 中,而不会自动删除。如果我们觉得它们占用了磁盘空间,
可以使用 yum clean 指令进行清除,更精确的用法是 yum clean headers 清除 headeryum clean packages
除下载的 rpm 包,yum clean all 一股脑儿端
1.清除缓存目录(/var/cache/yum)下的软件包
命令:yum clean packages
2.清除缓存目录(/var/cache/yum)下的 headers
命令:yum clean headers
3.清除缓存目录(/var/cache/yum)下旧的 headers
命令:yum clean
Oldheaders
4.清除缓存目录(/var/cache/yum)下的软件包及旧的 headers
命令:yum clean, yum clean
all (= yum clean packages; yum clean oldheaders)
原文地址:https://www.cnblogs.com/zhuminghui/p/13594842.html