【Linux】安装软件的三种方式--rpm、yum、源码包
在windows系统下安装软件很简单,下载软件包后双击.exe文件,点击下一步即可。然而在linux安装软件就没那么容易了,不
说明:此文首发于本人原创公众号【媛测】中,如有转载,请著明出处! 在windows系统下安装软件很简单,下载软件包后双击.exe文件,点击下一步即可。然而在linux安装软件就没那么容易了,不同的Linux发行版有所差异,下面以centos7系统为例说明,如何在linux下安装软件。 linux系统下安装软件一般有3种方法:①rpm工具②yum工具③源码包安装 目录 一、三种安装方式 在Linux下安装软件包,主要有3种办法 (1)rpm工具(redhat package manager,手动安装,难点在于包的依赖关系) rpm包类似于windows下的.exe文件,安装路径和文件名基本都是固定的。 rpm -ivh [rpm完整包名] (2)yum工具(python开发出来的工具,操作对象rpm包,能自动解决软件包的依赖关系,是最常用的方式) yum install -y 【包名简称】 (3)源码包(需要通过编译器把该源码包编译成可执行的文件)【安装难度大】 ./configure---->make---->make install 二、 rpm包及rpm工具使用 要想使用rpm工具,得先有rpm包。 1、rpm包格式说明 上图所示: abrt是包名、2.1.11是版本信息、48.el7.centos是发布版本号、x86_64是运行平台; 另外有一些rpm包没有写具体平台而是noarch:说明没有平台限制。 2、rpm工具用法 (1)rpm常用选项: -a:查询所有已安装rpm包 -e:删除指定rpm包 -f:查询指定rpm包 -i:显示指定rpm包的详细信息 -h:显示安装rpm包列出标记 -v:显示指令的执行过程,即可视化过程 -U:升级指定rpm包 -q:使用询问模式 -l:显示指定rpm包的文件列表 (2)常用命令 安装rpm包:rpm -ivh [rpm包名]; 【注意包名一定要写全到.rpm,不能简写】 升级rpm包:rpm -Uvh[rpm包名]; 【注意同上】 卸载rpm包:rpm -e[rpm包名];如:rpm -e bc;【这里需要注意的是:卸载可以不用写全包名】 查看已安装rpm包:rpm -q[指定rpm包名]或者rpm -qa表示列出所有已安装包如:rpm -q vim-enhanced;查询所有:rpm -qa; 查看已安装rpm包的具体信息:rpm -qi[rpm包名]如:rpm -qi vim-enhanced 列出rpm包的安装文件:rpm -ql[rpm包名]如:rpm -ql vim-enhanced 查看某个文件属于哪个rpm包安装的:rpm -qf [文件绝对路径]如:rpm -qf /usr/bin/vim 当某个命令忘记了绝对路径,又不想分2步来查询。那么可以后面跟which cd(这里的符号时反引号):rpm -qf `which cd` /这里写入的命令不能是带有alias的 【温馨提示】 当你执行rpm -ivh安装rpm包的时候你会发现,其实rpm安装需要很多的依赖包,并且需要手动安装依赖后才能rpm -ivh安装。执行rpm -e也是一样的;所以一般也很少使用rpm进行软件的安装,最常用的安装工具是yum。 二、yum工具用法 yum工具相比rpm工具的优势是:yum安装会联网自动安装依赖包,不需要手动安装依赖。还有一个好处是使用yum安装时,仅仅是写入包名即可,而rpm安装时,是需要写入包全名的。 yum配置文件路径:/etc/yum.repos.d/ 1、常见的yum用法: 列出所有可用的rpm包:yumlist (第一列是包名,第二列是版本号,第三列是配置文件/etc/yum.repos.d/中配置的仓库名) 精准搜索指定的rpm包:yum list | grep 'vim' (只显示出包名中包含vim的rpm包) 搜索指定名称相关的所有rpm包:yum search vim (显示所有包名和介绍中包含vim的rpm包,比较模糊) yum安装rpm包:yum install -y 【包名简称】;-y表示安装时不再询问是否安装 yum卸载rpm包:yum remove 【包名简称】;//卸载时不要加-y选项,因为如果要卸载的依赖包又是系统所需要的,那么继续卸载有可能会导致系统异常,不加-y也可以查看到它所依赖的包都有哪些 yum更新rpm包:yum update 【包名简称】;//使用在刚安装完系统可以使用。如果系统中有已经运行了一段时间的服务,那么这时去升级可能会出现问题【注意:如果直接yumupdate不加包名,则会直接升级所有包和升级系统】 查询一个命令是由哪个包来安装的:yum provides "/*/vim" 2、yum使用光盘搭建本地仓库: 当Linux不能联网的时候,我们就不能使用联网的yum源了。这时需要自己在系统中使用光盘制作yum源linux软件源,搭建本地的yum源,让它在本地中寻找RPM包。具体步骤如下: (1)挂载光盘镜像到/mnt目录:mount /dev/cdrom /mnt (2)删除/etc/yum.repos.d/目录下的所有repo文件(删除前注意先备份,不然等下无法还原了) cp -r /etc/yum.repos.d/ /etc/yum.repos.d_bak/ rm -rf /etc/yum.repos.d/* (3)创建新文件dvd.repo vim /etc/yum.repos.d/dvd.repo,加入如下内容: (enabled--是否可用,1可用,0不可用; gpgcheck--是否检测,0不检测,1检测) (4)清理之前的缓存:yum clean all (5)yum list 查看本地仓库是否配置成功(能看到自己配置的仓库名,就是成功了) 这时就能安装你需要的rpm包了! 3、配置yum.conf 保留下载的rpm包 可以设置使yum保留已经下载的rpm包,供以后升级或者重新安装时使用 。只需 修改/etc/yum.conf即可(这是个新文件) [main] cachedir=/home/soft1/yumcache keepcache=1 debuglevel=2 其中cachedir是放置下载的包的地方,可以自定义 keepcache=1表示保存已经下载的rpm包,0表示不保存 到这里,你应该熟悉yum工具了。不知道你有没有注意到使用yum安装的时候会非常慢,那是因为默认的yum源是使用国外的yum仓库的。 下面我们来介绍使用国内的仓库作为yum源。 在操作之前,我们先恢复之前的yum源,否则使用的yum时会出问题的。操作如下: rm -rf /etc/yum.repos.d mv /etc/yum.repos.d_bak /etc/yum.repos.d yum list (这一步必须执行,生成缓存,方便下次使用。) 4、更改国内yum仓库源: (1)进入yum配置目录,删除CentOS-Base.repo(注意备份:mv CentOS-Base.repo CentOS-Base.repo_bak) (2)下载一份新的国内的CentOS-Base.repo文件代替 wget 或者curl -O 可以打开查看一下这个文件的内容: (3)替换成功后,安装一个rpm包测试一下,例如:yuminstall -y zsh 除了CentOS-Base.repo这个标准的rpm源外,还可以安装yum扩展源epel yuminstall -yepel-release 5、利用yum工具下载rpm包: (1)下载rpm包不安装:yuminstall [包名] -y --downloadonly ; 默认存放路径为/var/cache/yum/x86_64/7/xxx/packets ;xxx为仓库源,如:base、epel、dvd等等 (2)下载rpm包不安装,指定存放路径:yuminstall [包名] -y --downloadonly --downloaddir=/usr/local/src (3)如果是已安装的rpm包:yum reinstall -y [包名] --downloadonly 三、源码包安装: 1、获取源码 下载软件源码包,一般存放在/usr/local/src,解压源码包。 2、查看INSTALL与README文件 解压后查看INSTALL与README文件,这两个文件中详细介绍了本软件的安装方法和注意事项。 3、执行configure,生成Makefile文件 执行./configure命令,生成Makefile文件。 ./configure --prefix=/usr/local/xxx 常用prefix参数指定软件安装目录,当执行make install命令时,会将软件安装在此路径中。 4、执行make,从Makefile中读取指令,编译源码成二进制文件 make clean;make PS:make clean命令用来清除上一次编译生成的目标文件。这个步骤可有可无,但为了确保编译的成功,还是加上为好。防止由于软件中含有残留的目标文件导致编译失败。 5、执行make install,将软件安装到指定目录 make install 此时二进制文件会被安装到先前configure prefix参数设置的路径中去。 说明:此文首发于本人原创公众号【媛测】中,如有转载,请著明出处! (编辑:财气旺网 - 财气网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |