前言

一直以来,对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

总结

写了一部分,就当一个简单的记录,后面持续更新

曹工杂谈--只用一个命令,centos系统里装了啥软件,啥时候装的,全都清清楚楚的更多相关文章

  1. 【曹工杂谈】Maven源码调试工程搭建

    Maven源码调试工程搭建 思路 我们前面的文章<[曹工杂谈]Maven和Tomcat能有啥联系呢,都穿打补丁的衣服吗>分析了Maven大体的执行阶段,主要包括三个阶段: 启动类阶段,负责 ...

  2. 【曹工杂谈】Mysql-Connector-Java时区问题的一点理解--写入数据库的时间总是晚13小时问题

    背景 去年写了一篇"[曹工杂谈]Mysql客户端上,时间为啥和本地差了整整13个小时,就离谱",结果最近还真就用上了. 不是我用上,是组内一位同事,他也是这样:有个服务往数据库in ...

  3. 曹工杂谈:花了两天时间,写了一个netty实现的http客户端,支持同步转异步和连接池(1)--核心逻辑讲解

    背景 先说下写这个的目的,其实是好奇,dubbo是怎么实现同步转异步的,然后了解到,其依赖了请求中携带的请求id来完成这个连接复用:然后我又发现,redisson这个redis客户端,底层也是用的ne ...

  4. 曹工杂谈--使用mybatis的同学,进来看看怎么在日志打印完整sql吧,在数据库可执行那种

    前言 今天新年第一天,给大家拜个年,祝大家新的一年里,技术突突突,头发长长长! 咱们搞技术的,比较直接,那就开始吧.我给大家看看我demo工程的效果(代码下边会给大家的): 技术栈是mybatis/m ...

  5. CentOS系统里如何正确取消或者延长屏幕保护自动锁屏功能(图文详解)

    不多说,直接上干货! 对于我这里想说的是,分别从CentOS6.X  和  CentOS7.X来谈及. 1. 问题:默认启动屏幕保护 问题描述: CentOS系统在用户闲置一段时间(默认为5分钟)后, ...

  6. 曹工杂谈:Linux服务器上,Spring Boot 原地修改 jar 包配置文件/替换class文件,免去重复上传的麻烦

    一.前言 相信很多同学有这样的需求,现在很多公司都有多地的研发中心,经常需要跨地区部署,比如,博主人在成都,但是服务器是北京的.一般城市间网络都不怎么好,上传一个几十兆的jar包那是真的慢,别说现在微 ...

  7. 【曹工杂谈】详解Maven插件调试方法

    前言 今年的更新频率简直是降至冰点了,一方面平时加班相对多一些了,下班只想玩手机:另一方面,好像进了大厂后,学习动力也很低了,总之就,很懒散,博客的话,今年都才只更新了不到5篇. 现在慢慢有一点状态, ...

  8. 【曹工杂谈】Maven和Tomcat能有啥联系呢,都穿打补丁的衣服吗

    Maven和Tomcat能有啥联系呢,都穿打补丁的衣服吗 前奏 我们上篇文章,跟大家说了下,怎么调试maven插件的代码,注意,是插件的代码.插件,是要让主框架来执行的,主框架是谁呢,就是maven ...

  9. 【曹工杂谈】说说Maven框架和插件的契约

    说说Maven框架和插件的契约 前言 Maven框架就像现在公司内的各种平台方,规定一些契约,然后想办法拉动业务方,一起在这个平台上去做生态共建.Maven也是这样,其实它就是一个插件执行的框架,Ma ...

随机推荐

  1. 高并发解决方案限流技术-----使用RateLimiter实现令牌桶限流

    1,RateLimiter是guava提供的基于令牌桶算法的实现类,可以非常简单的完成限流特技,并且根据系统的实际情况来调整生成token的速率.通常可应用于抢购限流防止冲垮系统:限制某接口.服务单位 ...

  2. windows server 2016 远程桌面mstsc DPI(更改文本、应用和其他项目大小) 设置

    windows server 2016 远程桌面mstsc DPI 设置 在高分辨率机器2K,4K,8K,登入使用window远程桌面mstsc时,登入后虽然分辨率变成了和cilent一样分辨率 但是 ...

  3. [vijos1844]遭遇战<SPFA>

    题目链接:https://vijos.org/p/1404 我在二分查找区找到这道题的,没错这就是一道摆在二分区但是可以用SPFA做的一道题(当然我后来去看了下分区,貌似这题的方法很多) 这一题还是比 ...

  4. Hadoop调试记录(2)

    自从上次调通hbase后很久没有碰hadoop了,今日想写一个mapreduce的小程序.于是先运行了下自带的wordcount示例程序,却报错了. 信息如下: kevin@ubuntu:~/usr/ ...

  5. Java中使用RSA算法加密

    Java中使用RSA算法加密 概述 RSA加密算法是一种非对称加密算法 RSA加密的方式 使用公钥加密的数据,利用私钥进行解密 使用私钥加密的数据,利用公钥进行解密 RSA是一对密钥.分别是公钥和私钥 ...

  6. django中设置定时任务

    django中设置定时任务 在django中设置定时任务我们可以借用django-crontab这个第三包来实现 django-crontab只能在linux系统下使用 安装: pip install ...

  7. uni-app的初识(01)

    1.什么是uni-app uni-app 是一个使用 Vue.js 开发所有前端应用的框架, 开发者编写一套代码, 可发布到IOS, Android, H5, 以及各种小程序(微信,百度)等多个平台. ...

  8. Tcl编成第二天,set与unset

    代码如下: #!/usr/bin/tclsh set value "one" puts $value unset value puts $value set表示创建一个变量第一个参 ...

  9. XSS(跨站脚本攻击)简单讲解

    1.1 XSS简介 跨站脚本攻击(XSS),是最普遍的Web应用安全漏洞.这类漏洞能够使得攻击者嵌入恶意脚本代码(一般是JS代码)到正常用户会访问到的页面中,当正常用户访问该页面时,则可导致嵌入的恶意 ...

  10. pgsql中的事务隔离

    pgsql中的事务隔离级别 前言 事物隔离级别 在各个级别上被禁止出现的现象是 脏读 不可重复读 幻读 序列化异常 读已提交隔离级别 可重复读隔离级别 可序列化隔离级别 摘录 pgsql中的事务隔离级 ...