第四周知识总结

Rpm 软件包

1)安装:rpm {-i|--install} [install-options] PACKAGE_FILE…

-v: verbose 显示详细过程

-vv:

-h: 以#显示程序包管理执行进度

常用用法rpm -ivh PACKAGE_FILE

rpm包安装[install-options]

--test: 测试安装,但不真正执行安装,即dry run模式

--nodeps:忽略依赖关系

--replacepkgs | replacefiles

--nosignature: 不检查来源合法性

--nodigest:不检查包完整性

--noscripts:不执行程序包脚本

%pre: 安装前脚本 --nopre

%post: 安装后脚本 --nopost

%preun: 卸载前脚本 --nopreun

%postun: 卸载后脚本 --nopostun

如果把一个文件如tree删了

第一种方法可以进行覆盖安装包

rpm-ivh /misc/cd/BaseOS/Packages/tree-1.7.0-15.el8.x86_64.rpm

第二种方法 (缺点是会改变文件属性信息)

或者用rpm2cpio工具把tree.rpm包进行解压把tree文件

Rpm2cpio /misc/cd/BaseOS/Packages/tree-1.7.0-15.el8.x86_64.rpm |cpio -idv ./usr/bin/tree(idv后面加上要解包的文件到当前目录下)

再把usr/bin/tree mv到/usr/bin/里面就可以了

--replacepkgs

--nosignature: 不检查来源合法性

--nodigest:不检查包完整性

--noscripts:不执行程序包脚本

%pre: 安装前脚本 --nopre

%post: 安装后脚本 --nopost

%preun: 卸载前脚本 --nopreun

%postun: 卸载后脚本 --nopostun

 

2)查询:rpm {-q|--query} [select-options] [query-options

常用查询用法:-qi PACKAGE,

-q --changelog:查询rpm包的changelog:

-qa 查询所有包

-q PACKAGE 查看包

-qi PACKAGE 查询包的描述信息

-qc PACKAGE 查看程序的配置文件

-ql PACKAGE 安装之后查看包内生成哪些文件

-qd PACKAGE 只想查出文档

-q --scripts PACKAGE 程序包自带的脚本

-qf FILE 可以查看磁盘上文件到底来源于哪个包

-qpi PACKAGE_FILE 在安装前查看包文件信息 加上p表示后面跟的是文件路径文件名

-qpl PACKAGE_FILE, ...  安装前查看安装包在磁盘上生成哪些文件l为list 列出将要生成那些文件

#和CAPABILITY(能力)相关

--whatprovides CAPABILITY:查询指定的CAPABILITY由哪个包所提供

--whatrequires CAPABILITY:查询指定的CAPABILITY被哪个包所依赖

--provides:列出指定程序包所提供的CAPABILITY

-R:查询指定的程序包所依赖的CAPABILITY

 

 

升级rpm包升级

rpm {-U|--upgrade} [install-options] PACKAGE_FILE...

rpm {-F|--freshen} [install-options] PACKAGE_FILE

upgrade:安装有旧版程序包,则“升级”,如果不存在旧版程序包,则“安装”

freshen:安装有旧版程序包,则“升级” 如果不存在旧版程序包,则不执行升级操作

--oldpackage:降级

--force: 强制安装

常用组合

rpm -Uvh PACKAGE_FILE ...

rpm -Fvh PACKAGE_FILE ...

 

 

升级注意项:

(1) 不要对内核做升级操作;Linux支持多内核版本并存,因此直接安装新版本内核

(2) 如果原程序包的配置文件安装后曾被修改,升级时,新版本提供的同一个配置文件不会直接覆盖老 版本的配置文件,而把新版本文件重命名(FILENAME.rpmnew)后保留

 

包校验:

在安装包时,系统也会检查包的来源是否是合法的

检查包的完整性和签名

rpm -K|--checksig rpmfile

在检查包的来源和完整性前,必须导入所需要公钥

cat /etc/pki/rpm-gpg/RPM-GPG-KEY-centosofficial(查看公钥)

导入公钥

rpm --import /etc/pki/rpm-gpg/RPM-GPG-KEY-contosofficial

再次进行校验

rpm -K|--checksig rpmfile

Signature ok校验成功

rpm -qa “gpg-pubkey(查询刚才导入的秘钥)

软件在安装时,会将包里的每个文件的元数据,如:大小,权限,所有者,时间等记录至rpm相关的数

据库中,可以用来检查包中的文件是否和当初安装时有所变化

rpm {-V|--verify} [select-options] [verify-options]

 

 

包卸载

格式rpm {-e|--erase} [--allmatches] [--nodeps] [--noscripts] [--notriggers] [--test] PACKAGE_NAME ...

注意:当包卸载时,对应的配置文件不会删除, FILENAME.rpmsave形式保留

范例:强行删除rpm包,并恢复

[root@centos7 ~]#rpm -e rpm --nodeps

#重启进入rescue模式

#mkdir /mnt/cdrom

#mount /dev/sr0 /mnt/cdrom

#rpm -ivh /mnt/cdrom/Packages/rpm-4.11.3-40.el7.x86_64.rpm --root=/mnt/sysimage

#reboot

 

 

 

 

 

统计rpm的架构类型及相应的包数量的三种方法:

[root@centos8 Packages]#pwd

/misc/cd/BaseOS/Packages

1)[root@centos8 Packages]#ls *.rpm | grep -Eo '[^.]+\.rpm$'| grep -Eo '^[^.]+'|sort |uniq -c

   389 i686

   211 noarch

  1061 x86_64

