安裝包管理及計劃任務管理

第五周

1、簡述rpm與yum命令的常見選項,并舉例

rpm——軟件包管理系統,它使得在Linux下安裝、升級、刪除軟件包的工作變得容易,并且具有查詢、驗證軟件包的功能。
rpm命令:rpm??[OPTIONS]??[PACKAGE_FILE]
安裝:-i, –install
升級:-U, –update, -F, –freshen
卸載:-e, –erase
查詢:-q, –query
校驗:-V, –verify
數據庫維護:–builddb, –initdb

安裝:
rpm {-i|–install} [install-options] PACKAGE_FILE …

rpm??-ivh??PACKAGE_FILE …

GENERAL OPTIONS:
-v:verbose,詳細信息
-vv:更詳細的輸出

[install-options]:
-h:hash marks輸出進度條;每個#表示2%的進度;
–test:測試安裝,檢查并報告依賴關系及沖突消息等;
–nodeps:忽略依賴關系;不建議;
–replacepkgs:重新安裝

注意:rpm可以自帶腳本;
四類:–noscripts
preinstall:安裝過程開始之前運行的腳本,%pre , –nopre
postinstall:安裝過程完成之后運行的腳本,%post , –nopost
preuninstall:卸載過程真正開始執行之前運行的腳本,%preun, –nopreun
postuninstall:卸載過程完成之后運行的腳本,%postun , –nopostun

–nosignature:不檢查包簽名信息,不檢查來源合法性;
–nodigest:不檢查包完整性信息;

升級:
rpm {-U|–upgrade} [install-options] PACKAGE_FILE …
rpm {-F|–freshen} [install-options] PACKAGE_FILE …

-U:升級或安裝;
-F:升級

rpm??-Uvh PACKAGE_FILE …
rpm??-Fvh PACKAGE_FILE …

–oldpackage:降級;
–force:強制升級;

注意:(1) 不要對內核做升級操作;Linux支持多內核版本并存,因此,直接安裝新版本內核;
(2) 如果某原程序包的配置文件安裝后曾被修改過,升級時,新版本的程序提供的同一個配置文件不會覆蓋原有版本的配置文件,而是把新版本的配置文件重命名(FILENAME.rpmnew)后提供;

卸載:
rpm {-e|–erase} [–allmatches] [–nodeps] [–noscripts] [–test] PACKAGE_NAME …

–allmatches:卸載所有匹配指定名稱的程序包的各版本;
–nodeps:忽略依賴關系
–test:測試卸載,dry run模式

查詢:
rpm {-q|–query} [select-options] [query-options]

[select-options]
PACKAGE_NAME:查詢指定的程序包是否已經安裝,及其版本;
-a, –all:查詢所有已經安裝過的包;
-f??FILE:查詢指定的文件由哪個程序包安裝生成;

-p, –package PACKAGE_FILE:用于實現對未安裝的程序包執行查詢操作;

–whatprovides CAPABILITY:查詢指定的CAPABILITY由哪個程序包提供;
–whatrequires CAPABILITY:查詢指定的CAPABILITY被哪個包所依賴;

[query-options]
–changelog:查詢rpm包的changlog;
-l, –list:程序安裝生成的所有文件列表;
-i, –info:程序包相關的信息,版本號、大小、所屬的包組,等;
-c, –configfiles:查詢指定的程序包提供的配置文件;
-d, –docfiles:查詢指定的程序包提供的文檔;
–provides:列出指定的程序包提供的所有的CAPABILITY;
-R, –requires:查詢指定的程序包的依賴關系;
–scripts:查看程序包自帶的腳本片斷;

用法:
-qi??PACKAGE, -qf FILE, -qc PACKAGE, -ql PACKAGE, -qd PACKAGE
-qpi??PACKAGE_FILE, -qpl PACKAGE_FILE, -qpc PACKAGE_FILE, …

校驗:
rpm {-V|–verify} [select-options] [verify-options]

S file Size differs
M Mode differs (includes permissions and file type)
5 digest (formerly MD5 sum) differs
D Device major/minor number mismatch
L readLink(2) path mismatch
U User ownership differs
G Group ownership differs
T mTime differs
P caPabilities differ
包來源合法性驗正和完整性驗正:
來源合法性驗正:
完整性驗正:

獲取并導入信任的包制作者的密鑰:
對于CentOS發行版來說:rpm –import /etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7

驗正:
(1) 安裝此組織簽名的程序時,會自動執行驗正;
(2) 手動驗正:rpm -K PACKAGE_FILE

數據庫重建:
rpm管理器數據庫路徑:/var/lib/rpm/
查詢操作:通過此處的數據庫進行;

