rpm、yum、仓库基础
1.rpm
-ivh 包名 #安装 安装繁琐
-e 包名 #卸载
-q 包名 #查询
-qa # 列出所有安装的包 可以与grep等配合使用,来查询安装的包
-ql 包名 #查询包里所有的文件
-qf 路径文件 #查询指定文件由哪个程序包安装生成
-qi 包名 #查看包的属性,如:版本、大小、安装日期等;
-qc 包名 # 查看包里携带的配置文件
-q --scripts 包名 #查看包中有没有脚本
-ivh 包名 --force #强制安装
--root=/mnt/sysroot #救援模式安装包到根
问:磁盘某个文件来自哪个包,如何查? 如:tree命令
答:which tree 查询到tree来自哪个文件
rpm -qf /??/??/tree 就可以查到依赖的包
2 .yum 实现需知
cd /etc/yum.repos.d/ #仓库目录;目录下文件后缀 .repo
#.repo 后缀的仓库文件格式
#ID唯一 一个文件里可以有多个仓库配置
[BaseOs]
#描述
name=BaseOs
#下边已centos8为例
#baseurl后直接跟仓库路径,
#支持使用:file:// | http:// | https:// | ftp://。
#仓库路径标准:repodata所在的路径就是仓库路径
#多个路径换行后用 “空格对齐”
baseurl=https://mirrors.cloud.tencent.com/centos/$releasever/BaseOS/$basearch/os/
https://mirrors.163.com/centos/$releasever/BaseOS/$basearch/os/
#安装包前作包的合法和完整性校验: 0不校验 | 1校验
#gpgcheck为1 需要配合:gpgkey=file:////etc/pki/rpm-gpg/RPM-GPG-KEY-centosofficial
gpgcheck=0|1
#仓库是否启用;0启用(默认)、1禁用 ,不写这行代表启用
enabled=0|1
#gpgcheck为1 centos8里需要配合:gpgkey=file:////etc/pki/rpm-gpg/RPM-GPG-KEY-centosofficial
repo配置文件中可用的变量:
1.$releasever:当前os发行版本主版本号:8,7,6
2.$basearch :系统基础平台:i386,x86_64
光盘 仓库路径
mount /dev/sr0 /mnt #挂载光盘
CentOS8 分为两个源 baseos、AppStream
BaseOS
#光盘本地路径
file:///mnt/BaseOS/
#腾讯
https://mirrors.cloud.tencent.com/centos/$releasever/BaseOS/$basearch/os
#网易
https://mirrors.163.com/centos/$releasever/BaseOS/$basearch/os/
AppStream
#腾讯
https://mirrors.cloud.tencent.com/centos/$releasever/AppStream/$basearch/os/
#网易
https://mirrors.163.com/centos/$releasever/AppStream/$basearch/os/
CentOS7 base
#腾讯
https://mirrors.cloud.tencent.com/centos/$releasever/os/$basearch/
#网易
https://mirrors.163.com/centos/$releasever/os/$basearch/
EPEL
CentOS8
#腾讯
https://mirrors.cloud.tencent.com/epel/$releasever/Everything/$basearch/
#华为
https://mirrors.huaweicloud.com/epel/$releasever/Everything/$basearch/
#清华大学
https://mirrors.tuna.tsinghua.edu.cn/epel/$releasever/Everything/$basearch/
CentOS7
#腾讯
https://mirrors.cloud.tencent.com/epel/$releasever/$basearch/
#华为
https://mirrors.huaweicloud.com/epel/$releasever/$basearch/
#清华大学
https://mirrors.tuna.tsinghua.edu.cn/epel/$releasever/$basearch/
#更改配置yun仓库---已centos8为例
#准备工作:mount /dev/sr0 /mnt #挂载光盘
#1. 把/etc/yum.repos.d/系统自建的.repo文件移动到backup里
cd /etc/yum.repos.d/
mkdir backup
mv *.repo /etc/yum.repos.d/backup
#2.创建文件并编辑 vim 名字.repo 名字按照公司要求命名--必须.repo后缀结尾
vim base.repo
[BaseOs]
name=BaseOs
baseurl=file:///mnt/BaseOS/ #本地
https://mirrors.cloud.tencent.com/centos/$releasever/BaseOS/$basearch/os/ #腾讯
https://mirrors.163.com/centos/$releasever/BaseOS/$basearch/os/ #网易
gpgcheck=0 #不需要校验
#3.创建并编辑 vim appstream.repo
vim appstream.repo
[AppStream]
name=AppStream
baseurl=file:///mnt/AppStream/
https://mirrors.cloud.tencent.com/centos/$releasever/AppStream/$basearch/os/
https://mirrors.163.com/centos/$releasever/AppStream/$basearch/os/
gpgcheck=0
#4.创建并编辑 vim epel.repo 配置EPEL仓库
vim epel.repo
[epel]
name=epel
baseurl=https://mirrors.cloud.tencent.com/epel/$releasever/Everything/$basearch/
https://mirrors.huaweicloud.com/epel/$releasever/Everything/$basearch/
https://mirrors.tuna.tsinghua.edu.cn/epel/$releasever/Everything/$basearch/
gpgcheck=0
3.yum 命令
yum install 包名 #安装指定rpm软件包
yum repolist #查看配置的仓库
yum remove 包名 #删除指定的rpm软件包
yum info 包名 #显示指定的rpm软件包的描述信息和概要信息 如:名称、版本、仓库等;
yum list 空|包名 #为空显示所有已经安装和可以安装的程序包 | 包名 为显示指定程序包安装情况
yum provides 文件路径 #查询文件依赖哪个没有安装的包
yum history #列出最近的历史 ,可以看到序号以及安装了多少包
yum update #升级
yum downgrade #降级
yum install --downloadonly --downloaddir=/data #只下载不安装
注意:
#注意:
# yum remove 包名 #删除指定的rpm软件包
#CentOS8 直接卸载(下载时会有依赖包一起被下载,卸载时一起卸载)
yum remove 包名 #直接卸载
#CentOS7 用下面方式卸载(卸载依赖包)
yum history #列出最近的历史 ,可以看到序号以及安装了多少包
yum history info 序号 #列出序号的详情信息
yum history undo 序号 #撤销序号出的安装
4. 缓存
ll /var/cache/dnf #缓存路径
du -sh /var/cache/dnf/ #查看文件夹大小
yum clean all #清理缓存
5.ubuntu 软件管理
包的后缀 .deb
dpkg #类似rpm
dpkg -l #列出所有装好的包 或查看某个包是否安装
dpkg -S 包名 #查看包的详细信息,类似rpm -qi
dpkg -L 包名 #列出该包中所包含的文件,类似rpm -ql
dpkg -S 包名
# apt 类似yum
apt remove 包名 #删除程序,但不删除配置文件
apt remove --purge #连带配置文件一起删除,谨慎使用
apt update #更新索引,相当于yum clean all;yum makechahe
apt-file
apt-cache madison 包名 #查看包的版本
ubuntu 更换国内源路径
#ubuntu 更换国内源路径
#编辑vim /etc/apt/sources.list 或者 apt edit-sources
deb https://mirrors.cloud.tencent.com/ubuntu/ bionic main restricted universe multiverse
deb-src https://mirrors.cloud.tencent.com/ubuntu/ bionic main restricted universe multiverse
deb https://mirrors.cloud.tencent.com/ubuntu/ bionic-security main restricted universe multiverse
deb-src https://mirrors.cloud.tencent.com/ubuntu/ bionic-security main restricted universe multiverse
deb https://mirrors.cloud.tencent.com/ubuntu/ bionic-updates main restricted universe multiverse
deb-src https://mirrors.cloud.tencent.com/ubuntu/ bionic-updates main restricted universe multiverse
deb https://mirrors.cloud.tencent.com/ubuntu/ bionic-proposed main restricted universe multiverse
deb-src https://mirrors.cloud.tencent.com/ubuntu/ bionic-proposed main restricted universe multiverse
deb https://mirrors.cloud.tencent.com/ubuntu/ bionic-backports main restricted universe multiverse
deb-src https://mirrors.cloud.tencent.com/ubuntu/ bionic-backports main restricted universe multiverse
#apt update 更新
apt update
公司内部私有系统仓库服务端
1.公司内部私有系统仓库服务端
#安装需要联网或者更改yum源路径为光盘路径
yum install httpd
#启动httpd 并设置开机启动,然后在本地浏览器输入此服务器ip可以看到成功页面,如果失败请尝试关闭防火墙(请查看centos最小化安装初始化操作)
systemctl enable --now httpd
#系统安装光盘上传至服务器/data/isos 将centos7|8 .iso 文件传输上去
#创建-pv -p 可以创建子目录的子目录 -v 看过程
mkdir -pv /var/www/html/centos/{7,8}
#挂载
mount /data/isos/CentOS-7-x86_64-Everything-2009.iso /var/www/html/centos/7
mount /data/isos/CentOS-8.3.2011-x86_64-dvd1.iso /var/www/html/centos/8
#到此输入↓,可以看到私有系统仓库搭建完成
http://本机ip/centos
#持久挂载
#将挂载保存到/etc/fstab 中可以下次开机时,自动启用挂载
vim /etc/fstab
UUID=fef228f1-0a8a-4ac8-8bab-0cb590ff7ff6 / xfs defaults 0 0
UUID=06d75d27-4daa-4729-ac9f-55718e94d870 /boot xfs defaults 0 0
UUID=be6ecf7a-851e-420c-bb65-9979bf830ea2 /data xfs defaults 0 0
UUID=874f4e74-ab3e-4f5e-93f0-cc28483c64da none swap defaults 0 0
:r!blkid /dev/sdb1
r!执行命令行 拿到sdb1的UUID和文件系统类型,模仿上面格式编写。
#如果没有手动挂载,只是把UUID写入了/etc/fdtab,在不重启的情况下需要执行mount -a 生效
mount -a
#查看挂载
mount
#查看文件夹是不是挂载点
findmnt /dev/sdb1
2.下载镜像站的源制作私有yum源
#请先安装并启动httpd 设置为开机自启
yum install httpd;systemctl enable --now httpd
#此处 epel 为例
#首先确保机器可以联网 && 配置了需要下载的源的yum仓库路径。如:epel下载之前得在'/etc/yum.repo.d/'配置epel
#查看本机有没有epel
dnf repolist
#下载相关仓库包和元数据
#CentOS 8 写法 --download-metadata 加此选项可以下载元数据
dnf reposync --repoid=epel --download-metadata -p /var/www/html
#CentOS 7 以前版本,reposync工具来自yum-utils包,没有先安装yum -y install yum-utils
reposync --repoid=epel --download-metadata -p /var/www/html
#下载相关关的key文件 RPM-GPG-KEY-EPEL-8 | RPM-GPG-KEY-EPEL-7 | RPM-GPG-KEY-EPEL-6
wget -P /var/www/html/epel/ https://mirrors.cloud.tencent.com/epel/RPM-GPG-KEY-EPEL-8
#下载完后目录下没有repodata/文件夹 需要执行
yum -y install createrepo
createrepo /var/www/html/epel/
3.初学源码编译过程
为什么需要源码编译
答:1.官方没有安装包或版本不是我需要;2.编译的时候可以进行特性定制,实现企业需求
#安装前准备:关闭防火墙和selinxu
#以httpd-2.4.46 为例;
官网:http://httpd.apache.org/
#从官网下载所需要的版本并解压
wget https://mirrors.bfsu.edu.cn/apache//httpd/httpd-2.4.46.tar.bz2 /usr/local/src
cd /usr/local/src
tar -xvf httpd-2.4.46.tar.bz2
#编译三步走
#1.调用./configure 生成Mkefile文件;通过选项传递参数,指定安装路径、启用特性等;
#--prefix 安装目录 --enable-ssl 启用加密
./configure --prefix=/apps/httpd --enable-ssl
#2.编译并安装 -j 指定cpu核数
cd /usr/local/src/httpd-2.4.46
make -j 4 && make install
#3.配置环境变量,把路径写入PATH变量里 生成httpd.sh文件
echo 'PATH=/apps/httpd/bin:$PATH' > /etc/profile.d/httpd.sh
. /etc/profile.d/httpd.sh
#4.启动
apachectl start
#5.指定服务用apache用户运行
groupadd -g 88 -r apache
useradd -u 88 -r -g apache -d /apps/httpd -s /sbin/nologin apache
vim /apps/httpd/conf/httpd.conf
User apache
Group apache
#6.重启服务
apachectl -k restart