2)[root@centos8 Packages]#ls *.rpm |rev|cut -d. -f2|rev |sort |uniq -c

   389 i686

   211 noarch

  1061 x86_64

3)[root@centos8 Packages]#ls *.rpm | grep -Eo '[^.]+\.rpm$'|cut -d. -f1|sort |uniq

 

Yum

在/etc/yum.conf 进行vim配置

配置仓库最重要的几点:

1.name 可缺失但是最好写上

2.路径 一种是mirrorlist 还有一种是baseurl(一般来说使用较多 支持加变量)

3.gpgcheck 如果是1 需要再加上一行gpgkey

4.enable可以不写

5.配置仓库的时候必须放在/etc/yum.repos.d下 而且必须以repo为后缀

name=Some name for this repository

baseurl=url://path/to/repository/ 仓库的真正路径

enabled={1|0} 0是禁用 1是使用  如果不写默认是1

gpgcheck={1|0} Gpgcheck是对于校验包的签名 默认是1需要检查签名 0是不检查

gpgkey=URL 秘钥路径

enablegroups={1|0}  

failovermethod={roundrobin|priority}

roundrobin:意为随机挑选,默认值

priority:按顺序访问

cost= 默认为1000

Installonly_limit=3是否允许并发安装  同时可以装三个包 最小值为2 如果设为01则不限制

Clean_requiremengts_on_remove=ture 删除包时是否把不使用的包删除

Bset=ture 是否支持安装最新的包 即使缺失依赖性(一般不动 如果想装比较旧的版本需要指定)

 

Yum实际上是Python写的

contos8dnf'python3重新写的 yum  remove删除包时centos8可以选择删除依赖的包

但是cenots7不会  使用yum history

使用yum history info2 查看当初做的事件 再使用 yum history undo 2 把之前安装的包撤销卸载

如果删错包可以使用redo2表示重做 重新装

如何定义仓库路径:repodata元数据仓库 他所在的父目录是谁他就是仓库路径

contos8需要配置两个yum仓库:Baseos以及Appstream

 

yum客户端配置文件

帮助参考: man 5 yum.conf

/etc/yum.conf #为所有仓库提供公共配置

 yum的repo配置文件中可用的变量:

$releasever: 当前OS的发行版的主版本号,如:8,7,6

$arch: CPU架构,如:aarch64, i586, i686,x86_64

$basearch:系统基础平台;i386, x86_64

$contentdir:表示目录,比如:centos-8,centos-7

$YUM0-$YUM9:自定义变量

yum服务器的仓库可以多种形式存在:

fifile:// 本地路径

ftp://

http非加密

Https加密格式

 

/etc/yum.conf #为所有仓库提供公共配置: 

范例:CentOS 8 配置文件

[root@centos8 ~]# ll /etc/yum.conf

lrwxrwxrwx. 1 root root 12 May 14  2019 /etc/yum.conf -> dnf/dnf.conf

[root@centos8 ~]#cat /etc/yum.conf

[main]

gpgcheck=1     #安装包前要做包的合法和完整性校验

installonly_limit=3 #同时可以安装3个包,最小值为2,如设为0或1,为不限制

clean_requirements_on_remove=True   #删除包时,是否将不再使用的包删除

best=True #升级时,自动选择安装最新版,即使缺少包的依赖

范例:CentOS 7的配置文件

[root@centos7 ~]# ll /etc/yum.conf

-rw-r--r--. 1 root root 970 Aug  8 19:57 /etc/yum.conf

[root@centos7 ~]# cat /etc/yum.conf

[main]

cachedir=/var/cache/yum/$basearch/$releasever

keepcache=0

debuglevel=2

logfile=/var/log/yum.log

