Linux系统中安装软件的三种方法在Linux系统中安装软件有三种方法:源代码安装、RPM包安装、YUM安装。
源码安装:由于在Linux系统中使用的绝大多数软件都是开源软件,软件作者在发布软件时直接提供的就是软件的源代码。用户在取得应用软件的源码文件后,可以根据自身需求对软件进行修改或定制,然后在自己的系统上重新编译,即可生成能在该系统上执行的程序文件。通过源码安装,用户可以获得最新的应用程序,可以定制更灵活、丰富的功能,而且使软件可以跨越计算机平台,在所有版本的Linux系统中都能使用。但源码安装方式过于复杂,耗时又长,对用户的软件开发能力要求也比较高。
RPM(RedHat Packet Manager)的软件包管理系统:RPM是一种已经编译并封装好的软件包,用户可以直接安装使用。通过RPM,用户可以更加轻松方便地管理系统中的所有软件。RPM软件包只能在使用RPM机制的Linux操作系统中使用,如RHEL、Fdeora、Suse等。在Linux世界中,还有另外一种名为DEB的软件包管理机制,可以在Debian、Ubuntu等系统中使用。相比较而言,还是RPM安装包应用更为广泛,基本已成为Linux系统中软件安装包事实上的标准。YUM(Yellow dog Updater,Modified)安装:RPM软件包之间存在着复杂的依赖关系。在多数情况下,一个软件都是由多个相互依赖的RPM软件包组成的,而大部分的RPM包又有相互之间的依赖关系。例如,安装A软件需要B软件的支持,而安装B软件又需要C软件的支持,那么在安装A软件之前,必须先安装C软件,再安装B软件,最后才能安装A,有时甚至还可能会出现死循环。YUM安装是一个基于RPM却胜于RPM的软件管理工具,它的最大优点是可以自动解决RPM软件包间的依赖性问题,从而可以更轻松的管理Linux系统中的软件。从RHEL5开始,Red Hat就推荐用yum作为软件安装的首选方式。可以同时配置多个资源库(Repository) ,简洁的配置文件(/etc/yum.conf) ,自动解决增加或删除rpm包时遇到的倚赖性问题,使用方便,保持与RPM数据库的一致性
RPM
RPM(redhat package manager)软件包是将程序源代码经过编译和封装以后形成的包文件,在软件包里会封装软件的程序、配置文件、帮助手册等组件。yum是目前在RHEL系统中安装软件的首选方式,传统的rpm则主要是用作查询,如查询系统中是否已经安装了某个软件等
RPM软件包的安装与卸载
[root@justin Packages]# rpm -ivh --test zsh-4.3.10-5.el6.i686.rpm warning: zsh-4.3.10-5.el6.i686.rpm: Header V3 RSA/SHA256 Signature, key ID fd431d51: NOKEY Preparing... ########################################### [100%] [root@justin Packages]#卸载软件建议使用rpm,尽量不使用yum来卸载,因为yum卸载时候会把依赖的包一起卸载可能导致其他软件无法正常使用
[root@localhost ~]# rpm -e --nodeps `rpm -qa|grep java`rpm包一般都有默认的安装路径,命令放在/usr/bin或/usr/sbin下,库在/usr/lib下,数据文件在/usr/share/下,比如在安装JDK (Java Development Kit)或JRE (Java Runtime Environment)时,这个RedHat package文件的默认安装路径是/usr/java
[root@localhost ~]# rpm -qpi jdk-8u151-linux-x64.rpm Name : jdk1.8 Relocations: /usr/java Version : 1.8.0_151 Vendor: Oracle Corporation Release : fcs Build Date: Wed 06 Sep 2017 10:38:06 AM CST Install Date: (not installed) Build Host: sc11137389.us.oracle.com Group : Development/Tools Source RPM: jdk1.8-1.8.0_151-fcs.src.rpm Size : 289862450 License: http://java.com/license Signature : (none) Packager : Java Software <jre-comments@java.sun.com> URL : URL_REF Summary : Java Platform Standard Edition Development Kit Description : The Java Platform Standard Edition Development Kit (JDK) includes both the runtime environment (Java virtual machine, the Java platform classes and supporting files) and development tools (compilers, debuggers, tool libraries and other tools). The JDK is a development environment for building applications, applets and components that can be deployed with the Java Platform Standard Edition Runtime Environment. [root@localhost ~]#这个JDK是默认要装在/usr/java 下的,如果是Relocations: (not relocatable)不能重定位,是无法修改安装目录的,只有去掉 --prefix参数了
要更改默认路径
rpm -i --badreloc --relocate /usr/java=/home/java
badreloc是强制把文件安装到你想要的地方。
relocate就是只把应该装到oldpath下的文件安装到newpath,实现将一部分文件安装到其它的路径,而不是把所有的这个包的文件都替换。
但是无论是prefix还是relocate都不见得可以真正可以用,因为有的包或者文件不允许装到其他路径
软件包信息查看
如:
查看某个文件时由哪个软件包生成:rpm -qf 文件名
例如查看semanage命令由哪个安装包生成:
[root@Zabbix_server home]# which semanage /usr/sbin/semanage [root@Zabbix_server home]# rpm -qf /usr/sbin/semanage policycoreutils-python-2.0.83-19.39.el6.i686 [root@Zabbix_server home]#查看软件包在系统中生成的所有文件的位置:rpm -ql 软件包名
[root@Zabbix_server home]# rpm -ql policycoreutils-python /usr/bin/audit2allow /usr/bin/audit2why /usr/bin/chcat /usr/bin/sandbox /usr/bin/sepolgen-ifgen /usr/bin/sepolgen-ifgen-attr-helper查看软件包配置文件所在位置:rpm -qc 软件包名
[root@Zabbix_server home]# rpm -qc httpd /etc/httpd/conf.d/welcome.conf /etc/httpd/conf/httpd.conf查看软件包的安装信息:rpm -qi
[root@Zabbix_server home]# rpm -qi httpd Name : httpd Relocations: (not relocatable) Version : 2.2.15 Vendor: CentOS Release : 30.el6.centos Build Date: Fri 04 Apr 2014 07:55:03 AM CST Install Date: Wed 23 Jul 2014 06:59:33 AM CST Build Host: c6b10.bsys.dev.centos.org Group : System Environment/Daemons Source RPM: httpd-2.2.15-30.el6.centos.src.rpm Size : 2905719 License: ASL 2.0 Signature : RSA/SHA1, Fri 04 Apr 2014 08:04:37 AM CST, Key ID 0946fca2c105b9de Packager : CentOS BuildSystem <http://bugs.centos.org> URL : http://httpd.apache.org/ Summary : Apache HTTP Server Description : The Apache HTTP Server is a powerful, efficient, and extensible web server. [root@Zabbix_server home]#查看软件包安装到哪里:rpm -qpl 软件包名
查看软件是否安装
[root@justin Packages]# rpm -q vsftpd vsftpd-2.2.2-11.el6.i686 [root@justin Packages]# rpm -qa vsftpd vsftpd-2.2.2-11.el6.i686 [root@justin Packages]# rpm -e vsftpd [root@justin Packages]# rpm -q vsftpd package vsftpd is not installed [root@justin Packages]# rpm -qa vsftpd [root@justin Packages]# rpm -qa | wc -l 1104 [root@justin Packages]#
查看已安装软件的信息
查询已经安装的软件包文件列表
如何查看rpm包里有什么内容rpm -qlp如何查看rpm包的安装脚本rpm -qp --scripts如何查看rpm包的依赖性关系rpm -qp --requires如何查看rpm包详细信息rpm -qi如何安装rpm包rpm -ivh如何更新软件rpm -Uvh如何卸载软件rpm -e如何在安装过程中指定相对安装路径rpm -ivh --nodeps --force --root=你指定的路径如何在安装过程中忽略依赖性关系rpm -ivh --nodeps --force如何查看rpm包的更新记录rpm -qp --changelog如何重新编译rpm包rpm -ba spec配置文件
在Linux中安装软件时,会自动分门别类地向相应的目录中复制对应的程序文件,并进行相关设置。在Linux系统中,典型的应用程序通常由以下几部分组成:
文件类型保存位置普通执行程序文件/usr/bin服务器执行和管理程序文件/usr/sbin应用程序配置文件/etc/日志文件 /var/log应用程序文档文件/usr/share/doc应用程序帮助手册文件/usr/share/man查询文件由哪个程序生成
[root@justin Packages]# rpm -qf /etc/vsftpd/ vsftpd-2.2.2-11.el6.i686 [root@justin Packages]# rpm -qf /etc/passwd setup-2.8.14-16.el6.noarch [root@justin Packages]# rpm -qf /usr/share/ filesystem-2.4.30-3.el6.i686 [root@justin Packages]#说明:当系统中的某个程序文件损坏或丢失时,通过“rpm -qf”的查询结果,可以重新安装相应的软件包
[root@justin Packages]# which touch /bin/touch [root@justin Packages]# rpm -qf /bin/touch coreutils-8.4-19.el6.i686 [root@justin Packages]# rm -rf /bin/touch [root@justin Packages]# touch file1 -bash: touch: command not found [root@justin Packages]# rpm -i coreutils-8.4-19.el6.i686.rpm warning: coreutils-8.4-19.el6.i686.rpm: Header V3 RSA/SHA256 Signature, key ID fd431d51: NOKEY package coreutils-8.4-19.el6.i686 is already installed [root@justin Packages]# rpm -i coreutils-8.4-19.el6.i686.rpm --force warning: coreutils-8.4-19.el6.i686.rpm: Header V3 RSA/SHA256 Signature, key ID fd431d51: NOKEY [root@justin Packages]# touch file1 touch: 无法创建"file1": 只读文件系统 [root@justin Packages]# init 6 [root@justin Packages]# Connection closed by foreign host. Type `help' to learn how to use Xshell prompt. Xshell:\> Connecting to 10.15.72.194:22... Connection established. To escape to local shell, press 'Ctrl+Alt+]'. Last login: Tue Oct 29 22:34:02 2013 from 10.15.72.73 [root@justin ~]# touch file1 [root@justin ~]#
安装coreutils时候提示已经安装,这时候需要用到参数--force强制重新安装下,重新强制安装成功后使用touch命令会提示无法创建,只读的文件系统,只时候需要重启下系统就可以了
查询软件包配置文件信息
[root@justin Packages]# rpm -qc vsftpd /etc/logrotate.d/vsftpd /etc/pam.d/vsftpd /etc/vsftpd/ftpusers /etc/vsftpd/user_list /etc/vsftpd/vsftpd.conf [root@justin Packages]#