当前位置: 首页 > news >正文

[Linux] Cockpit管理服务器 软件包管理

目录

Cockpit管理服务器

部署Cockpit

修改Windows上的host

扩展 Cockpit

Linux软件包管理

rpm命令

查询

验证

安装和卸载

提取RPM包中的文件

使用dnf管理软件包

dnf介绍

dnf命令

软件包组管理

配置 yum 仓库

yum 仓库配置

yum 仓库管理

查看 yum 仓库

启用仓库

禁用仓库

仓库缓存管理

添加 kubernetes 仓库

添加 docker-ce 仓库

epel 仓库

源码安装软件

源码安装 nginx

介绍

安装

使用

配置nginx服务

自建仓库

自建仓库流程

详细操作步骤

同步仓库


Cockpit管理服务器

Cockpit是一个开源工具,通过Web Console管理Linux服务器

部署Cockpit

#安装软件包
dnf install cockpit#启用并启动服务
systemctl enable cockpit.socket --now# 配置防火墙放行cockpit服务
firewall-cmd --add-service=cockpit
firewall-cmd --add-service=cockpit --permanent

修改Windows上的host

打开C盘下的etc目录

找到host文件,以管理员方式用记事本打开这个文件,在文件内容末尾加上linux的ip地址和主机名

保存,打开浏览器

登录,用户名和密码和linux相同

登录进来就可以在网页端查看系统信息、日志等

扩展 Cockpit

查看Cockpit扩展包:

部分扩展包说明:

  • cockpit-dashboard,提供管理多个Linux界面。

  • cockpit-docker,管理docker容器。

  • cockpit-composer,管理容器镜像。

  • cockpit-kubernetes,管理kubernetes。

  • cockpit-machines,管理kvm虚拟机。

  • cockpit-packagekit,管理软件包。

  • cockpit-storaged,管理存储。

  • cockpit-doc,Cockpit说明文档。

安装扩展包

[root@rocky8 ~]# dnf install cockpit-composer cockpit-dashboard cockpit-doc cockpit-docker cockpit-kubernetes cockpit-machines cockpit-packagekit cockpit-storaged

Linux软件包管理

rpm命令

基本命令

|选项|作用| |-|-| |-q|基本查询模式| |-a|查询所有已安装的包| |-f <文件>|查询文件所属的包| |-i|显示包的详细信息| |-l|列出包内的文件| |--scripts|查看包安装/卸载时执行的脚本|

查询

#查看系统中安装了哪些软件包
rpm -qa
#查询系统中某个软件包是否安装
rpm -q httpd

#查询系统中某个已安装的软件包元数据信息
rpm -qi coreutils

#查询系统中某个已安装的软件包包含哪些文件
rpm -q -l openssh-server

#查询系统中某个文件属于哪个已安装的软件包
rpm -qf /etc/ssh/sshd_config

#查询系统中某个已安装的软件包包含的脚本
rpm -q --scripts openssh-server

#查询系统中某个已安装的软件包变更日志
rpm -q --changelog openssh-server

#下载httpd软件包
yum download httpd

#查询系统中某个软件包文件包包含哪些配置文件
rpm -q -p httpd-2.4.37-64.module+el8.10.0+1717+030a9fed.x86_64.rpm -c

#查询某个软件包组中包含哪些软件包
rpm -qg 'System Environment/Base'

验证

#查看openssh-server软件安装是否有问题
rpm -V openssh-server
#修改
sed -i 's/PermitRootLogin yes/PermitRootLogin no/g' /etc/ssh/sshd_config
#再次查看
rpm -V openssh-server
#此时会有报错

安装和卸载

#下载软件包
yum download lrzsz
#查看
ls lrzsz*

#安装
rpm -i lrzsz-0.12.20-43.el8.x86_64.rpmrpm -q lrzsz

#卸载
rpm -e lrzszrpm -q lrzsz

提取RPM包中的文件

方法1:分步骤提取

#将文件转换为cpio格式
[19:12:45 root@server-znf ~]# rpm2cpio httpd-2.4.37-64.module+el8.10.0+1717+030a9fed.x86_64.rpm > httpd-2.4.37-64.module+el8.10.0+1717+030a9fed.x86_64.cpio#查询cpio格式(一种打包格式)文件中有哪些文件
[19:22:20 root@server-znf ~]# cpio -t < httpd-2.4.37-64.module+el8.10.0+1717+030a9fed.x86_64.cpio

#配置管道查询特定文件
[19:22:45 root@server-znf ~]# cpio -t < httpd-2.4.37-64.module+el8.10.0+1717+030a9fed.x86_64.cpio | grep 'httpd\.conf'

#提取所有文件
cpio -id '*' < httpd-2.4.37-64.module+el8.10.0+1717+030a9fed.x86_64.cpio#提取所有文件
cpio -id ./etc/httpd/conf/httpd.conf < httpd-2.4.37-64.module+el8.10.0+1717+030a9fed.x86_64.cpio

方法2:一键提取所有文件

rpm2cpio httpd-2.4.37-64.module+el8.10.0+1717+030a9fed.x86_64.rpm | cpio -id '*'

使用dnf管理软件包

dnf介绍

rpm命令是一个管理软件包的工具,不适用于软件包存储库或自动解决来自多个源的依赖项

yum是管理基于RPM的软件安装和更新的更好系统。yum命令允许安装,更新,删除和获取有关软件包及其依赖项的信息。

DNF取代了YUM,在功能上于YUM命令相同。克服了YUM包管理器的一些瓶颈,提升了包括用户体验,内存占用,依赖分析,运行速度等多方面的内容。

dnf命令

#查看仓库中httpd包信息
dnf info http

# 查看仓库中http开头的包有哪些
[root@rocky8 ~]# dnf list 'http*'# 查看仓库中httpd包有哪些版本
[root@rocky8 ~]# dnf list httpd --showduplicates
Loaded plugins: fastestmirror, langpacks
Loading mirror speeds from cached hostfile* base: mirrors.ustc.edu.cn* extras: ftp.sjtu.edu.cn* updates: mirrors.ustc.edu.cn
Available Packages
httpd.x86_64            2.4.6-95.el7.centos               base   
httpd.x86_64            2.4.6-97.el7.centos               updates
httpd.x86_64            2.4.6-97.el7.centos.1             updates
httpd.x86_64            2.4.6-97.el7.centos.2             updates
httpd.x86_64            2.4.6-97.el7.centos.4             updates
httpd.x86_64            2.4.6-97.el7.centos.5             updates# 查看仓库中'web server'相关软件包有哪些
[root@rocky8 ~]# dnf search 'web server'
[root@rocky8 ~]# dnf search all 'web server'# 查看仓库中哪个包可以提供文件/var/www/html
[root@rocky8 ~]# dnf provides /var/www/html# 从仓库中安装httpd,自动解决依赖问题
[root@rocky8 ~]# dnf install -y httpd# 从仓库中下载vsftpd包,及其依赖包
[root@rocky8 ~]# dnf install vsftpd --downloadonly --downloaddir=/root/
[root@rocky8 ~]# ls vsftpd-*
vsftpd-3.0.2-29.el7_9.x86_64.rpm# 安装本地文件系统中vsftpd包
[root@rocky8 ~]# dnf localinstall ./vsftpd-3.0.2-29.el7_9.x86_64.rpm # 降级vsftpd版本为3.0.2-28.el7
[root@rocky8 ~]# dnf downgrade -y vsftpd-3.0.2-28.el7# 降级vsftpd版本为3.0.2-29.el7_9
[root@rocky8 ~]# dnf update vsftpd-3.0.2-29.el7_9# 升级系统中所有软件为最新版本
[root@rocky8 ~]# dnf update # 卸载软件包
[root@rocky8 ~]# dnf remove httpd

为什么需要专门创建仓库的软件,为什么不直接创建目录存储仓库?

  • 仓库需要有包的依赖关系,下载包的同时会下载所需依赖,目录无法满足

  • 仓库需要包依赖关系(如A包依赖B包)

  • 仓库需要版本信息(如nginx-1.18.0>nginx-1.17.9)

  • 仓库需要数字签名(GPG验证防篡改)

软件包组管理

# 查看仓库中软件包组清单
[root@rocky8 ~]# dnf grouplist
Loaded plugins: fastestmirror, langpacks
There is no installed groups file.
Maybe run: yum groups mark convert (see man yum)
Loading mirror speeds from cached hostfile
* base: mirrors.ustc.edu.cn
* extras: ftp.sjtu.edu.cn
* updates: mirrors.ustc.edu.cn
Available Environment Groups:Minimal InstallCompute NodeInfrastructure ServerFile and Print ServerBasic Web ServerVirtualization HostServer with GUIGNOME DesktopKDE Plasma WorkspacesDevelopment and Creative Workstation
Available Groups:Compatibility LibrariesConsole Internet ToolsDevelopment ToolsGraphical Administration ToolsLegacy UNIX CompatibilityScientific SupportSecurity ToolsSmart Card SupportSystem Administration ToolsSystem Management
Done# 查看仓库中软件包组信息
[root@rocky8 ~]# dnf groupinfo <tab><tab>
[root@rocky8 ~]# dnf groupinfo 'Server with GUI'# 安装仓库中软件包组
[root@rocky8 ~]# dnf groupinstall 'Server with GUI'# 卸载仓库中软件包组
[root@rocky8 ~]# dnf groupremove 'Server with GUI'

配置 yum 仓库

yum 仓库配置

dnf 工具的配置文件是 /etc/dnf/dnf.conf,该文件包括两部分:

  • main,yum全局配置,提供每个仓库部分参数默认值。

  • 每个仓库的独立配置。

[root@rocky8 ~]# cat /etc/dnf/dnf.conf
[main]
gpgcheck=1
installonly_limit=3
clean_requirements_on_remove=True
best=True
skip_if_unavailable=False

使用如下命令查看完整的配置内容:

[root@rocky8 ~]# dnf install -y dnf-utils
[root@server ~]# dnf config-manager --dump
Loaded plugins: fastestmirror, langpacks
=================================== main =====================================
[main]
......
cachedir = /var/cache/dnf
......
config_file_path = /etc/dnf/dnf.conf
......
enabled = 1
......
gpgcheck = 1
......
keepcache = 0
localpkg_gpgcheck = 0
log_compress = 0
log_rotate = 4
log_size = 1048576
logdir = /var/log
logfilelevel = 9
max_parallel_downloads = 3
metadata_expire = 172800
metadata_timer_sync = 10800
......
protected_packages = dnf, setup, dnf, systemd, systemd-udev, yum, sudo, setup, dnf, systemd, systemd-udev, yum, sudo
......
repo_gpgcheck = 0
reposdir = /etc/yum.repos.d, /etc/yum/repos.d, /etc/distro.repos.d
......

main 部分需要关注的参数:

  • enabled = 1,仓库默认启用。

  • gpgcheck = 1,仓库默认启用gpg校验。

  • keepcache = 0,不保存缓存。

  • cachedir = /var/cache/dnf,缓存文件保存的位置。

yum管理的软件包存放在yum仓库,yum仓库配置文件存放在/etc/yum.repos.d目录。

[root@rocky8 ~]# ls /etc/yum.repos.d/
Rocky-AppStream.repo &nbsp; &nbsp; &nbsp; &nbsp; Rocky-NFV.repo
Rocky-BaseOS.repo &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;  Rocky-Plus.repo
Rocky-Debuginfo.repo &nbsp; &nbsp; &nbsp; &nbsp; Rocky-PowerTools.repo
Rocky-Devel.repo &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; Rocky-ResilientStorage.repo
Rocky-Extras.repo &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;  Rocky-RT.repo
Rocky-HighAvailability.repo  Rocky-Sources.repo
Rocky-Media.repo
yum 仓库管理
查看 yum 仓库
# 查看yum仓库,默认不包括未启用的仓库
[root@server ~]# dnf repolist
repo id &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;  repo name
appstream &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;  Rocky Linux 8 - AppStream
baseos &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; Rocky Linux 8 - BaseOS
extras &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; Rocky Linux 8 - Extras# 查看yum所有仓库,包括未启用的仓库
[root@rocky8 ~]# dnf repolist all
启用仓库
# 查看禁用的仓库清单
[root@rocky8 ~]# dnf repolist disabled
......
ha &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;  Rocky Linux 8 - HighAvailability &nbsp; &nbsp; disable
......# 启用 ha 仓库
[root@rocky8 ~]# dnf config-manager --enable ha
禁用仓库
[root@rocky8 ~]# dnf config-manager --disable ha
仓库缓存管理

更新缓存后,yum install命令可补全软件包名称。

