1. 程式人生 > >第8天壓縮 xarges sed命令 yum配置 rpm包文件修復

第8天壓縮 xarges sed命令 yum配置 rpm包文件修復

system 二進制安裝 eth0 hostname view 行號 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 配置

第8天壓縮 xarges sed命令 yum配置 rpm包文件修復