曹工雜談--只用一個命令,centos系統里裝了啥軟件,啥時候裝的,全都清清楚楚


前言

一直以來,對linux的掌握就是半桶水的狀態,經常yum裝個東西,結果依賴一堆東西;然后再用源碼裝個東西,只知道make、make install,背后干了啥也不清楚了,卸載也不方便。

這幾天工作需要,在寫腳本,總算更加清晰了一些。因為這次的主要工作是,redis、mysql等各種基礎服務的shell腳本一鍵安裝及啟動等,所以我們需要把rpm包下載下來,所以下面有一些相關的內容。

首先大家要知道,linux下(以centos舉例,現在服務端基本都用這個)安裝基本三種方式:

  1. 源碼安裝,make, configure, make & install
  2. rpm包安裝
  3. yum安裝,在rpm基礎上封裝了一層,幫我們自己解決依賴問題,最終還是rpm安裝

所以,基本就兩種,rpm安裝和源碼安裝。

授人以魚不如授人以漁

以下部分內容,來自於查看man這個命令。

在xshell、secureCRT這些終端中,我發現,每次去man xxx查看說明,再切出來執行命令;然后過一會又忘了。

真的很麻煩,於是,我找到了下面這個在線網站,真的很棒。

https://linux.die.net/man/

直接在里面搜索就可以了,然后就可以一邊看,一邊在終端里愉快地敲敲敲了。

查詢倉庫中,有什么版本的組件可以安裝

開啟某個倉庫的情況下yum下載

這次安裝redis時,用了第三方repo,這個repo默認是disable的,所以是在執行命令時,加了enablerepo選項。

yum --enablerepo=remi install redis

查看方式1

[root@localhost yum.repos.d]# yum  list available |grep mysql-community-client.x86_64
mysql-community-client.x86_64            5.7.29-1.el7                  mysql57-community

查看方式2

[root@localhost rpm]# 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
...

下面這個命令可以證實,我們是沒有安裝的:

[root@localhost rpm]# rpm -qa -last |grep gdb

[root@localhost rpm]# gdb
-bash: gdb: command not found

如果查看一個已經安裝了的:

[root@localhost redis]#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

最后一行可以看到,狀態是已安裝。

下載依賴的rpm

因為我們要做一鍵安裝、運行,肯定不能依靠於網絡,得先把rpm下載下來。然后大家知道,有個rpm,比如gcc,自己就依賴了一堆,難道一個一個去下嗎,那效率太低了。

試試下面的命令:

yum install --downloadonly --downloaddir=/root/mypackage/ tcpdump
yum install --downloadonly --downloaddir=/root/mypackage/ lrzsz

主要參考了,表示感謝:

Yum自動下載RPM包及其所有依賴的包

怎么對自己的linux機器,心里有數

那肯定是需要知道,裝了哪些軟件,啥時候裝的。

就下面這個命令就可以了,其中的--last選項,是man rpm中看到的。

--last
Orders the package listing by install time such that the latest packages are at the top.

[root@localhost rpm]# 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
...

這個基本就知道,這個命令啥時候裝的了,如果是那種裝個gcc,順帶裝一堆的,安裝時間都是一樣的。

查看一個已安裝的rpm包的額外信息

以下命令中,前面都放了-i xxx這樣的選項,這個選項來自於man rpm。

查詢一個已經安裝的包:

[root@localhost rpm]# rpm -q mysql-community-server
mysql-community-server-5.7.27-1.el7.x86_64
[root@localhost rpm]# rpm -q mysql-community-server-5.7.27 
mysql-community-server-5.7.27-1.el7.x86_64

#如果查不到,會打印相應信息
[root@localhost rpm]# rpm -q mysql-community-server-5.7.27xx 
package mysql-community-server-5.7.27xx is not installed

查看配置文件信息

Package Query Options:
-c, --configfiles
List only configuration files (implies -l).

[root@localhost rpm]# rpm -q mysql-community-server -c
/etc/logrotate.d/mysql
/etc/my.cnf

查看文檔信息,包括man幫助文檔

-d, --docfiles
List only documentation files (implies -l).

[root@localhost rpm]# rpm -q mysql-community-server -d
/usr/share/doc/mysql-community-server-5.7.27/COPYING
...
/usr/share/man/man8/mysqld.8.gz

列出內部的全部文件

--filesbypkg
List all the files in each selected package.

[root@localhost rpm]# 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

查看包的信息,包括安裝時間

-i, --info
Display package information, including name, version, and description. This uses the --queryformat if one was specified.

[root@localhost rpm]# 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
...

查看全部包,根據安裝日期倒序排列

--last
Orders the package listing by install time such that the latest packages are at the top.

[root@localhost rpm]# 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
...

查看指定包,要依賴的東西

-R, --requires
List capabilities on which this package depends.

[root@localhost rpm]# 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)
...

查看指定包的一些安裝卸載過程中的腳本

--scripts
List the package specific scriptlet(s) that are used as part of the installation and uninstallation processes.

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

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

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

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

systemctl daemon-reload >/dev/null 2>&1 || : 
if [ $1 -ge 1 ] ; then 
        # Package upgrade, not uninstall 
        systemctl try-restart mysqld.service >/dev/null 2>&1 || : 
fi

總結

寫了一部分,就當一個簡單的記錄,后面持續更新


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM