但忘无妨 發表於 2020-4-27 15:32:00

曹工杂谈--只用一个命令,centos系统里装了啥软件,啥时候装的,全都清清楚楚及yum download下载rpm包

<h1 id="前言">前言</h1>
<p>一直以来,对linux的掌握就是半桶水的状态,经常yum装个东西,结果依赖一堆东西;然后再用源码装个东西,只知道make、make install,背后干了啥也不清楚了,卸载也不方便。</p>
<p>这几天工作需要,在写脚本,总算更加清晰了一些。因为这次的主要工作是,redis、mysql等各种基础服务的shell脚本一键安装及启动等,所以我们需要把rpm包下载下来,所以下面有一些相关的内容。</p>
<p>首先大家要知道,linux下(以centos举例,现在服务端基本都用这个)安装基本三种方式:</p>
<ol>
<li>源码安装,make, configure, make &amp; install</li>
<li>rpm包安装</li>
<li>yum安装,在rpm基础上封装了一层,帮我们自己解决依赖问题,最终还是rpm安装</li>
</ol>
<p>所以,基本就两种,rpm安装和源码安装。</p>
<h1 id="授人以鱼不如授人以渔">授人以鱼不如授人以渔</h1>
<p>以下部分内容,来自于查看man这个命令。</p>
<p>在xshell、secureCRT这些终端中,我发现,每次去man xxx查看说明,再切出来执行命令;然后过一会又忘了。</p>
<p>真的很麻烦,于是,我找到了下面这个在线网站,真的很棒。</p>
<p>https://linux.die.net/man/</p>
<p>直接在里面搜索就可以了,然后就可以一边看,一边在终端里愉快地敲敲敲了。</p>
<h1 id="查询仓库中有什么版本的组件可以安装">查询仓库中,有什么版本的组件可以安装</h1>
<h2 id="开启某个仓库的情况下yum下载">开启某个仓库的情况下yum下载</h2>
<p>这次安装redis时,用了第三方repo,这个repo默认是disable的,所以是在执行命令时,加了enablerepo选项。</p>
<pre><code class="language-shell">yum --enablerepo=remi install redis
</code></pre>
<h2 id="查看方式1">查看方式1</h2>
<pre><code class="language-shell"># yumlist available |grep mysql-community-client.x86_64
mysql-community-client.x86_64            5.7.29-1.el7                  mysql57-community
</code></pre>
<h2 id="查看方式2">查看方式2</h2>
<pre><code class="language-shell"># yum info gdb
Loaded plugins: fastestmirror
Loading mirror speeds from cached hostfile
* base: mirrors.aliyuncs.com
* extras: mirrors.aliyuncs.com
* updates: mirrors.aliyuncs.com
Available Packages
Name      : gdb
Arch      : x86_64
Version   : 7.6.1
Release   : 115.el7
Size      : 2.4 M
Repo      : base/7/x86_64
Summary   : A GNU source-level debugger for C, C++, Fortran, Go and other languages
...
</code></pre>
<p>下面这个命令可以证实,我们是没有安装的:</p>
<pre><code class="language-shell"># rpm -qa -last |grep gdb

# gdb
-bash: gdb: command not found
</code></pre>
<p>如果查看一个已经安装了的:</p>
<pre><code class="language-shell">#yum info redis
Loaded plugins: fastestmirror                                                   
Loading mirror speeds from cached hostfile
* updates: mirrors.huaweicloud.com
Installed Packages
Name      : redis
Arch      : x86_64
Version   : 5.0.9
Release   : 1.el7.remi
Size      : 3.0 M
Repo      : installed
</code></pre>
<p>最后一行可以看到,状态是已安装。</p>
<h2 id="下载依赖的rpm">下载依赖的rpm</h2>
<p>因为我们要做一键安装、运行,肯定不能依靠于网络,得先把rpm下载下来。然后大家知道,有个rpm,比如gcc,自己就依赖了一堆,难道一个一个去下吗,那效率太低了。</p>
<p>试试下面的命令:</p>
<pre><code class="language-shell">yum install --downloadonly --downloaddir=/root/mypackage/ tcpdump
yum install --downloadonly --downloaddir=/root/mypackage/ lrzsz
</code></pre>
<p>主要参考了,表示感谢:</p>
<p>Yum自动下载RPM包及其所有依赖的包</p>
<h1 id="怎么对自己的linux机器心里有数">怎么对自己的linux机器,心里有数</h1>
<p>那肯定是需要知道,装了哪些软件,啥时候装的。</p>
<p>就下面这个命令就可以了,其中的--last选项,是man rpm中看到的。</p>
<pre><code class="language-shell">--last
Orders the package listing by install time such that the latest packages are at the top.

# rpm -qa --last
lsof-4.87-6.el7.x86_64                        Mon 27 Apr 2020 01:06:33 PM CST
mysql-community-server-5.7.27-1.el7.x86_64    Mon 27 Apr 2020 11:27:23 AM CST
net-tools-2.0-0.25.20131004git.el7.x86_64   Mon 27 Apr 2020 11:27:03 AM CST
mysql-community-client-5.7.27-1.el7.x86_64    Mon 27 Apr 2020 11:27:03 AM CST
mysql-community-libs-5.7.27-1.el7.x86_64      Mon 27 Apr 2020 11:27:00 AM CST
mysql-community-common-5.7.27-1.el7.x86_64    Mon 27 Apr 2020 11:27:00 AM CST
mysql80-community-release-el7-3.noarch      Fri 24 Apr 2020 05:33:14 PM CST
lrzsz-0.12.20-36.el7.x86_64                   Fri 24 Apr 2020 05:32:56 PM CST
yum-3.4.3-163.el7.centos.noarch               Fri 24 Apr 2020 09:24:24 AM CST
vim-enhanced-7.4.629-6.el7.x86_64             Thu 23 Apr 2020 10:37:44 AM CST
vim-common-7.4.629-6.el7.x86_64               Thu 23 Apr 2020 10:37:44 AM CST
vim-filesystem-7.4.629-6.el7.x86_64         Thu 23 Apr 2020 10:37:42 AM CST
perl-5.16.3-294.el7_6.x86_64                  Thu 23 Apr 2020 10:37:42 AM CST
gpm-libs-1.20.7-6.el7.x86_64                  Thu 23 Apr 2020 10:37:42 AM CST
perl-Pod-Simple-3.28-4.el7.noarch             Thu 23 Apr 2020 10:37:41 AM CST
perl-Getopt-Long-2.40-3.el7.noarch            Thu 23 Apr 2020 10:37:41 AM CST
...
</code></pre>
<p>这个基本就知道,这个命令啥时候装的了,如果是那种装个gcc,顺带装一堆的,安装时间都是一样的。</p>
<h1 id="查看一个已安装的rpm包的额外信息">查看一个已安装的rpm包的额外信息</h1>
<p>以下命令中,前面都放了-i xxx这样的选项,这个选项来自于man rpm。</p>
<h2 id="查询一个已经安装的包">查询一个已经安装的包:</h2>
<pre><code class="language-shell"># rpm -q mysql-community-server
mysql-community-server-5.7.27-1.el7.x86_64
# rpm -q mysql-community-server-5.7.27
mysql-community-server-5.7.27-1.el7.x86_64

#如果查不到,会打印相应信息
# rpm -q mysql-community-server-5.7.27xx
package mysql-community-server-5.7.27xx is not installed
</code></pre>
<h2 id="查看配置文件信息">查看配置文件信息</h2>
<pre><code class="language-shell">Package Query Options:
-c, --configfiles
List only configuration files (implies -l).

# rpm -q mysql-community-server -c
/etc/logrotate.d/mysql
/etc/my.cnf
</code></pre>
<h2 id="查看文档信息包括man帮助文档">查看文档信息,包括man帮助文档</h2>
<pre><code class="language-shell">-d, --docfiles
List only documentation files (implies -l).

# rpm -q mysql-community-server -d
/usr/share/doc/mysql-community-server-5.7.27/COPYING
...
/usr/share/man/man8/mysqld.8.gz
</code></pre>
<h2 id="列出内部的全部文件">列出内部的全部文件</h2>
<pre><code class="language-shell">--filesbypkg
List all the files in each selected package.

# rpm -q mysql-community-server --filesbypkg
mysql-community-server    /etc/logrotate.d/mysql
mysql-community-server    /etc/my.cnf
mysql-community-server    /etc/my.cnf.d
</code></pre>
<h2 id="查看包的信息包括安装时间">查看包的信息,包括安装时间</h2>
<pre><code class="language-shell">-i, --info
Display package information, including name, version, and description. This uses the --queryformat if one was specified.

# rpm -q mysql-community-server -i
Name      : mysql-community-server
Version   : 5.7.27
Release   : 1.el7
Architecture: x86_64
Install Date: Mon 27 Apr 2020 11:27:23 AM CST
...
</code></pre>
<h2 id="查看全部包根据安装日期倒序排列">查看全部包,根据安装日期倒序排列</h2>
<pre><code class="language-shell">--last
Orders the package listing by install time such that the latest packages are at the top.

