1、簡述rpm與yum命令的常見選項,并舉例;
rpm
rpm安裝軟件分為二進制包(Binary)以及源代碼包(Source)兩種。二進制包可以直接安裝在計算機中,而源代碼包將會由RPM自動編譯、安裝。源代碼包經常以src.rpm作為后綴名。
rpm安裝軟件時的常用參數:
Install/Upgrade/Erase options:
-i, –install???????????????????? install package(s)
-v, –verbose???????????????????? provide more detailed output
-h, –hash??????????????????????? print hash marks as package installs (good with -v)
-e, –erase?????????????????????? erase (uninstall) package
-U, –upgrade=<packagefile>+????? upgrade package(s)
--replacepkge?????????????? ?????無論軟件包是否已被安裝,都強行安裝軟件包
–test??????????????????????????? 安裝測試,并不實際安裝
–nodeps????????????????????????? 忽略軟件包的依賴關系強行安裝
–force?????????????????????????? 忽略軟件包及文件的沖突
Query options (with -q or –query):
-a, –all???????????????????????? query/verify all packages
-p, –package???????????????????? query/verify a package file
-l, –list??????????????????????? list files in package
-d, –docfiles??????????????????? list all documentation files
-f, –file??????????????????????? query/verify package(s) owning file
常用命令組合:
-ivh:安裝顯示安裝進度–install–verbose–hash
-Uvh:升級軟件包–Update;
-qpl:列出RPM軟件包內的文件信息[Query Package list];
-qpi:列出RPM軟件包的描述信息[Query Package install package(s)];
-qf:查找指定文件屬于哪個RPM軟件包[Query File];
-Va:校驗所有的RPM軟件包,查找丟失的文件[View Lost];
-e:刪除包
示例如下:
~]# rpm -q gcc????????? #查詢是否已經安裝gcc軟件
gcc-4.4.7-23.el6.x86_64
~]# rpm -qa |grep gcc?? #查詢是否已經安裝gcc相關軟件
libgcc-4.4.7-23.el6.x86_64
gcc-4.4.7-23.el6.x86_64
~]# rpm -qi gcc?????? #查詢安裝的gcc軟件詳細信息
Name??????? : gcc????????????????????????? Relocations: (not relocatable)
Version???? : 4.4.7???????????????????????????? Vendor: CentOS
Release???? : 23.el6??????????????????????? Build Date: 2018年06月19日 星期二 20時30分36秒
Install Date: 2018年07月18日 星期三 15時41分19秒????? Build Host: x86-01.bsys.centos.org
Group?????? : Development/Languages???????? Source RPM: gcc-4.4.7-23.el6.src.rpm
Size??????? : 19499265???????????????????????? License: GPLv3+ and GPLv3+ with exceptions and GPLv2+ with exceptions
Signature?? : RSA/SHA1, 2018年06月20日 星期三 19時35分44秒, Key ID 0946fca2c105b9de
Packager??? : CentOS BuildSystem <http://bugs.centos.org>
URL???????? : http://gcc.gnu.org
Summary???? : Various compilers (C, C++, Objective-C, Java, …)
Description :
The gcc package contains the GNU Compiler Collection version 4.4.
You’ll need this package in order to compile C code.
~]# rpm -qd gcc? 查看一個gcc軟件的文檔安裝位置:
~]# rpm -qR gcc??? 查看一下gcc軟件所依賴的軟件包及文件;
yum指令
yum [options] [command] [package …]
- intall
安裝軟件包或者軟件包組的最新版本,前提是所有的依賴關系滿足要求。如果根據package參數沒有對應的匹配,則會根據glob正則模式來匹配下載軟件包。如果package參數以“@“開頭,則將會以groupintall命令執行軟件包組的安裝。如果package參數是一個文件時,則會以localinstall命令執行本地軟件包安裝。
yum install package1 [package2] […]
- update
如果命令執行時沒有package參數,則會更新所有已安裝的軟件。如果有一個或更多的package參數,則只會更新package參數對應的軟件。在更新的過程中,yum會確保所有的依賴關系都滿足。如果package參數對應的軟件還沒有安裝,則update命令不會進行安裝操作。
yum update [package1] [package2] […]
- update-to
命令的執行和update類似,和update不同的是可以更新到軟件具體版本。
yum update-to [package1] [package2] […]
- check-update
檢測系統所有需要更新的軟件,這個檢測過程并不不需要軟件運行。若有軟件需要更新,則返回值100并展示一個需要更新軟件列表。若沒有軟件需要更新,則返回值0。若執行過程中發生了錯誤,則返回1。
yum check-update
- upgrade
命令的執行和update –obsoletes類似,廢棄的軟件包也會被更新
yum upgrade [package1] [package2] […]
- upgrade-to
命令的執行和upgrade類似,和upgrade不同的是可以更新到軟件的指定版本。
yum upgrade-to [package1] [package2] […]
- distribution-synchronization/distro-sync
同步已安裝的軟件到最新的可用版本,yum根據情況選擇是廢棄還是更新還是降級軟件。在一般的情況下都是和upgrade命令相同,但是有一種情況特殊,當已經安裝了軟件FOO的版本4,但是yum源中最新可用版本是版本3,則此命令會進行軟件降級,降到版本3。
此命令在對groups(軟件包組)和本地軟件包是不起作用的。
yum distribution-synchronization [package1] [package1] […]
- remove/erase
移除系統里指定的軟件,同時依賴這個軟件的其它軟件也會被一并移除。
yum remove | erase package1 [package2] […]
- list
列出可用軟件包的各種信息。更多命令參數信息詳見以下的“List Options“一節。
yum list […]
- info
列出可用軟件包的描述和概要信息。更多命令參數信息和list命令的相同。
yum info […]
- provides/whatprovides
找出包含指定feature(特性)或文件的軟件包,使用一個特定字段或file-glob-syntax通配符來找出相關的可用或已安裝軟件包。
yum provides | whatprovides feature1 [feature2] […]
- clean
清除yum緩存,
yum clean [package | metadata | expire-cache | rpmdb | plugins | all]
- makecache
針對當前的yum repo(源/資源庫)下載元數據并使其可用。
yum makecache
- groupinstall
安裝一個group(軟件包組)內所有的軟件包。
yum groupinstall group1 [group2] […]
- groupupdate
更新一個group(軟件包組)內所有的軟件包。
yum groupupdate group1 [group2] […]
- grouplist
列出所有的yum repo(源/資源庫)中可用的group(軟件包組),如果group(軟件包組)內所有必要的軟件包都已安裝,則該group(軟件包組)被標識為已安裝。參數“hidden“能顯示隱藏的group(軟件包組)。如果還添加了“-v“參數,則進入詳情模式并同時顯示groupid。
yum grouplist [hidden] [groupwildcard] […]
- groupremove
移除group(軟件包組)所有的軟件。
yum groupremove group1 [group2] […]
- groupinfo
列出group(軟件包組)的描述以及所包含的軟件包。添加“-v“進入詳情模式能看到更多的詳情。
yum groupinfo group1 […]
- search
在只知道軟件包部分信息的情況下進行軟件包查找。默認先查找軟件包名稱和概要,接著對軟件包的描述和url進行查找。
yum搜索會把匹配度高的軟件包放在結果的前面。
可以在第一個參數設置為“all“來強制搜索所有內容。
yum search string1 [string2] […]
- shell
yum shell [filename]
- resolvedep
列出依賴參數dep的所有軟件包
yum resolvedep dep1 [dep2] […]
- localinstall
通過本地軟件包安裝軟件
yum localinstall rpmfile1 [rpmfile2] […]
- localupdate
通過本地軟件包更新軟件
yum localupdate rpmfile1 [rpmfile2] […]
- reinstall
重新安裝軟件
yum reinstall package1 [package2] […]
- downgrade
通過package對軟件進行降級
yum downgrade package1 [package2] […]
- deplist
列出軟件所依賴的信息
yum deplist package1 [package2] […]
- repolist
列出repo(源/資源庫)的信息
yum repolist [all | enabled | disabled]
- version
列出yum的版本信息
yum version [all | installed | available | group-* | nogroups* | grouplist | groupinfo]
- history
列出操作信息
yum history [info | list | packages-list | packages-info | summary | addon-info | redo | undo | roll-back | new | sync | stats]
- load-transaction
yum load-transaction [txfile]
- check
檢查本地rpmdb以及軟件是否存在問題
yum check
- 使用Cache執行命令
-C | –cacheonly
- 使用執行的配置文件執行命令
-c [配置文件路徑]
- 顯示命令執行詳情
-v | –verbose
- 靜默安裝
-q | –quiet
- 默認執行yes確認
-y | –assumeyes
- 默認執行no否定
–assumeno
- 指定軟件安裝目錄路徑,覆蓋默認的目錄
–installroot=[安裝目錄路徑]
- 指定可用repo(軟件庫)
–enablerepo=[repo名稱]
- 指定不可用repo(軟件庫)
–disablerepo=[repo名稱]
- 忽略依賴關系
–skip-broken
- 不更新,只下載
–downloadonly
- 指定更新下載路徑
–downloaddir=[下載路徑]
- 查看rmp/yum的版本
yum –version | yum version
2、自建yum倉庫,分別為網絡源和本地源;
建立本地yum倉庫(包含網絡源和本地源):
1)掛載系統或者安裝包的光盤到光驅;
# mkdir /mnt/Centos6.7/
~]# mount /dev/cdrom /mnt/Centos6.7/
mount: block device /dev/sr0 is write-protected, mounting read-only
# cd /etc/yum.repos.d/
# mkdir repo_bak
# mv *.repo /etc/yum.repos.d/repo_bak/
# vim Local-ISO.repo
1 [CentOS6-base]
2 name=CentOS-6-base
3 baseurl=file:///mnt/Centos6/Packages
4???????? https://mirrors.aliyun.com/centos/7.5.1804/os/x86_64/
5 gpgcheck=1
6 enabled=1
7 gpgkey=file:///mnt/Centos6RPM-GPG-KEY-CentOS-6
8 gpgkey=https://mirrors.aliyun.com/centos/7.5.1804/os/x86_64/RPM-GPG-KEY-CentOS-7
~]# yum clean all
已加載插件:fastestmirror, refresh-packagekit, security
Cleaning repos: CentOS6-base
清理一切
Cleaning up list of fastest mirrors
~]# yum makecache
已加載插件:fastestmirror, refresh-packagekit, security
Determining fastest mirrors
* CentOS6-base:
CentOS6-base????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????? ???????????????????????????????????????????????????????????????| 4.0 kB???? 00:00 …
CentOS6-base/group_gz??????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????? ????????????????????????????????????????????| 219 kB???? 00:00 …
CentOS6-base/filelists_db?????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????? ?????????????????????????| 6.2 MB???? 00:00 …
CentOS6-base/primary_db??????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????? ??????| 4.6 MB???? 00:00 …
CentOS6-base/other_db??????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????? | 2.8 MB???? 00:00 …
元數據緩存已建立
~]# yum repolist
Loading mirror speeds from cached hostfile
* CentOS6-base:
倉庫標識?????????????????????????????????????????????????????????????????????????????????????????????????????????? 倉庫名稱??????????????????????????????????????????????????????????????????????????????????????????????????????????? 狀態
CentOS6-base?????????????????????????????????????????????????????????????????????????????????????????????????????? CentOS-6-base???????????????? ??????????????????????????????????????????????????????????????????????????????????????6,575
repolist: 6,575
~]# yum list
3、簡述at和crontab命令,制定 每周三凌晨三、五點10分執行某個腳本,輸出當前時間,時間格式為 2017-12-28 10:00:00;
at 命令是針對僅運行一次的任務,crontab命令是用來制定執行循環運行的例行性計劃任務。
at命令格式:
at[參數][時間]
命令功能:
在一個指定的時間執行一個指定任務,只能執行一次,且需要開啟atd進程(
ps -ef | grep atd查看, 開啟用/etc/init.d/atd start or restart;
開機即啟動則需要運行 chkconfig –level 2345 atd on)。
-m 當指定的任務被完成之后,將給用戶發送郵件,即使沒有標準輸出
-I atq的別名
-d atrm的別名
-v 顯示任務將被執行的時間
-c 打印任務的內容到標準輸出
-V 顯示版本信息
-q<列隊> 使用指定的列隊
-f<文件> 從指定文件讀入任務而不是從標準輸入讀入
-t<時間參數> 以時間參數的形式提交要運行的任務
示例:
~]# at 9:26
at> /bin/ls >/root/ls.txt
at> <EOT>? #此處使用Ctrl+D鍵作為停止輸入;
job 8 at 2018-07-26 09:26
~]# cat ls.txt
date.sh
fun.sh
guess.sh
jisuan.sh
num.sh
test.sh
~]# atq? #計劃任務設定后,在沒有執行之前我們可以用atq命令來查看系統沒有執行工作任務
12?? 2018-07-26 11:20 a root
crontab命令格式:
crontab?[-u?user]?file
crontab?[-u?user]?[?-e?|?-l?|?-r?]
命令功能:
通過crontab?命令,我們可以在固定的間隔時間執行指定的系統指令或?shell?script腳本。時間間隔的單位可以是分鐘、小時、日、月、周及以上的任意組合。這個命令非常設合周期性的日志分析或數據備份等工作。
命令參數:
-u?user:用來設定某個用戶的crontab服務,例如,“-u?ixdba”表示設定ixdba用戶的crontab服務,此參數一般由root用戶來運行。
file:file是命令文件的名字,表示將file做為crontab的任務列表文件并載入crontab。如果在命令行中沒有指定這個文件,crontab命令將接受標準輸入(鍵盤)上鍵入的命令,并將它們載入crontab。
-e:編輯某個用戶的crontab文件內容。如果不指定用戶,則表示編輯當前用戶的crontab文件。
-l:顯示某個用戶的crontab文件內容,如果不指定用戶,則表示顯示當前用戶的crontab文件內容。
-r:從/var/spool/cron目錄中刪除某個用戶的crontab文件,如果不指定用戶,則默認刪除當前用戶的crontab文件。
-i:在刪除用戶的crontab文件時給確認提示。
~]# crontab -e
10 3,5 * * 3 echo $(date ‘+\%F \%T’)
~]# crontab -l
10 3,5 * * 3 echo $(date ‘+\%F \%T’)
4、簡述sed常用操作命令,并舉例。
sed處理時,把當前處理的行存儲在臨時緩沖區中,稱為“模式空間”,接著用sed命令處理緩沖區中的內容,處理完成后,把緩沖區的內容送往屏幕;接著處理下一行,這樣不斷重復,直到文件末尾。文件內容并沒有改變,除非你使用重定向存儲輸出。
sed命令行格式:sed [options] ‘command’ file(s)
options常用選項:
-n或–quiet或——silent:僅顯示script處理后的結果;
-e<script>或–expression=<script>:以選項中的指定的script來處理輸入的文本文件;??????? -f<script文件>或–file=<script文件>:以選項中指定的script文件來處理輸入的文本文件;
-r∶sed 的動作支援的是延伸型正規表示法的語法;
-i∶直接修改讀取的檔案內容,而不是由螢幕輸出;(此命令選項慎重使用,再三確認之后才使用。)
-h或–help:顯示幫助;
-V或–version:顯示版本信息。
Command常用命令:
a:新增,a 的后面可以接字符串,而這些字符串會在新的一行出現(目前的下一行);
c:取代,c 的后面可以接字符串,這些字符串可以取代n1,n2 之間的行;
d:刪除,d 后面通常不接任何字符串;
i:插入,i 的后面可以接字符串,而這些字符串會在新的一行出現(目前的上一行);
p:列印,亦即將某個選擇的資料印出。通常 p 會與參數 sed-n 一起運作;
s:取代,可以直接進行取代的工作,通常與正規表達式搭配使用。
實例說明:
新增操作:a命令
sed ‘/^bird/a\test’ file將test追加到 以bird開頭的行后面
刪除操作:d命令
sed ‘/^$/d’ file?? #刪除空白行;
sed ‘2d’ file???? #刪除第二行;
sed ‘2,$d’ file?? #刪除第2行到最后一行;
sed ‘$d’ file???? #刪除最后一行;
sed ‘/^bird/’d file?? #刪除所有開頭是bird的行;
插入操作:i命令
sed -i ‘3i\bird ‘ bird.conf?? #在bird.conf文件第3行之前插入bird
替換文本中的字符串:s命令
sed ‘s/bird/birds/’ file? #將文本中的bird替換成birds;
sed -i ‘s/ bird / birds /g’file? #將file文件中每一行的第一個bird替換為birds;
本文來自投稿,不代表Linux運維部落立場,如若轉載,請注明出處:http://www.www58058.com/103984
不錯的文章,其中rpm包管理上可以列舉一些例子稍微說明一下哈,繼續加油。