<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Linux包管理</title>
<link rel="stylesheet" href="https://stackedit.io/style.css" />
</head>
系列文章目录
提示:
第一章 :red hat linux系统下载安装
第二章:Linux用户和组
第三章:Linux文件管理
第四章:Linux目录管理
第五章:Linux文本编辑器
第六章:Linux文件查找与管理
第七章:Linux输入,输出的重定向以及管道
第八章:Linux包管理
<hr color="#000000" size="1"">
<h1><a id="_17"></a>前言</h1>
<p>Linux中Redhat(centos)采用的包格式为rpm全称Red Hat Package Manager红帽子包管理,今天的主要内容就是使用rpm和yum命令来进行软件安装,由于博主的虚拟机没有配置网络所以就从安装的镜像里找包来做实验,老规矩开始前=来一张快照</p>
<hr color="#000000" size="1"">
<h1><a id="_25"></a>一、挂载镜像</h1>
<p>首先要找到包所在的文件,这个可以通过可视化界面寻找</p>
<p><img src="https://img-blog.csdnimg.cn/1fe1aeafe883467d9275311b7e82200e.png?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBA6LaF5ZOlLS0=,size_20,color_FFFFFF,t_70,g_se,x_16" alt="在这里插入图片描述"><br>
<img src="https://img-blog.csdnimg.cn/3792259735314c95951d5d5bf8391bb4.png?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBA6LaF5ZOlLS0=,size_20,color_FFFFFF,t_70,g_se,x_16" alt="在这里插入图片描述"><br>
可以看到这里有两个Packages里面东西不一样,我就以第一个为例了。<br>
在当前位置打开终端,查询包所在位置<br>
<img src="https://img-blog.csdnimg.cn/439213017a804895bf52d8db51a4b991.png" alt="在这里插入图片描述"><br>
创建挂载点并把光盘挂载到相应目录查询Packges文件<br>
<img src="https://img-blog.csdnimg.cn/f2828ff7becc44a89044618af75ad6ea.png" alt="在这里插入图片描述"><br>
当产看到一堆rpm包证明挂载成功<br>
<img src="https://img-blog.csdnimg.cn/fcd801370ca64a659318eb6e8aa2e439.png?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBA6LaF5ZOlLS0=,size_20,color_FFFFFF,t_70,g_se,x_16" alt="在这里插入图片描述"></p>
<h1><a id="rpm_37"></a>二、rpm</h1>
<h2><a id="1rpm_38"></a>1.rpm安装与卸载</h2>
<p>以安装最后一个查询到的包为例<br>
<img src="https://img-blog.csdnimg.cn/4bf16d68288b424ebf2c931275077f43.png" alt="在这里插入图片描述"></p>
<pre><code class="prism language-bash"><span class="token function">rpm</span> -ivh /mnt/cdrom/AppStream/Packages/zziplib-utils-0.13.68-8.el8.x86_64.rpm
</code></pre>
<p>注意一下当命令很长的时候多用Tab建自动补齐,这样不容易敲错<br>
<img src="https://img-blog.csdnimg.cn/06a6e14c444444059467527bddec1e54.png" alt="在这里插入图片描述"><br>
简单说一下这个错误信息,非常常见</p>
<pre><code class="prism language-bash">libzzip-0.so.13<span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">(</span>64bit<span class="token punctuation">)</span> is needed by zziplib-utils-0.13.68-8.el8.x86_64
libzzipfseeko-0.so.13<span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">(</span>64bit<span class="token punctuation">)</span> is needed by zziplib-utils-0.13.68-8.el8.x86_64
libzzipmmapped-0.so.13<span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">(</span>64bit<span class="token punctuation">)</span> is needed by zziplib-utils-0.13.68-8.el8.x86_64
zziplib<span class="token punctuation">(</span>x86-64<span class="token punctuation">)</span> <span class="token operator">=</span> <span class="token number">0.13</span>.68-8.el8 is needed by zziplib-utils-0.13.68-8.el8.x86_64
</code></pre>
<p>右边是咱们要安装的rpm,左边是安装这个rpm所需要的依赖。有时候会很多,这也是rpm不够只能一个体现,这个问题稍后解决。<br>
现在换个不需要依赖的rpm</p>
<pre><code class="prism language-bash"><span class="token function">rpm</span> -i /mnt/cdrom/AppStream/Packages/zziplib-0.13.68-8.el8.x86_64.rpm
</code></pre>
<p><img src="https://img-blog.csdnimg.cn/99bb5e436d7e4dd180cbb0606d66f3dc.png" alt="在这里插入图片描述"><br>
<strong>卸载</strong></p>
<pre><code class="prism language-bash"><span class="token function">rpm</span> -e zziplib
</code></pre>
<p>卸载参数-e 且后边只需要跟包名即可<br>
<img src="https://img-blog.csdnimg.cn/383ae7d6d402452887efc87152a9cea3.png" alt="在这里插入图片描述"><br>
现在提出一个问题,如果这个rpm包很大,我怎么判断包的安装进度?</p>
<pre><code class="prism language-bash"><span class="token function">rpm</span> -ivh /mnt/cdrom/AppStream/Packages/zziplib-0.13.68-8.el8.x86_64.rpm
</code></pre>
<p>添加参数vh可显示安装时的百分比进度条<br>
<img src="https://img-blog.csdnimg.cn/23a79d0e88264f0fa53fb21c2454df53.png" alt="在这里插入图片描述"><br>
<strong>强制安装</strong><br>
有些程序可能出问题了,但是咱也不知道问题在哪里,可以跳过卸载,直接强制重装<br>
<img src="https://img-blog.csdnimg.cn/7ec7048d41734f488735261c6c192cfc.png?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBA6LaF5ZOlLS0=,size_20,color_FFFFFF,t_70,g_se,x_16" alt="在这里插入图片描述"></p>
<pre><code class="prism language-bash"><span class="token function">rpm</span> -ivh /mnt/cdrom/AppStream/Packages/zziplib-0.13.68-8.el8.x86_64.rpm --force
</code></pre>
<p>可以添加参数 --force(两个-)</p>
<h2><a id="2rpm_84"></a>2.rpm查询</h2>
<p>这里可以结合管道<br>
<img src="https://img-blog.csdnimg.cn/f297ae05acd140afb3ae1fe1491fdfe4.png" alt="在这里插入图片描述"><br>
q:查询<br>
a:全部<br>
也可以直接指定包名,效果一样。</p>
<p><img src="https://img-blog.csdnimg.cn/a4558fac09e742e8bb389d77ef2c0e73.png" alt="在这里插入图片描述"></p>
<h2><a id="3rpm_92"></a>3.rpm包信息查询</h2>
<pre><code class="prism language-bash"><span class="token function">rpm</span> -qpi /mnt/cdrom/AppStream/Packages/httpd-2.4.37-39.module+el8.4.0+9658+b87b2deb.x86_64.rpm
</code></pre>
<p>参数<br>
q:查询<br>
p:包<br>
i:信息<br>
-qpi 查询包的信息</p>
<p><img src="https://img-blog.csdnimg.cn/df4bd50e8f4743b5a3c8147918232217.png?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBA6LaF5ZOlLS0=,size_20,color_FFFFFF,t_70,g_se,x_16" alt="在这里插入图片描述"></p>
<h2><a id="4rpm_104"></a>4.rpm查询命令来源</h2>
<h2><a id="1yum_105"></a>1.yum安装与卸载</h2>
<p>以重装touch为例</p>
<p>很遗憾最后一步需要依赖安装失败了,不过这不重要,咱们就当它安装成功了,主要是体验过程。<br>
rpm -qf 可以查询某一个命令所在的rpm包</p>
<pre><code class="prism language-bash"><span class="token function">rpm</span> -qf /usr/bin/touch
</code></pre>
<p><img src="https://img-blog.csdnimg.cn/9561721e1a3548f1b531f8df6465f856.png" alt="在这里插入图片描述"><br>
通过查询发现这个rpm包在另一个Packages文件里,且需要加–force,这个原因前面都说过<br>
<img src="https://img-blog.csdnimg.cn/59f849367a1f4d2d905bca00e722e039.png?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBA6LaF5ZOlLS0=,size_20,color_FFFFFF,t_70,g_se,x_16" alt="在这里插入图片描述"></p>
<h1><a id="yum_116"></a>三、yum</h1>
<p>以安装Apache为例<br>
先查看一下包的信息</p>
<pre><code class="prism language-bash"><span class="token function">rpm</span> -qpi /mnt/cdrom/AppStream/Packages/httpd-2.4.37-39.module+el8.4.0+9658+b87b2deb.x86_64.rpm
</code></pre>
<p><img src="https://img-blog.csdnimg.cn/faea9a6d5e4345b1bfc9fcb6afc7d6a2.png?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBA6LaF5ZOlLS0=,size_20,color_FFFFFF,t_70,g_se,x_16" alt="在这里插入图片描述"><br>
使用rpm命令安装</p>
<pre><code class="prism language-bash"><span class="token function">rpm</span> -ivh /mnt/cdrom/AppStream/Packages/httpd-2.4.37-39.module+el8.4.0+9658+b87b2deb.x86_64.rpm
</code></pre>
<p>可以发现出现了很多之前说过的以来问题,解决这个问题有很多方法,比如通过rpm把需要的依赖都安装一下,但是这个依赖可能很多,安装可能很麻烦。<br>
<img src="https://img-blog.csdnimg.cn/95e96a95f3bd42bdb58dc178908f279e.png" alt="在这里插入图片描述"><br>
yum命令可以自动安装这些依赖(前提是你的Packages文件里有),所以需要给yum指定Packages文件夹的路径,这个路径存储需要手写<br>
查询配置文件</p>
<pre><code class="prism language-bash">ll /etc/yum.repos.d/
</code></pre>
<p>我这个目录下没有文件,有些电脑可能配置后就有,有或者没有都可以直接创建一个新的,因为Packages目录可能有多个,也可以联网下载,博主的虚拟机没有配置网络,这次就用本地的包。<br>
手写yum源需要创建后缀为repo的文件,名字随意。<br>
<img src="https://img-blog.csdnimg.cn/6772e2f092834bf699300819eeae2594.png" alt="在这里插入图片描述"><br>
文件内容<br>
<img src="https://img-blog.csdnimg.cn/b3ea7df4b6c04f379233c225670bdb1f.png" alt="在这里插入图片描述"></p>
<p>前两行的名称随便写,不重要。<br>
第三行<br>
filel://(代表本地)+光盘挂载点+AppStream/BaseOS(Packages的上一层目录)<br>
如果联网可以直接更换成网络地址<br>
第四行<br>
enabled=1,代表激活此源,如果挂盘有问题或者baseurl是网络地址却没有链接网络,要改成0,禁用这个源,不然有一个repo不能用,所有源就都无法使用<br>
gpgcheck=0,不检测,咱们都是本地的,很安全不用检测。<br>
另一个也类似<br>
<img src="https://img-blog.csdnimg.cn/863ff0f74d414b84bd74954437d6572f.png" alt="在这里插入图片描述"></p>
<p>然后使用命令<br>
可以扫描所有包</p>
<pre><code class="prism language-bash">yum list
</code></pre>
<p>出现类似结果代表成功<br>
<img src="https://img-blog.csdnimg.cn/25f31a2631f640a8aaec22f813ff02a5.png?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBA6LaF5ZOlLS0=,size_20,color_FFFFFF,t_70,g_se,x_16" alt="在这里插入图片描述"><br>
使用yum命令安装Apache</p>
<pre><code class="prism language-bash">yum <span class="token function">install</span> httpd
</code></pre>
<p><img src="https://img-blog.csdnimg.cn/6bb4d985f31a47dcb37263bb7e8614a1.png?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBA6LaF5ZOlLS0=,size_20,color_FFFFFF,t_70,g_se,x_16" alt="在这里插入图片描述"><br>
会有一些信息,直接确认就行。<br>
<img src="https://img-blog.csdnimg.cn/ff6ecfe73ae244bcad087beedae5606a.png" alt="在这里插入图片描述"><br>
至此他会把你需要的所有依赖都安装完毕。<br>
<img src="https://img-blog.csdnimg.cn/70ddd1e61594476fb25adb49742d735e.png?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBA6LaF5ZOlLS0=,size_20,color_FFFFFF,t_70,g_se,x_16" alt="在这里插入图片描述"><br>
可以查询一下安装结果<br>
<img src="https://img-blog.csdnimg.cn/8ba0a7c28a5841a2aebb409bd76901eb.png" alt="在这里插入图片描述"><br>
<strong>卸载</strong></p>
<pre><code class="prism language-bash">yum remove httpd -y
</code></pre>
<p>remove卸载 ,-y代表在选择哪里自动选y<br>
<img src="https://img-blog.csdnimg.cn/24c2e8cd8cbd41cfa8f90fce8eb2dcb8.png?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBA6LaF5ZOlLS0=,size_20,color_FFFFFF,t_70,g_se,x_16" alt="在这里插入图片描述"></p>
<h1><a id="_180"></a>总结</h1>
<p>这次的内容基本就这样,原则还是,有机会多练一练,光看是看不懂的。</p>
</div>
</body>