Menu

  • Home
  • Work
    • Cloud
      • Virtualization
      • IaaS
      • PaaS
    • Java
    • Go
    • C
    • C++
    • JavaScript
    • PHP
    • Python
    • Architecture
    • Others
      • Assembly
      • Ruby
      • Perl
      • Lua
      • Rust
      • XML
      • Network
      • IoT
      • GIS
      • Algorithm
      • AI
      • Math
      • RE
      • Graphic
    • OS
      • Linux
      • Windows
      • Mac OS X
    • BigData
    • Database
      • MySQL
      • Oracle
    • Mobile
      • Android
      • IOS
    • Web
      • HTML
      • CSS
  • Life
    • Cooking
    • Travel
    • Gardening
  • Gallery
  • Video
  • Music
  • Essay
  • Home
  • Work
    • Cloud
      • Virtualization
      • IaaS
      • PaaS
    • Java
    • Go
    • C
    • C++
    • JavaScript
    • PHP
    • Python
    • Architecture
    • Others
      • Assembly
      • Ruby
      • Perl
      • Lua
      • Rust
      • XML
      • Network
      • IoT
      • GIS
      • Algorithm
      • AI
      • Math
      • RE
      • Graphic
    • OS
      • Linux
      • Windows
      • Mac OS X
    • BigData
    • Database
      • MySQL
      • Oracle
    • Mobile
      • Android
      • IOS
    • Web
      • HTML
      • CSS
  • Life
    • Cooking
    • Travel
    • Gardening
  • Gallery
  • Video
  • Music
  • Essay

CentOS知识集锦

17
Nov
2013

CentOS知识集锦

By Alex
/ in Linux
/ tags CentOS, FAQ
0 Comments
常用命令
软件包管理命令
dnf

dnf是yum的下一个重大版本,基于RPM的Linux的包管理器。dnf保证了和yum的CLI接口的大概兼容性。

命令 作用
check-update 检查可更新的软件包
upgrade

更新软件包

Shell
1
2
3
4
5
# 更新所有软件包
dnf upgrade
 
# 更新指定软件包
dnf upgrade pkg-name
install 安装指定软件包
Shell
1
2
3
4
5
# 从指定的软件源安装
dnf –enablerepo=repo-name install pkg-name 
 
# 安装名为mariadb的模块或组
dnf install @mariadb
reinstall 重新安装指定软件包
remove 删除指定软件包
search 以关键词搜索软件包
info 查看软件包详情
repoquery

查看软件包依赖

Shell
1
2
3
4
# 查看软件包依赖
dnf repoquery --requires pkg-name
# 查看满足依赖所需的额外 RPM 包
dnf repoquery --requires --resolve pkg-name
download 下载软件包到当前目录(不安装)
list installed 列出已安装软件包
grouplist 列出软件组
groupinstall 安装指定软件组软件
groupupdate 更新指定软件组软件
groupremove 删除指定软件组软件
repolist 列出已启用的软件安装源
repolist all 列出所有软件安装源
downgrade 降级指定软件包版本
history 查看 DNF 命令历史记录
config-manager
Shell
1
2
3
4
5
6
# 添加 DNF 软件安装源
dnf config-manager --add-repo example.repo
# 启用 DNF 软件安装源
dnf config-manager --set-enabled example-repo
# 禁用 DNF 软件安装源
dnf config-manager --set-disabled example-repo
autoremove 删除不需要的依赖项软件包
clean all 删除缓存数据及软件包文件
rpm

rpm即红帽子包管理器,是Redhat及其衍生系统使用的软件包管理工具。其常用选项包括:

选项分类  选项说明 
安装/更新/删除

-i, --install 安装软件包
-F, --freshen=<packagefile>+ 如果软件包已经安装,升级软件包
-e, --erase=<package>+ 清除 (卸载) 软件包
-U, --upgrade=<packagefile>+ 升级软件包

