第8天压缩 xarges sed命令 yum配置 rpm包文件修复

seq 10

seq 10 |xargs echo
1 2 3 4 5 默认跟 echo \n换成空格

[[email protected] ~]#seq  1 10 |xargs echo

[[email protected] ~]#seq  1 10 |xargs
1 2 3 4 5 6 7 8 9 10
[[email protected] ~]#seq  1 10 |xargs  echo
1 2 3 4 5 6 7 8 9 10
[[email protected] ~]#

xargs 默认是属于把所有 前一个命令输入如果输出显示是空行则把空行空格全部压缩成为单个空格在输出

seq 10 |xargs -n 2
强制限定行参数问2

[[email protected] ~]#seq 1 10 |xargs  -n 2
1 2
3 4
5 6
7 8
9 10

echo user{1..10} |xargs -n 1 useradd

[[email protected] ~]#echo user{1..10} |xargs -n 1  useradd
[[email protected] ~]#`echo "user1 user2 " |xargs -n 1  passwd  `< f1
echo {1..100000}|  xargs  > f1  用echo打印数字

xargs 按达到一定条件就换行
10万只换了5次

xargs 经常配合find 命令
find -print0 |xargs -0
find -print0 用ascii的0作为分隔符

compress 默认是f1.Z
-c 是把压缩文件输出显示
-d 解压缩
-v显示过程
comprees -d -c 123.z > 123

compress和gzip如果有后缀系统自动生成颜色
compress 和gzip使用格式都是zcat

compress
gzip
gzip --help
gunzip
只能压缩文件,先用打包工具打包并压缩

m
compress m
m.z

gzip m
m.gz
gzip -d m.gz

gunzip m.gz

gzip -c m > m1.gz 把压缩结果重定向文件

gzip 可以标准输入压缩,对一些命令执行结果
zcat m1.gz 解压缩打印屏幕

cat m | gzip >m2.gz 优势不一定是文件可以是命令执行结果,例如数据库备份
执行mysql查询之后gzip 压缩

[[email protected] test]#find / -name "*.sh" -ls |gzip >f1.gz
lscpu |gizp >f1.gz
gzip -c f1 只是把压缩结果显示在屏幕上

zcat f1.gz

bzip2 ...file.. 后缀是.bz2 压缩比比gzip高

[[email protected] test]#bzip2 -k f1
[[email protected] test]#ll
total 8748
-rw-r--r-- 1 root root 38990 Mar 21 21:00 f1
-rw-r--r-- 1 root root 5304 Mar 21 21:00 f1.bz2
-k keep 保留原始文件
-d 解压缩
bunzip2
bzcat m.bz2 看源文件

[[email protected] test]#expr bzcat f1.bz2 |wc -c / 1024
38k
先看解压缩文件有多大在去做处理

xz 如内核网站 后缀.xz 比bzip 又强大 xz比较慢 但压缩比高
-k
-d
-#
xzcat m.xz

xz--help
gzip -r 压缩文件夹里的文件
cp /etc/fstab f1
cp /etc/fstab f2
mkdir dir
[[email protected] test]#gzip -r dir
[[email protected] dir]#ll
total 8
-rw-r--r-- 1 root root 344 Mar 21 21:33 f1.gz
-rw-r--r-- 1 root root 344 Mar 21 21:33 f2.gz
gzip -r 压缩文件夹里的每个文件

zip可以压缩文件夹 ,window又发送到 压缩zip文件夹
[[email protected] test]#zip -r bbb dir
adding: dir/ (stored 0%)
adding: dir/f1 (deflated 46%)
adding: dir/f2 (deflated 46%)

zip -r 压缩名字 目标文件夹

[[email protected] test]#unzip -p bbb.zip 显示文件全部

zip -r /dir /data/test/dir /dir 压缩生产文件名 后边是压缩文件
unzip dir.zip
recurse into directories 递归压缩文件夹

cpio格式

du -sh /etc 看etc文件多大

tar (tape aRchive 磁带存档 ) 支持打包和压缩
tar -cpvf /path/file.tar file p保留权限 tar保留不了acl权限 c表示创建打包文件
f后边跟上打包生成结果

-r -f 追加
-t -f 预览

tar 不加横线bsd风格 加 -tvf unix风格
tar -xvf etc.tar
tar 把斜线路径删了变相对路径就是,自己当前目录
tar -C /mnt指定解压目录

-j bzip2 -zcvf -Jcvf
tar.bz2 tar.gz tar.xz

打包排除一些文件 -exclude
-exclude=/etc/xxx
-T, --files-from=FILE get names to extract or create from FILE
--unquote unquote filenames read with -T (default)

-X, --exclude-from=FILE exclude patterns listed in FILE

tar zcvf mybackup.tgz -T /root/includefilelist -X /root/excludefileli

指定输入文件列表,排除文件列表

网站上传有限制,这样可以切割上传
split 切割小文件
split -b SIZE -d 文件名 切割文件前缀
split -b 5M -d etc.tar etc.tar
切文件列成数字
split -b 5M etc.tar etc.tar
切割文件列成字母
cat etctar* >etc2.tar


[[email protected] test]#split -b 2000 -d f3.tar.bz  f3tarbz
-rw-r--r-- 1 root root    2000 Mar 22 08:56 f3tarbz00
-rw-r--r-- 1 root root    2000 Mar 22 08:56 f3tarbz01
-rw-r--r-- 1 root root    2000 Mar 22 08:56 f3tarbz02
-rw-r--r-- 1 root root    1180 Mar 22 08:56 f3tarbz03
[[email protected] test]#cat f3tarbz* >f31.tar.bz
-rw-r--r-- 1 root root    7180 Mar 22 08:58 f31.tar.bz
-rw-r--r-- 1 root root    7180 Mar 22 08:44 f3.tar.bz

