Loading... <p><strong>1.RPM,Redhat Package Manager。是Redhat和CentOS等Linux系统上常见的软件安装工具。</strong></p> <p><strong>软件安装:</strong></p> <p>常见选项</p> <pre class="brush:bash;toolbar:false">-i #install,安装 -v #详细信息 -vv #更加详细的信息 -h #显示进度条,一个#表示2% --test #测试安装,但不是真正执行安装,dry run 模式 --nodeps #忽略依赖关系 --replacepkgs #重新安装 --nodigest #不检查完整性 --nosignature #不检验来源</pre> <p><strong>软件升级:</strong></p> <pre class="brush:bash;toolbar:false">rpm {U|--upgrade} [install-options] package_file... rpm {F|--freshen} [install-options] package_file... upgrade #系统已经安装了旧版程序的,则升级;没有安装过程序的,则安装。 freshen #系统已经安装了旧版程序的,则升级;没有安装过程序的,不安装。 --oldpackage #降级 --force #强制升级</pre> <p><strong>软件卸载:</strong></p> <pre class="brush:bash;toolbar:false">-e #earse,卸载</pre> <p><img src="//cto.wang/usr/uploads/2016/07/20160703180800-12.png" title="1458976403747258.png" alt="rpm.png" /></p> <p>rpm安装的常见选项配搭是ivh。加上v和h是为了更加美观,和能够看安装状况。</p> <p></p> <p>但是我们可以看见rpm在卸载和安装的时候,有时候会由于依赖关系而安装失败。</p> <p>而且这些依赖关系要安装软件的人手动解决,如果依赖关系真是费时费力。</p> <p>所以在安装软件的时候,可以选择自动解决依赖关系的yum。</p> <p></p> <p><strong>软件查询</strong> Query</p> <p></p> <pre class="brush:bash;toolbar:false">rpm {-q|--query} [select-option] [query-option] 一般选项: -a #列出所有系统安装了的包 -f #根据文件查询指定文件是由哪一个包 安装而来 -p #查询未安装的包所提供的文件 [query-option]#特定选项 -i #information,查看包的介绍信息 -c #configfile,查看提供的配置文件 -d #doc,程序软件提供的帮助文档类文件 -l #查看指定程序包安装后生成的所有文件 -R #查询指定程序包所依赖的CAPABILITY --scripts #查看程序包所带的四种脚本 --provides #列出程序包所提供的功能(capability)</pre> <p>常见组合: qf、qi、qc</p> <p><img src="//cto.wang/usr/uploads/2016/07/20160703180800-70.png" title="1458981283871353.png" alt="qf_qi_qc.png" /></p> <p>我们可以通过-qf选项来查找出命令 是由什么包安装而来。</p> <p>接着,我们也可以使用命令引用,把-qf输出的包名输出,再给-qi来查询包的详细信息</p> <p>而-qc和-qd选项则可以只输出这个包中的配置文件,和帮助文档。</p> <p></p> <p><img src="//cto.wang/usr/uploads/2016/07/20160703180800-33.png" title="1458981527738745.png" alt="qRequire.png" /></p> <p>-R选项,则是Require的缩写。具体是列出包所依赖的功能(capability),具体也就是一些模块或者其他的软件。</p> <p>大概是用来解决依赖关系,但是后来的yum由于可以通过repodata文件来自动分析,所以现在一般很少用。</p> <p></p> <p><img src="//cto.wang/usr/uploads/2016/07/20160703180800-63.png" title="1458981653580023.png" alt="--provide.png" /></p> <p>而–provides选项则用来输出这个包提供了一些什么模块,或者功能(capability)。</p> <p>由于coreutils提供的是一些主要的常用软件,所以能看见提供了很多命令。</p> <p></p> <p>假如我们查询的是一个没有安装过的包,也就是特定路径下的rpm包,要使用-i,-c,-d,则需要配合-p选项。如,-qpi</p> <p><img src="//cto.wang/usr/uploads/2016/07/20160703180800-3.png" title="1458982209623531.png" alt="qpi.png" /></p> <p></p> <p><strong>2.yum文件包管理<span class="Apple-tab-span"> </span>Yellowdog Update Modifier</strong></p> <p><strong>yum安装软件的优势</strong><strong><br /></strong></p> <p>yum会从yum源中获取文件列表和依赖关系。</p> <p>每一次创建cache的时候都会请求文件列表的校验码,来识别软件包是否有更新(repodata.xml)</p> <p></p> <p>配置文件</p> <pre class="brush:bash;toolbar:false">/etc/yum.conf #为所有仓库提供公共配置 /etc/yum.repos.d/*.repo #为仓库的指向提供配置</pre> <p></p> <p>yum repository:yum repo yum仓库</p> <p>储存了众多rpm包,以及包的相关的元数据文件。而yum的配置文件*.repo必须指向repodata目录中repodata.xml所在的地方。</p> <p></p> <p>列出当前系统中所有资源库:</p> <pre class="brush:bash;toolbar:false">yum repolist</pre> <p><img src="//cto.wang/usr/uploads/2016/07/20160703180800-53.png" title="1458982651393333.png" alt="yum repolist.png" /></p> <p></p> <p></p> <p><strong>如何自己手动指定一个yum源?</strong></p> <p>在/etc/yum.repos.d/创建一个以repo结尾的文件就可以!</p> <p>假如已经自带的Base文件已经失效,可以在/etc/yum.repos.d/下面随便创建一个文件夹。</p> <p>然后把原有的repo都复制到里面去,那么系统自带的仓库就都读不到了。</p> <p><img src="//cto.wang/usr/uploads/2016/07/20160703180800-71.png" title="1458983440192877.png" alt="repo.png" /></p> <p>repo文件的格式。</p> <p>这里最主要的是baseurl这个地址,因为这个地址指向服务器repodata文件。</p> <p>其次name字段则是在初始化仓库的时候显示的名字。</p> <p>当gpgcheck为0的时候,gpgkey也就不用添加也可以了。</p> <p>而且enable的默认选项是1,0则表示不启用。</p> <p><img src="//cto.wang/usr/uploads/2016/07/20160703180800-31.png" title="1458983768513597.png" alt="repofile.png" /></p> <p>我们可以初始化之后列出的仓库多了一个Mirror_aliyun</p> <p>看到配置文件的中括号里的内容对应repoid,name字段则对应repo name。</p> <p>为了提高通用性,repo提供一些变量$basearch以$releasever,</p> <p>分别表示系统架构以及发行版本,也就是CentOS7的7,以及x86_64.</p> <p></p> <p>完成了yum源的配置之后,我们就可以查看或者安装软件了。</p> <p><img src="//cto.wang/usr/uploads/2016/07/20160703180800-93.png" title="1458986387566695.png" alt="yum info.png" /></p> <p>yum的info子命令,类似于rpm -qi,同样输出包的信息。</p> <p></p> <p><img src="//cto.wang/usr/uploads/2016/07/20160703180800-39.png" title="1458986134867774.png" alt="yum install httpd.png" /></p> <p>执行yum install httpd</p> <p>自动解决软件包之间的依赖关系</p> <p></p> <p><strong>3.编译安装</strong>(CentOS6上)</p> <p>前期的准备;</p> <p></p> <p>首先要安装编译的环境</p> <p>yum groupinstall "Development Tools" "Desktop Platform Development"</p> <p>然后要获得源码包,可以通过wget等方式下载到源码包。</p> <p>然后解压得到的压缩包,并且切换到源码的目录里面</p> <p></p> <p><strong>编译的三大步骤:</strong></p> <p><strong>(1) ./configure </strong> </p> <p> #这个脚本主要用于检查各种指定特性所依赖的外部文件</p> <p> #配合各种选项,可以启用特性和调整软件的安装路径等。</p> <p>示例:编译httpd2.2<span class="Apple-tab-span"> </span></p> <pre class="brush:bash;toolbar:false">./configure --prefix=/usr/local/apache --sysconf=/etc/httpd2.2 --enable-so --enable-ssl --enable-cgi --enable-rewrite --with-zlib --with-pcre --enable-modules=most --enable-mpms-shared=all --with-mpm=prefork</pre> <p>./configure检查期间,假如报错,可能是一些依赖的devel包没有装。</p> <p>装上特性所依赖的包之后,再执行一次./configure脚本也是没有问题的。</p> <p><img src="//cto.wang/usr/uploads/2016/07/20160703180800-99.png" title="1458994480364314.png" alt="configure.png" /></p> <p> </p> <p><strong>(2)make</strong></p> <p> 在./configure文件检查没有问题之后,执行make。就会自动地编译。</p> <p><img src="//cto.wang/usr/uploads/2016/07/20160703180800-70-1.png" title="1458994621624676.png" alt="make1.png" /></p> <p><img src="//cto.wang/usr/uploads/2016/07/20160703180800-23.png" title="1458995007254293.png" alt="make2.png" /></p> <p></p> <p><strong>(3)make install</strong></p> <p>make install命令实际上是把已经编译好的软件复制到对应位置的一个命令。</p> <p>所以在三大步骤里面,问题最多的是第一步./configure。</p> <p><img src="//cto.wang/usr/uploads/2016/07/20160703180801-92.png" title="1458994936474031.png" alt="makeinstall.png" /></p> <p></p> <p>编译好之后。</p> <ol class=" list-paddingleft-2"> <li> <p><strong>把软件添加到PATH变量的路径中:修改/etc/profile.d/httpd.sh</strong></p> <p>添加一行:PATH=程序二进制执行文件所在的目录:$PATH</p> <p>如,PATH=/usr/local/apache/bin:$PATH</p> <p>那样重新开机之后,系统用户初始化环境的时候就会能在PATH中读到二进制的文件,而不用每次都是用完全的路径。</p> </li> <li> <p><strong>添加二进制执行文件所依赖的库文件 到 需要加载的库中</strong></p> <p>系统能顺利找到了二进制文件之后,我们还要让系统能顺利找到二进制执行文件所需要的库</p> </li> </ol> <p> 所以我们要在/etc/ld.so.conf.d/目录下创建一个与软件同名的conf文件</p> <p> 如,/etc/ld.so.conf.d/httpd.conf</p> <p> 然后再往里面添加一行库所在的目录/usr/local/apache/lib,并使用ldconfig来重新生成缓存</p> <p><strong>3.导入include头文件</strong></p> <p>可以选择复制,或者做软连接的方式,把include目录下的文件都复制到/usr/include目录下</p> <p><img src="//cto.wang/usr/uploads/2016/07/20160703180801-38.png" title="1459015262396441.png" alt="include.png" /></p> <p><strong>4.导出帮助手册</strong></p> <p>最后我们编辑一下/etc/man.conf文件,在里面添加一个MANPATH条目</p> <p><img src="//cto.wang/usr/uploads/2016/07/20160703180801-86.png" title="1459015429251072.png" alt="manpath.png" /></p> <p> </p> <p>最后重新登录一下之后,我们就可以使用apachectl start命令来启动httpd,并使用ss命令查看使用状况</p> <p><img src="//cto.wang/usr/uploads/2016/07/20160703180801-21.png" title="1459015682823007.png" alt="ss-tnl.png" /></p> <p>使用浏览器直接访问ip的时候,运行成功。</p> <p><img src="//cto.wang/usr/uploads/2016/07/20160703180801-5.png" title="1459015690484120.png" alt="work.png" /></p> 最后修改:2021 年 12 月 10 日 10 : 53 AM © 允许规范转载 赞赏 如果觉得我的文章对你有用,请随意赞赏 赞赏作者 支付宝微信