# 清理缓存数据
[root@rocky8 ~]# dnf clean <tab><tab>
all &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; dbcache &nbsp; &nbsp; &nbsp; expire-cache  metadata &nbsp; &nbsp;  packages# 清理所有缓存数据
[root@rocky8 ~]# dnf clean all# 创建缓存数据
[root@server ~]# dnf makecache
Rocky Linux 8 - AppStream &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;5.6 kB/s | 4.8 kB &nbsp; &nbsp; 00:00 &nbsp; &nbsp;
Rocky Linux 8 - BaseOS &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; 5.2 kB/s | 4.3 kB &nbsp; &nbsp; 00:00 &nbsp; &nbsp;
Rocky Linux 8 - Extras &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; 3.7 kB/s | 3.1 kB &nbsp; &nbsp; 00:00 &nbsp; &nbsp;
Metadata cache created.
添加 kubernetes 仓库
[root@rocky8 ~]# dnf config-manager --add-repo=https://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64/[root@rocky8 ~]# cat /etc/yum.repos.d/mirrors.aliyun.com_kubernetes_yum_repos_kubernetes-el7-x86_64_.repo 
[mirrors.aliyun.com_kubernetes_yum_repos_kubernetes-el7-x86_64_]
name=added from: https://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64/
baseurl=https://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64/
enabled=1# 安装 kubectl 包
[root@rocky8 ~]# dnf install kubectl --nogpgcheck
添加 docker-ce 仓库
[root@rocky8 ~]# cat << 'EOF' > /etc/yum.repos.d/docker-ce.repo
[docker-ce-stable]
name=Docker CE Stable - $basearch
baseurl=https://mirrors.aliyun.com/docker-ce/linux/centos/$releasever/$basearch/stable
enabled=1
gpgcheck=0
EOF# 查看docker版本
[root@rocky8 ~]# dnf list docker-ce
Loaded plugins: fastestmirror, langpacks
Loading mirror speeds from cached hostfile
* base: mirrors.ustc.edu.cn
* extras: mirrors.ustc.edu.cn
* updates: mirrors.ustc.edu.cn
Available Packages
docker-ce.x86_64 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; 3:20.10.22-3.el7 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;  docker-ce-stabl
epel 仓库

EPEL(Extra Packages for Enterprise Linux),是由Fedora Special Interest Group维护的Enterprise Linux(RHEL、CentOS)中经常用到的包。

[root@rocky8 ~]# dnf install -y epel-release# 也可以直接使用aliyun的源
[root@rocky8 ~]# wget -O /etc/yum.repos.d/epel.repo https://mirrors.aliyun.com/repo/epel-8.repo

源码安装软件

源码安装 nginx
介绍

Nginx是一个高性能的HTTP和反向代理web服务器。

官方地址:https://nginx.org

安装
# 安装依赖
[root@rocky8 ~]# dnf install gcc make pcre-devel zlib-devel # 下载
[root@rocky8 ~]# wget https://nginx.org/download/nginx-1.24.0.tar.gz# 解压
[root@rocky8 ~]# tar -xf nginx-1.24.0.tar.gz # 配置
[root@rocky8 ~]# cd nginx-1.24.0/
[root@rocky8 ~]# ./configure --prefix=/usr/local/nginx# 编译安装
[root@rocky8 nginx-1.24.0]# make && make install
[root@rocky8 ~]# ls /usr/local/nginx/
conf  html  logs  sbin# 配置环境变量
[root@rocky8 nginx-1.24.0]# export PATH=$PATH:/usr/local/nginx/sbin/
[root@rocky8 nginx-1.24.0]# echo 'export PATH=$PATH:/usr/local/nginx/sbin/' >> ~/.bashrc
使用
# 启动服务
[root@rocky8 ~]# nginx
[root@rocky8 ~]# pkill nginx# 验证
[root@rocky8 ~]# curl -s http://localhost | grep Thank
<p><em>Thank you for using nginx.</em></p>

命令总结:

  • nginx,启动服务

  • nginx -s quit,待nginx进程处理任务完毕进行停止。

  • nginx -s stop,查出nginx进程id再使用kill命令强制杀掉进程。

  • nginx -s reload,重新加载服务。