-h, --hash 软件包安装的时候列出哈希标记
--allfiles 安装全部文件,包含配置文件,否则配置文件会被跳过
--nodeps 忽略软件包的依赖关系强行安装
--oldpackage 更新到软件包的旧版本
--percent 安装软件包时打印百分比
--replacefiles 忽略软件包之间的冲突的文件
--replacepkgs 如果软件包已经有了,重新安装软件包
--test 不真正安装,只是判断下是否能安装

命令应用举例:

Shell
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
#检查软件包是否已经安装
rpm -q pptpd
#安装指定路径上的软件包并显示进度
rpm -ivh ~/jdk.rpm
#不安装,仅测试依赖关系
rpm -ivh --test ~/jdk.rpm
#列出所有已安装的软件包
rpm -qa
#升级软件包
rpm -Uvh jdk.rpm
#删除软件包
rpm -e jdk.rpm
#从源代码编译并安装软件
rpm --recompile vim-4.6.src.rpm
 
# 显示wget包在系统中安装的文件
rpm -ql wget
# 显示RPM包中的文件
rpm -qlp wget.rpm
 
# 显示一个文件所属的软件包
rpm -qf /usr/bin/file
yum

yum(Yellow dog Updater, Modified)是一个交互式的、基于RPM的软件包管理工具,类似于apt-get。它能够从指定的服务器自动下载 RPM 包并且安装,可以处理依赖性关系,并且一次安装所有依赖的软件包,支持Redhat-like的操作系统。其命令格式如下:

1
yum [options] [command] [package ...]

 其中command为子命令,包括:

 子命令 说明 
check  检查 RPM 数据库问题
check-update 检查是否有可用的软件包更新
update 更新系统中的一个或多个软件包, yum update [pkg0 [,...]] ,不指定包名则更新所有软件包
repolist  显示已配置的源
search 根据关键字搜索软件包吗, yum search keyword 
clean  删除缓存数据(/var/cache/yum)
install 向系统中安装一个或多个软件包, yum install pkg0 [,...] 
reinstall 覆盖安装软件包
deplist 列出软件包的依赖关系
downgrade 降级软件包
erase 从系统中移除一个或多个软件包
info 显示关于软件包或组的详细信息
list 

列出一个或一组软件包:

Shell
1
2
3
4
# 显示已安装
yum list installed
# 显示可安装
yum list available
provides 查找提供指定内容的软件包
repo-pkgs 将一个源当作一个软件包组,可以一次性安装/移除全部软件包

options为选项,常用的包括:

  1. -y 假设对所有提示回答“是”
  2. -q 不输出安装信息,常和-y联用
  3. -e 设置错误级别,0-10,0表示仅仅输出致命错误
yumdownloader

从YUM源下载RPM包,注意,已经安装的RPM包,或者它的依赖,都不会下载。

格式: yumdownloader [options] package1 [package2...]

选项:

--destdir DIR 下载到的目标目录,默认当前目录

--urls 从指定URL下载,而不是根据包名下载

--resolve 下载RPM时,解析它的依赖,并一同下载

--source 下载source而非binary

--archlist=ARCH1[,ARCH2...] 下载指定体系结构的包

repoquery

从YUM存储库查询信息

格式: repoquery [options] <item ...>

选项:

-i 显示类似于 rpm -qi的软件包信息
-l 列出包中文件
-R 列出包的依赖
--resolve 解析包的capabilities,如果不指定该选项,列出的依赖是文件,指定后列出的是包名
--recursive 递归的查询
--location  打印包的可下载位置

示例:

Shell
1
2
# 解析bind-utils的所有依赖  递归解析包               并下载
repoquery -R --resolve --recursive  bind-utils  |  xargs -r yumdownloader 
rpm2cpio

将RPM包转换为CPIO归档文件,输出到标准输出。示例: rpm2cpio wget.rpm| cpio -idm

系统管理命令
命令 说明
update-ca-trust

更新系统的根证书列表:

Shell
1
2
3
4
5
6
7
update-ca-trust enable
 
cd /etc/pki/ca-trust/source/anchors/
# 将你的CA证书拷贝到此目录
 
# 更新证书列表
update-ca-trust extract 
firewalld

防火墙服务,是CentOS 7的重要特性。优势包括:

  1. 支持动态更新,不用重启服务
  2. 支持防火墙Zone的概念