yum repository: yum repo
存儲了眾多rpm包,以及包的相關的元數據文件(放置于特定目錄下:repodata);

文件服務器:
ftp://
http://
nfs://
file:///

yum客戶端:
配置文件:
/etc/yum.conf:為所有倉庫提供公共配置
/etc/yum.repos.d/*.repo:為倉庫的指向提供配置

倉庫指向的定義:
[repositoryID]
name=Some name for this repository
baseurl=url://path/to/repository/
enabled={1|0}
gpgcheck={1|0}
gpgkey=URL
enablegroups={1|0}
failovermethod={roundrobin|priority}
默認為:roundrobin,意為隨機挑選;
cost=
默認為1000

教室里的yum源:http://172.16.0.1/cobbler/ks_mirror/CentOS-6.6-x86_64/
CentOS 6.6 X84_64 epel: http://172.16.0.1/fedora-epel/6/x86_64/

yum命令的用法:
yum [options] [command] [package …]

command is one of:
*?install package1 [package2] […]
*?update [package1] [package2] […]
*?update-to [package1] [package2] […]
*?check-update
*?upgrade [package1] [package2] […]
*?upgrade-to [package1] [package2] […]
*?distribution-synchronization [package1] [package2] […]
*?remove | erase package1 [package2] […]
*?list […]
*?info […]
*?provides | whatprovides feature1 [feature2] […]
*?clean [ packages | metadata | expire-cache | rpmdb | plugins | all ]
*?makecache
*?groupinstall group1 [group2] […]
*?groupupdate group1 [group2] […]
*?grouplist [hidden] [groupwildcard] […]
*?groupremove group1 [group2] […]
*?groupinfo group1 […]
*?search string1 [string2] […]
*?shell [filename]
*?resolvedep dep1 [dep2] […]
*?localinstall rpmfile1 [rpmfile2] […]
(maintained for legacy reasons only – use install)
*?localupdate rpmfile1 [rpmfile2] […]
(maintained for legacy reasons only – use update)
*?reinstall package1 [package2] […]
*?downgrade package1 [package2] […]
*?deplist package1 [package2] […]
*?repolist [all|enabled|disabled]
*?version [ all | installed | available | group-* | nogroups* | grouplist | groupinfo ]
*?history [info|list|packages-list|packages-info|summary|addon-info|redo|undo|rollback|new|sync|stats]
*?check
*?help [command]

顯示倉庫列表:
repolist [all|enabled|disabled]

顯示程序包:
list
# yum list [all | glob_exp1] [glob_exp2] […]
# yum list {available|installed|updates} [glob_exp1] […]

安裝程序包:
install package1 [package2] […]
默認安裝最新版,若要安裝低版本需指明版本號
reinstall package1 [package2] […]??(重新安裝)

升級程序包:
update [package1] [package2] […]

downgrade package1 [package2] […] (降級)

檢查可用升級:
check-update

卸載程序包:
remove | erase package1 [package2] […]

查看程序包information:
info […]

查看指定的特性(可以是某文件)是由哪個程序包所提供:
provides | whatprovides feature1 [feature2] […]

清理本地緩存:
clean [ packages | metadata | expire-cache | rpmdb | plugins | all ]

構建緩存:
makecache

搜索:
search string1 [string2] […]

以指定的關鍵字搜索程序包名及summary信息;

查看指定包所依賴的capabilities:
deplist package1 [package2] […]

查看yum事務歷史:
history [info|list|packages-list|packages-info|summary|addon-info|redo|undo|rollback|new|sync|stats]

安裝及升級本地程序包:
* localinstall rpmfile1 [rpmfile2] […]
(maintained for legacy reasons only – use install)
*?localupdate rpmfile1 [rpmfile2] […]
(maintained for legacy reasons only – use update)

包組管理的相關命令:
*?groupinstall group1 [group2] […]
*?groupupdate group1 [group2] […]
*?grouplist [hidden] [groupwildcard] […]
*?groupremove group1 [group2] […]
*?groupinfo group1 […]

如何使用光盤當作本地yum倉庫:
(1) 掛載光盤至某目錄,例如/media/cdrom
# mount -r -t iso9660 /dev/cdrom /media/cdrom
(2) 創建配置文件
[CentOS7]
name=
baseurl=
gpgcheck=
enabled=

yum的命令行選項:
–nogpgcheck:禁止進行gpg check;
-y: 自動回答為“yes”;
-q:靜默模式;
–disablerepo=repoidglob:臨時禁用此處指定的repo;
–enablerepo=repoidglob:臨時啟用此處指定的repo;
–noplugins:禁用所有插件;

yum的repo配置文件中可用的變量:
$releasever: 當前OS的發行版的主版本號;
$arch: 平臺;
$basearch:基礎平臺;
$YUM0-$YUM9

http://mirrors.magedu.com/centos/$releasever/$basearch/os

創建yum倉庫:
createrepo [options] <directory>
2、自建yum倉庫,分別為網絡源和本地源

使用光盤當作本地yum倉庫:
(1) 掛載光盤至某目錄,例如/media/cdrom
# mount -r -t iso9660 /dev/cdrom /media/cdrom
(2) 創建配置文件
[CentOS7]
name=
baseurl=
gpgcheck=
enabled=
創建yum倉庫:
createrepo [options] <directory>
3、簡述at和crontab命令,制定 每周三凌晨三、五點10分執行某個腳本,輸出當前時間,時間格式為 2017-12-28 10:00:00

at命令:
at??[OPTION]… TIME

TIME:
HH:MM [YYYY-mm-dd]
noon,midnieght, teatime
tomorrow
now+#
UNIT:minutes, hours, days, OR weeks

at的作業有隊列,用單個字母表示,默認都使用a隊列;

常用選項:
-l:查看作業隊列,相當于atq
-f /PATH/FROM/SOMEFILE:從指定文件中讀取作業任務,而不用再交互式輸入;
-d:刪除指定的作業,相當于atrm;
-c:查看指定作業的具體內容;
-q QUEUE:指明隊列;

注意:作業執行結果是以郵件發送給提交作業的用戶;

crontab命令:
crontab [-u user] [-l | -r | -e] [-i]
-e:編輯任務;
-l:列出所有任務;
-r:移除所有任務;即刪除/var/spool/cron/USERNAME文件;
-i:在使用-r選項移除所有任務時提示用戶確認;
-u user:root用戶可為指定用戶管理cron任務;

注意:運行結果以郵件通知給當前用戶;如果拒絕接收郵件:
(1) COMMAND > /dev/null
(2) COMMAND &> /dev/null

注意:定義COMMAND時,如果命令需要用到%,需要對其轉義;但放置于單引號中的%不用轉義亦可;

[root@localhost ~]# crontab -e
no crontab for root – using an empty one
crontab: installing new crontab

[root@localhost ~]# crontab -l
10 03,05 * * 3 /tmp/bin/useradd3.sh date +’%F %X’
4、簡述sed常用操作命令,并舉例

sed [OPTION]…??‘script’??[input-file] …
script:
地址定界編輯命令

常用選項:
-n:不輸出模式空間中的內容至屏幕;
-e script, –expression=script:多點編輯;
-f??/PATH/TO/SED_SCRIPT_FILE
每行一個編輯命令;
-r, –regexp-extended:支持使用擴展正則表達式;
-i[SUFFIX], –in-place[=SUFFIX]:直接編輯原文件 ;

~]# sed??-e??‘s@^#[[:space:]]*@@’???-e??‘/^UUID/d’??/etc/fstab

地址定界:
(1) 空地址:對全文進行處理;
(2) 單地址:
#:指定行;
/pattern/:被此模式所匹配到的每一行;
(3) 地址范圍
#,#:
#,+#:
#,/pat1/
/pat1/,/pat2/
$:最后一行;
(4) 步進:~
1~2:所有奇數行
2~2:所有偶數行

編輯命令:
d:刪除;
p:顯示模式空間中的內容;
a??\text:在行后面追加文本“text”,支持使用\n實現多行追加;
i??\text:在行前面插入文本“text”,支持使用\n實現多行插入;
c??\text:把匹配到的行替換為此處指定的文本“text”;
w /PATH/TO/SOMEFILE:保存模式空間匹配到的行至指定的文件中;
r??/PATH/FROM/SOMEFILE:讀取指定文件的內容至當前文件被模式匹配到的行后面;文件合并;
=:為模式匹配到的行打印行號;
!:條件取反;
地址定界!編輯命令;
s///:查找替換,其分隔符可自行指定,常用的有s@@@, s###等;
替換標記:
g:全局替換;
w /PATH/TO/SOMEFILE:將替換成功的結果保存至指定文件中;
p:顯示替換成功的行;

本文來自投稿,不代表Linux運維部落立場,如若轉載,請注明出處:http://www.www58058.com/100957

(1)
瘋狂的青春瘋狂的青春
上一篇 2018-06-12
下一篇 2018-06-14

相關推薦

評論列表(1條)

  • 馬哥教育
    馬哥教育 2018-06-15 07:56

    內容整理的很不錯。就是格式看起來有點亂。
    建議rpm yum 的安裝卸載都用一下,其他參數也練習一下。
    建議測試一下本地光盤掛載yum倉庫是否可以正常安裝包。

欧美性久久久久