# rpm -qa --last
lsof-4.87-6.el7.x86_64                        Mon 27 Apr 2020 01:06:33 PM CST
mysql-community-server-5.7.27-1.el7.x86_64    Mon 27 Apr 2020 11:27:23 AM CST
net-tools-2.0-0.25.20131004git.el7.x86_64   Mon 27 Apr 2020 11:27:03 AM CST
mysql-community-client-5.7.27-1.el7.x86_64    Mon 27 Apr 2020 11:27:03 AM CST
mysql-community-libs-5.7.27-1.el7.x86_64      Mon 27 Apr 2020 11:27:00 AM CST
mysql-community-common-5.7.27-1.el7.x86_64    Mon 27 Apr 2020 11:27:00 AM CST
mysql80-community-release-el7-3.noarch      Fri 24 Apr 2020 05:33:14 PM CST
lrzsz-0.12.20-36.el7.x86_64                   Fri 24 Apr 2020 05:32:56 PM CST
yum-3.4.3-163.el7.centos.noarch               Fri 24 Apr 2020 09:24:24 AM CST
vim-enhanced-7.4.629-6.el7.x86_64             Thu 23 Apr 2020 10:37:44 AM CST
vim-common-7.4.629-6.el7.x86_64               Thu 23 Apr 2020 10:37:44 AM CST
vim-filesystem-7.4.629-6.el7.x86_64         Thu 23 Apr 2020 10:37:42 AM CST
perl-5.16.3-294.el7_6.x86_64                  Thu 23 Apr 2020 10:37:42 AM CST
gpm-libs-1.20.7-6.el7.x86_64                  Thu 23 Apr 2020 10:37:42 AM CST
perl-Pod-Simple-3.28-4.el7.noarch             Thu 23 Apr 2020 10:37:41 AM CST
perl-Getopt-Long-2.40-3.el7.noarch            Thu 23 Apr 2020 10:37:41 AM CST
...
</code></pre>
<h2 id="查看指定包要依赖的东西">查看指定包,要依赖的东西</h2>
<pre><code class="language-shell">-R, --requires
List capabilities on which this package depends.

# rpm -q mysql-community-server -R
/bin/bash
/bin/sh
/bin/sh
/bin/sh
/bin/sh
/usr/bin/perl
config(mysql-community-server) = 5.7.27-1.el7
coreutils
grep
ld-linux-x86-64.so.2()(64bit)
ld-linux-x86-64.so.2(GLIBC_2.3)(64bit)
...
</code></pre>
<h2 id="查看指定包的一些安装卸载过程中的脚本">查看指定包的一些安装卸载过程中的脚本</h2>
<pre><code class="language-shell">--scripts
List the package specific scriptlet(s) that are used as part of the installation and uninstallation processes.

# rpm -q mysql-community-server --scripts
preinstall scriptlet (using /bin/sh):
/usr/sbin/groupadd -g 27 -o -r mysql &gt;/dev/null 2&gt;&amp;1 || :
/usr/sbin/useradd -M -N -g mysql -o -r -d /var/lib/mysql -s /bin/false \
    -c "MySQL Server" -u 27 mysql &gt;/dev/null 2&gt;&amp;1 || :
postinstall scriptlet (using /bin/sh):
[ -e /var/log/mysqld.log ] || install -m0640 -omysql -gmysql /dev/null /var/log/mysqld.log &gt;/dev/null 2&gt;&amp;1 || :

if [ $1 -eq 1 ] ; then
      # Initial installation
      systemctl preset mysqld.service &gt;/dev/null 2&gt;&amp;1 || :
fi

/usr/bin/systemctl enable mysqld &gt;/dev/null 2&gt;&amp;1 || :
preuninstall scriptlet (using /bin/sh):

if [ $1 -eq 0 ] ; then
      # Package removal, not upgrade
      systemctl --no-reload disable mysqld.service &gt; /dev/null 2&gt;&amp;1 || :
      systemctl stop mysqld.service &gt; /dev/null 2&gt;&amp;1 || :
fi
postuninstall scriptlet (using /bin/sh):

systemctl daemon-reload &gt;/dev/null 2&gt;&amp;1 || :
if [ $1 -ge 1 ] ; then
      # Package upgrade, not uninstall
      systemctl try-restart mysqld.service &gt;/dev/null 2&gt;&amp;1 || :
fi
</code></pre>
<h1 id="总结">总结</h1>
<p>写了一部分,就当一个简单的记录,后面持续更新</p><br><br>
来源:https://www.cnblogs.com/grey-wolf/p/12787026.html
頁: [1]
查看完整版本: 曹工杂谈--只用一个命令,centos系统里装了啥软件,啥时候装的,全都清清楚楚及yum download下载rpm包