Shell
1
2
3
4
# 启动
systemctl start  firewalld
# 启用
systemctl enable firewalld 
firewall-cmd

firewalld的命令行接口。

格式: firewall-cmd [OPTIONS...]

选项:

Shell
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
--state                         # 显示firewalld的状态
--reload                        # 不中断连接,重新加载
--complete-reload               # 中断所有连接,重新加载
--runtime-to-permanent          # 将当前防火墙的规则永久保存
--check-config                  # 检查配置正确性
 
 
--get-log-denied                # 获取记录被拒绝的日志
--set-log-denied=value          # 设置记录被拒绝的日志 'all','unicast','broadcast','multicast','off'
--get-active-zones              # 查看激活的区域信息
--get-zones                     # 查看可用的区域信息
--get-zone-of-interface=eth1    # 查看指定接口所属区域
 
--panic-on                      # 拒绝所有包
--panic-off                     # 取消拒绝所有包
--query-panic                   # 查看是否拒绝所有包
 
 
--set-default-zone=public       # 设置网络接口默认所属区域
 
--get-zone-of-interface=eth1                        # 查看eth1所属的区域
--zone=public --add-interface=eth1                  # 将eth1加入到public区域
# 加--permanent表示永久修改
--permanent --zone=public --add-port=443/tcp        # 开放public区域的443 TCP端口
--permanent --zone=public --remove-port=53/udp      # 禁止public区域的53  UDP端口
--zone=public --list-ports                          # 列出public区域开放的端口
  
 
--get-services                                      # 显示支持的服务列表
--enable service=ssh                                # 允许SSH服务通过
--disable service=ssh                               # 禁止SSH服务通过
--enable service=samba --timeout=600                # 在600秒内允许samba服务通过
--list-services                                     # 列出允许的服务
--permanent --zone=internal --add-service=http      # 将HTTP服务加到internal区域
 
 
# 直接打开9000 TCP端口
--direct -add-rule ipv4 filter INPUT 0 -p tcp --dport 9000 -j ACCEPT
 
 
# 端口转发
# 将80端口的流量转发至8080
firewall-cmd --add-forward-port=port=80:proto=tcp:toport=8080  
# 将80端口的流量转发至192.168.0.1
firewall-cmd --add-forward-port=port=80:proto=tcp:toaddr=192.168.0.1
# 将80端口的流量转发至192.168.0.1的8080端口
firewall-cmd --add-forward-port=port=80:proto=tcp:toaddr=192.168.0.1:toport=8080  
常见问题
CentOS 8
升级最新内核

Shell
1
2
3
rpm --import https://www.elrepo.org/RPM-GPG-KEY-elrepo.org
dnf install https://www.elrepo.org/elrepo-release-8.0-2.el8.elrepo.noarch.rpm
dnf --enablerepo=elrepo-kernel install kernel-ml

重启即可。

零散问题
如何切换yum源
Shell
1
curl -o /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo 
如何信任CA证书

将证书拷贝到目录:/etc/pki/ca-trust/source/anchors/,然后执行:

Shell
1
update-ca-trust extract
如何使用APT命令

以x64的Centos为例

Shell
1
2
3
4
wget http://pkgs.repoforge.org/apt/apt-0.5.15lorg3.94a-5.el5.rf.x86_64.rpm
rpm -Uvh apt-0.5.15lorg3.94a-5.el5.rf.x86_64.rpm
cp /etc/apt/sources.list.d/os.list /etc/apt/sources.list
vi /etc/apt/sources.list
如何使用update-grub

修改Grub启动选项仍然是通过/etc/default/grub文件,但是Ubuntu下update-grub命令的等价物是:

