中文字幕日韩精品一区二区免费_精品一区二区三区国产精品无卡在_国精品无码专区一区二区三区_国产αv三级中文在线

Linux入門學(xué)習(xí)之rpm軟件包管理-創(chuàng)新互聯(lián)

Linux入門之軟件包管理

在linux有很多類的軟件包管理機制,但是在redhat、centos這類版本的系統(tǒng)中,都會使用一種相同的機制,就是rpm軟件包管理機制,當(dāng)然,還有其它版本的linux使用的不同機制:

10多年建站經(jīng)驗, 網(wǎng)站建設(shè)、成都網(wǎng)站設(shè)計客戶的見證與正確選擇。創(chuàng)新互聯(lián)公司提供完善的營銷型網(wǎng)頁建站明細報價表。后期開發(fā)更加便捷高效,我們致力于追求更美、更快、更規(guī)范。

debian:使.deb文件,dpkg包管理器

redhat:使用.rpm文件,rpm包管理器

軟件包在使用中又分類兩種(源碼包和二進制包):

源碼包:一般是提供了一些源碼模塊和編譯腳步組合起來的壓縮文件,命令格式如:

name-version.tar.{gz|bz2|xz} 等,這里列舉出來一個源碼包:

[root@localhost ~]# ls -l tengine-1.4.2.tar.gz

-rw-r--r-- 1 root root 1185902 Aug 15 18:57 tengine-1.4.2.tar.gz

二進制rpm包:實現(xiàn)被編譯包的,功能模塊事先已經(jīng)被設(shè)置好的軟件,命令格式如:

rpm包的組成:

主包:

name-version-release.arch.rpm  例如:

bind-9.7.1-1.e15.i586.rpm

    子包:

name-toolname-9.7.1-1.e15.i586.rpm 例如:

bind-libs-9.7.1-1.e15.i586.rpm

bind-utils-9.7.1-1.e15.i586.rpm

包名格式:

name-version-release.arch.rpm

bind-major.minor.release-release.arch.rpm

版本號說明:

主版本號:軟件包有重大改進

此版本號:某個子功能發(fā)生重大變化

發(fā)行號:修正了部分bug,調(diào)整了一點功能

軟件管理器的核心功能:

1、制作軟件包;

2、安裝、卸載、升級、查詢、校驗;

注意:rpm包自身有依賴關(guān)系,及安裝軟件包時需要先安裝其依賴的軟件包

軟件包工具分類:

前段工具:yum,apt-get

后端工具:rpm,dpt

rpm命令:

rpm  rpmduild

rpm數(shù)據(jù)庫:/var/lib/rpm

注意:/var/lib/rpm中的某些文件如果只是被破壞,可以通過命令來創(chuàng)建或初始化數(shù)據(jù)庫,但是文件如果都被刪除,其數(shù)據(jù)庫信息將無法恢復(fù),因此,要時常對此做備份

rpm命令使用方法:

1、安裝:

rpm -i /PATH/TO/PACKAGE_FILE     注意:這里是軟件包文件的路徑

-h:以#符號顯示進度,每個#符號表示2%進度

-v:顯示詳細過程

-vv:顯示更為詳細的過程

rpm  -ivh /PATH/TO/PACHAGE_FILE  提示:這里一般組合使用顯示其安裝狀態(tài)

 --nodeps:忽略依賴關(guān)系;

 --replacepkgs:重新安裝,替換原有安裝;

 --replacefiles:會替換原有文件;

 --force:強行安裝,可以實現(xiàn)重裝或降級;

 --nosgnature:不檢查來源的合法性

 --nodigest:不檢查完整性

 --noscripts:不執(zhí)行程序包腳步

%pre:安裝前腳步;--nopre

%post:安裝后腳本;--nopost

%preun:卸載前腳步;--nopre

%postun:卸載后腳步;--nopost

注意:有時對于來源不明的軟件包,可以使用以上選項來防止軟件包里的危險程序

2、升級:

rpm  -Uvh  /PATH/TO/NEW_PACKAGE_FILE:如果裝有老版本的,則升級,否則重裝

rpm  -Fvh  /PATH/TO/NEW_PACKAGE_FILE:如果有老版本的,則升級,否則退出

--oldpackage:降級

注意事項:

1、不要對系統(tǒng)內(nèi)核進行升級或降級安裝,Linux執(zhí)行多內(nèi)核并存,因此直接安裝新內(nèi)核即可

2、如果對kernel升級,升級前如果改變了原內(nèi)核中配置文件,那么升級后,原內(nèi)核的配置文件將被重命名為filename.rpmnew的文件,而使用新內(nèi)核的文件

3、查詢

rpm  -q  PACKAGE_NAME:查詢指定包是否已經(jīng)安裝

