`

linux软件安装方式

 
阅读更多

 

在linux系统上安装软件有三种方式:1.源码安装2.rpm包安装3.yum命令安装

 

https://www.cnblogs.com/benwu/articles/8436209.html

一、源码安装

Linux上几乎所有的软件都经过了GPL授权,因此几乎所有的软件都会提供源码。 而一个软件要在Linux上执行,必须是二进制文件,因此当我们拿到软件源码后,需要将它编译成二进制文件才能在Linux上运行。

软件编译过程

将源码编译成可供Linux运行的二进制文件一共需要两步: 

1. 使用gcc编译器将源码链接成目标文件 

2. 再次使用gcc编译器将目标文件编译成二进制文件

一个软件的源代码往往被封装在多个源文件中,此外这些文件有错综复杂的依赖关系,编译需要严格按照指定的顺序进行,这无疑增加了编译的难度。好在make命令可以帮助我们简化编译过程。

整个编译过程被浓缩在Makefile文件中(告诉make命令需要怎么去编译和链接程序),当执行make命令时,make会去当前目录中寻找Makefile文件,并根据该文件中的要求完成整个编译过程。

而Makefile文件由configure命令产生。当执行configure命令时,configure会根据当前系统环境动态生成一个适合本系统的Makefile文件,供make命令使用。

Linux源码安装步骤

1.获取源码,将软件的源码下载至/usr/local/(默认放这个目录),并解压。

2.创建Makefile文件,执行configure命令,生成Makefile文件。

3.编译 ,执行make clean;make命令将源码编译成二进制文件。 

PS:make clean命令用来清除上一次编译生成的目标文件。这个步骤可有可无,但为了确保编译的成功,还是加上为好。防止由于软件中含有残留的目标文件导致编译失败。

4.安装,执行make install命令将上一步编译好的二进制文件安装到指定的目录中去。

 

https://www.cnblogs.com/ftl1012/p/rpm.html

二、rpm安装

rpm(Redhat Package Manager),是redhat的软件包管理方式,这种安装方式简单的说就是安装别人编译好的软件包。rpm不仅已经把软件源码编译成了二进制文件,而且对软件包依赖的文件,系统环境等做了统计。由于rpm功能强大方便,因此也逐渐被其他linux发行版采用。

rpm常见命令参数

用法: rpm [选项...]
-a:查询所有套件;
-b<完成阶段><套件档>+或-t <完成阶段><套件档>+:设置包装套件的完成阶段,并指定套件档的文件名称;
-c:只列出组态配置文件,本参数需配合"-l"参数使用;
-d:只列出文本文件,本参数需配合"-l"参数使用;
-e<套件档>或--erase<套件档>:删除指定的套件;
-f<文件>+:查询拥有指定文件的套件;
-h或--hash:套件安装时列出标记;
-i:显示套件的相关信息;
-i<套件档>或--install<套件档>:安装指定的套件档;
-l:显示套件的文件列表;
-p<套件档>+:查询指定的RPM套件档;
-q:使用询问模式,当遇到任何问题时,rpm指令会先询问用户;
-R:显示套件的关联性信息;
-s:显示文件状态,本参数需配合"-l"参数使用;
-U<套件档>或--upgrade<套件档>:升级指定的套件档;
-v:显示指令执行过程;
-vv:详细显示指令执行过程,便于排错。

 rpm常用命令

//安装rpm软件包
rpm -ivh your-package                # 直接安装
rpm --force -ivh your-package.rpm    # 忽略报错,强制安装
//卸载rpm软件包
rpm -ql tree                         # 查询文件安装位置
rpm -e tree                          # 卸载
//列出所有安装过的包 配合grep使用
rpm -qa
//获得某个软件包的文件全名
rpm -q **
//查看哪个软件包包含这个程序
rpm -qf `which 程序名`    #返回软件包的全名

 

https://www.cnblogs.com/sui776265233/p/10175878.html

三、yum安装

yum(Yellow dog Updater,Modified这名字咋起的不晓得。。),基于rpm包管理,能够从指定的服务器自动下载rpm包并且安装,可以自动处理依赖关系,一次安装所有依赖的软件包,无需一次次下载、安装。

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
  -q 静默执行 
  -t 忽略错误
  -R[分钟] 设置等待时间
  -y 自动应答yes
  --skip-broken 忽略依赖问题
  --nogpgcheck 忽略GPG验证

https://blog.csdn.net/yzpbright/article/details/81387623

https://www.jianshu.com/p/9f2eca20501b

yum的基本工作流程如下

服务器端:在服务器上面存放了所有的rpm软件包,然后分析每个rpm文件的依赖性关系(rpm包头文件里记录着这些依赖关系),将这些数据记录成文件存放在服务器的某特定目录内。 

客户端:执行yum安装命令时,先下载服务器上面记录的依赖性关系文件(可通过WWW或FTP方式),通过对服务器端下载的纪录数据进行分析,获取所有需要安装的包,一次全部下载下来进行安装。

yum配置文件

yum作为一个rpm包管理工具,从哪里下载rpm包(软件仓库问题),rpm包下载完怎么处理,包的版本控制等等都需要定义。在linux系统/etc/yum.repo.d目录下包含多个repo文件,它们的作用是定义yum源(软件仓库)的信息,一个repo文件定义了一个或多个软件仓库细节。另外还有一个/etc/yum.conf配置文件用于存储yum其他配置信息

/etc/yum.conf

[main]
#cachedir:yum缓存的目录,yum在此存储下载的rpm包和数据库,一般是/var/cache/yum/$basearch/$releasever。
cachedir=/var/cache/yum/$basearch/$releasever 
#keepcache:是否保留缓存内容,0:表示安装后删除软件包,1表示安装后保留软件包
keepcache=1
#debuglevel:除错级别,0──10,默认是2 貌似只记录安装和删除记录
debuglevel=2
#logfile:存放系统更新软件的日志的目录。用户可以到/var/log/yum.log文件去查询自己在过去的日子里都做了哪些更新。
logfile=/var/log/yum.log
#pkgpolicy: 包的策略。一共有两个选项,newest和last,这个作用是如果你设置了多个repository,而同一软件在不同的repository中同时存 在,yum应该安装哪一个,如果是newest,则yum会安装最新的那个版本。如果是last,则yum会将服务器id以字母表排序,并选择最后的那个 服务器上的软件安装。一般都是选newest。
pkgpolicy=newest
#将 $releasever 设置为 CentOS-release 这个RPM包的版本号 $basearch 设置为centos-release包的Architecture属性
distroverpkg=CentOS-release
#tolerent,也有1和0两个选项,表示yum是否容忍命令行发生与软件包有关的错误,比如你要安装1,2,3三个包,而其中3此前已经安装了,如果你设为1,则yum不会出现错误信息。默认是0。
tolerant=1
#exactarch,有两个选项1和0,代表是否只升级和你安装软件包cpu体系一致的包,如果设为1,则如你安装了一个i386的rpm,则yum不会用1686的包来升级。
exactarch=1
#retries,网络连接发生错误后的重试次数,如果设为0,则会无限重试。
retries=20
#此选项在进行发行版跨版本升级的时候会用到。
obsoletes=1
#gpgchkeck= 有1和0两个选择,分别代表是否是否进行gpg校验,如果没有这一项,默认是检查的。
gpgcheck=1
#默认都会被include 进来 也就是说 /etc/yum.repos.d/xx.repo 无论配置文件有多少个 每个里面有多少个[name] 最后其实都被整合到 一个里面看就是了 重复的[name]后面的覆盖前面的
reposdir=/etc/yy.rm #默认是 /etc/yum.repos.d/ 低下的 xx.repo后缀文件
#exclude 排除某些软件在升级名单之外,可以用通配符,列表中各个项目要用空格隔开,这个对于安装了诸如美化包,中文补丁的朋友特别有用。
exclude=xxx

 repo文件

#serverid是用于区别各个不同的repository,必须有一个独一无二的名称。若重复了,是前面覆盖后面--还是反过来呢???用enabled 测试是后面覆盖前面
[serverid]
#name,是对repository的描述,支持像$releasever $basearch这样的变量; name=Fedora Core $releasever - $basearch - Released Updates
name=Some name for this server
#baseurl是服务器设置中最重要的部分,只有设置正确,才能从上面获取软件。它的格式是:
#baseurl=url://server1/path/to/repository/
#url://server2/path/to/repository/
#url://server3/path/to/repository/
#其中url支持的协议有 http:// ftp:// file://三种。baseurl后可以跟多个url,你可以自己改为速度比较快的镜像站,但#baseurl只能有一个,也就是说不能像如下格式:
#baseurl=url://server1/path/to/repository/
#baseurl=url://server2/path/to/repository/
#baseurl=url://server3/path/to/repository/
#其中url指向的目录必须是这个repository header目录的上一级,它也支持$releasever $basearch这样的变量。
baseurl=url://path/to/repository/

#url之后可以加上多个选项,如gpgcheck、exclude、failovermethod等,比如:
#gpgcheck=1
#exclude=gaim
#其中gpgcheck,exclude的含义和[main]部分相同,但只对此服务器起作用
#mirrorlist=http://mirrors.fedoraproject.org/mirrorlist?repo=fedora-$releasever&arch=$basearch

#failovermethode 有两个选项roundrobin和priority,意思分别是有多个url可供选择时,yum选择的次序,roundrobin是随机选择,如果连接失 败则使用下一个,依次循环,priority则根据url的次序从第一个开始。如果不指明,默认是roundrobin。
failovermethod=priority

#当某个软件仓库被配置成 enabled=0 时,yum 在安装或升级软件包时不会将该仓库做为软件包提供源。使用这个选项,可以启用或禁用软件仓库。
#通过 yum 的 --enablerepo=[repo_name] 和 --disablerepo=[repo_name] 选项,或者通过 PackageKit 的"添加/删除软件"工具,也能够方便地启用和禁用指定的软件仓库
enabled=[1 or 0]

常见错误

有些软件想nginx、redis的rpm包,yum基础库中没有,就需要安装额外的软件仓库。我们常用的额外软件仓库是epel-release。安装完epel-release后,再安装nginx等软件有可能报下面这个错误(网络等无问题情况下):

One of the configured repositories failed (Unknown),
 and yum doesn't have enough cached data to continue. At this point the only
 safe thing yum can do is fail. There are a few ways to work "fix" this:
     1. Contact the upstream for the repository and get them to fix the problem.
     2. Reconfigure the baseurl/etc. for the repository, to point to a working
        upstream. This is most often useful if you are using a newer
        distribution release than is supported by the repository (and the
        packages for the previous distribution release still work).
     3. Disable the repository, so yum won't use it by default. Yum will then
        just ignore the repository until you permanently enable it again or use
        --enablerepo for temporary usage:
            yum-config-manager --disable <repoid>
     4. Configure the failing repository to be skipped, if it is unavailable.
        Note that yum will try to contact the repo. when it runs most commands,
        so will have to try and fail each time (and thus. yum will be be much
        slower). If it is a very temporary problem though, this is often a nice
        compromise:
            yum-config-manager --save --setopt=<repoid>.skip_if_unavailable=true
Cannot retrieve metalink for repository: epel/x86_64. Please verify its path and try again

 出现这个问题的原因是“/etc/yum.repos.d/epel.repo”里面的镜像源路径不对。修改的方法只要把不能用的metalink行注释掉,把baseurl行的注释去掉就行了

 

 

 

 

 

分享到:
评论

相关推荐

    linux软件安装及管理

    #### Linux软件安装方式概览 Linux环境下软件安装方法多样,根据本书介绍,主要包括以下几种: 1. **绿色软件**:这类软件无需安装即可直接使用,类似于Windows平台上的概念。 2. **带有安装程序的软件包**:包括`...

    Linux下软件安装命令总结

    rpm 包安装方式是一种常见的 Linux 软件安装方式。rpm 是 Red Hat Package Manager 的缩写。使用 rpm 包安装软件需要按照以下步骤进行: 1. 找到相应的软件包,比如 soft.version.rpm,下载到本机某个目录。 2. ...

    Linux下安装软件工具

    以下是一些主要的Linux软件安装方式及其详细步骤: 1. **软件包管理器**: Linux系统通常带有内置的软件包管理器,例如Debian或Ubuntu系统的`apt`(Advanced Package Tool)和Red Hat/CentOS系统的`yum`(Yellow...

    安装Linux应用软件的五种基本方法

    这是最传统的Linux软件安装方式之一,适用于没有预编译二进制包的情况下。一般步骤如下: 1. **下载源码包**:通常是从官方网站下载对应的`.tar.gz`文件。 2. **解压文件**:使用命令`tar -xzvf 文件名.tar.gz`来解...

    Linux软件安装.doc

    Linux软件安装方式多样,通常涉及手动编译、使用包管理器、或者通过预编译的二进制包等方式。本文将详细介绍在Linux环境中安装几个常见应用的过程,包括永中Office、RAR解压缩工具、Skype以及Firefox的Flash插件。 ...

    linux飞信软件及安装

    二、Linux软件安装方式 在Linux中,软件通常通过包管理器进行安装,如Debian/Ubuntu系统的`apt`或Fedora/Red Hat系统的`dnf`。不过,由于飞信可能不在官方软件仓库中,我们可能需要通过其他方法安装。 三、获取...

    linux软件安装(压缩+rpm+yum+tarball源代码

    ### Linux软件安装方法详解 在Linux环境中,软件安装有多种方式,其中最常见的是通过压缩文件、RPM包、YUM...总之,Linux软件安装方式多样,了解每种方式的特点和适用场景,能够帮助用户高效地完成软件的安装与管理。

    Linux入门及软件安装

    4.1 Linux系统软件安装方式 30 4.2 JAVA软件安装——JDK安装 30 4.3 JAVA软件安装——Tomcat安装 31 4.4 RPM方式软件安装——MySql数据库安装 31 4.5 YUM方式软件安装 34 4.6 C语言软件源码编译安装——redis服务器...

    linux下软件安装详解

    本文主要围绕两种最常见的Linux软件安装方式:源代码安装和RPM包安装进行详解。 首先,我们来看源代码安装。源代码安装通常涉及到的是.tar.gz类型的压缩包,这是开发者提供的原始源代码。解压这个包需要使用`tar`...

    Linux操作系统软件安装教程.docx

    以下将介绍几种常见的Linux软件安装方式:RPM包、DEB包、tar包以及安装脚本。 1) RPM包: RPM(Red Hat Package Manager)是Red Hat Linux及其衍生版本如CentOS、Fedora等使用的软件包管理器。通过RPM包,用户可以...

    Linux下软件安装方法

    了解并熟悉这些基本的Linux软件安装方法对于任何Linux用户都是非常重要的,尤其是对于初学者。掌握这些技能不仅能让你更自如地管理自己的Linux系统,还能避免因错误操作导致的系统不稳定问题。在实践中不断尝试和...

    Linux软件安装常用方法

    了解这些基本的Linux软件安装和执行方法,对于初学者来说是非常重要的。熟练掌握这些技能,能够更自如地在Linux环境中使用和管理软件,提升使用体验。在Linux的世界中,命令行操作虽然看似复杂,但其效率和灵活性是...

    linux安装软件各种教程集合

    但了解并掌握Linux软件安装的方法对于深入理解和使用Linux至关重要。以下是一些关于Linux安装软件的关键知识点: 1. **软件包管理器**:Linux发行版通常有自己的包管理器,如Debian/Ubuntu的`apt`,Red Hat/CentOS...

    硬盘安装方式的LINUX系统安装

    基于硬盘安装方式的LINUX系统安装 3 1.1实验内容 3 1.2实验软件 3 1.3实验的准备工作 3 1.3.1 检查硬件 3 1.3.2程序准备 4 1.3.3准备双系统分区 7 1.4实验步骤(要求给出每一个细节的截图) 9 1.4.1 先安装WIN2003 ...

    linux下安装软件方法

    本文将详细介绍几种常见的Linux系统下的软件安装方式,并结合标签“源码”和“工具”,探讨如何通过源代码编译和使用工具来安装软件。 1. **软件包管理器**: Linux发行版通常内置了软件包管理器,如Ubuntu/Debian...

    linux安装和卸载软件步骤

    ### Linux安装和卸载软件步骤 #### 一、概述 Linux作为一款强大的开源操作系统,...不同的安装方式适用于不同的场景,合理选择可以有效提高工作效率。希望本文能够帮助大家更好地理解和掌握Linux软件管理的相关知识。

    OracleLinux6.9安装详细图解.doc

    在安装 Oracle Linux 6.9 系统时,用户需要选择安装方式。这里提供了两种选择: Install system with basic video driver 和 Install system with advanced video driver。如果用户不熟悉系统安装,可以选择 Install...

    在linux环境下软件安装常用方法

    在Linux环境下,软件安装是操作系统管理的关键组成部分,尤其对于初学者而言,理解并掌握不同的安装方式至关重要。Linux提供了多种软件安装方法,主要包括RPM包、tar.gz/tar.bz2源代码包以及以bin结尾的安装包。下面...

Global site tag (gtag.js) - Google Analytics