Linux程序包管理
網(wǎng)站建設(shè)哪家好,找創(chuàng)新互聯(lián)公司!專注于網(wǎng)頁設(shè)計(jì)、網(wǎng)站建設(shè)、微信開發(fā)、成都微信小程序、集團(tuán)企業(yè)網(wǎng)站建設(shè)等服務(wù)項(xiàng)目。為回饋新老客戶創(chuàng)新互聯(lián)還提供了資陽免費(fèi)建站歡迎大家使用!我們linux操作系統(tǒng)從底層到高層的層次結(jié)構(gòu):
最底層首先是硬件,計(jì)算機(jī)的計(jì)算能力都是在硬件邏輯上設(shè)計(jì)實(shí)現(xiàn)的,而不同廠商生產(chǎn)的芯片哪怕是同一廠商生產(chǎn)的同一型號(hào)的芯片,他們給我們提供的計(jì)算接口都不一樣,我們基本都同說過嵌入式開發(fā),那么這種開發(fā)如果沒有系統(tǒng)可以使用的話,主要是面向硬件,來寫程序的,而這種程序只能適應(yīng)一種或者幾種有限的芯片,單片機(jī)尤其如此,現(xiàn)在很多嵌入式開發(fā)過程中,也已經(jīng)有了一種通用層來實(shí)現(xiàn),但是像單片機(jī)這種還是面向硬件編程的,
然后在底層之上就是將硬件接口封裝起來的操作系統(tǒng)層,系統(tǒng)層將底層的硬件接口封裝起來以后,通過系統(tǒng)調(diào)用(system call),向上輸出,但是系統(tǒng)調(diào)用仍然很底層,為了加速開發(fā)操作,在操作系統(tǒng)層之上又加了半層叫“庫(kù)(lib call)”,注意這里不是全層,而是半層,因?yàn)閷?duì)于程序員來講,可以面向半層“庫(kù)”來寫程序,也可以面向我們的操作系統(tǒng)來寫程序,然后在庫(kù)之上就是應(yīng)用程序了,應(yīng)用程序是給我們真正帶來一些生產(chǎn)力的,我們的內(nèi)核是不能完成任何具體的操作的,在這眾多的應(yīng)用類型程序中,我們知道有一類比較獨(dú)特的,他主要是讓用戶跟主機(jī)交互的,叫shell任何利用操作系統(tǒng)完成任務(wù)的操作,都是通過應(yīng)用程序完成的,所以我們說將來我們真正去實(shí)現(xiàn)運(yùn)維操作的過程中,除了系統(tǒng)管理,庫(kù)調(diào)用管理之外,其實(shí)作為運(yùn)維人員來講,就是不停的在我們的操作系統(tǒng)上安裝配置某一應(yīng)用程序包,然后讓這個(gè)應(yīng)用程序包運(yùn)行起來,并提供服務(wù),或者利用此工具完成某種具體相應(yīng)操作的過程。那對(duì)于我們運(yùn)維人員來講,安裝卸載管理程序包,是實(shí)現(xiàn)很多后期工作的最基礎(chǔ),最根本的任務(wù),所以首先我們要學(xué)會(huì)靈活實(shí)現(xiàn)對(duì)于程序包的安裝管理操作。
任何程序的運(yùn)行,他有可能在程序包上提供兩種格式的程序包,我們稱之為源碼包或者叫二進(jìn)制包,那么我們將到這就不得不回顧一下以前講到的API和ABI,API叫應(yīng)用程序開發(fā)接口,ABI叫應(yīng)用程序二進(jìn)制接口。我們說過,API層次兼容未必ABI層次兼容。因?yàn)橛行┎僮飨到y(tǒng)他們執(zhí)行程序的格式,或者對(duì)二進(jìn)制的是識(shí)別格式,并非是相同的,像linux跟類unix(Unix-like)他們的操作系統(tǒng),一般而言是相同的,他們的ABI是相同的,但是與windows相差很遠(yuǎn),比方說windows系統(tǒng)上的可執(zhí)行程序都是exe或者是msi的,而linux上的是elf格式的。所以他們?cè)贏BI層次不兼容,所以我們說即使我們使用高級(jí)編程語言,去編寫程序,他們即便是在源碼格式兼容的,但是一旦編譯成功以后,本來是linux上面的格式的,而跑到windows上一樣依然無法運(yùn)行。所以有一個(gè)程序包,在linux上編譯好了,他是二進(jìn)制格式的,我們是不能拿來裝到windows之上的。反過來如果一個(gè)程序包在windows上編譯好了,是一個(gè)exe格式的文件,能不能在linux系統(tǒng)上運(yùn)行起來呢?也很難。我們可以借助虛擬化將二者的差異將其磨平了,比方說現(xiàn)在的各種各樣的應(yīng)用程序,幾乎都是針對(duì)庫(kù)調(diào)用來開發(fā)的,很少說是直接通過系統(tǒng)調(diào)用來實(shí)現(xiàn)。即使是通過系統(tǒng)調(diào)用來實(shí)現(xiàn),那也沒問題,現(xiàn)在在windows上有很多程序模擬linux的庫(kù),在linux上也有很多模擬windows庫(kù)的程序。
比方說現(xiàn)在這里有一個(gè)linux操作系統(tǒng),沒關(guān)系我們裝一個(gè)WinE,這個(gè)wine就能在linux上模擬出windows庫(kù)來。所以我們就可以借助wine來運(yùn)行windows應(yīng)用程序。比方說希望在linux上玩的各種各樣的游戲,甚至還能給我們提供一個(gè)安裝的路徑,模擬出windows上的C盤D盤E盤。但這只是一個(gè)庫(kù)虛擬層。同樣在windows上我們也能提供linux運(yùn)行環(huán)境。叫cywin,在windows之上運(yùn)行一個(gè)cywin,他能夠提供運(yùn)行模擬出linux的運(yùn)行環(huán)境來。所以說有一些程序只能在linux上運(yùn)行的話,我們也能在windows上基于cywin運(yùn)行起來,比如說像docker。這都不是正常的方案,正常的方案就是,由于abf庫(kù)是不兼容的,至少在二進(jìn)制層次上他們是不兼容的。所以他們沒有辦法安裝塊系統(tǒng)來實(shí)現(xiàn)系統(tǒng)調(diào)用。
庫(kù)級(jí)別的虛擬化:我們可以借助庫(kù)級(jí)別的虛擬化來抹平他們的不同。比如在linux上我們可以借助于wine來提供windows庫(kù)從而能夠運(yùn)行windows應(yīng)用程序。而在Windoes上我們借助于Cywin這個(gè)程序包,來虛擬模擬出linux的運(yùn)行環(huán)境。從而使得那些二進(jìn)制程序也能跨系統(tǒng)來運(yùn)行了。
系統(tǒng)級(jí)開發(fā):
C/C++:服務(wù)及應(yīng)用程序:httpd,vsftpd,nginx
go
應(yīng)用級(jí)開發(fā)
java/Python/perl/ruby/php
java:hadoop,hbase,(他們的運(yùn)行需要jvm就是java虛擬機(jī))
Python:openstack(openstack是一個(gè)云操作系統(tǒng))
運(yùn)行Python程序需要用到pvm(Python虛擬機(jī))
運(yùn)行perl:(依賴于perl)
運(yùn)行ruby:(依賴于ruby解釋器)
運(yùn)行php:(依賴于php解釋器)
C/C++程序格式:
源代碼:文本格式的程序代碼;
二進(jìn)制格式:文本格式的程序代碼---->編譯器------>二進(jìn)制格式(二進(jìn)制程序,庫(kù)文件,配置文件,幫助文件)
(二進(jìn)制格式我們僅僅是指他的陳序和庫(kù)是二進(jìn)制的,他的配置文件和幫助文件當(dāng)然是文本的。我們知道Linux重要的哲學(xué)思想之一就是:用文本文件保存配置信息,這樣帶來的好處就在于,我們將來配置任何應(yīng)用程序時(shí),只需要依賴一款文本編輯器就可以。)
所以我們將來要想安裝應(yīng)用程序,那么針對(duì)我們兩種格式的內(nèi)容,他的安裝方式就顯然不一樣,我們知道源代碼不能運(yùn)行,所以我們必須將其編譯以后將其安裝運(yùn)行。對(duì)于源代碼而言我們要手動(dòng)把“文本格式的程序代碼---->編譯器------>二進(jìn)制格式”這個(gè)過程手動(dòng)完成。如果是別人給我們提供的是二進(jìn)制格式的文件,上面的過程就不需要我們自己做了。因?yàn)槲覀兡玫降闹苯邮强蛇\(yùn)行格式的。萬一很不幸的是對(duì)方僅提供了源代碼怎么辦呢?那么我們就只能自己編譯了。而要想能夠自己編譯的話,那就依賴于編譯開發(fā)環(huán)境。因?yàn)榫幾g要依賴于編譯器,依賴于頭文件,依賴于開發(fā)庫(kù)。我們的庫(kù)也是源代碼格式的,所以庫(kù)也有兩種文件。后來我們把它編譯成了二進(jìn)制格式的。
所以我們的編譯開發(fā)環(huán)境依賴于:編譯器,頭文件,開發(fā)庫(kù)。
如果我們拿到的是二進(jìn)制格式的,那么就不需要編譯,我們直接放到目錄下就能運(yùn)行起來了。
所以我們?nèi)绻獔?zhí)行源代碼編譯安裝,那么我們需要額外的準(zhǔn)備好幾步。至少我們要想方設(shè)法保證我們的編譯環(huán)境是完整的。而提供編譯環(huán)境是相當(dāng)勞心費(fèi)神的工作。
我們學(xué)習(xí)程序包安裝,首先了解二進(jìn)制格式是怎么安裝的,然后再去了解如何源代碼編譯安裝。上面是C程序的格式。
那么如果是應(yīng)用級(jí)的程序格式呢?
那么我們就以JAVA和Python為例,那么JAVA和Python應(yīng)用程序格式是一樣的,
java/python程序格式:
源代碼
二進(jìn)制
同樣的道理,如果是源代碼格式,那也只能編譯了,如果是二進(jìn)制格式那么直接使用即可
但是他們的編譯不同在于,他們編譯出來的不是二進(jìn)制格式,或者不是能夠直接在CPU上直接運(yùn)行的二進(jìn)制格式,而是編譯成其能夠在虛擬機(jī)上(jvm/pvm)運(yùn)行的程序格式。也就是說通過虛擬機(jī)將其轉(zhuǎn)換成能夠運(yùn)行的二進(jìn)制格式。中間多了一層,所以性能很差?;蛘哒f比起C語言性能比較差。通常來說無論是C格式的源代碼,還是java格式的源代碼,通常他們的程序文件,都不止一個(gè)。那為什么不止一個(gè)?
將來我們的程序文件在編譯時(shí)存在錯(cuò)綜復(fù)雜的依賴關(guān)系,導(dǎo)致我們有一百個(gè)程序源文件,很有可能我們先編譯第一個(gè),在編譯第三個(gè),在編譯第二個(gè)。因?yàn)榈谝粋€(gè)第三個(gè)被第二個(gè)所依賴。這樣帶來的結(jié)果就是誰先編譯誰后編譯,作為使用者我們沒有能力管理他們的編譯順序。所以各種各樣的源代碼通常都使用一個(gè)項(xiàng)目管理工具。或者叫項(xiàng)目構(gòu)建工具。
項(xiàng)目構(gòu)建工具:
C/C++:最著名的項(xiàng)目構(gòu)建工具就叫make
java:最經(jīng)典的項(xiàng)目構(gòu)建工具就叫maven
這樣項(xiàng)目構(gòu)建工具,也必須依賴項(xiàng)目開發(fā)環(huán)境才能構(gòu)建。而對(duì)于java來講他也有自己的開發(fā)環(huán)境。他也需要開發(fā)環(huán)境。只不過對(duì)于這兩種的編程語言來講。他們的開發(fā)環(huán)境,通常指的是,那個(gè)對(duì)應(yīng)應(yīng)用程序的虛擬機(jī),和虛擬機(jī)上面的編譯器。java源代碼編譯也需要開發(fā)環(huán)境,只不過是沒有頭文件,他們也需要:編譯器,卡發(fā)庫(kù)。這也是我們程序包的組成格式。
為了降低初級(jí)使用者的難度,我們應(yīng)該怎樣做?
我們應(yīng)該使用程序包管理器,來協(xié)助這些終端用戶的管理工作。
程序包管理器:
源代碼---->目標(biāo)二進(jìn)制格式----->組織成為一個(gè)或有限幾個(gè)“包”文件;
安裝,升級(jí),卸載,查詢,(甚至對(duì)linux上還支持)校驗(yàn)
程序包管理器:
(程序包管理器大體上有哪幾種呢?
對(duì)于windows來講,大多數(shù)的應(yīng)用程序都是exe格式的。這種格式應(yīng)用程序給我們提供一個(gè)安裝界面,我們只需點(diǎn)擊下一步下一步即可,卸載的時(shí)候我們通過我們控制面板中的,卸載應(yīng)用程序來實(shí)現(xiàn),為什么我們能看到的只是下一步下一步就能完成安裝呢?他其實(shí)就是通過一個(gè)程序包管理器打包成一個(gè)單個(gè)的exe文件,我們知道我們安裝完以后他的確分散成多個(gè)可能放在program/files目錄下某一個(gè)路徑下,每一個(gè)應(yīng)用程序都有一個(gè)目錄,里面存放各種文件,有二進(jìn)制的有庫(kù)的,對(duì)于windows來說,他們的庫(kù)是dll文件,動(dòng)態(tài)鏈接庫(kù),dynamic link,而對(duì)于linux而言,叫so。)
目前l(fā)inux有三大主流分支:
debian:dpt,dpkg,".dep"
redhat:redhat package manager,簡(jiǎn)稱:rpm,".rpm";rpm ispackage manager;
S.u.S.E:rpm,".rpm",
Gentoo:ports
ArchLinux:
源代碼:
命名方式:name-VERSION.tar.gz
VERSION:major.minor.release //主版本號(hào).次版本號(hào).發(fā)行版本
rpm包命名格式:
name-VERSION-release.arch.rpm //release是rpm包的release。
VERSION:major.minor.release
release.arc:是指rpm包的發(fā)行號(hào)
release.os:2.el7.i386.rpm
archetecture:架構(gòu),i386,x64(amd64),ppc,noarch
redis-3.0.2.targz----->redis-3.0.2-1.centos7.x64.rpm
changelog:
拆包:主包和支包
主包:name-VERSION-release.arch.rpm
支包:name-function-VERSION-release.arch.rpm
function:devel,utils,libs.....
依賴關(guān)系:
x,y,z
x------依賴--->y,z
y------依賴-------->A,B,C
c--------->y
前端工具:自動(dòng)解決依賴關(guān)系;
yum:rhel系列系統(tǒng)上rpm包管理器的前端工具;
apt-get(apt-cache):dep包管理器的前端工具;
zypper:suse的rpm管理器前端工具;
dnf:Fedora 22+系統(tǒng)上rpm包管理器的前端工具;
程序包管理器:
功能:將編譯好的應(yīng)用程序的各組成文件打包成一個(gè)或幾個(gè)程序包文件,從而更方便的 實(shí)現(xiàn)程序包的安裝,升級(jí),卸載,和查詢等管理操作;
1.程序包的組成清單(每個(gè)程序包都單獨(dú)實(shí)現(xiàn));
文件清單
安裝或卸載時(shí)運(yùn)行的腳本
2數(shù)據(jù)庫(kù)(公共)
程序包的名稱和版本;
依賴關(guān)系;
功能說明;
安裝生成的各個(gè)文件的文件路徑及校驗(yàn)碼信息;
CentOS系列系統(tǒng)的rpm數(shù)據(jù)庫(kù):路徑
/var/lib/rpm
[root@centos7 ~]# ls /var/lib/rpm
Basenames __db.002 Group Obsoletename Requirename Triggername
Conflictname __db.003 Installtid Packages Sha1header
__db.001 Dirnames Name Providename Sigmd5
[root@centos7 ~]#
解釋:
Group:包組,我們可以將程序劃分成一個(gè)組,將來可以把一個(gè)程序包組全部安上,一個(gè)組 全部卸載。
Name:各個(gè)程序的名字;
Sigmd5:MD5的校驗(yàn)碼;
Triggername:觸發(fā)器名稱;
獲取程序包的途徑:
(1)系統(tǒng)發(fā)行版的光盤或官方的文件服務(wù)器(或鏡像站點(diǎn)):
http://mirrors.aliyun.com
http://mirrors.sohu.com
http://mirrors.163.com
(2)項(xiàng)目的官方站點(diǎn)
舉例:以thhp為例:站點(diǎn)httpd.apache.org
或者:
網(wǎng)站www.zabbix.com
打開網(wǎng)站www.zabbix.com網(wǎng)站,我們網(wǎng)站的導(dǎo)航欄中直接點(diǎn)擊“Download”,打開一個(gè)頁面,前面的“Zabbix Packages”是zabbix的rpm包,再往下“Zabbix Sources”是源碼包。
所以說很多項(xiàng)目的官方站點(diǎn)也提供rpm包,并且我們一定注意,既然后能用rpm包安裝的我們一定不要使用源碼包編譯安裝。
(3)第三方組織:EPEL
EPEL:紅帽官方的社區(qū)組織所維護(hù)的,發(fā)行光盤之外其他他們覺得比較有用比較重點(diǎn),比較有名的程序包,都將制作成rpm包放在EPEL中。
其實(shí)國(guó)內(nèi)的很多官方站點(diǎn)都有這樣的epel。
舉例演示,我們以“mirrors.aliyun.com”為例:
在鏡像阿里云的站點(diǎn)上“mirrors.aliyun.com”也有epel,在epel中會(huì)為我們的centos提供了眾多的額外的補(bǔ)充包。
(a)EPEL
(b)搜索引擎
http://pkgs.org(在rpm領(lǐng)域中,這是一個(gè)非常重要的);
rpmfind.net(要想搜哪個(gè)文件包直接搜。)
rpm.pbone.net
上面對(duì)話框中,我們可以輸入正確的內(nèi)容來進(jìn)行查詢,我們還可以通過后面的
Advanced RPM Search |
來進(jìn)行高級(jí)查詢。
(4)自己手動(dòng)制作rpm包。
注意:不管上面的那種方式獲得rpm包,只要是通過互聯(lián)網(wǎng)上獲得的,那么我們就可以認(rèn)為即使原作者在里面沒有做任何改變,或者修改,因?yàn)槲覀儸F(xiàn)在經(jīng)常使用一些下載工具,像迅雷,那這種工具有點(diǎn)問題,為什么這種工具他的下載的速度非常的塊,就是因?yàn)樗麄兛赡懿皇菑墓俜降脑军c(diǎn)下載的,或者是非完完全全的官方站點(diǎn)上下載的,其實(shí)從已經(jīng)下載的用戶的那里下載的,如果官方站點(diǎn)下載不到的話,而且這時(shí)候他恰恰搜索到某個(gè)用戶的那里有這個(gè)文件,他也會(huì)傳給你,但是這個(gè)文件可能被其他用戶精心的修改過,制作了后門,所以以后我們?cè)诨ヂ?lián)網(wǎng)上下載人格安全性較高的文件的,像銀行官方站點(diǎn)的插件,還有像支付寶的證書等,我們就不應(yīng)該在使用迅雷下載。以后這中工具少用,尤其是使用PHP下載的,是相當(dāng)危險(xiǎn)的,那么我們下載下來一個(gè)工具我們不知道他到底是不是官方提供的呢?
至少是所有的數(shù)據(jù)沒有被篡改過,那怎么辦呢?
我們建議要做MD5校驗(yàn),提供一個(gè)MD5校驗(yàn)器,檢驗(yàn)其合法性,來源合法性。
程序包的完整性要做校驗(yàn);
CentOS系統(tǒng)上rpm命令管理程序包:
安裝,升級(jí),卸載,查詢和校驗(yàn),數(shù)據(jù)庫(kù)的維護(hù)
上面提到的“安裝,升級(jí),卸載,查詢和校驗(yàn)”都用rpm命令來實(shí)現(xiàn)。
格式: rpm [OPTIONS] [PACKAGE_FILE]
安裝用到的選項(xiàng):-i=--install
升級(jí)用到的選項(xiàng):-U=--update, -F=--freshen
卸載:-e=--erase
查詢:-q=--query
校驗(yàn):-V=--verify
數(shù)據(jù)庫(kù)維護(hù):--builddb,--initdb
安裝:
安裝時(shí)必須有對(duì)應(yīng)的文件才行。
rpm {-i|--install} [install-options]PACKAGE_FILE ...
真正安裝的時(shí)候應(yīng)該使用選項(xiàng):-ivh
rpm -ivh PACKAGE_FILE......
GENERAL OPTIONS(通用選項(xiàng))
-v:verbose;(輸出相信信息)
-vv:(輸出更詳細(xì)的過程信息)
[install-options]
-h:hash marks輸出進(jìn)度條;每個(gè)#表示2%的進(jìn)度;
--test:如果不想真正的安裝,僅僅是檢查一下有沒有潛在的沖 突的可能我們就可以測(cè)試安裝,檢查并報(bào)告依賴關(guān)系及 沖突消息等;
--nodeps:忽略依賴關(guān)系;不建議;
--replacepkgs:重新安裝 (如果某個(gè)包安裝過,但是后來我們 更改了他的配置文件,出了錯(cuò),那我們刻意先卸載 再重新安裝,但是我們還有一個(gè)更好的方法就是, 直接重新安裝。)
--noscripts:
--oldpackage:降級(jí)用的
--justdb:只是升級(jí)一下數(shù)據(jù)庫(kù)。
注意rpm包可以自帶腳本:
這些腳本有四類:
如果這四類都不想執(zhí)行:--noscripts
preinstall:安裝過程開始之前運(yùn)行腳本,%pre --nopre
postinstall:安裝過程完成以后運(yùn)行的腳本,%post --nopost
preuninstall:卸載過程真正開始執(zhí)行之前運(yùn)行的腳本,%preun --nopreun
postuninstall:卸載過程完成之后運(yùn)行的腳本,%postun --nopostun
--nosignature:不檢查簽名信息,不檢查來源合法性;
--nodigest:不檢查包完整性信息;
舉例演示:
[root@centos6 Packages]# rpm -ivhzsh-4.3.11-4.el6.centos.2.x86_64.rpm
warning:zsh-4.3.11-4.el6.centos.2.x86_64.rpm: Header V3 RSA/SHA1 Signature, key IDc105b9de: NOKEY
Preparing... ###########################################[100%]
1:zsh ########################################### [100%]
[root@centos6 Packages]# cat /etc/shells
/bin/sh
/bin/bash
/sbin/nologin
/bin/dash
/bin/tcsh
/bin/csh
/bin/zsh
[root@centos6 Packages]#
演示重新安裝replacepkgs:
之前我們zsh已經(jīng)安裝過了,那我們先編輯一下zsh的配置文件“/etc/zshrc”,比方說我們刪除其中的幾行,然后保存,因?yàn)槲覀儓?zhí)行“wq”之后,他的配置文件信息就不能恢復(fù)了。那么這時(shí),我們
[root@centos6 media]# vim /etc/zshrc //先將zsh的配置文件中的內(nèi)容刪除一部分
[root@centos6 media]# cat /etc/zshrc
[root@centos6media]#rpm -ivh --replacepkgs /media/Packages/zsh-4.3.11-4.el6.centos.2.x86_64.rpm
[root@centos6media]# cat /etc/zshrc //發(fā)現(xiàn)配置文件內(nèi)容沒有恢復(fù),這時(shí)因?yàn)槲覀兊南到y(tǒng)在我們沒有將原先的配置文件刪除,就在重裝軟件,那么系統(tǒng)就會(huì)認(rèn)為我們這個(gè)配置文件修改是有目的的,我們也要記住replacepkgs是不能修改原來的配置文件的。所以我們?cè)谥匮b之前要先刪除配置文件。
[root@centos6media]# rm -f /etc/zshrc
[root@centos6 media]# rpm -ivh --replacepkgs/media/Packages/zsh-4.3.11-4.el6.centos.2.x86_64.rpm
[root@centos6media]# cat /etc/zshrc //發(fā)現(xiàn)配置文件內(nèi)容恢復(fù)了
#
# /etc/zshrc is sourced in interactiveshells. It
# should contain commands to set upaliases, functions,
# options, key bindings, etc.
#
## shell functions
#setenv() { export $1=$2 } # csh compatibility
# Set prompts
PROMPT='[%n@%m]%~%# ' # default prompt
#RPROMPT=' %~' # prompt for right side of screen
# bindkey -v # vi key bindings
# bindkey -e # emacs key bindings
bindkey ' ' magic-space # also do history expansion on space
_src_etc_profile_d()
{
# Make the *.sh things happier,and have possible ~/.zshenv options like
#NOMATCH ignored.
emulate -L ksh
#from bashrc, with zsh fixes
if [[ ! -o login ]]; then # We're not a login shell
for i in /etc/profile.d/*.sh; do
if [ -r "$i" ]; then
. $i
fi
done
unset i
fi
}
_src_etc_profile_d
unset -f _src_etc_profile_d
[root@centos6 media]#
不檢查簽名演示:
[root@centos6 media]# rpm -ivh --replacepkgs/media/Packages/zsh-4.3.11-4.el6.centos.2.x86_64.rpm
warning: /media/Packages/zsh-4.3.11-4.el6.centos.2.x86_64.rpm: Header V3RSA/SHA1 Signature, key ID c105b9de: NOKEY
Preparing... ########################################### [100%]
1:zsh ########################################### [100%
上面在重新安裝軟件包的時(shí)候,前面出現(xiàn)了警告,我們要見檢查文件的合法性,文件的完整性,要檢查文件的這兩個(gè)選項(xiàng),要依賴一個(gè)秘鑰文件,要依賴這個(gè)包制作者的公鑰。
[root@centos6 media]# rpm -ivh--replacepkgs --nosignature/media/Packages/zsh-4.3.11-4.el6.centos.2.x86_64.rpm
Preparing... ###########################################[100%]
1:zsh ########################################### [100%]
[root@centos6 media]#
上面安裝時(shí),警告消失。
另外有需要云服務(wù)器可以了解下創(chuàng)新互聯(lián)cdcxhl.cn,海內(nèi)外云服務(wù)器15元起步,三天無理由+7*72小時(shí)售后在線,公司持有idc許可證,提供“云服務(wù)器、裸金屬服務(wù)器、高防服務(wù)器、香港服務(wù)器、美國(guó)服務(wù)器、虛擬主機(jī)、免備案服務(wù)器”等云主機(jī)租用服務(wù)以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡(jiǎn)單易用、服務(wù)可用性高、性價(jià)比高”等特點(diǎn)與優(yōu)勢(shì),專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應(yīng)用場(chǎng)景需求。