[[email protected] test]#split -b 2000  f3.tar.bz  f3tarbz

看一下 initramfs-3.10.0-957.el7.x86_64.imgzip
cpio cpio本身也是打包
cd /boot .img flie 看一下
[[email protected] boot]#cpio -tv < initramfs-3.10.0-957.el7.x86_64.img
drwxr-xr-x 3 root root 0 Mar 5 20:39 .
drwxr-xr-x 3 root root 0 Mar 5 20:39 kernel
drwxr-xr-x 3 root root 0 Mar 5 20:39 kernel/x86

cpio也是打过包的文件
cpio -o 打包过程 从内存输出到磁盘
-i 从磁盘 输入到内存 解包过程
-I 指定文件名

cp -r /etc/ /test/
find etc |cpio -ov >etc.cpio
cpio -tv< etc.cpio 预览
cpio -idv < etc.cpio 解包并且生成文件夹

ldd查询文件所依赖的库

ldd /bin/cat
linux-vdso.so.1 => (0x00007ffcfddbc000)

sed强大命令 sed可以修改文件 sed支持正则表达式 sed对后项引用很多

sed 是基于行的方式处理 流编辑器 grep也是捉行

sed pattern space
每次只读1行 <----- 文件
读一行,.然后修改,删除在打印屏幕
之后读第二行,然后处理第二行
‘ ‘这里命令和位置都是按每一行操作


[[email protected] test]#sed  -n  -e   ‘[email protected]^[email protected]@‘ -e  ‘/7/p‘ /etc/fstab

SUPER=d622b96a-4877-4e69-a04c-7fc1b6b8f106 /                       xfs     defaults        0 0
SUPER=45de8522-3568-4aac-b057-9491eb40ff58 /boot                   xfs     de

首先在模式空间对uuid进行替换并且不再屏幕上打印,之后再模式空间替换把/7/打印


[[email protected] test]#sed  -n  -e   ‘/7/p‘ -e  ‘[email protected]^[email protected]@‘ /etc/fstab
# Created by anaconda on Tue Mar  5 20:25:07 2019
UUID=d622b96a-4877-4e69-a04c-7fc1b6b8f106 /                       xfs     defaults        0 0
UUID=45de8522-3568-4aac-b057-9491eb40ff58 /boot                   xfs     defaults        0 0
首先先对模式空间的7匹配打印到屏幕上,之后后把模式空间uuid替换super不输出屏幕

[[email protected] test]#sed  -n  -e   ‘/7/p‘ -e  ‘[email protected]^[email protected]@p‘ /etc/fstab
# Created by anaconda on Tue Mar  5 20:25:07 2019
UUID=d622b96a-4877-4e69-a04c-7fc1b6b8f106 /                       xfs     defaults        0 0
SUPER=d622b96a-4877-4e69-a04c-7fc1b6b8f106 /                       xfs     defaults        0 0

首先先对模式空间的7匹配打印到屏幕上,之后后把模式空间uuid替换super输出屏幕

[[email protected] test]#sed  -n ‘/7/p‘  /etc/fstab |sed    ‘[email protected]^[email protected]@‘
[[email protected] test]#sed  -n ‘/7/p‘  /etc/fstab |sed  -n  ‘[email protected]^[email protected]@p‘
效果一样

sed ‘script‘ input文件
脚本
地址是过滤哪一行
命令执行替代删除
script 是空则全部行

p打印模式空间内容
sed 默认打印模式空间匹配内容

cp /etc/paswd /test/
sed ‘‘ passwd sed读入内容自动打印 读入一行显示一行
sed ‘p‘ passwd 则显示2行 p把前边指定行打印
sed -n ‘ ‘ passwd 不打印模式空间内容

[[email protected] test]#sed   ‘/^1/p‘  f1
111
111
222
333

/^1/p 从模式空间找到^1的打印出来

sed ‘10p‘ passwd
#p #行号

sed支持管道

sed -n ‘2p‘ passwd 只打印第二行
sed -n ‘/parrern/p‘ 正则表达式
sed -n$!p passwd 除了最后一行其他行都打印
!取反
[[email protected] test]#sed -n ‘$!p‘ f1
111
222
意识就是最后一行不打印其他行打印

111
222
333
[[email protected] test]#sed  -n -e  ‘[email protected]^22.*@@‘  -e  ‘w/data/test/f4‘  f1
[[email protected] test]#cat f4
111

333 把模式空间222替换为空并且保存到f4

df | sed -n ‘/^#/p‘ /fstab
sed -n $p passwd 最后一行打印

sed -n ‘3,6p‘ 打印3到6
-n ‘3,+3p‘
-n ‘/part1/,/part2/p‘
-n ‘/^a/,/^s/p‘ passwd只要a 开头的行就找 ,只要有s才结束

打印行号是-n

[email protected] test]#sed  ‘=‘ f1
1
111
2
222
3
333

9点到10点
grep "24/May" access_log |sed -n ‘/2018:09:/p‘

grep "24/May" access_log |sed -n ‘/2018:09:3/,/2018:09:50/p‘

sed 如果后行找不到就全显示

seq10 |sed ‘1~2p‘
每次递增
‘2~3p‘

[[email protected] test]#seq 10  |sed -n ‘2~2p‘
2
4
6
8
10
[[email protected] test]#seq 10  |sed -n ‘2~3p‘
2
5
8

sed ‘2d‘ 删除第二行

[[email protected] test]#cat f4
111
333[[email protected] test]#sed  -n -e  ‘2d‘  -e  ‘w/data/test/f4‘  f1

删除模式空间第二行并且 ,保存模式空间内容到f4

sed ‘/^#/d‘ /etc/fstab 删除模式空间井号开头的行
a 追加字符串
sed ‘/^#/a-----‘ /etc/fstab
sed -i.bak ‘/^#/aalias ls=hostname‘ /etc/fstab 修改文件做备份 不用.bak则直接修改

seq 10 |sed ‘axyz‘ 默认换行显示
[[email protected] test]#seq 3 | sed ‘axyz‘
1
xyz
2
xyz
3
xyz
seq 10 |sed ‘a\ xyz直接在本行显示 转以符显示空格<br/>seq 10 |sed ‘a\ xx\n‘<br/>seq 10 |seda‘‘‘$user‘‘‘‘3个单引号引用变量
‘ixyz‘ 在行前加xyz
[[email protected] test]#name=name
[[email protected] test]#seq 3 | sed ‘a‘‘‘$name‘‘‘‘
1
name
2
name
3
name

[[email protected] ~]#name=`ls`

[[email protected] ~]#echo $name
111 222 early_cpio f1 f2 f3 f4 kernel passwd 非
命令不能在sed变量中引用```$user```  会出现大问题,会把搜索的所有文件打开
111
basher:x:1014:1016::/home/basher:/sbin/nologn
111
sh:x:1015:1017::/home/sh:/sbin/nologn
111
nologin:x:1016:1018::/home/nologin:/sbin/nologn
111
sed: can‘t read 非: No such file or directory

下边少了x回车的原因(\r回车)

[[email protected] test]#seq 3 | sed ‘ax\ryz‘
1
yz
2
yz
3
yz

seq 10 |sed -n ‘3,6w seq2.log ‘ 把满足条件行放到f1.log文件w

[[email protected] ~]#seq 10 | sed -n ‘3,6w  f1.log‘
[[email protected] ~]#cat f1.l
3
4
5
6

seq 10 | sed ‘r /etc/issue‘ 按行读入文件内容
``
[[email protected] ~]#seq 2 | sed ‘r /etc/issue‘ |less
1
\n
\t
\S
Kernel \r on an \m

2
\n
\t
\S
Kernel \r on an \m

首先把模式空间空白行分行打印 屏幕   同时第二个从模式空间找出空白行加行号分行打印

[[email protected] ~]#sed -n -e ‘/^$/p‘ -e ‘/^$/=‘ f1

2

3

5

6


sed 是按行读取

seq 10 | sed ‘=‘  打印行行号

[email protected]@@ 搜索替代 如vim  可以用正则表达式
echo abc  | sed -r  ‘[email protected](a).*@\[email protected]‘  -r是扩展正则表达式

[[email protected] ~]#echo abc |sed -r ‘[email protected]^(a).*@\[email protected]‘
a

cat /etc/default/grub | sed   ‘/CMD/s/(.*)"$/\1 xyz"/‘ 

把\1 \2分组中间加东西
[[email protected] ~]#sed -r    ‘/CMD/[email protected](^.*)(["])[email protected]\1 syz\[email protected]‘     /etc/default/grub
GRUB_CMDLINE_LINUX="crashkernel=auto rhgb quiet syz"
这用1分组后表示
[[email protected] ~]#sed -r    ‘/CMD/[email protected](^.*)"[email protected]\1 syz"@‘     /etc/default/grub 

echo  /aaa/bbb/ccc/  |sed -r ‘[email protected](.*/)([^/]+)/[email protected]\[email protected]‘

[[email protected] ~]#echo /aaa/bbb/ccc/ |sed -r ‘[email protected](.*)/([^/]+)[/][email protected]\[email protected]‘
ccc
[[email protected] ~]#echo /aaa/bbb/ccc/ |sed -r ‘[email protected](.*)/([^/]+)[/][email protected]\[email protected]‘
/aaa/bbb

ifconfig eth0 | sed -rn  ‘2s/.*inet//p‘  |sed ‘s/ .*//‘

先把inet 替换为空再把空格后的所有字符替换为空
ifconfig ens33 |sed -nr   ‘/\<inet\>/[email protected]*inet @@p‘  |sed -r ‘[email protected] .*@@‘

[[email protected] ~]#ifconfig ens33 |sed -nr   ‘/\<inet\>/[email protected]@@p‘|sed -nr ‘[email protected]^[ ]+([^ ]+).*@\[email protected]‘

192.168.80.133

ifconfig eth0 | sed -rn  -e  ‘2s/.*inet//‘    -e sed ‘‘

[[email protected] ~]#ifconfig ens33 |sed -rn -e  ‘2s/.*inet //‘  -e ‘2s/ .*//p‘
192.168.80.133
先在模式空间2行把.*inet 替换为空 之后在取模式空间第2行并且表现出来

ifconfig eth0  |sed -nr ‘2s/[^0-9]+([0-9.]+).*/\1/p‘

vim sed.txt
s/root/&er/p/g

sed -f  sed.txt  passwd

网卡名不一样

net.ifnames=0
/boot/grup2/grub.cfg

sed  -n ‘/.*linux16/[email protected]*@& [email protected] ‘ /boot/grup2/grub.cfg

[[email protected] ~]#cat /etc/httpd/conf/httpd.conf 

sed ‘/^#/d;/^$/d‘  2个命令一起做用分号隔开

-i.bak 是修改文件,并且备份一个以.bak结尾的源文件
[[email protected] ~]#cat f1
11

22

[[email protected] ~]#sed -i  ‘a\111‘ f1
[[email protected] ~]#cat f1
11
111

111

111

[[email protected] ~]#paste f1 f1.bak
11  11
www 111
111
www 111

www 111
111 22
www 111

模式空间 保持空间 如果模式空间处理没处理完 找个地方放保持空间放一放
待会再读回来
小p是读取模式空间内容输出到屏幕 先执行括号外 在执行括号内
P是在默认模式空间输出之前打印