Shell
1
grub2-mkconfig -o /boot/grub2/grub.cfg 
添加常用软件源
Shell
1
2
3
4
5
6
7
#添加源Fedora Extra Packages for Enterprise Linux (EPEL) repository
#该源包含了很多CentOS系统没有包含的常用软件
yum install epel-release
#如果从该源安装软件时出现: Cannot retrieve metalink for repository: epel. Please verify its path and try again
#则编辑vi /etc/yum.repos.d/epel.repo
#把所有baseurl前面的注释#去掉
#把所有mirrorlist前面加上注释#
如何支持Zeroconf
Shell
1
2
3
4
5
6
7
# Zeroconf(Multicast DNS)规范的开源实现
# 它可以在没有DNS服务的局域网里发现基于zeroconf协议的设备和服务
yum install avahi
# GNU Name Service Switch (NSS)插件,允许使用*.local风格的域名发现
yum install nss-mdns
# 启动服务
service avahi-daemon start
如何禁用网络管理器

首先,停止网络管理器服务,并禁用之:

1
2
systemctl stop NetworkManager.service
systemctl disable NetworkManager.service

对于/etc/sysconfig/network-scripts/ifcfg-*,你需要设置:

/etc/sysconfig/network-scripts/ifcfg-ens3
1
2
NM_CONTROLLED=no
ONBOOT=yes

启动传统的网络服务:

Shell
1
2
3
4
5
# 确保网络服务启用
chkconfig network on
# 手工启动一下服务
service network start 
# 即使使用传统网络服务,/etc/sysconfig/network-scripts/中的脚本仍然有效
如何禁用防火墙
Shell
1
2
3
4
# 禁用
systemctl disable firewalld
# 停止服务
systemctl stop firewalld
如何安装类似Ubuntu的build-essential软件包
Shell
1
yum groupinstall 'Development Tools'
无法Ping通localhost

报错:ping: unknown host localhost

解决办法:

  1. 首先查看/etc/hosts,确保存在这样的条目: 127.0.0.1 localhost 
  2. 然后,确保/etc/nsswitch.conf的访问权限正确:
    Shell
    1
    sudo chmod 644 /etc/nsswitch.conf 

    并具有合适的配置: 

    1
    2
    # 应当包含files
    hosts:      files dns
如何在CentOS 7上安装MySQL

Shell
1
2
3
4
5
6
7
8
9
wget http://repo.mysql.com/mysql-community-release-el7-5.noarch.rpm
rpm -ivh mysql-community-release-el7-5.noarch.rpm
 
# 安装MySQL
yum install mysql-server
systemctl start mysqld
 
# 执行此脚本,修改root密码、移除匿名用户,等等
mysql_secure_installation
无法使用netstat和ifconfig
Shell
1
yum install -y net-tools
如何修改主机名称

在CentOS 7中,下列命令可以用来修改主机名:

  1. hostnamectl:修改系统主机名,推荐的方式
  2. nmtui:基于文本用户接口(TUI)修改系统主机名
  3. nmcli:基于NetworkManager的CLI修改主机名

主机名可以分为几个类型:

  1. 静态主机名:由系统管理员分配,例如tokyo.gmem.cc
  2. 临时/动态主机名:由DHCP或者mDNS服务器运行时分配
  3. Pretty host name:由系统管理员或者最终用户分配的UTF-8兼容的、自由格式的主机名

查看主机名信息:

Shell
1
2
3
4
5
6
7
8
9
10
11
hostnamectl status
#  Static hostname: localhost.localdomain
#         Icon name: computer-vm
#           Chassis: vm
#        Machine ID: a179e3668a70483691a57509c0044cc4
#           Boot ID: 1b264d45e8db4fc6a8655f6451de32e9
#    Virtualization: qemu
#  Operating System: CentOS Linux 7 (Core)
#       CPE OS Name: cpe:/o:centos:centos:7
#            Kernel: Linux 3.10.0-327.28.3.el7.x86_64
#      Architecture: x86-64

设置主机名:

Shell
1
2
3
4
hostnamectl set-hostname cos7-0
hostnamectl set-hostname "CentOS 7 base" --pretty
hostnamectl set-hostname cos7-0 --static
hostnamectl set-hostname cos7-0 --transient
如何修改Terminal字体

通过控制台登录到文字界面时,可以使用下面的命令设置字体:

Shell
1
2
3
4
5
6
7
8
# 下载新字体
yum install terminus-fonts-console
 
# 设置字体
setfont ter-116n.psf.gz
 