rpm  -qa:查看已經(jīng)安裝的所有軟件包

rpm  -qi  PACKAGE_NAME:查詢指定包的安裝包的說明信息;

rpm  -ql  PACKAGE_NAME:查詢指定包安裝后生成的文件列表;

rpm  -qc  PACKAGE_NAME:查詢指定包安裝后生成配置文件;

rpm  -qd  PACKAGE_NAME:查詢指定包安裝的幫助文件;

rpm  --scripts PACKAGE_NAME:查詢指明包中包含的腳步

rpm  -qf  /PATH/TO/SOMEFILE:查詢指定的文件是由哪個rpm包安裝以后生成的;

rpm  --whatprovides  CAPABILTTY :查詢關(guān)鍵字或命令是由哪個包替換

rpm  --whatrequires  CAPABILTTY:查詢指定包或命令是被哪個包所依賴

如果包尚未安裝,我們需要查詢其說明信息、安裝以后會生成的文件:

rpm  -qpi  /PATH/TO/PACKAGE_FILES   查看軟件包文件信息

rpm  -qpl  /PATH/TO/PACKAGE_FILES   查看軟件包安裝后生成哪些文件

如果安裝后的文件有所丟失,而又有配置而不像重裝去覆蓋文件,可以通過工具處理:

rpm2cpio 包文件|cpio  -itv預(yù)覽包文件

rpm2cpio  包文件|cpio  -idv“*.conf” 展開包文件

注意:里面可以是特定路徑或者文件通配符

rpm  --scripts  /PACKAGE_NAME:查詢包生成的腳步文件

 -R:查詢指定的程序包所依賴庫及軟件

 --provides:列出指定程序包提供的工具、命令

 --changelog:查詢rpm包的更改信息

4、卸載

rpm  -e  PACKAGENAME

rpm  --erase  PACKAGENME

           --nodeps:忽略依賴關(guān)系任然卸載

           --test:只是測試卸載過程,并不真正卸載

           --noscripts:卸載時不運行過程腳步

           --notriggers:不啟動觸發(fā)器

           --allmatches:卸載全部與其相配的文件

5、校驗

rpm  -V  PACKNAME  PACKAGE_NAME

信息說明:

S  表示軟件更改信息

M 顯示權(quán)限信息

5  顯示加密信息

D  顯示主次設(shè)備號

L  顯示鏈接路徑數(shù)

U  顯示包用戶

G  顯示包用戶組

T  顯示更改時間

p  顯示更新對比屬性

6、校驗軟件包來源合法性,及軟件包完整性:

密鑰文件:

          /etc/pki/rpm-gpg/目錄下:

          RPM-GPG-KEY-readhat-release

          RPM-GPG-KEY-centos-release

檢查軟件包的完整性:

rpm  -K  /path/to/rpmfile

信息說明:

dsp, gpg:驗證來源合法性,也即驗證前面字段,可以使用--nosignature略過此項

sha1, md5:驗證軟件包完整性,可以使用--nodigest,略過此項

在此之前需要有公鑰的存在,可以使用命令導(dǎo)入公鑰:

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

卸載公鑰:

rpm  -qa  gpg-pubkey*  找出公鑰名稱

rpm  -e   gpg-pubkey......  卸載公鑰

7、重建數(shù)據(jù)庫

數(shù)據(jù)庫文件路徑:/var/lib/rpm/

使用命令重建:

rpm

--rebuilddb:重建數(shù)據(jù)庫,一定會重新建立;

--initdb:初始化數(shù)據(jù)庫,沒有才建立,有就不建立;

案例:

#掛載CentOS鏡像到/mnt/iso文件夾

[root@mzf ~]# mount /dev/cdrom  /mnt/iso/ mount: block device /dev/sr0 is write-protected, mounting read-only

#cd進入/mnt/iso目錄

[root@mzf ~]# cd /mnt/iso/ [root@mzf iso]# pwd /mnt/iso

#查看軟件包存放在Packages中

[root@mzf iso]# ls CentOS_BuildTag  EULA  p_w_picpaths    Packages   repodata RPM-GPG-KEY-CentOS-Debug-6      RPM-GPG-KEY-CentOS-Testing-6  EFI   GPL   isolinux  RELEASE-NOTES-en-US.html  RPM-GPG-KEY-CentOS-6 RPM-GPG-KEY-CentOS-Security-6  TRANS.TBL

#cd到此Packages目錄中

[root@mzf iso]# cd Packages/

#找出tree軟件

[root@mzf Packages]# find ./ -name "tree-1.5.3-3.el6.x86_64.rpm"  ./tree-1.5.3-3.el6.x86_64.rpm