配置nginx服务
[root@rocky8 ~]# cp /usr/lib/systemd/system/sshd.service /etc/systemd/system/nginx.service
[root@rocky8 ~]# vim /etc/systemd/system/nginx.service
[Unit]
Description=Nginx server daemon[Service]
Type=forking
ExecStart=/usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf
ExecReload=/usr/local/nginx/sbin/nginx -s reload
ExecStop=/usr/local/nginx/sbin/nginx -s quit[Install]
WantedBy=multi-user.target
[root@rocky8 ~]# systemctl daemon-reload
[root@rocky8 ~]# systemctl enable nginx.service --now

自建仓库

自建仓库流程
  1. 准备软件包

  2. 创建仓库索引信息

  3. 发布仓库

  4. 客户端配置验证

详细操作步骤
  1. 准备软件包
[root@server ~]# mkdir rpms
# 下载软件包,以及依赖的软件包
[root@server ~]# yum install -y vim open-vm-tools vsftpd lrzsz bash-completion --downloadonly --downloaddir=./rpms/
# 注意:
# &nbsp;  如果使用yum download 下载,则不会下载依赖的软件包。
# &nbsp;  此时不要执行yum相关命令,否则这里软件包会被清理掉。# 移动软件包到发布目录
[root@server ~]# mkdir -p /var/www/html/tools
[root@server ~]# mv rpms /var/www/html/tools/Packages
  1. 创建仓库
# 安装创建仓库软件包
[root@server ~]# yum install -y createrepo# 创建仓库索引信息
[root@server ~]# createrepo /var/www/html/tools/
  1. 通过 web 服务器发布仓库
# 部署 web 服务器
[root@server ~]# yum install -y httpd
[root@server ~]# systemctl enable httpd --now#关闭防火墙和 SELinux
[root@server ~]# systemctl disable firewalld.service --now
[root@server ~]# setenforce 0
  1. 客户端配置验证
# 备份原有仓库
[root@client ~]# mkdir /etc/yum.repos.d/old
[root@client ~]# mv /etc/yum.repos.d/*repo /etc/yum.repos.d/old# 添加新仓库
[root@client ~]# cat << 'EOF' > /etc/yum.repos.d/tools.repo
[tools]
name=rocky8 tools from server.linux.fun
baseurl=http://server.linux.fun/tools/
enabled=1
gpgcheck=0
EOF
[root@client ~]# ls /etc/yum.repos.d/
old  tools.repo# 安装软件包
[root@client ~]# yum install -y vim

同步仓库

# 将仓库中软件包和元数据全部同步到本地
[root@client ~]# yum reposync --repoid=tools --download-metadata
[root@client ~]# ls tools/
Packages  repodata
http://www.dtcms.com/a/334027.html

相关文章:

  • VScode 使用遇到的问题
  • linux docker neo4j 导出 (windows 导入)
  • Winsows系统去除右键文件显示的快捷列表
  • 微服务架构实战指南:从单体应用到云原生的蜕变之路
  • 头文件包含和前置声明
  • python---包
  • libcurl 中 curl_multi 的演进:从双路并进到 epoll 革命
  • 8.16打卡 DAY43 复习日
  • 0301-solidity进阶-区块链-web3
  • 布隆过滤器的原理及使用
  • Kotlin-基础语法练习一
  • Maven私服配置模版
  • Qt 关于QString和std::string数据截断的问题- 遇到\0或者0x00如何处理?
  • 小白学投资理财 第一天
  • 算力与显存、显存带宽的关系
  • 【php反序列化介绍与常见触发方法】
  • Houdini Vop学习笔记
  • 测试工程师的AI转型指南:从工具使用到测试策略重构
  • TDengine IDMP 高级功能(4. 元素引用)
  • OpenAI TTS API + Web 前端 AudioContext 实战方案
  • 【Web后端】Django、flask及其场景——以构建系统原型为例
  • 《深度解构:构建浏览器端Redis控制台的WebSocket协议核心技术》
  • Protues使用说明及Protues与Keil联合仿真实现点亮小灯和流水灯
  • 【洛谷刷题】用C语言和C++做一些入门题,练习洛谷IDE模式:分支机构(一)
  • C#WPF实战出真汁08--【消费开单】--餐桌面板展示
  • C语言基础:(十五)深入理解指针(5)
  • 数据清洗:数据处理的基石
  • 【C++】异常详解(万字解读)
  • 【lubancat】鲁班猫4实现开机后自动播放视频
  • MySQL查询性能慢时索引失效的排查与优化实践