rpm、yum、apt、仓库以及私有仓库

422 阅读7分钟

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