exactarch=1

obsoletes=1

gpgcheck=1

plugins=1

installonly_limit=5

bugtracker_url=http://bugs.centos.org/set_project.php?

project_id=23&ref=http://bugs.centos.org/bug_report_page.php?category=yum

distroverpkg=centos-release

 

 

具体yum仓库配置:/etc/yum.repos.d/*.repo:

最简化配置:name(描述不要带特殊符号)  baseurl(仓库指向的真正路径 可以写多个)  gpgcheck=0

下载centos的时候默认情况仓库以已经配好指向互联网的大仓库 centos官方网站(但是在国外比较远 一般采用国内站点 如华为 阿里云之类的)

放在了cd /etc/yum.repos.d/下 而且有多个仓库每个仓库各自有各自的文件夹

 

配置centos8yum仓库配置客户端(也可以到网站里面直接下载)

 centos8需要搭建两个yum仓库 也可以放到一个里面 AppStream BaseOS

1.在此目录下建个文件夹把这些仓库做些备份mkdir backup 移动到mv*.repo back/

2.vim 一个以repo为后缀的文件如base.repo

[BaseOS]

name=aliyun BaseOS

baseurl = file:///misc/cd/BaseOS(上课期间优先走光盘源)

        https://mirrors.aliyun.com/centos/8/BaseOS/x86_64/os/

        https://mirrors.huaweicloud.com/centos/8/BaseOS/x86_64/os/          https://mirrors.huaweicloud.com/centos/8/BaseOS/x86_64/os/

gpgcheck=1

gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-centosofficial

enabled=1

~                           

 VimAppstream.repo的文件编辑

[AppStream]

name=aliyun AppStream

baseurl = https://mirrors.aliyun.com/centos/8/AppStream/x86_64/os/

     https://mirrors.huaweicloud.com/centos/8/AppStream/x86_64/os/

gpgcheck=1

gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-centosofficial

enabled=1

  1. cd   然后dnf repolist 查询配置好的仓库
  2. 随之就可以安装软件了  dnf install httpd

   卸载指令:dnf remove httpd 可以把依赖的包同时卸载

   但是contos7就不可以直接卸载依赖包

配置contos67的仓库:(极致简单写法三行)

  1. ./etc/yum.repos.d目录下建个文件夹把这些仓库做些备份mkdir backup 移动到mv*.repo back/ 或者删除         
  2. Vim一个repo为后缀的文件

[base]

name=Base                                                                                              

baseurl =https://mirrors.aliyun.com/centos/$releasever/os/$basearch

contos7centos6一样用此变量就可以通用)

gpgcheck=0    

  1. 可以把改文件scp直接拷贝到centos6scp 10.0.0.203(需要拷贝的ip):/etc/repos.d/   
  2. 直接在一个文件base.repo里同时配置base epel extras三个源

[base]

name=base

baseurl = https://mirrors.aliyun.com/centos/$releasever/os/$basearch

gpgcheck=0

 

[extras]

baseurl = https://mirrors.aliyun.com/centos/$releasever/os/$basearch

gpgcheck=0

 

[epel]

name=epel

baseurl = https://mirrors.aliyun.com/centos/$releasever/os/$basearch

gpgcheck=0

              

 

 

用脚本来配置仓库:vim yum_repo.sh

mkdir /etc/yum.repos.d/backup

mv /etc/yum.repos.d/*.repo /etc/yum.repos.d/backup

cat > /etc/yum.repos.d/base.repo <<EOF

[base]

name=base

baseurl=https://mirrors.aliyun.com/centos/\$releasever/os/\$basearch

gpgcheck=0

EOF

此处变量前需要加上$来表示变量本身的意义 单引号不行  

配置私有yum源仓库:

一:配置客户端服务器

  1. 首先要安装yum -y install httpd(要先配置一下yum仓库指向aliyun或者不配也行指向国外站点centos)会自动生成 ll -d/var/www/html文件夹
  2. systemctl enable --now httpd httpd服务启动起来 相当于在电脑上建个网站
  3. 建个文件下 mkdir /var/www/html/centos/8 -pv(参考aliyuncentos配置) 然后把光盘整个挂到此目录里

4.mount /dev/sr0/mnt/

5.cp -a /mnt/* /var/www/html/centos/8拷贝指向本机ip

 cd /var/www/html/centos/8    ls查看是否有AppStream BaseOS

二:yum客户端配置:

把旧的base做个备份 mv base

[root@repo-client ~]#cat /etc/yum.repos.d/test.repo

[BaseOS]

name=BaseOS

baseurl=http://10.0.0.88/centos/8/BaseOS

gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-centosofficial

[AppStream]

name=Appstream

baseurl=http://10.0.0.88/centos/8/AppStream/

gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-centosofficial

Epel源跟extras源 需要先配置一个指向aliyun之类的仓库然后才能下载元数据 然后执行dnf reposync --repoid=epel --download-metadata   -p

/var/www/html命令 下载之后 再把指向指向本机仓库

清理缓存yum clean 应该先清理缓存在清理配置文件

 

编译源码:

 

C语言源代码编译安装过程

 

利用编译工具,通常只需要三个大的步骤

 

一.  ./configure  (后面可以支持很多参数 可以自己指定路径方便管理)

 

(1) 通过选项传递参数,指定安装路径、启用特性等;执行时会参考用户的指定以及Makefile.in

 

件生成Makefifile

 

(2)编译安装具有依赖性 检查依赖到的外部环境,如依赖的软件包  但是configure可能检查不到位以至于缺失安全包在make环节报错  需要再把缺失的依赖包装上 但是make环节再装就有可能出现错误需要从头再来 把前面文件删掉

 

二.make 根据Makefifile文件,构建应用程序 一定要在解包的目录下 否则找不到

 

加速选项 make -j 加数字(cpu数量)

 

三.make install 复制文件到相应路径

 

注意:安装前可以通过查看README,INSTALL获取帮助  如果比较小的软件只有两步makefile 以及makeinstall 直接会给makefile文件

 

 

 

编译安装tree1.8

 

./configure --help

 

export PATH=/PATH/TO/BIN:$PATH

 

#1 安装相关的依赖包

 

yum install gcc make

 

#2 下载源码并解压

 

tar xvf tree-1.8.0.tgz

 

#3 进入解压缩的目录,README和INSTALL

 

cd tree-1.8.0/

 

cat README

 

cat INSTALL

 

#4 修改源码的版本号

 

sed -i 's#v1\.8\.0#v.18.0#' tree.c

 

#5 编译准备

 

vim Makefile

 

prefix = /apps/tree

 

#6 编译make

 

#7 安装

 

make install

 

#8 修改PATH变量

 

echo 'PATH=/apps/tree/bin:$PATH' > /etc/profile.d/tree.sh

 

. /etc/profile.d/tree.sh (如果直接使用tree 使用的是原来的tree 需要加上路径./tree

 

解决方法 把新tree的路径/apps/bin/tree放在path变量里原来tree路径的前面

 

Vim /etc/profile.d/tree.sh   或者cp /apps/bin/tree /usr/local/bin 或者以软连接的方式

 

#9 验证结果

 

tree --version

 

范例:cmatrix编译安装

 

#1 安装相关包

 

dnf install gcc make ncurses-devel  autoconf

 

#2 下载并解压缩包

 

cd /usr/local/src

 

wget https://github.com/abishekvashok/cmatrix/releases/download/v2.0/cmatrix

 

v2.0-Butterscotch.tar

 

tar xvf cmatrix-v2.0-Butterscotch.tar

 

#3 配置

 

cd cmatrix

 

./configure --prefix=/apps/cmatrix

 

#4 编译并安装

 

make &&  make install

 

#5 配置环境

 

echo 'PATH=/apps/cmatrix/bin:$PATH' > /etc/profile.d/cmatrix.sh

 

. /etc/profile.d/cmatrix.sh 或者用软连接ln -sv /apps/cmatrix/bin/cmatrix /usr/local/bin/

 

 

 

#6运行

 

cmatrix -a -b -C yellow

 

 

 

 

 

范例:centos8 编译安装httpd-2.4.41

 

#1 安装包

 

dnf install gcc make apr-devel apr-util-devel pcre-devel openssl-devel redhat-rpm-config

 

#2 下载并解压缩包

 

tar xvf httpd-2.4.41.tar.bz2

 

#3 配置

 

cd httpd-2.4.43/

 

./configure --prefix=/apps/httpd --sysconfdir=/etc/httpd --enable-ssl

 

#4 编译并安装

 

make -j 4 &&  make install

 

 

 

#5 配置环境

 

echo 'PATH=/apps/httpd/bin:$PATH' > /etc/profile.d/httpd24.sh

 

. /etc/profile.d/httpd.sh

 

#6运行

 

apachectl start

 

#7 指定用apache用户运行

 

useradd -r -s /sbin/nologin apache

 

vim /etc/httpd24/httpd.conf

 

user apache

 

group apache

 

#7生效和验证

 

apachectl stop

 

apachectl

 

ps aux 查看

 

posted @ 2020-04-13 00:58  肖豪  阅读(217)  评论(0编辑  收藏  举报