#發(fā)現(xiàn)已經(jīng)安裝

[root@mzf Packages]# rpm -ivh tree-1.5.3-3.el6.x86_64.rpm  Preparing...                ########################################### [100%] package tree-1.5.3-3.el6.x86_64 is already installed

#那就先卸載此文件

[root@mzf Packages]# rpm -e tree

#再次安裝,顯示進度安裝成功

[root@mzf Packages]# rpm -ivh tree-1.5.3-3.el6.x86_64.rpm  Preparing...                 ########################################### [100%]    1:tree             ########################################### [100%]

#安裝zsh發(fā)現(xiàn)已經(jīng)被安裝過

[root@mzf Packages]# rpm -ivh zsh-4.3.11-4.el6.centos.2.x86_64.rpm  Preparing...                 ########################################### [100%] package zsh-4.3.11-4.el6.centos.2.x86_64 is already installed

#使用--force強制安裝并覆蓋之前的安裝

[root@mzf Packages]# rpm -ivh --force zsh-4.3.11-4.el6.centos.2.x86_64.rpm  Preparing...         ########################################### [100%]    1:zsh          ########################################### [100%]

#查詢bind是否已經(jīng)安裝,發(fā)現(xiàn)只是一些庫和工具

[root@mzf Packages]# rpm -qa | grep '^bind' bind-libs-9.8.2-0.47.rc1.el6.x86_64 bind-utils-9.8.2-0.47.rc1.el6.x86_64

#安裝一個服務(wù)器配置,顯示此包依賴于bind-9.8.2-0.47.rc1.el6包

[root@mzf Packages]# rpm -ivh bind-chroot-9.8.2-0.47.rc1.el6.x86_64.rpm  error: Failed dependencies: bind = 32:9.8.2-0.47.rc1.el6 is needed by bind-chroot-32:9.8.2-0.47.rc1.el6.x86_64

#那么可以選擇一起安裝,也可以忽略、強制安裝

[root@mzf Packages]# rpm -ivh --nodeps --force bind-chroot-9.8.2-0.47.rc1.el6.x86_64.rpm  Preparing...           ########################################### [100%]    1:bind-chroot        warning: group named does not exist - using root warning: group named does not exist - using root%) warning: group named does not exist - using root%) warning: group named does not exist - using root%)

說明:雖然裝上了,但是顯示一些錯誤信息,因為沒有主配置文件,這里我們還是一起安裝

[root@mzf Packages]# rpm -ivh bind-9.8.2-0.47.rc1.el6.x86_64.rpm  Preparing...                ########################################### [100%]    1:bind         warning: /etc/sysconfig/named created as /etc/sysconfig/named.rpmnew ########################################### [100%]

#卸載剛才安裝的軟件

[root@mzf Packages]# rpm -e bind-chroot #沒有信息就說明已經(jīng)安裝成功

#檢驗軟件包來源合法性,這里顯示正常

[root@mzf Packages]# rpm -K bind-chroot-9.8.2-0.47.rc1.el6.x86_64.rpm  bind-chroot-9.8.2-0.47.rc1.el6.x86_64.rpm: rsa sha1 (md5) pgp md5 OK

#而檢驗是通過公鑰文件來處理的,如果沒有這些文件,將會檢查失效

[root@mzf Packages]# ls /etc/pki/rpm-gpg/ RPM-GPG-KEY-CentOS-6  RPM-GPG-KEY-CentOS-Debug-6  RPM-GPG-KEY-CentOS-Security-6  RPM-GPG-KEY-CentOS-Testing-6

#通過命令導(dǎo)入密鑰:

[root@mzf Packages]# rpm --import /mnt/iso/RPM-GPG-KEY-CentOS-6

#查看剛才安裝的密鑰

[root@mzf Packages]# rpm -qa | grep 'gpg.*key' gpg-pubkey-c105b9de-4e0fd3a3

#卸載此密鑰

[root@mzf Packages]# rpm -e gpg-pubkey

如果安裝過的軟件的某些文件被刪除或者破壞,如何只恢復(fù)指定文件而不重裝?

#查看tree執(zhí)行文件的路徑

[root@mzf Packages]# which tree /usr/bin/tree

#刪除出tree執(zhí)行文件

[root@mzf Packages]# rm -f /usr/bin/tree

#再次執(zhí)行已經(jīng)找不到此命令

[root@mzf Packages]# tree -bash: tree: command not found

#通過rpm2cpio將rpm包生成的文件列表寫成數(shù)據(jù)流傳給cpio查看