[[email protected] ~]#sed P   f1
111
111
222
222
333
333

[[email protected] ~]#sed -n ‘n;p‘ f1
222

-h 把模式空间覆盖 保持空间
-H 追加模式空间内容 进保持空间
g 把保持空间覆盖 模式空间
G 追加
d 删除模式空间行
D 删除模式空间第一行删了
n把下一行读进来


[[email protected] ~]#cat f1
111
222
333
先读取下一行在
[[email protected] ~]#sed -n ‘n;p‘ f1
222

软件包管理

特定格式的文本文件就是源码,转换2进制才能真正执行

源码编译二进制安装
或者人家直接二进制包安装
rpm打包在1个文件中 缺陷依赖性问题 a 依赖b包 b依赖c包
红帽推出了 yum的解决依赖性的方案

红帽8.0版本centos 8.0 是dnf 管理代替yum管理

ubuntu软件管理

重点rpm yum
window格式和linux 格式不兼容
window PE 格式二进制
file /bin/cat
notepad.exe windows 不符合ABI接口标准

ABI
API 调用软件模块(如压缩功能,加密功能)
POSIX

编译语言安装步骤

源代码 ---预处理 -----编译 -----汇编 -----链接
文本文件简单处理 加行号 去注释 预处理.i文件 汇编转换.o文件
链接一些库 .a .so 通过第三方库结合起来
之后就能使用
静态编译 比如加密模块.a
A软件 链接 加密a模块
a软件 和 加密a模块链接一起
b软件 和 加密a模块链接一起
如果运行2个程序则ab都有加密a模块
动态编译动态库.so
A软件 链接 加密a
B软件
a,b软件系统运行,临时调用加密模块a
如果缺动态库则ab都不能运行

ldd /bin/cat 查看依赖库路径
ldd查询文件所依赖的库

ll /lib64/libc.so.6

重点库的作用比二进制程序更重要
如果库被移走 解决方法
mv /lib64/libc.so.6 /root
1esc 光盘插入按1次esc调出启动菜单 (工作中调bios) 在starting菜单中操作
2选3CD -ROM Drive 系统启动
3选第三个troubleshooting
4选2 Rescue a CentOS Linux system 救援 用光盘加载一个小的linux 启动时用光盘的linux 而不是硬盘输入,硬盘输入挂在/mnt/sysimage
5 选1continue
6 (chroot 改根/)不做
7df 查看根分区位置
8mv /mnt/sysimage/root/lib /mnt/sysimage/lib64
所有命令都是救援时光盘命令

作业 10 rm /lib64/libc.so.6

源码可以选择编译之后生成二进制 (想用什么功能取什么功能符合生产需求)
编译完整的二进制局限是固定在某个系统中

java2次编译过程

第一次是先中间编译的中间码 ,之后虚拟机系统转换解释执行
各个操作系统都有Java虚拟机

开发语言
c 面向操作系统 ,底层网络通信,内核,(apache)用系统级开发
c++

http2.4 .38
linux 5.0.3
解压缩 后缀.c就是c语言
tar -xvf

find linux / -name ".c" |wc -l
find linux / -name "
.c" |wc -l
cat find linux / -name "*.c" |wc -l

应用级开发
一个.c简单 但是多个.c编译很费劲
所以Debian 系统发明了package 的概念 专业公司把文件转换二进制打成包
红帽 包管理工具 rpm
debian deb文件用dpkg 管理工具
包是打包文件 ,有各种各样文件类似tar
rpm类似打包文件解压就能用

Packages 里全都是现成二进制文件

命名1软件名称 2版本号 3编译次数,打包次数 4红帽企业版5 x86 64 64位操作系统 i68632系统 noarch哪个cpu都行

ls .rpm |sed -nr ‘s/^..([^.]+).rpm$/\2/p‘ |sort |uniq -c

mount /dev/cdrom /mnt

神奇的自动挂载命令
[[email protected] /]#ls /misc/cd
CentOS_BuildTag RELEASE-NOTES-en-US.html
EFI repodata
EULA RPM-GPG-KEY-CentOS-6
GPL RPM-GPG-KEY-CentOS-Debug-6
images RPM-GPG-KEY-CentOS-Security-6
isolinux RPM-GPG-KEY-CentOS-Testing-6
Packages TRANS.TBL

安装神奇自动挂载光盘目录autofs

1/在http://www.rpmfind.net官网找到autofs依赖安装hesiod-3.2.1-3.el7.x86_64.rpm在安装autofs

[[email protected] Packages]#rpm -ivh /misc/cd/Packages/autofs-5.0.5-139.el6.x86_64.rpm

[[email protected] mnt]#rpm -ivh /run/media/ckw/CentOS\ 7\ x86_64/Packages/hesiod-3.2.1-3.el7.x86_64.rpm

2把自动挂载和现在启动autofs打开
[[email protected] mnt]#systemctl start autofs.service ;systemctl enable autofs.service

包可以分类 相关包分类
zlib - devel 开发相关
?包:分类和拆包Application-VERSION-ARCH.rpm: 主包
Application-devel-VERSION-ARCH.rpm 开发子包
Application-utils-VERSION-ARHC.rpm 其它子包
Application-libs-VERSION-ARHC.rpm 其它
lib
包之间有依赖关系 还有循环依赖 a--b--c--a
循环依赖一起装
yum 解决rpm包依赖性 yum要经过初始化配置

apt :deb
zypper suse
dnf 未来centos8 要代替yum 优点速度快

解包rpm rpm就是打包文件
rpm2cpio 包 |cpio -tv 转换rpm 变cpio

这个命令查看的 hesiod.so.0 -> libhesiod.so.0.0.0 对应库,也就是autofs对应库

rpm2cpio /run/media/ckw/CentOS\ 7\ x86_64/Packages/hesiod-3.2.1-3.el7.x86_64.rpm |cpio -tv

