rpm與yum

rpm包及yum

包查詢

rpm -q –query  搭配別的選項可用來包查詢

-a

-f

-p rpmfile:針對尚未安裝的程序包文件做查詢操作  

-p 選項參數為文件名(一定要指定路徑)

例子:

rpm -qpl /media/Packages/zsh-4.3.11-4.el6.centos.2.x86_64.rpm

可用來模擬安裝, 模擬安裝成功后查看在系統中產生的文件

–whatprovides CAPABILITY :  可用來查看某種功能是由哪個包提供

rpm -q –whatrequires CAPABILITY  查詢指定的CAPABILITY被哪個包所依賴

 

解壓rpm包:

rpm2cpio 包文件 | cpio -itv  預覽包內文件

rpm2cpio 包文件 | cpio -id "*.conf"  釋放包內文件

 

包查詢

–changelog  查詢rpm包的changelog

-c   查看程序的配置文件

-d    查看程序的文檔

-i    inforation

-l    所有的系統文件

–scripts  : 程序包自帶的腳本片段

-R : 查看指定的程序包所依賴的CAPABILITY

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

 

卸載包:

rpm -e 包名

rpm -e 是不可以直接xxx, xxx是沒有.rpm后綴的。

 

包校驗:

rpm -V  包名

用來校驗包只安裝后, 系統中的文件的變化。

 

包來源合法性驗證及完整性驗證:

完整性驗證: SHA256

來源合法性驗證: RSA

rpm -K|checksig rpmfile 檢測包的完整性及合法性

rpm –import / etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7

CentOS 7 發行版光盤提供: RPM-GPG-KEY-CentOS-7

rpm -qa gpg-pubkey* // 可用來查看rpm包是否導入公鑰

 

rpm數據庫

/var/lib/rpm

rpm –initdb | –rebuilddb

initdb: 初始化   有許多文件

如果事先不存在數據庫, 則新建之

否則, 不執行任何操作

–rebuilddb:重建  只有Packages文件夾

無論當前存在與否, 直接重新創建數據庫。

 

yum dnf

yum的工作的方式是C/S模式。 yum的服務端其實是文件服務器。

yum只支持三種文件服務器

http://

ftp://

file:///

 

yum客戶端的配置文件:

/etc/yum.conf

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

 

[repositoryID]   唯一性

name=xxxxxxxxxxxx

baseurl=xxxxxxxxx

enabled=

gpgcheck=

gpgkey=

enablegroups

failovermethod={roundrobin|priority}

默認: roundrobin   意外隨記挑選;

cost=  默認為1000  開銷

while 循環的特殊用法(遍歷文件的每一行):

 

Shell編程模塊

while read line;do

循環體

done < /PATH/FROM/SOMEFILE

 

for(())  適合于數字循環

select 循環與菜單(使用與交互式的建立)

select variable in list

do

循環體指令

done

加入list為{a,b,c}

這會產生一個的界面

1>a

2>b

3>c

用戶可以使用1 2 3 進入相應的模塊功能, 而不是a b c

select  循環主要用于創建菜單,按數字順序排列的

菜單項將顯示在標準錯誤上,并顯示 PS3  提示符,

等待用戶輸入

用戶輸入菜單列表中的某個數字,執行相應的命令

用戶輸入被保存在內置變量 REPLY  中。

 

for 與 select 后面都可以沒有循環列表, 而可以使用位置變量。

函數是不能單獨使用, 而應該被調用使用。 被調用的函數與依附的shell程序是一個整體, 沒有父子進程之說。

 

定義函數的三種方式:

1>. function myfun1 {}    

2>. myfun2() {}

3>. function myfun3() {}