# 持久化设置
echo setfont ter-116n.psf.gz >> /etc/rc.local
如何设置提示符
Shell
1
PS1="\e[1;32m\u@\h\e[39m:\e[1;34m\w\e[39m\\$ \e[0;39m"
← 2013年11月香山
Time Machine.Scabs →

Leave a Reply Cancel reply

Your email address will not be published. Required fields are marked *

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code class="" title="" data-url=""> <del datetime=""> <em> <i> <q cite=""> <strike> <strong> <pre class="" title="" data-url=""> <span class="" title="" data-url="">

Related Posts

  • Ubuntu知识集锦
  • JDBC知识集锦
  • Java知识集锦
  • Windows命令知识集锦
  • ExtJS知识集锦

Recent Posts

  • Investigating and Solving the Issue of Failed Certificate Request with ZeroSSL and Cert-Manager
  • A Comprehensive Study of Kotlin for Java Developers
  • 背诵营笔记
  • 利用LangChain和语言模型交互
  • 享学营笔记
ABOUT ME

汪震 | Alex Wong

江苏淮安人,现居北京。目前供职于腾讯云,专注容器方向。

GitHub:gmemcc

Git:git.gmem.cc

Email:gmemjunk@gmem.cc@me.com

ABOUT GMEM

绿色记忆是我的个人网站,域名gmem.cc中G是Green的简写,MEM是Memory的简写,CC则是我的小天使彩彩名字的简写。

我在这里记录自己的工作与生活,同时和大家分享一些编程方面的知识。

GMEM HISTORY
v2.00:微风
v1.03:单车旅行
v1.02:夏日版
v1.01:未完成
v0.10:彩虹天堂
v0.01:阳光海岸
MIRROR INFO
Meta
  • Log in
  • Entries RSS
  • Comments RSS
  • WordPress.org