[root@mzf Packages]# rpm2cpio ./tree-1.5.3-3.el6.x86_64.rpm | cpio -tv -rwxr-xr-x   1 root   root   41136 Jan 14  2015 ./usr/bin/tree drwxr-xr-x   2 root   root   0 Jan 14  2015 ./usr/share/doc/tree-1.5.3 -rw-r--r--   1 root   root   18009 Aug 13  2004 ./usr/share/doc/tree-1.5.3/LICENSE -rw-r--r--   1 root   root   4167 Oct 20  2009 ./usr/share/doc/tree-1.5.3/README -rw-r--r--   1 root   root   3375 Jan 14  2015 ./usr/share/man/man1/tree.1.gz

#根據(jù)上面顯示時說明展開默認在當(dāng)前當(dāng)文件夾

#那么我們切換到家目錄

[root@mzf Packages]# cd

#只展開出tree命令

[root@mzf~]#rpm2cpio /mnt/iso/Packages/tree-1.5.3-3.el6.x86_64.rpm | cpio -idv ./usr/bin/tree ./usr/bin/tree 132 blocks

#拷貝這個命令到原來tree命令所在的目錄

[root@mzf ~]# cp usr/bin/tree /usr/bin/tree

#發(fā)現(xiàn)tree命令又可以使用了

[root@mzf ~]# tree . ├── anaconda-ks.cfg ├── checkdisk.sh

重建庫文件

#查詢庫文件

[root@mzf ~]# ls /var/lib/rpm/ Basenames     __db.001  __db.003  Dirnames     Group       Name          Packages     Provideversion  Requirename     Sha1header  Triggername Conflictname  __db.002  __db.004  Filedigests  Installtid  Obsoletename  Providename  Pubkeys         Requireversion  Sigmd5

#備份移動庫文件

[root@mzf ~]# mkdir backup [root@mzf ~]# mv /var/lib/rpm/* backup/

#已經(jīng)沒有任何庫文件

[root@mzf ~]# ls /var/lib/rpm/

#初始化庫文件

[root@mzf ~]# rpm --initdb [root@mzf ~]# ls /var/lib/rpm/ __db.001  __db.002  __db.003  __db.004  Packages

#重建庫文件

[root@mzf ~]# rpm --rebuilddb [root@mzf ~]# ls /var/lib/rpm/ Packages

#查詢已經(jīng)失效

[root@mzf ~]# rpm -qa 說明:這里的重建只是重新生成庫文件,但以前的記錄已經(jīng)沒有了,這時我們還原

#將剛才的文件再次移動到/var/lib/rpm下

[root@mzf ~]# mv -f backup/* /var/lib/rpm/

#查詢之前安裝的軟件,發(fā)現(xiàn)可以查看了

[root@mzf ~]# rpm -qa | grep '^bind.*' bind-libs-9.8.2-0.47.rc1.el6.x86_64 bind-9.8.2-0.47.rc1.el6.x86_64

bind-utils-9.8.2-0.47.rc1.el6.x86_64

注意:這里如果只是一點文件或者鎖文件破壞,還可以使用重建數(shù)據(jù)庫拯救,但是如果/var/lib/rpm里的文件都被刪除了,就算重建了,記錄是找不回來的,這時就需要對庫文件進行備份了

另外有需要云服務(wù)器可以了解下創(chuàng)新互聯(lián)cdcxhl.cn,海內(nèi)外云服務(wù)器15元起步,三天無理由+7*72小時售后在線,公司持有idc許可證,提供“云服務(wù)器、裸金屬服務(wù)器、高防服務(wù)器、香港服務(wù)器、美國服務(wù)器、虛擬主機、免備案服務(wù)器”等云主機租用服務(wù)以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡單易用、服務(wù)可用性高、性價比高”等特點與優(yōu)勢,專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應(yīng)用場景需求。

當(dāng)前標題:Linux入門學(xué)習(xí)之rpm軟件包管理-創(chuàng)新互聯(lián)
轉(zhuǎn)載來源:http://www.rwnh.cn/article2/ichic.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供用戶體驗、定制網(wǎng)站ChatGPT、網(wǎng)站改版、營銷型網(wǎng)站建設(shè)、外貿(mào)網(wǎng)站建設(shè)

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

成都網(wǎng)頁設(shè)計公司
凤庆县| 顺义区| 遂溪县| 武威市| 抚松县| 封丘县| 麦盖提县| 景谷| 公主岭市| 华坪县| 神池县| 合作市| 威远县| 巧家县| 中方县| 长沙县| 岑巩县| 宣武区| 航空| 蓬安县| 柏乡县| 宾阳县| 佛山市| 巴南区| 临邑县| 丹寨县| 安多县| 前郭尔| 怀集县| 介休市| 凌海市| 莲花县| 屏边| 雅江县| 静乐县| 社旗县| 天津市| 洪洞县| 滨海县| 涪陵区| 随州市|