[email protected] mnt]#rpm2cpio /run/media/ckw/CentOS\ 7\ x86_64/Packages/hesiod-3.2.1-3.el7.x86_64.rpm |cpio -tv
-rwxr-xr-x 1 root root 11360 Jun 10 2014 ./usr/bin/hesinfo
lrwxrwxrwx 1 root root 18 Jun 10 2014 ./usr/lib64/libhesiod.so.0 -> libhesiod.so.0.0.0

rpm包里文件
rpm属性信息,名称版本依赖包
rpm包的有些包有安装和卸载脚本

数据库/var/lib/rpm 初始化状态 各种以上信息 如果删了这个目录系统就分不清,那些包装那些没装
安装软件自动更新数据库以上数据库内容 ,哈希算法 ,初始化,
数据库可以校对rpm包源文件

mv /var/lib/rpm /data 移走则rpm查询无效

ll mariadb.
mirrors.sohu.com aliyun
www.mariadb.org

这是查看二进制文件库查看方法
[[email protected] Packages]#ldd /bin/cat
linux-vdso.so.1 => (0x00007ffeb7bae000)
libc.so.6 => /lib64/libc.so.6 (0x00007f2df402e000)
/lib64/ld-linux-x86-64.so.2 (0x00007f2df43fb000)

ldconfig 加载配置文件中指定的库

查看缓存本机所有库的文件名以及路径映射关系

[[email protected] Packages]#/sbin/ldconfig -p /lib64/libc.so.6
libBrokenLocale.so.1 (libc6,x86-64, OS ABI: Linux 2.6.32) => /lib64/libBrokenLocale.so.1
libAnacondaWidgets.so.2 (libc6,x86-64) => /lib64/libAnacondaWidgets.so.2
ld-linux-x86-64.so.2 (libc6,x86-64) => /lib64/ld-linux-x86-64.so.2