{ 必須和函數名隔開或則是直接從下一行開始。

 

C、java都非常相似, 函數的退出狀態碼:

(1). 取決于函數中執行的最后一條命令的退出狀態碼

(2). 自定義退出狀態碼, 其格式為:

return 從函數中退出, 由最后命令的狀態決定返回值

return 0 無錯誤返回

return 1-255  有錯誤返回

return是用于函數中的, 而不是不用于自己編寫的腳本程序中, 用來返回返回以值并且終止函數。

如果在自己寫的腳本中想要終止的話, 使用exit退出當前shell就ok了。

 

set  查看變量和函數

unset  取消變量和函數

 

函數可以接受參數:

傳遞參數給函數:調用參數時,在函數名后面以空白分隔給定參數列表即可;例如"testfunc  arg1 arg2 …"

函數體內部的參數, 是函數本身的參數, 而函數為參數則是整個shell腳本的參數。

add(){

        ((sum=$1+$2))   函數內部的參數

        echo "sum=$sum"

}

add $1 $2    而這兩個參數則是函數外部的參數

 

函數變量:

壞境變量: 當前shell和子shell有效

export a=1

echo $a

aa(){

        a=2

}

aa

echo $a

 

本地變量: 只在當前shell進程有效,為執行腳本會啟動

專用子shell進程;因此,本地變量的作用范圍是當前shell腳本

程序文件,包括腳本中的函數。

 

局部變量:函數的生命周期;函數結束時變量被自動銷毀

注意:如果 函數中有局部變量,如果其名稱同本地變量, 使用局部變量。

局部變量只能作用于函數中, 這樣僅僅自己使用, 不影響函數外部的與其同名的名字

a=1

echo $a

aa(){

        local a=2

}

aa

echo $

執行結果:

[root@centos7 0819]# bash export.sh

1

1

遞歸:

1>. 自己調用自己

2>. 告訴自己什么時候就停下來不調用了

3>. 遞歸是由層數限制的。

#!/bin/bash

#

fact(){

if [ $1 -eq 0 -o  $1 -eq 1 ];then

echo 1

else

 sum=$[$1*$(fact $[$1-1])]

 echo $sum

fi

}

fact 5

 

如何判斷輸入的參數為

expr xxx + 0  只有整數才能參加運算, 通過命令的返回結果來判斷xxx是否為整數。

 

            作業: 斐波拉契數列遞歸

feibolaqi.main

feibo() {

if [ $1 -eq 0 ];then

echo "0"

elif [ $1 -eq 1 ];then

echo "1"

else

echo "$[$(feibo $[$1-1])+$(feibo $[$1-2])]"

fi

}

feibolaqi.sh

while true;

do

read -p "please input one zheng interger:" int

if ! expr $int + 0 >> /dev/null;then

echo "please input one integer!!!"

elif [ $int -lt 0 ];then

echo "please input one zheng integer!!!"

else

. ./feibolaqi.main

feibo $int

exit

fi

done

 

 

 

 

 

 

 

 

原創文章,作者:458813466,如若轉載,請注明出處:http://www.www58058.com/38770

(0)
458813466458813466
上一篇 2016-08-24
下一篇 2016-08-24

相關推薦

  • MySQL 多實例詳解

    目錄 一、基本概念 1、MySQL多實例        就是在一臺機器上面開啟多個不同的端口,運行多個MySQL服務進程。這些MySQL多實例公用一套安裝程序,使用不同的(也可以是相同的)配置文件,啟動程序,數據文件。在提供服務時候,多實例MySQL在邏輯上看來是各自獨立的,多個實例的自身是根據配置…

    Linux干貨 2015-09-23
  • 第十周

    1、請詳細描述CentOS系統的啟動流程(詳細到每個過程系統做了哪些事情) 1.POST 開機加電自檢,對計算機的cpu,硬盤,內存等進行檢測。 2.BIOS 對引導程序進行探測,并把控制權交給引導程序。 3.MBR Master bootloader record主引導程序.通常位于硬盤第一扇區/dev/hda(0,0)或/dev/sda(0,0). 此階…

    Linux干貨 2017-03-30
  • Linux基于OpenSSL實現私有CA構建

    前言 隨著互聯網的迅猛發展,網絡通信已經成為傳遞信息的主要途徑。而通信時的數據傳輸大部分卻是明文傳輸的,在網絡這個不安全的環境下,如果沒有一套數據加密機制,就會導致敏感信息和重要數據泄露,引起不可估量的損失。而OpenSSL正好彌補了這一缺憾,那什么是OpenSSL呢?OpenSSL是一套強大的具有加密功能的組件,它包含libcrypto(公共加密庫)、li…

    Linux干貨 2015-04-13
  • 學習總結

    課上練習整理

    Linux干貨 2017-11-19
  • find命令

          find:實時查找工具,根據我們指定的內容或者條件在系統上進行實時查找,比locate在實際場景中用的多得多的多      具體用法:find   查找路徑      查找條件         &n…

    Linux干貨 2017-04-10
  • LVM的管理和使用

    LVM的管理和使用

    Linux干貨 2017-10-27
欧美性久久久久