Recent Posts
  • Investigating and Solving the Issue of Failed Certificate Request with ZeroSSL and Cert-Manager
    In this blog post, I will walk ...
  • A Comprehensive Study of Kotlin for Java Developers
    Introduction Purpose of the Study Understanding the Mo ...
  • 背诵营笔记
    Day 1 Find Your Greatness 原文 Greatness. It’s just ...
  • 利用LangChain和语言模型交互
    LangChain是什么 从名字上可以看出来,LangChain可以用来构建自然语言处理能力的链条。它是一个库 ...
  • 享学营笔记
    Unit 1 At home Lesson 1 In the ...
  • K8S集群跨云迁移
    要将K8S集群从一个云服务商迁移到另外一个,需要解决以下问题: 各种K8S资源的迁移 工作负载所挂载的数 ...
  • Terraform快速参考
    简介 Terraform用于实现基础设施即代码(infrastructure as code)—— 通过代码( ...
  • 草缸2021
    经过四个多月的努力,我的小小荷兰景到达极致了状态。

  • 编写Kubernetes风格的APIServer
    背景 前段时间接到一个需求做一个工具,工具将在K8S中运行。需求很适合用控制器模式实现,很自然的就基于kube ...
  • 记录一次KeyDB缓慢的定位过程
    环境说明 运行环境 这个问题出现在一套搭建在虚拟机上的Kubernetes 1.18集群上。集群有三个节点: ...
  • eBPF学习笔记
    简介 BPF,即Berkeley Packet Filter,是一个古老的网络封包过滤机制。它允许从用户空间注 ...
  • IPVS模式下ClusterIP泄露宿主机端口的问题
    问题 在一个启用了IPVS模式kube-proxy的K8S集群中,运行着一个Docker Registry服务 ...
  • 念爷爷
      今天是爷爷的头七,十二月七日、阴历十月廿三中午,老人家与世长辞。   九月初,回家看望刚动完手术的爸爸,发

  • 6 杨梅坑

  • liuhuashan
    深圳人才公园的网红景点 —— 流花山

  • 1 2020年10月拈花湾

  • 内核缺陷触发的NodePort服务63秒延迟问题
    现象 我们有一个新创建的TKE 1.3.0集群,使用基于Galaxy + Flannel(VXLAN模式)的容 ...
  • Galaxy学习笔记
    简介 Galaxy是TKEStack的一个网络组件,支持为TKE集群提供Overlay/Underlay容器网 ...
TOPLINKS
  • Zitahli's blue 91 people like this
  • 梦中的婚礼 64 people like this
  • 汪静好 61 people like this
  • 那年我一岁 36 people like this
  • 为了爱 28 people like this
  • 小绿彩 26 people like this
  • 彩虹姐姐的笑脸 24 people like this
  • 杨梅坑 6 people like this
  • 亚龙湾之旅 1 people like this
  • 汪昌博 people like this
  • 2013年11月香山 10 people like this
  • 2013年7月秦皇岛 6 people like this
  • 2013年6月蓟县盘山 5 people like this
  • 2013年2月梅花山 2 people like this
  • 2013年淮阴自贡迎春灯会 3 people like this
  • 2012年镇江金山游 1 people like this
  • 2012年徽杭古道 9 people like this
  • 2011年清明节后扬州行 1 people like this
  • 2008年十一云龙公园 5 people like this
  • 2008年之秋忆 7 people like this
  • 老照片 13 people like this
  • 火一样的六月 16 people like this
  • 发黄的相片 3 people like this
  • Cesium学习笔记 90 people like this
  • IntelliJ IDEA知识集锦 59 people like this
  • 基于Kurento搭建WebRTC服务器 38 people like this
  • Bazel学习笔记 37 people like this
  • PhoneGap学习笔记 32 people like this
  • NaCl学习笔记 32 people like this
  • 使用Oracle Java Mission Control监控JVM运行状态 29 people like this
  • Ceph学习笔记 27 people like this
  • 基于Calico的CNI 27 people like this
Tag Cloud
ActiveMQ AspectJ CDT Ceph Chrome CNI Command Cordova Coroutine CXF Cygwin DNS Docker eBPF Eclipse ExtJS F7 FAQ Groovy Hibernate HTTP IntelliJ IO编程 IPVS JacksonJSON JMS JSON JVM K8S kernel LB libvirt Linux知识 Linux编程 LOG Maven MinGW Mock Monitoring Multimedia MVC MySQL netfs Netty Nginx NIO Node.js NoSQL Oracle PDT PHP Redis RPC Scheduler ServiceMesh SNMP Spring SSL svn Tomcat TSDB Ubuntu WebGL WebRTC WebService WebSocket wxWidgets XDebug XML XPath XRM ZooKeeper 亚龙湾 单元测试 学习笔记 实时处理 并发编程 彩姐 性能剖析 性能调优 文本处理 新特性 架构模式 系统编程 网络编程 视频监控 设计模式 远程调试 配置文件 齐塔莉
Recent Comments
  • qg on Istio中的透明代理问题
  • heao on 基于本地gRPC的Go插件系统
  • 黄豆豆 on Ginkgo学习笔记
  • cloud on OpenStack学习笔记
  • 5dragoncon on Cilium学习笔记
  • Archeb on 重温iptables
  • C/C++编程:WebSocketpp(Linux + Clion + boostAsio) – 源码巴士 on 基于C/C++的WebSocket库
  • jerbin on eBPF学习笔记
  • point on Istio中的透明代理问题
  • G on Istio中的透明代理问题
  • 绿色记忆:Go语言单元测试和仿冒 on Ginkgo学习笔记
  • point on Istio中的透明代理问题
  • 【Maven】maven插件开发实战 – IT汇 on Maven插件开发
  • chenlx on eBPF学习笔记
  • Alex on eBPF学习笔记
  • CFC4N on eBPF学习笔记
  • 李运田 on 念爷爷
  • yongman on 记录一次KeyDB缓慢的定位过程
  • Alex on Istio中的透明代理问题
  • will on Istio中的透明代理问题
  • will on Istio中的透明代理问题
  • haolipeng on 基于本地gRPC的Go插件系统
  • 吴杰 on 基于C/C++的WebSocket库
©2005-2025 Gmem.cc | Powered by WordPress | 京ICP备18007345号-2