配置文件:/etc/ld.so.conf, /etc/ld.so.conf.d/*.con
缓存文件:/etc/ld.so.cache
[[email protected] Packages]#ll /etc |grep ld
-rw------- 1 root root 232 Oct 31 08:17 autofs_ldap_auth.conf
drwxr-x---. 7 root root 133 Mar 5 20:31 firewalld
-rw-r--r-- 1 root root 80058 Mar 22 17:38 ld.so.cache
-rw-r--r--. 1 root root 28 Feb 28 2013 ld.so.conf

epel 源 有些企业先把epel源都下载之后内部安装

rpmbuild 自己定制rpm包需要编写spark文件

rpm -ivh h显示进度## i安装 v显示过程

mount /dev/sr0 /mnt 临时挂载重启消失
centos 6 /misc
ls /misc/cd 命令自动挂载 直接挂载到/misc/cd
centos 7
1先装软件
rpm -ivh autofs- 5
在rpm官网解决autofs依赖关系
可能产生依赖关系
2在qq看启动

mount 命令看挂载情况
[[email protected] cd]#mount
/dev/sr0 on /misc/cd type iso9660 (ro,nosuid,nodev,relatime,uid=1000,gid=1000,iocharset=utf8,mode=0400,dmode=0500)

umount /mnt

rpm -ivh vsftpd3-0.2 -25
[[email protected] cd]#rpm -ivh /misc/cd/Packages/vsftpd-3.0.2-25.el7.x86_64.rpm


无意中把/usr/bin/tree 命令删了
[[email protected] cd]#\rm -f /usr/bin/tree
1先查看一下tree里的文件
rpm2cpio /misc/cd/Packages/tree-1.6.0-10.el7.x86_64.rpm |cpio -tv
2tree转换cpio格式之后解压缩/usr/bin/tree
[[email protected] ~]#rpm2cpio /misc/cd/Packages/tree-1.6.0-10.el7.x86_64.rpm |cpio -id ./usr/bin/tree
3[[email protected] ~]#mv  usr/bin/tree  /usr/bin/

vsftpd
rpm -q 包名 查询某个包 用包名 必须精准写包名才能查到
rpm -aq 显示所有包名
rpm -aq |grep vsf
rpm -aq "vsf*"

rpm -e 包名 卸载 包
rpm -q 包名 查询包全名安装版本系统信息
[[email protected] bin]#rpm -q vsftpd
vsftpd-3.0.2-25.el7.x86_64
[[email protected] bin]#rpm -q httpd
httpd-2.4.6-88.el7.centos.x86_64

vsftpd报警是因为缺key

--test 假装安装但不装 测试安装
[[email protected] bin]#rpm -ivh --test /misc/cd/Packages/httpd-2.4.6-88.el7.centos.x86_64.rpm
Preparing... ################################# [100%]
package httpd-2.4.6-88.el7.centos.x86_64 is already installed

--nodeps 忽略依赖关系安装

rpm -ivh http-2.4.6
replacepkgs|replacefiles 两个文件一样强制把文件覆盖
--replacefiles ignore file conflicts between packages
忽略包之间的文件冲突覆盖
--replacepkgs reinstall if the package is already present
重新安装包文件
rpm -ivh --replacepkgs /misc/cd/Packages/tree-1.6.0-10.el7.x86_64.rpm
--nosignature: 不检查来源合法性
--nodigest:不检查包完整性

--noscripts:不执行程序包脚本
%pre: 安装前脚本 --nopre
%post: 安装后脚本 --nopost
%preun: 卸载前脚本 --nopreun
%postun: 卸载后脚本 --nopost

[[email protected] bin]#rpm -q --scripts postfix   查询脚本信息
preinstall scriptlet (using /bin/sh):
# Add user and groups if necessary
/usr/sbin/groupadd -g 90 -r postdrop 2>/dev/null
/usr/sbin/groupadd -g 89 -r postfix 2>/dev/null
/usr/sbin/groupadd -g 12 -r mail 2>/dev/null

rpm -q tree
rpm -ql tree 查看tree依赖文件列表 也就是rpm文件里的文件
[[email protected] bin]#rpm -ql tree
/usr/bin/tree
/usr/share/doc/tree-1.6.0
/usr/share/doc/tree-1.6.0/LICENSE
/usr/share/doc/tree-1.6.0/README
/usr/share/man/man1/tree.1.gz

\rm -f /usr/bin/tree

rpm -ivh /misc/cd/Pac/tree-1.6
rpm -ivh /misc/cd/Pac/tree-1.6 --replacepkgs 覆盖安装

rpm2cpio 文件 | 看qq如何操作

把tree删了
[[email protected] bin]#rpm -ivh --replacepkgs  /misc/cd/Packages/tree-1.6.0-10.el7.x86_64.rpm
无意中把/usr/bin/tree 命令删了
[[email protected] cd]#\rm -f /usr/bin/tree
1先查看一下tree里的文件
rpm2cpio /misc/cd/Packages/tree-1.6.0-10.el7.x86_64.rpm |cpio -tv
2tree转换cpio格式之后解压缩/usr/bin/tree
[[email protected] ~]#rpm2cpio /misc/cd/Packages/tree-1.6.0-10.el7.x86_64.rpm |cpio -id ./usr/bin/tree
3[[email protected] ~]#mv  usr/bin/tree  /usr/bin/
rpm权限都配好不容易出错

--nosignature 安装软件需要检查签名看看合法来源,如果系统缺少签名,则会有这个检查
添加签名功能,把签名信息补全 ,
签名类似盖章
如猪肉盖章,盖章则安全
rpm 缺少相关签名文件则报警

--nodigest 如果看包破坏检查包的摘要
--noscript 不允许安装包脚本

rpm -U 如果有新版本就删除旧版本, 而且没有这个包就安装

rpm -U 升级版本则 旧包删除 升级慎重 (用的少)一般用新的机器重新安装
U既能安装又能升级
F 没有版本就不装 ,有新版本就成绩

--oldpackage 降级

--force 强制安装覆盖安装

内核问题,文件管理硬件管理文件系统
内核升级
用rpm内核文件升级
用安装软件升级内核

内核带版本号不会出现覆盖问题用安装方法让多个版本并存

远程安装就是把路径写上网络路径需映射文件夹使用

(1) 不要对内核做升级操作;Linux支持多内核版本并存,因此直接安装新版本内核
(2) 如果原程序包的配置文件安装后曾被修改,升级时,新版本提供的同一个配置文
件不会直接覆盖老版本的配置文件,而把新版本文件重命名(FILENAME.rpmnew)后
保留

rpm -ivh centos7.5 kernel-3.10 862 --force

rpm -ivh 包 7.5 --force 强制安装

想用新功能只能装内核
[[email protected] Packages]#rpm -ivh kernel-3.10.0-862.el7.x86_64.rpm
rpm -e kernel-3.10 862

kernel-3.10.0-862.el7.x86_64.rpm
内核里的东西开机加载内存,所可以卸载内核,但开机则不能查到
rpm -ivh http://mirrors.sohu.com/centos/7.5.1804/os/x86_64/Packages/kernel-3.10.0-862.el7.x86_64.rpm --force

ip a 看机器联网
之后 os Page /文件 把网络连接复制

rpm -qf 文件 查询rpm数据库文件的指定包 rpm -qf /usr/bin/tree tree-1.6.0-10.el7.x86_64
rpm -q --whatprovides 文件 查询rpm数据库文件的指定包同上 rpm -q --whatprovides /lib64/libc.so.6 glibc-2.17-260.el7.x86_64

rpm -ql 包名 list 列出包文件信息 rpm -ql tree /usr/bin/tree /usr/share/doc/tree-1.6.0
rpm -qpl 包名文件光盘路或者联网路径 [email protected] Packages]# 查询包非安装文件所有文件信息 rpm -qpl zziplib-utils-0.13.62-9.el7.x86_64.rpm

rpm -q 包名 --provides 查看包具有哪些能力就是给哪些包提供依赖

rpm -qa 包名 可以用通配符 查询已安装所有包 [[email protected] ~]#rpm -aq kern* kernel-tools-libs-3.10.0-957.el7.x86_64

rpm -qi 包名 查询完成信息

rpm -qip 包名文件光盘路或者联网路径 查询位安装文件详细信息rpm -qip tree-1.6.0-10.el7.x86_64.rpm

如果一个包装了则这么查询
rpm -qi tree 查询详细包信息 URL 获取最新地址
http://mama.indstate.edu/users/ice/tree/
下载最新tree]

[[email protected] ~]#rpm -qi tree
Name        : tree
Version     : 1.6.0
Release     : 10.el7
Architecture: x86_64
Install Date: Fri 22 Mar 2019 06:03:41 PM CST
Group       : Applications/File
Size        : 89505
License     : GPLv2+
Signature   : RSA/SHA256, Fri 04 Jul 2014 01:36:46 PM CST, Key ID 24c6a8a7f4a80eb5
Source RPM  : tree-1.6.0-10.el7.src.rpm
Build Date  : Tue 10 Jun 2014 03:28:53 AM CST
Build Host  : worker1.bsys.centos.org
Relocations : (not relocatable)
Packager    : CentOS BuildSystem <http://bugs.centos.org>
Vendor      : CentOS
URL         : http://mama.indstate.edu/users/ice/tree/
Summary     : File system tree viewer
Description :
The tree utility recursively displays the contents of directories in a
tree-like format.  Tree is basically a UNIX port of the DOS tree
utility.

如果没装则 rpm -qip /misc/cd /P/ tree 要写文件路径 p是文件名不是包名
qpl 查询包要安装文件

rpm -qf /bin/cat 查寻文件来自那个包 ,
删文件不影响数据库则数据库依然能查
rm -f /usr/bin/tree
rpm -qf /usr/bin/tree
rpm -qi 包 看这个包信息 URL 之后看cat源码

rpm -q --whatprovides 看看文件需要的包
rpm -q --provids 看包具有那能力
rpm --whatrequires 看依赖性

rpm -qc bash 看bash包括哪些配置文件
rpm -qd 列文档

rpm --changelog bash 看每次版本更新日志
-R 反向查询 ,去看bash依赖的能力

rpm 校验 如安装包记录属性 看包校验ppt

rpm -V tree 看 tree属性是否有不同,所用的是数据库,
rpm -V tree
S.5....T. /usr/bin/tree

大小变化 哈希变,时间戳变化
包的校验
会检查包的签名就是章
安装检查包的合法性

rpm -K rpm包 查看包的完整性 报警原因缺少校验包的工具

1缺少key   先rpm -K  看一下有没有KEY

[[email protected] Packages]#rpm -K tree-1.5.3-3.el6.x86_64.rpm
tree-1.5.3-3.el6.x86_64.rpm: RSA sha1 ((MD5) PGP) md5 NOT OK (MISSING KEYS: (MD5) PGP#c105b9de)

2 rpm --import  光盘的KEY  安装

[[email protected] Packages]#rpm --import /misc/cd/RPM-GPG-KEY-CentOS-6

3安装完成
[[email protected] Packages]#rpm -K tree-1.5.3-3.el6.x86_64.rpm
tree-1.5.3-3.el6.x86_64.rpm: rsa sha1 (md5) pgp md5 OK

4查看key
[[email protected] Packages]#rpm -qa "gpg-*"
gpg-pubkey-c105b9de-4e0fd3a3

[[email protected] Packages]#rpm -qa "gpg*"
gpgme-1.3.2-5.el7.x86_64
gpg-pubkey-f4a80eb5-53a7ff4b

毁坏命令tree如何查询看是否被毁备用是不是出厂

RPM-GPG 类似验钞机导入就可以检查包来源
把公钥文件导入系统中才能看包的合法性
rpm --import
rpm -qa ""
rpm -e
一旦导入包发生一点点损坏则包能查出
echo >>tree
rpm -K tree
[[email protected] Packages]#rpm -K tree-1.6.0-10.el7.x86_64.rpm

在安装 rpm -ivh tree
则不报警

rpm 使用必须记住 安装卸载
ql qa
qi qf -e -i

centos 8 dnf

centos 7 yum 依赖一些服务器端口和配置

yum仓库必须通过共享方式发布网络,如
方式
ftp
http
https
yum仓库如mirrors.aliyun.com
客户端和服务器端在本机则不用

    OS

yum client yum server
config要写yum server path路径 repo仓库内容包含rpm包 和元数据(包的分组依赖性)
yum meta data

1先访问元数据yumserver repo,之后下载本机,yum meta data
2如果需要别的包下载到本地文件夹之后安装完成在删除
3yum install tree

1先看/etc/yum.conf 里如何配置yum
把配置文件放在 /etc/yum.repos.d 并且命名 file.repo

# PUT YOUR REPOS HERE OR IN separate files named file.repo
# in /etc/yum.repos.d

2 创建 一个backup文件夹 把.repo结尾文件放到 backup 此时仓库文件不生效了
[[email protected] yum.repos.d]#mkdir backup
[[email protected] yum.repos.d]#mv *.repo backup

3 配置yum源
1 [base]
2 name=aliyun base
3 baseurl=https://mirrors.aliyun.com/centos/$releasever/os/$basearch/
4 #gpgcheck=
5 gpgkey=https://mirrors.aliyun.com/centos/7/os/x86_64/RPM-GPG-KEY-CentOS-7

https://mirrors.aliyun.com/centos/7/

看repo data 在哪就是哪是路径
1先看版本 cenots 7 赋值链接
2 cachedir= 下载文件夹
keepcache 0文件删除的
logfile= yum日志记录
gpgcheck= 1 1表示检查 默认检查 检查包合法性 rpm -K 1是把Key倒进去 2是不检查
in /etc/yum.repos.d/ 并且命名 file.repo 这个是config要写yum server path路径

vim base.repo
1必须写仓库编号
[base]
baseurl=路径
baseurl=路径不用写死要在centos 7 centos 6通用
gpgcheck=1 1检查为默认 0 设置为不检查
gpgkey= KEY 路径
name=aliyun base

y是安装 d是下载
key 导入也是yes
一定要知道包名
yum install httpd

建 epel.repo源
gpgcheck=0
yum repolist 列出所有yum源

[[email protected] yum.repos.d]#yum repolist
Loaded plugins: fastestmirror, langpacks
Loading mirror speeds from cached hostfile
epel                                                                       | 4.7 kB  00:00:00
(1/3): epel/group_gz                                                       |  88 kB  00:00:00
(2/3): epel/updateinfo                                                     | 1.0 MB  00:00:00
(3/3): epel/primary_db                                                     | 6.6 MB  00:00:00
repo id                                        repo name                                    status
base/7/x86_64                                  aliyun base                                  10,019
epel                                           aliyun epel                                  12,985
repolist: 23,004

[[email protected] yum.repos.d]#cat base.repo  cdrom.repo  epel.repo
[base]
name=aliyun base
baseurl=https://mirrors.aliyun.com/centos/$releasever/os/$basearch/
#gpgcheck=
gpgkey=https://mirrors.aliyun.com/centos/7/os/x86_64/RPM-GPG-KEY-CentOS-7
enabled=0
[cdrom]
name=cdrom
baseurl=file:///misc/cd
gpgcheck=1
gpgkey=file:///misc/cd
#enabled=0  jinyong
[epel]
name=aliyun epel
baseurl=https://mirrors.aliyun.com/epel/7/x86_64/
gpgcheck=0
enabled=0

yum install sl
火车

如何禁用仓库
yum repolist
enabled=0 禁用yum仓库 启用则是1

yum server 上课期间最好不用网路路径,利用光盘做yum源 找个光盘文件夹

ls /misc/cd
yum autofs
第一个开机启动
第二个立即启动
cdrombace
本地路径是file:///misc/cd

yum 缓存会影响安装

yum clean all 清空缓存

yum reinstall tree -y 重装
yum remove tree -y 卸载

rpm -q tree qq 查询脚本

重点 gz xz bz2 tar
sed 批量改文件
rpm -ql -qi -qf yum client 配置

原文地址:https://blog.51cto.com/14230597/2388157

时间: 2024-11-03 22:38:44

第8天压缩 xarges sed命令 yum配置 rpm包文件修复的相关文章

Linux命令yum和rpm

yum命令使用 可以简化软件安装命令 yum可以做软件的 1自动安装,安装软件的时候会自动安装需要的依赖 yum install 软件名如安装epel源yum install epel-release 2删除软件.(这个只能删除这个软件,不会删除相关依赖) yum install 软件名 要删除相关依赖需要做回滚操作 比如意外安装的erlang这个软件包及其依赖,我们想恢复到原来的环境.我们要使用回滚操作 安装时使用yum install erlang 使用yum history list er

五周第二次课(1月9日) 7.6 yum更换国内源 7.7 yum下载rpm包 7.8/7.9 源码包安装

五周第二次课(1月9日)7.6 yum更换国内源7.7 yum下载rpm包7.8/7.9 源码包安装扩展1. 配置yum源优先级 http://ask.apelearn.com/question/7168 2. 把源码包打包成rpm包 http://www.linuxidc.com/Linux/2012-09/70096.htm 命令::================================================================================

7.6 yum更换国内源;7.7 yum下载rpm包;7.8 -7.9 源码包安装

扩展: 1. 配置yum源优先级 http://ask.apelearn.com/question/7168 2. 把源码包打包成rpm包 http://www.linuxidc.com/Linux/2012-09/70096.htm 7.6 yum更换国内源 1. 进入/etc/yum.repos.d目录下: [[email protected] ~]# cd /etc/yum.repos.d 2. 删除本地仓库配置文件:rm -f 仓库配置文件 [[email protected] yum.

7.6 yum更换国内源 7.7 yum下载rpm包 7.8/7.9 源码包安装

7.6 yum更换国内源 7.7 yum下载rpm包 7.8/7.9 源码包安装 扩展 1. 配置yum源优先级 http://ask.apelearn.com/question/7168 2. 把源码包打包成rpm包 http://www.linuxidc.com/Linux/2012-09/70096.htm # 7.6  yum更换国内源 ![mark](http://oqxf7c508.bkt.clouddn.com/blog/20170812/154757717.png?imagesl

查找命令所属的rpm包

可在已安装该命令的的系统中执行如下命令,例如查找netstat这个命令所属的rpm包 [[email protected] ~]#rpm -qf /usr/bin/netstat net-tools-2.0-0.17.20131004git.el7.x86_64 也可以用yum命令在本机查找,如下 当命令未安装时,状态如下 [[email protected] ~]# yum whatprovides telnet Loaded plugins: fastestmirror, langpacks

linux基础-第十六单元 yum管理RPM包

第十六单元 yum管理RPM包 yum的功能 本地yum配置 光盘挂载和镜像挂载 本地yum配置 网络yum配置 网络yum配置 Yum命令的使用 使用yum安装软件 使用yum删除软件 安装组件 删除组件 清除缓存 查询 课后作业 [本节内容]1. yum的功能:yum是Yellow dog Updater, Modified的缩写,目的就是为了解决RPM的依赖关系的问题,方便使用者进行软件的安装.升级等等工作.2. 掌握光盘挂载和镜像挂载a) 光盘挂载mount /dev/sr0 挂载点或者

linux查找某个命令属于哪个rpm包

背景: linux下的命令有很多,但是新安装系统,尤其是最小化安装之后,有些命令我们发现根本就没有, 而且我们也不知道该命令属于那个rpm包. 如何查找某个命令属于那个rpm包呢? 这样方便我们安装. 我们拿pip命令来举例 方法一: 确认命令的路径 # which pip     /usr/bin/pip 用yum命令查找pip属于哪个rpm包 # yum whatprovides /usr/bin/pip Loaded plugins: fastestmirror, refresh-pack

5周第2次课 yum更换国内源 yum下载rpm包 源码包安装

1. yum 更换国内源 系统内置的源很多时候都是官方的,大部分在国外,使用起来不是很快,也很难下载,这时候最好使用国内的源,如163 1.1 删除系统中自带的 yum源配置文件 mv CentOS-Base.repo CentOS-Base.repo.bak 1.2 下载网易 yum 源的配置文件 wget http://mirrors.163.com/.help/CentOS7-Base-163.repo 或者curl -O http://mirrors.163.com/.help/Cent

yum更换国内源、yum下载rpm包和源码包安装

一.yum更换国内源 1.先进入目录:cd /etc/yum.repos.d/ 2.删除对应的repo文件或重命名它:rm -f dvd.repo 或 mv dvd.repo dvd.repo.bak (删除前确认一下wget命令有没有安装,如果没有先用命令安装再删除:yum install -y wget) [[email protected] yum.repos.d]# mv dvd.repo dvd.repo.bak 3.再用命令下载对应的repo源:wget http://mirrors