欧美三区四区_av先锋影音资源站_亚洲第一论坛sis_影音先锋2020色资源网_亚洲精品社区_在线免费观看av网站_国产一区二区伦理_亚洲欧美视频一区二区_99视频精品全部免费在线_精精国产xxxx视频在线

Linux的RPM與Tarball套件管理工具_(dá)Linux教程

編輯Tag賺U幣
教程Tag:暫無Tag,歡迎添加,賺取U幣!
為何需要升級(jí)套件

  這真是一個(gè)很有趣的課題,為何需要升級(jí)套件?如果我的機(jī)器運(yùn)作的好好的,那么我干嘛需要升級(jí)?通常我們升級(jí)的原因主要有三個(gè):

  ·需要新的功能,但舊有主機(jī)并沒有,所以需要安裝新的套件;

  ·舊版本的套件上面可能有安全上的顧慮,所以需要更新到新版的套件;

  ·舊版的套件執(zhí)行效能不彰,或者執(zhí)行的能力不能讓管理者滿足。

  在上面的需求當(dāng)中,尤其需要注意的是第二點(diǎn),當(dāng)一個(gè)套件有安全上的顧慮時(shí),千萬(wàn)不要懷疑,趕緊更新套件吧!否則造成網(wǎng)路危機(jī),那可不是鬧著玩的?那么更新的方法有哪些呢?其實(shí),目前在 Linux 里面有相當(dāng)多的不同的更新套件的方式,包括了 Red Hat 發(fā)展的 RPM 與 up2date 的線上更新模式; Debian 這個(gè) distribution 里頭使用的 dpkg 方法;Sun Unix 上面使用的 pkg 升級(jí)方式;目前越來越流行的 apt 線上更新模式;還有原始碼里頭最常使用的 Tarball 編譯方法等等,如果要一個(gè)一個(gè)說明的話那也太累人了?所以,這里我們以目前在 Mandrake, Red Hat, OpenLinux 等 Linux distributions 內(nèi)常見的 RPM 與 Tarball 的套件升級(jí)方式來進(jìn)行說明:

  ·RPM

  目前使用最廣泛的套件管理程式之一,利用資料庫(kù)管理的方式來進(jìn)行套件的安裝,具有相當(dāng)容易的操作介面,而且套件查詢驗(yàn)證的功能相當(dāng)強(qiáng)大,不過麻煩的地方在于他的屬性相依的問題;

  ·Tarball

  直接以原始碼( source code )經(jīng)過編譯后,進(jìn)行安裝。在安裝上面具有較大的靈活度,可以隨時(shí)更改使用者喜好的參數(shù)。但是需要其他的套件協(xié)助,例如 gcc compiler, kernel-header, make 套件等等,并且在反安裝上面具有一定程度的困難度;

  這兩種方法是各有優(yōu)缺點(diǎn)啦,我們這里想要來談一談 RPM 與 Tarball 的安裝方式了!

  RPM套件管理員:

  接下來我們先談?wù)撘幌聫V為流傳與使用的 RPM 套件管理員的相關(guān)使用方法喔!

  ·什么是 RPM 、 SRPM ?

  RPM 全名是『 RedHat Package Manager 』簡(jiǎn)稱則為 RPM 啦!顧名思義,當(dāng)初這個(gè)套件管理的程式是由 Red Hat 這家公司發(fā)展出來的,但其實(shí)在很多的其他套件也有相類似的套件管理程式。不過由于 RPM 使用上很方便,所以就成了目前最熱門的套件管理程式啦!那么什么是 RPM 呢?說的簡(jiǎn)單一點(diǎn), RPM 是以一種資料庫(kù)記錄的方式來將你所需要的套件安裝到你的 Linux 主機(jī)的一套管理程式。他最大的特點(diǎn)就是將您要安裝的套件先包裝好了,透過包裝好的套件里頭預(yù)設(shè)的資料庫(kù)記錄,記錄這個(gè)套件要安裝的時(shí)候必須要的相依屬性模組(就是你的 Linux 主機(jī)需要先存在的幾個(gè)必須的套件),當(dāng)安裝在你的 Linux 主機(jī)時(shí), RPM 會(huì)先依照套件里頭的紀(jì)錄資料查詢 Linux 主機(jī)的相依屬性套件是否滿足,若滿足則予以安裝,若不滿足則不予安裝。那么安裝的時(shí)候就將該套件的資訊整個(gè)寫入 RPM 的資料庫(kù)中,以便未來的查詢、驗(yàn)證與反安裝!這樣一來的優(yōu)點(diǎn)是:

  1.由于已經(jīng)編譯完成并且打包完畢,所以安裝上很方便;

  2.由于套件的資訊都已經(jīng)記錄在 Linux 主機(jī)的資料庫(kù)上,很方便查詢、升級(jí)與反安裝;

  但是這也造成很大的困擾,由于 RPM 程式是已經(jīng)包裝好的資料,也就是說,里面的資料已經(jīng)都『編譯完成』了!所以,安裝的時(shí)候一定需要當(dāng)初安裝時(shí)的主機(jī)環(huán)境才能安裝,也就是說,當(dāng)初建立這個(gè)套件的安裝環(huán)境必須也要在你的主機(jī)上面出現(xiàn)才行!例如 rp-pppoe 這個(gè) ADSL 撥接套件,他必須要在 ppp 這個(gè)套件存在的環(huán)境下才能進(jìn)行安裝!如果你的主機(jī)并沒有 ppp 這個(gè)套件,那么很抱歉,除非您先安裝 ppp 否則 rp-pppoe 就是不讓你安裝的(當(dāng)然您可以強(qiáng)制安裝,但是通常都會(huì)有點(diǎn)問題發(fā)生就是了!)。所以,通常不同的 distribution 所釋出的 RPM 檔案,并不能用在其他的 distribution 里面,舉例來說, Red Hat 釋出的 RPM 檔案,通常無法直接在 Mandrake 上面進(jìn)行安裝的,更有甚者,不同版本之間也無法互通,例如 Mandrake 9.0 的 RPM 檔案就無法直接套用在 8.2 上面!因此,這樣可以發(fā)現(xiàn)他的缺點(diǎn)是:

  3.安裝的環(huán)境必須與打包時(shí)的環(huán)境需求一致或相當(dāng);

  4.需要滿足套件的相依屬性需求;

  5.反安裝時(shí)需要特別小心,最底層的套件不可先移除,否則可能造成整個(gè)系統(tǒng)的問題!

  那怎么辦?呵呵!還好,還有 SRPM 這個(gè)東西! SRPM 是什么呢?他也是一種 RPM 啦!但是由于里面連同當(dāng)初編譯之前的原始碼都在里頭,所以可以進(jìn)行重新編譯的動(dòng)作。通常 SRPM 的附檔名是 ****.src.rpm 這一種檔案格式。由于 SRPM 包含了原始碼及參數(shù)設(shè)定檔案,所以在安裝之前則必須重新的編譯建立起包裝的資訊檔案套件才行!當(dāng)然啰,如果在編譯的過程中發(fā)生了問題,也可以藉由里頭的原始碼更動(dòng)來修正問題的所在呢!所以說, RPM 與 SRPM 最大的差異就是在于有沒有包含原始碼的程式啦!

  ·什么是 i386, i586, i686, noarch

  好啦!現(xiàn)在我們已經(jīng)知道 RPM 與 SRPM 的格式了,分別為:

  xxxxxxxxx.rpm  <==RPM 的格式,已經(jīng)包裝完成的 rpm 檔案; xxxxx.src.rpm  <==SRPM的格式,包含為編譯的原始碼資訊。

  ·

  OK!那么 rpm 檔案有沒有什么版本或者是套件名稱的稱呼呢?有的,你可以這樣來看待一個(gè) rpm 的檔案,例如 rp-pppoe-2.6-5.i386.rpm

  rp-pppoe - 2.6 - 5 . i386 .rpm 第一個(gè)部分是套件名稱這是套件的版本資訊 這是釋出版本的次數(shù) 這是適合的硬體平臺(tái)附檔名而已

  這樣子可以很清楚的發(fā)現(xiàn)該套件的名稱、版本資訊、打包次數(shù)與操作的硬體平臺(tái)!好了,來談一談每個(gè)不同的地方吧:

  o套件名稱:當(dāng)然就是每一個(gè)套件的名稱了!

  o版本資訊:每一次更新版本就需要有一個(gè)版本的資訊,否則如何知道這一版是新是舊?這里通常又分為主版本跟次版本,反正版本很多啦!

  o釋出版本次數(shù):也就是編譯的次數(shù)啦!那么為何需要重復(fù)的編譯呢?這是由于同一版的套件中,可能由于有某些 bug 或者是安全上的顧慮,所以必須要重新設(shè)定當(dāng)初打包時(shí)候的設(shè)定參數(shù),設(shè)定完成之后重新編譯并打包成 RPM 檔案!因此就有不同的打包數(shù)出現(xiàn)了!

  o操作硬體平臺(tái):這是個(gè)很好玩的地方,由于 RPM 可以適用在不同的操作平臺(tái)上,但是由于不同的平臺(tái)設(shè)定的參數(shù)還是有所差異性!所以就有所謂的 i386, i586, i686 與 noarch 等的檔案名稱出現(xiàn)了!

  §i386:幾乎適用于所有的 x86 平臺(tái),不論是舊的 pentum 或者是新的 pentum-IV 與 K7 系列的 CPU等等,都可以正常的工作!那個(gè) i 指的是 Intel 相容的 CPU 的意思,至于 386 不用說,就是 CPU 的等級(jí)啦!

  §i586:就是 586 等級(jí)的電腦,那是哪些呢?包括 pentum 第一代 MMX CPU, AMD 的 K5, K6 系列 CPU ( socket 7 插腳 ) 等等的 CPU 都算是這個(gè)等級(jí);

  §i686:在 pentun II 以后的 Intel 系列 CPU ,及 K7 以后等級(jí)的 CPU 都屬于這個(gè) 686 等級(jí)!

  §noarch:就是沒有任何硬體等級(jí)上的限制。

  需要額外說明的是, i386 的檔案可以在任何的機(jī)器上面安裝,不論是 586 或者是 686 的機(jī)器,但是 i386 則不一定可以使用于 586 或者是 686 的硬體上面,另外,在 686 的機(jī)器上使用 i686 的檔案會(huì)比使用 i386 的檔案在執(zhí)行上,效能可能比較好一些!無論如何,使用 i386 應(yīng)該就是比較沒有問題的啦!另外,由于不同的 distirbution 會(huì)有不同的環(huán)境與函式庫(kù),所以在 i386 之后也有可能會(huì)額外再加上該套件的簡(jiǎn)寫!

  好了!接下來我們來談一談安裝的時(shí)候所需要使用到的目錄!

  ·SRPM 與 RPM 工作時(shí)候所需要的安裝目錄

  SRPM 的編譯過程:

  剛剛提到 SRPM 里頭含有的是未經(jīng)編譯的原始碼,所以我們需要將 SRPM 進(jìn)行編譯打包的動(dòng)作!那么編譯是在哪里進(jìn)行呢?由于編譯的時(shí)候會(huì)將原始碼解壓縮出來,并且將附有的參數(shù)控制選項(xiàng)也同時(shí)的解開,所以就有一些資料會(huì)出現(xiàn)了,那么這些資料放在哪里呢?你可以到你的 /usr/src 這個(gè)目錄里面去查看一下,通常每個(gè) distribution 提供的目錄都不太相同,以 Mandrake 9.0 為例,他是以 /usr/src/RPM 為工作目錄, Red Hat 是以 /usr/src/redhat 為工作目錄, Openlinux 則是以 /usr/src/openlinux 為工作目錄!無論如何,反正就是在 /usr/src 這個(gè)目錄下就對(duì)了!好了,既然我們是在 Mandrake 9.0 ,所以就到 /usr/src/RPM 里頭去看一看呦:

  o/usr/src/RPM/SPEC:這個(gè)目錄當(dāng)中放置的是該套件的設(shè)定檔,例如這個(gè)套件的資訊參數(shù)、設(shè)定項(xiàng)目等等都放置在這里;

  o/usr/src/RPM/SOURCE:這個(gè)目錄當(dāng)中放置的是該套件的原始檔(*.tar.gz的檔案)以及 config 這個(gè)設(shè)定檔;

  o/usr/src/RPM/BUILD:在編譯的過程中,有些暫存的資料都會(huì)放置在這個(gè)目錄當(dāng)中;

  o/usr/src/RPM/RPMS:經(jīng)過編譯之后,并且順利的編譯成功之后,將打包完成的檔案放置在這個(gè)目錄當(dāng)中。里頭有包含了 i386, i586, i686, noarch.... 等等的次目錄。

  此外,在編譯的過程當(dāng)中,可能會(huì)發(fā)生不明的錯(cuò)誤,或者是設(shè)定的錯(cuò)誤,這個(gè)時(shí)候就會(huì)在 /tmp 底下產(chǎn)生一個(gè)相對(duì)應(yīng)的錯(cuò)誤檔,您可以根據(jù)該錯(cuò)誤檔進(jìn)行除錯(cuò)的工作呢!等到所有的問題都解決之后,也編譯成功了,那么剛剛解壓縮之后的檔案,就是在 /usr/src/RPM/SPEC, SOURCE, BUILD 等等的檔案都會(huì)被殺掉,而只剩下放置在 /usr/src/RPM/RPMS 底下的檔案了!

  RPM 的安裝過程:

  RPM 在安裝的時(shí)候,會(huì)先去讀取 套件 內(nèi)的設(shè)定參數(shù)內(nèi)容,就是剛剛我們?cè)?/usr/src/RPM/SPEC 的相關(guān)資訊啦!然后將該資料用來比對(duì) Linux 系統(tǒng)的環(huán)境,這些環(huán)境包括了這個(gè)欲安裝的套件的前驅(qū)套件,例如目前 postfix 這個(gè) e-mail 套件當(dāng)中,大都支援了cyrus-sasl 這個(gè)套件的身份認(rèn)證功能,所以,要安裝 postfix 就必需先安裝 cyrus-sasl 這個(gè)套件,否則 postfix 就不讓你安裝了!還有類似版本的資訊等等,這些都是 RPM 環(huán)境的要求,如果環(huán)境相符就予以安裝,如果不符就會(huì)顯示出不符合的內(nèi)容所在!等到安裝完畢之后, rpm 就會(huì)將套件的資訊寫入:/var/lib/rpm 這個(gè)目錄中去!所以,往后您在進(jìn)行查詢的時(shí)候或者是預(yù)計(jì)要升級(jí)的時(shí)候,相關(guān)的資訊就會(huì)由 /var/lib/rpm 這個(gè)目錄的內(nèi)容資料來提供啰!此外,在安裝 RPM 的套件時(shí),這些套件通常會(huì)使用到底下的目錄:

  o /etc 一些設(shè)定檔放置的目錄,例如 /etc/samba

  o /usr/bin 一些可執(zhí)行檔案

  o /usr/lib 一些程式使用的動(dòng)態(tài)函式庫(kù)

  o /usr/share/doc 一些基本的軟體使用手冊(cè)與說明檔

  o /usr/share/man 一些 man page 檔案

  底下我們先針對(duì) RPM 的相關(guān)指令來進(jìn)行說明啰!

  ·RPM 的指令使用:安裝、升級(jí)與更新、查詢、驗(yàn)證、反安裝與重建資料庫(kù)

  RPM 提供了『安裝』、『升級(jí)與更新』、『查詢』、『驗(yàn)證』、『反安裝與重建資料庫(kù)』等功能,底下我們一個(gè)一個(gè)來說明吧!

  o安裝:

  從無到有就是安裝啦!那么安裝的方式為何呢?若是 RPM 則使用 ivh 啦!如果是 SRPM 就使用 rebuild 或是 recompiler 啰!

  [root @test /root]# rpm --rebuild rp-pppoe-2.6-5.src.rpm <==SRPM [root @test /root]# rpm --recompile rp-pppoe-2.6-5.src.rpm <==SRPM [root @test /root]# rpm -ivh rp-pppoe-2.6-5.i386.rpm <==RPM

  §--rebuild:這個(gè)參數(shù)會(huì)將后面的 SRPM 進(jìn)行『編譯』與『打包』的動(dòng)作,但是并沒有安裝,當(dāng)您使用 --rebuild 的時(shí)候,最后通常會(huì)發(fā)現(xiàn)一行字體:

  Wrote: /usr/src/RPM/RPMS/i386/rp-pppoe-2.6-5.i386.rpm

  這個(gè)就是編譯完成的 RPM 檔案啰!那么這個(gè)檔案就可以用來安裝啦!安裝的時(shí)候請(qǐng)加絕對(duì)路徑來安裝即可!

  §--recompile:這個(gè)動(dòng)作會(huì)直接的『編譯』『打包』并且『安裝』啰!請(qǐng)注意, rebuild 僅『編譯并打包』而已,而 recompile 不但進(jìn)行編譯跟打包,還同時(shí)進(jìn)行『安裝』了!

  §-ivh:就是用來安裝 RPM 的參數(shù)而在這個(gè)參數(shù)之下,由于會(huì)有一些『相依屬性』的問題,或者是曾經(jīng)安裝過的檔案的問題,所以您可以再加以下的參數(shù)來『強(qiáng)制』安裝:

  §--nodeps:不考慮相依屬性的關(guān)系,給他強(qiáng)制的安裝下去;

  §--replacepkgs:如果這個(gè)套件之前安裝過,您想要覆蓋這個(gè)套件,那么不需要反安裝后再安裝,可以直接加上 --replacepkgs 強(qiáng)制覆蓋;

  §--replacefiles:那么如果這個(gè)套件安裝完畢之后,曾經(jīng)被你修改過檔案呢?就是安裝過程中會(huì)出現(xiàn)『confilcting files 』的話,那么直接以 --replacefiles 覆蓋掉這種檔案吧!

  [root @test /root]# rpm -ivh rp-pppoe-2.6-5.i386.rpm [root @test /root]# rpm -ivh --nodeps rp-pppoe-2.6-5.i386.rpm <==不考慮相依模組 [root @test /root]# rpm -ivh --replacepkgs rp-pppoe-2.6-5.i386.rpm <==直接覆蓋掉曾安裝過的套件 [root @test /root]# rpm -ivh --replacefiles rp-pppoe-2.6-5.i386.rpm <==直接覆蓋掉被修改過的問題檔案

  o升級(jí):

  使用 RPM 來升級(jí)真是太簡(jiǎn)單了!就以 Uvh 來升級(jí)即可!但是在比較大量的升級(jí)版本中,使用 Fvh 則是比較好的作法。但是需要注意的是,如果您使用的是 Fvh ,偏偏您的機(jī)器上尚無這一個(gè)套件,那么很抱歉,該套件并不會(huì)被安裝在您的 Linux 主機(jī)上面,所以請(qǐng)重新以 ivh 來安裝吧!

  [root @test /root]# rpm -Uvh rp-pppoe-2.6-5.i386.rpm [root @test /root]# rpm -Fvh *.rpm <==所有在你 Linux 主機(jī)上面安裝過的套件才升級(jí)

  注意的是, Uvh 是升級(jí)您所寫入的套件,至于 Fvh 則是『僅升級(jí)在您的系統(tǒng)里面存在的套件』,所以有的朋友在大量的進(jìn)行套件版本修補(bǔ)的時(shí)候,他們都是這樣做的:

  1.先到各發(fā)展商的 errata 網(wǎng)站上捉下來最新的 i386 檔案;

  2.使用 -Fvh 來將您的系統(tǒng)內(nèi)曾安裝過的套件進(jìn)行修補(bǔ)與升級(jí)!(真是方便呀!)

  o 查詢:

  查詢也是 RPM 的重要功能之一,因?yàn)樗峁┝诉@個(gè)套件的版本、用途等資訊,是相當(dāng)有用的!那么如何查詢呢?底下列出只要的查詢參數(shù):

  1. 從系統(tǒng)查詢(由 /var/lib/rpm 資料庫(kù)取得的資料) [root @test /root]# rpm -q rp-pppoe <==僅列出 rp-pppoe 這個(gè)套件的版本; [root @test /root]# rpm -qa <==列出所有安裝過的套件與版本; [root @test /root]# rpm -qi rp-pppoe <==列出 rp-pppoe 這個(gè)套件的詳細(xì)資訊 [root @test /root]# rpm -ql rp-pppoe <==列出 rp-pppoe 這個(gè)套件安裝的檔案與路徑; [root @test /root]# rpm -qf /etc/rc.d/init.d/pppoe <==查詢 pppoe 這個(gè)檔案屬于哪一個(gè)套件? 2. 由檔案查詢檔案的內(nèi)容 [root @test /root]# rpm -qpi rp-pppoe-2.6-5.src.rpm <==查詢這個(gè)套件的詳細(xì)資訊; [root @test /root]# rpm -qpl rp-pppoe-2.6-5.src.rpm <== 查詢這個(gè)套件里面有多少的檔案內(nèi)容存在

  o

  § 查詢套件:查詢安裝過的套件可以使用 -q 即可知道他的套件版本,但是如果忘記套件的全名,那么可以使用

  rpm -qa | grep pakagename 來選擇出適當(dāng)?shù)奶准?

  若使用 -qi 則可以了解這個(gè)套件的主要資訊!

  § 尋找套件檔案:常常我們忘記一個(gè)套件內(nèi)容含有的檔案時(shí),可以使用 -ql 來查詢?cè)撎准瑫?huì)列出相當(dāng)多的檔案呦!

  § 由檔案尋找套件:這是最長(zhǎng)發(fā)生的問題,就是您『誤砍』了某個(gè)檔案,偏偏不知道他是哪一個(gè)套件的,呵呵!那么你可以請(qǐng)跟你同樣系統(tǒng)的朋友,使用 -qf 來查詢?cè)摍n案所屬的套件,然后重新安裝該套件就可以就回來啦!

  o 驗(yàn)證:

  驗(yàn)證的功能主要在于提供系統(tǒng)管理員一個(gè)有用的管理機(jī)制!作用的方式是『使用 /var/lib/rpm 底下的資料庫(kù)內(nèi)容來比對(duì)目前 Linux 系統(tǒng)的環(huán)境下的所有套件檔案』也就是說,當(dāng)您有資料不小心遺失,或者是因?yàn)槟`殺了某個(gè)套件的檔案,或者是不小心不知道修改到某一個(gè)套件的檔案內(nèi)容,就用這個(gè)簡(jiǎn)單的方法來驗(yàn)證一下原本的檔案系統(tǒng)吧!好讓您了解這一陣子到底是修改到哪些檔案資料了!

  [root @test /root]# rpm -V rp-pppoe <==單純檢查 rp-pppoe 這個(gè)已安裝套件的檔案內(nèi)容與原先是否相同 [root @test /root]# rpm -Va <==檢查所有的 /var/lib/rpm 底下的資料庫(kù)與 Linux 系統(tǒng)下是否相同的檔案! 范例: [root @test /root]# rpm -V xinet S.5....T c /etc/xinetd.d/echo S.5....T c /etc/xinetd.d/echo-udp S.5....T c /etc/xinetd.d/time S.5....T c /etc/xinetd.d/time-udp 在檔案名稱前面的參數(shù)說明 S :file Size differs(檔案的容量大小已被改變) M :Mode differs (includes permissions and file type)(檔案的類型或檔案的屬性,如是否可執(zhí)行等參數(shù)已被改變) 5 :MD5 sum differs(MD5 這一種加密防駭?shù)膶傩砸驯桓淖? D :Device major/minor number mis-match(裝置名稱已被改變) L :readLink(2) path mis-match(Link 屬性已被改變) U :User ownership differs(檔案的所屬人已被改變) G :Group ownership differs(檔案的所屬群組已被改變) T :mTime differs(檔案的建立時(shí)間已被改變) [root@test RPM]# rpm -ql crontabs <==查詢 crontabs 有哪些檔案? /etc/cron.daily /etc/cron.hourly /etc/cron.monthly /etc/cron.weekly /etc/crontab [root@test RPM]# rpm -V crontabs <==這些檔案有哪些已經(jīng)被修改了? S.5....T c /etc/crontab

  例如上面的范例中,我們知道了 crontabs 有五個(gè)檔案或目錄,其中,如果驗(yàn)證一下的話,就會(huì)發(fā)現(xiàn) /etc/crotab 已經(jīng)被改過了?那么如果該檔案的變更是『預(yù)期中的』,那么就沒有什么大問題,但是如果該檔案是『非預(yù)期的』,那么是否被入侵了呢?呵呵!得注意注意啰!

  o 反安裝與重建資料庫(kù):

  反安裝就是將套件解除安裝啦!要注意的是,『解安裝的過程一定要由最上層往下解除』,以 rp-pppoe 為例,這一個(gè)套件主要是依據(jù) ppp 這個(gè)套件來安裝的,所以當(dāng)您要解除 ppp 的時(shí)候,就必須要先解除 rp-pppoe 才行!否則就會(huì)發(fā)生結(jié)構(gòu)上的問題啦!這個(gè)可以由建筑物來說明,如果你要拆除五、六樓,那么當(dāng)然要由六樓拆起,否則拆了第五樓,那么上面的樓層難道會(huì)懸空?

  那么重建資料庫(kù)呢?由于我們會(huì)一直在修改一些檔案內(nèi)容,例如 /etc/xinetd.d 里頭的參數(shù)檔案,加上可能自系統(tǒng)操作的過程中新增、移除等等的動(dòng)作,導(dǎo)致系統(tǒng)的資料庫(kù)有點(diǎn)亂,這個(gè)時(shí)候可以使用 --rebuilddb 來重建一下 rpm 的資料庫(kù)!這兩個(gè)方法的參數(shù)如下啰

  [root @test /root]# rpm -e re-pppoe <==解安裝 rp-pppoe [root @test /root]# rpm --rebuilddb <==重建資料庫(kù)

Tarball 套件管理員:

  還記得我們使用過的打包指令 tar 嗎?使用 tar 并且以 gzip 進(jìn)行壓縮的檔案,就稱為 Tarball 啦!這個(gè)是最原始的原始碼檔案喔!底下談一談他啰!

  ·什么是 Tarball ( source code )

  其實(shí) tarball 就是以 *.tar.gz 壓縮之后的 binary 原始檔啦!還記得 tar 怎么使用嗎?記得回去第二篇瞧一瞧去!由于軟體開發(fā)商為了適應(yīng)各種工作平臺(tái),所以通常他們都會(huì)將整個(gè)軟體以較龐大的原始檔案創(chuàng)建下來,里頭除了(1)最重要的原始碼之外,另外包含了(2)針對(duì)各個(gè)不同的平臺(tái)編譯與操作參數(shù)而訂定的偵測(cè)與參數(shù)設(shè)定檔,然后將這些東西以 tar 這個(gè)匯整壓縮軟體將整個(gè)軟體下的目錄壓縮成一個(gè)檔案,由于是經(jīng)過類似打包壓縮的動(dòng)作,嘿嘿!那就是所謂的 tarball 啰!因此,當(dāng)您看到一個(gè) tarball 的檔案,不要懷疑,里頭通常是包含了原始碼的!

  剛剛說 tarball 可以適應(yīng)在各個(gè)不同的平臺(tái)上面,那么他是怎么辦到的呢?因?yàn)楦鱾(gè)平臺(tái)的操作環(huán)境都不相同吶!嗯!為了要讓使用者便于安裝,所以通常軟體開發(fā)者會(huì)寫一支小 scripts 來偵測(cè)使用者的系統(tǒng),以及偵測(cè)該軟體所需要的前驅(qū)軟體是否存在你的 Linux 環(huán)境中,以便利于后續(xù)的編譯過程與安裝步驟!利用這樣的一個(gè) script 幾乎就可以完整的建立起基本的參數(shù)設(shè)定檔了。基本上,如果前驅(qū)軟體都已經(jīng)安裝完畢,那么使用 tarball 幾乎『一定可以安裝成功』的,而且安裝上面也不麻煩,大多只要執(zhí)行三~四個(gè)步驟即可安裝完畢!而且,使用者『可以自行設(shè)定安裝的路徑』,以便于管理。

  不過, tarball 在另一方面有個(gè)相當(dāng)嚴(yán)重的困擾,那就是反安裝的部分。在 RPM 上面的反安裝是蠻簡(jiǎn)單的一件事,只要克服了屬性相依的問題之后,要反安裝只要下達(dá) rpm –e package 即可!但是 tarball 可沒有這么簡(jiǎn)單呢!因?yàn)樗]有紀(jì)錄當(dāng)初安裝檔案的資料庫(kù),所以,要反安裝的時(shí)候,可能需要一個(gè)檔案一個(gè)檔案的手動(dòng)去除?嗄?這么麻煩?那么有沒有什么方法可以比較容易管理呢?有呀!就是利用安裝在特定的目錄下的方式來管理,就會(huì)比較清楚一點(diǎn)!而且也會(huì)比較容易未來進(jìn)行主機(jī)的移交作業(yè)?通常我們會(huì)給您這樣的建議:

  1.最好將 tarball 的原始資料解壓縮到 /usr/local/src 當(dāng)中;

  2.安裝時(shí),最好安裝到 /usr/local 這個(gè)預(yù)設(shè)路徑下;

  3. 考慮未來的反安裝步驟,最好可以將每個(gè)套件單獨(dú)的安裝在 /usr/local 底下,例如安裝 rp-pppoe-2.6.tar.gz 時(shí),則可以指定該套件需要安裝于 /usr/local/rp-pppoe 當(dāng)中,如此一來,如果該套件會(huì)將所有的資料都寫入 /usr/local/rp-pppoe 當(dāng)中,因此,未來如果要移除該套件,只要將該目錄刪除即可視為成功的移除了!

  4.不過單獨(dú)安裝某個(gè)套件在某一特定路徑下的作法,會(huì)導(dǎo)致當(dāng)有 man page 的時(shí)候,使用預(yù)設(shè)的 MANPATH 會(huì)找不到相關(guān)的說明檔案內(nèi)容。這個(gè)時(shí)候就必須要將 man page 的路徑加到 /etc/man.config 檔案中了!否則使用 man 也查詢不到指令的使用方法的。以上面的例子為例,如果是安裝了 /usr/local/rp-pppoe 當(dāng)中,通常 man page 會(huì)放在 /usr/local/rp-pppoe/man 當(dāng)中,所以,您就必需要在 /etc/man.config 里面差不多 40~50 行左右的地方,加入底下這一行:

  MANPATH /usr/local/rp-pppoe/man

  這樣就可以使用 man 來查詢資料啰!

  ·

  ·

  ·Tarball 需要的基礎(chǔ)套件

  雖然 Tarball 在安裝上面可以說『相當(dāng)?shù)暮?jiǎn)單』,因?yàn)橹灰樦忾_壓縮之后目錄里面的 README 或 INSTALL 就可以安裝成功了!但是仍然有部分的困擾,例如:如果常常上 BBS 或者是新聞群組討論區(qū)的朋友,應(yīng)該不難發(fā)現(xiàn)這個(gè)發(fā)問『我在執(zhí)行某個(gè)程式的偵測(cè)檔案時(shí),他都會(huì)告訴我沒有 gcc 這個(gè)套件,這是怎么回事?』還有:『我沒有辦法使用 make 耶!這是什么問題?』呵呵!必須要告訴大家的是,使用 tarball 的安裝時(shí),『一定』需要幾個(gè)物件才行!這些物件在 Mandrake 或者是其他的 distribution 時(shí),『預(yù)設(shè)都是不選擇的』,所以在安裝 Linux 的時(shí)候,請(qǐng)?zhí)貏e留意選擇的類別呢!底下這些東西都是必需的:

  1.需要 Kernel sources files:常常一些 Tarball 在安裝時(shí),會(huì)使用到 Kernel 的原始檔案,亦即在 /usr/src/linux 這個(gè)目錄底下的檔案,而該目錄是需要安裝或者編譯過核心才會(huì)存在的目錄!這個(gè)問題最常發(fā)生在『驅(qū)動(dòng)程式的安裝與編譯』方面。所以當(dāng)您在安裝 Linux 的時(shí)候沒有選擇 Kernel source 或者在之后沒有編譯核心時(shí),呵呵!那么可能就沒有辦法安裝了!

  2.需要 make 及 autoconfig 等套件:需要另外注意的就是,我們還需要 make 這個(gè)套件才行!除此之外,還有 autoconfig 等等的套件也需要安裝才行!這兩個(gè)東西可以讓參數(shù)設(shè)定檔( 通常就是 Makefile 這個(gè)檔案 )順利的被執(zhí)行。

  3.需要 gcc 或 cc 等編譯軟體 ( compiler ):如果沒有編譯的軟體,那么自然也就無法將原始程式碼編譯成可以執(zhí)行的檔案啦!所以至少要有一種編譯器才行!在 GNU 架構(gòu)的 Linux 上面,我們通常使用的是 gcc 這個(gè)加強(qiáng)功能的 C 語(yǔ)言編譯器啦!請(qǐng)注意:除了 gcc 之外,連同上面的 make 等等的套件,幾乎都在安裝 Linux 的時(shí)候的那個(gè) Software Development 咚咚里頭!也就是說,若是您當(dāng)初 安裝的時(shí)候,選擇的是我建議的那種安裝方式的話,那么您的 tarball 安裝應(yīng)該問題不大,若是沒有安裝的話,那么肯定很多的套件是無法編譯成功的!這個(gè)時(shí)候只好拿出您的原版光碟,一個(gè)一個(gè) RPM 套件加入您的 Linux 系統(tǒng)當(dāng)中吧! @_@

  4.特別留意安裝時(shí)候的選擇工具:由于在安裝的時(shí)候『預(yù)設(shè)選項(xiàng)并沒有將 Kernel Development 及 Software Development 加入安裝的行列』,所以您如果選擇預(yù)設(shè)選項(xiàng)的話,呵呵!那么使用 tarball 的工具就會(huì)顯的力不從心!這一點(diǎn)還請(qǐng)?zhí)貏e特別留意呢!

  ·一般安裝步驟:

  基本上, tarball 的安裝主要就是:

  1.將 tarball 在 /usr/local/src 解壓縮;

  2.在軟體解壓縮的路徑下建立 Makefile 這個(gè)參數(shù)設(shè)定檔案;

  3.以 make 這個(gè)程式并使用該目錄下的 Makefile 做為他的參數(shù)設(shè)定檔,來進(jìn)行 make (編譯或其他) 的動(dòng)作;

  4.以 make 這個(gè)程式,并以 Makefile 這個(gè)參數(shù)設(shè)定檔,依據(jù) install 項(xiàng)目的指定來安裝到正確的路徑!

  此外,通常在每個(gè)軟體的 tarball 中,都會(huì)附上 INSTALL 或者是 README 這種檔名的說明檔,這些說明檔請(qǐng)『務(wù)必詳細(xì)閱讀』過一遍,通常這些檔案會(huì)記錄這個(gè)軟體的安裝要求、軟體的工作項(xiàng)目、與軟體的安裝參數(shù)設(shè)定及技巧等,只要仔細(xì)的閱讀完這些檔案,基本上,要安裝好 tarball 的檔案,都不會(huì)有什么大問題啰?那么那個(gè) make 在干嘛?一般而言, make 會(huì)依據(jù) Makefile 這個(gè)檔案的內(nèi)容,去執(zhí)行清除目標(biāo)檔(object file)或者是編譯或者是安裝的步驟,對(duì)于安裝 source code 的人來說,這個(gè) make 是相當(dāng)重要的!在 Makefile 這個(gè)檔案中,會(huì)有一些不同的步驟應(yīng)該要進(jìn)行的工作項(xiàng)目,例如 clean, install, compile 等等,而如果要執(zhí)行清除的步驟,就是 make clean ,安裝就下達(dá) make install ,亦即 make 后面接欲進(jìn)行的工作,那么 make 這個(gè)工具就會(huì)依據(jù) Makefile 這個(gè)檔名的檔案去讀取相關(guān)的步驟訊息,而進(jìn)行該有的動(dòng)作!

  OK!我們底下約略提一下大部分的 tarball 軟體之安裝的指令下達(dá)方式:

  5../configure :這個(gè)步驟就是在建立 Makefile 這的檔案啰!通常程式開發(fā)者會(huì)寫一支 scripts 來檢查您的 Linux 系統(tǒng)、相關(guān)的套件屬性等等,這個(gè)步驟相當(dāng)?shù)闹匾驗(yàn)槲磥砟陌惭b資訊都是這一步驟內(nèi)完成的!另外,這個(gè)步驟的相關(guān)資訊應(yīng)該要參考一下該目錄下的 README 或 INSTALL 相關(guān)的檔案!!基本上,這個(gè)步驟完成之后會(huì)建立(或修改)一個(gè) Makefile ,這就是參數(shù)檔啦!

  6.make clean:make 會(huì)讀取 Makefile 中關(guān)于 clean 的工作。這個(gè)步驟不一定會(huì)有,但是希望執(zhí)行一下!為什么呢?因?yàn)樵谶M(jìn)行編譯的時(shí)候,會(huì)產(chǎn)生一些 *.o 的檔案,例如有個(gè) abc.c 的原始碼,經(jīng)過編譯后會(huì)變成 abc.o 的檔案!我們稱這些檔案為 object file ,這些檔案如果之前已經(jīng)編譯過并留下來的話,那么這次再編譯的時(shí)候,就不會(huì)編譯該檔案,然而由于我們可能已經(jīng)修改了部分的參數(shù),因此該檔案的編譯結(jié)果事實(shí)上應(yīng)該會(huì)有所不同!因此,為了避免前一次留下來的資料可能影響到這次編譯的結(jié)果,所以通常可以進(jìn)行一下這個(gè)步驟啰!

  7.make:make 會(huì)依據(jù) Makefile 當(dāng)中的預(yù)設(shè)工作進(jìn)行編譯的行為!編譯的工作主要是進(jìn)行 gcc 來將原始碼編譯成為可以被執(zhí)行的 object files ,但是這些 object files 通常還需要一些函式庫(kù)之類的 link 后,才能產(chǎn)生一個(gè)完整的執(zhí)行檔!使用 make 就是要將原始碼編譯成為可以被執(zhí)行的可執(zhí)行檔,而這個(gè)可執(zhí)行檔會(huì)放置在目前所在的目錄之下,尚未被安裝到預(yù)定安裝的目錄中;

  8.make install:通常這就是最后的安裝步驟了,make 會(huì)依據(jù) Makefile 這個(gè)檔案里面關(guān)于 install 的項(xiàng)目,將上一個(gè)步驟所編譯完成的資料給他安裝到預(yù)定的目錄中,就完成安裝啦!

  9. 特別留意:請(qǐng)注意,上面的步驟是一步一步來進(jìn)行的,而其中只要一個(gè)步驟無法成功,那么后續(xù)的步驟就完全沒有辦法進(jìn)行的!因此,要確定每一的步驟都是成功的才可以!舉個(gè)例子來說,萬(wàn)一今天你在 ./configure 就不成功了,那么就表示 Makefile 無法被建立起來,要知道,后面的步驟都是根據(jù) Makefile 來進(jìn)行的,既然無法建立 Makefile ,后續(xù)的步驟當(dāng)然無法成功啰!另外,如果在 make 無法成功的話,那就表示原始檔案無法被編譯成可執(zhí)行檔,那么 make install 主要是將編譯完成的檔案給他安裝下去的,既然都沒有成功的執(zhí)行檔了,怎么進(jìn)行安裝?所以啰,要每一個(gè)步驟都正確無誤才能往下繼續(xù)做!此外,如果安裝成功,并且是安裝在獨(dú)立的一個(gè)目錄中,例如 /usr/local/packages 這個(gè)目錄中好了,那么您就必需手動(dòng)的將這個(gè)套件的 man page 給他放到 /etc/man.config 里面去,設(shè)定的方法如前面提到的一般所示。

  ·Tarball 的移除與升級(jí):

  再來就要談到惱人的 tarball 的移除跟升級(jí)了?Tarball的移除難易度跟(1)當(dāng)初設(shè)定參數(shù)檔時(shí)候的安裝目錄與(2)這個(gè)套件本身要求的檔案放置目錄有關(guān)。如果我們以 apache 這個(gè)軟體來說明的話( 您的系統(tǒng)不見得有裝 ),那么如果您以 RPM 的安裝方式來安裝時(shí),會(huì)發(fā)現(xiàn)他的檔案放在哪里呢?大多是放在:

  o /etc/httpd

  o /usr/lib

  o /usr/bin

  o /usr/share/man

  我們會(huì)發(fā)現(xiàn)他大致上是擺在 etc, lib, man, bin 等目錄當(dāng)中,分別代表『設(shè)定、函式庫(kù)、線上說明檔、執(zhí)行檔』,一個(gè)套件通常會(huì)將他的內(nèi)容分為這四個(gè)目錄來放置,好了,那么你是以 tarball 來安裝時(shí)呢?如果是放在預(yù)設(shè)的 /usr/local 里面,由于 /usr/local 原本就預(yù)設(shè)這幾個(gè)目錄了,所以你的資料就會(huì)被放在:

  o /usr/local/etc

  o /usr/local/bin

  o /usr/local/lib

  o /usr/local/man

  但是如果你每個(gè)套件都選擇在這個(gè)預(yù)設(shè)的路徑下安裝的話,那么所有的套件的檔案都將放置在這四個(gè)目錄當(dāng)中,因此,如果你都安裝在這個(gè)目錄下的話,那么未來在想要升級(jí)或移除的時(shí)候,就會(huì)比較難以追查檔案的來源啰?而如果您在安裝的時(shí)候選擇的是單獨(dú)的目錄,例如 /usr/local/apache 的話,那么您的檔案目錄就會(huì)變成:

  /usr/local/apache/etc

  /usr/local/apache/bin

  /usr/local/apache/lib

  /usr/local/apache/man

  呵呵!自己的檔案都在同一個(gè)目錄之下,那么要移除就簡(jiǎn)單的多了!只要將該目錄移除即可視為該套件已經(jīng)被移除啰?當(dāng)然啰,實(shí)際安裝的時(shí)候還是得視該軟體的 Makefile 里頭的 install 資訊才能知道到底他的安裝情況為何的?

  移除的方法是這樣,那么升級(jí)呢?唉?升級(jí)有的時(shí)候也是很困擾啦!怎么說呢?我們還是以 apache 來說明好了,如果您安裝的時(shí)候是使用 PHP + Apache + MySQL 的方式來安裝的,那么每個(gè)套件在安裝的時(shí)候『都有一定的順序與程序!』因?yàn)樗麄內(nèi)咧g具有相關(guān)性,所以安裝時(shí)必需要三者同時(shí)考慮到他們的函式庫(kù)與相關(guān)的編譯參數(shù)。那么如果今天我只要升級(jí) PHP 呢?有的時(shí)候因?yàn)橹挥猩婕皠?dòng)態(tài)函式庫(kù)的升級(jí),那么我只要升級(jí) PHP 即可!其他的部分或許影響不大。但是如果今天 PHP 需要重新編譯的模組比較多,那么可能會(huì)連帶的,連 Apache 這個(gè)程式也需要重新編譯過才行?阿!真是有點(diǎn)給他頭痛的?沒辦法啦!使用 tarball 確實(shí)有他的優(yōu)點(diǎn)啦,但是在這方面,確實(shí)也有他一定的傷腦筋程度? @_@

要選擇 RPM 還是 Tarball?

  優(yōu)先選擇 RPM:

  這一直是個(gè)有趣的問題:『如果我要升級(jí)的話,或者是全新安裝一個(gè)新的套件,那么該選擇 RPM 還是 Tarball 來安裝呢?』!基本上,如果有 RPM 可以提供給您的 distribution 來安裝,并且沒有嚴(yán)重的相依屬性的問題時(shí),呵呵!選擇 RPM 來安裝會(huì)是一個(gè)比較好的解決方案, Why ?這是由于剛剛上面就提到的 RPM 的好處 啦!可以具有檔案與資料均有紀(jì)錄的優(yōu)點(diǎn),這就是上面提到的 /var/lib/rpm 這個(gè)目錄里面的資料庫(kù),個(gè)記錄可以讓你在管理上更為便利,包括上面提到的 RPM 的升級(jí)、安裝、驗(yàn)證與移除等等。尤其是在查詢上面!可以讓你在管理你的系統(tǒng)上面更為便利。但是 RPM 也不是沒有缺點(diǎn)的,包括最為大家所抱怨連連的『屬性相依』的問題,每一個(gè)不同版本之間,就必須要以不同的 RPM 檔案來安裝!此外,如果要升級(jí)『某一個(gè)套件』而已時(shí),通常還需要連帶其他的套件也必須要一起升級(jí)才行,否則會(huì)有問題!此外,當(dāng)一個(gè)套件經(jīng)過了『大幅度的修改』之后,通常舊的 RPM 與新的 RPM 之間已經(jīng)幾乎無法『完全相容』時(shí),呵呵!那么升級(jí)或者是移除的手續(xù)可是會(huì)累壞人的!例如最近朋友們常常問到的 Apache 1.3.xx 與 2.0.xx 的版本升級(jí)問題!由于架構(gòu)上面差異性太大,加上版本屬性相依問題很難得到一個(gè)完滿的解決方案,這個(gè)時(shí)候 RPM 就不那么合適了。(除非您要一個(gè)一個(gè)的將 Apache 移除,連同其相依的套件,然后再將 Apache 一個(gè)一個(gè)的安裝,包括新套件的相依套件! ^_^ .....我是不會(huì)這么做的啦!)

  簡(jiǎn)易方法:

  所以這個(gè)時(shí)候 Tarball 的方式就特別適合您的安裝了!這是因?yàn)?Tarball 可以自行設(shè)定編譯時(shí)的參數(shù),此外,也可以自行設(shè)定『安裝路徑』,相當(dāng)?shù)倪m合于想要安裝『多個(gè)不同版本的同一個(gè)套件』的情況!這是怎么說呢?!由于 RPM 必須要配合系統(tǒng)里面其他的相依屬性的套件,所以基本上,他的安裝路徑(就是每個(gè)檔案的放置路徑)理論上是放死的,就是不能隨意的改變他的安裝路徑,因此,當(dāng)有兩個(gè)不同版本的相同套件想要測(cè)試的時(shí)候,大概一定就得將原先的版本移除之后,才能安裝使用先的版本啰!(此外,由于相依的套件幾乎都已經(jīng)包含在 tarball 當(dāng)中了,所以安裝上面其實(shí)并不難啦!)

  然而 tarball 可不是這樣的!你可以自行編譯并且安裝在不同的路徑,只要在啟動(dòng)的時(shí)候啟動(dòng)適當(dāng)?shù)陌姹荆敲床煌姹镜奶准梢酝瑫r(shí)的存在于一個(gè)系統(tǒng)當(dāng)中,而且可以透過選擇啟動(dòng)的檔案來啟動(dòng)不同的版本。當(dāng)然啰!你也可以讓 tarball 的安裝與 RPM 的安裝同時(shí)存在于一個(gè)系統(tǒng)當(dāng)中,但是需要特別留意的是,你在啟動(dòng)該套件的時(shí)候,千萬(wàn)記得你的啟動(dòng)路徑!免得啟動(dòng)到了錯(cuò)誤的版本了!呵呵!(這也是一個(gè)系統(tǒng)存在不同多個(gè)版本的套件容易發(fā)生的錯(cuò)誤!希望大家都能夠了解這個(gè)問題呢!)

  所以說,為了避免這種路徑上的錯(cuò)誤困擾,基本上,我們都希望 Tarball 的安裝路徑可以設(shè)定在 Linux 原本就規(guī)劃要給大家安裝的路徑『 /usr/local 』這個(gè)路徑下!這樣可以省去相當(dāng)多尋找檔案的時(shí)間!而且在管理上面也會(huì)比較容易!呵呵!

  不過, Tarball 最麻煩的地方有幾點(diǎn):

  ·反安裝:

  Tarball 最麻煩的地方就在于他的『解安裝』了!相當(dāng)?shù)挠憛?如果是簡(jiǎn)單的直接將所有的套件安裝在一個(gè)目錄下的話,例如 /usr/local/mrtg 時(shí),那么解安裝還算簡(jiǎn)單,就是將該路徑殺掉就 OK 啦!但是如果是類似 sendmail 這一種呢?他的路徑都是已經(jīng)放置死的(需要在 /etc/sendmail.cf、/etc/mail 底下)那么追蹤反安裝的路徑就很煩人;

  ·線上查詢:

  如果您的安裝路徑是在 /usr/local 底下的話,那么執(zhí)行檔會(huì)被放置到 /usr/local/bin ,或者是 /usr/local/sbin 底下,參數(shù)檔會(huì)放在 /usr/local/etc 底下,線上查詢檔案會(huì)放在 /usr/local/man 底下,所以在設(shè)定上面還有查詢上面還算簡(jiǎn)單(路徑設(shè)定一下即可!),不過,如果你是將套件安裝在單獨(dú)的路徑下呢?例如 /usr/local/mrtg 底下,那么執(zhí)行檔變成了 /usr/local/mrtg/bin 底下,最麻煩的地方就是 man page (線上查詢)放置的地點(diǎn)會(huì)變成在 /usr/local/mrtg/man 底下了!糟糕!那么預(yù)設(shè)的 man page 路徑就找不到該說明檔啰!這個(gè)時(shí)候就必須要手動(dòng)的將該路徑加入 /etc/man.conf 這個(gè)檔案中!而且執(zhí)行檔放置的路徑也沒有指定,可以經(jīng)由 (1)Link 的方式或者 (2)設(shè)定 PATH 環(huán)境變數(shù)的方式將該路徑加進(jìn)去啦!確實(shí)是比較麻煩的啦!

  所以說,RPM 與 Tarball 各有其優(yōu)缺點(diǎn),不過,如果有 RPM 的話,那么優(yōu)先權(quán)還是在于 RPM 安裝上面,畢竟管理上比較便利,但是如果套件的架構(gòu)差異性太大,或者是無法解決相依屬性的問題,那么與其花大把的時(shí)間與精力在解決屬性相依的問題上,還不如直接以 tarball 來安裝,輕松又愜意!

  函式庫(kù)資料: ldconfig, ldd,

  什么是函式庫(kù)呢?由于我們使用的 Linux 是一個(gè)相當(dāng)不算小的作業(yè)系統(tǒng),里頭的資料可是相當(dāng)多的,然而有些執(zhí)行程式所使用的系統(tǒng)資源都是相同的,例如登入的時(shí)候不論 ftp, ssh, telnet 都需要使用到 pam 模組,那么是不是所有的執(zhí)行程式都需要將 pam 的資料寫入程式當(dāng)中呢?當(dāng)然不需要了!因?yàn)橄到y(tǒng)本身就已經(jīng)有 pam 了呀!那么如何使用這些系統(tǒng)提供的資訊呢?呵呵!這個(gè)時(shí)候動(dòng)態(tài)的函式庫(kù)就不可或缺了!同時(shí),需要特別留意的是,有相當(dāng)多的函式庫(kù)都是『根據(jù) kernel 的版本來設(shè)定的』,所以不同版本的 kernel 最好不要隨意的互相更換呦!容易造成很多執(zhí)行程式無法使用其函式庫(kù),而掛點(diǎn)的情況發(fā)生的!底下我們來談一談怎么獲得函式庫(kù)的資料!

  ·ldconfig

  [root @test /root]# ldconfig [-f conf] [-C cache] [-p] 參數(shù)說明: -f conf :使用 conf 作為 libarary 函式庫(kù)的取得,而不以 /etc/ld.so.conf 為預(yù)設(shè)值 -C cache:使用 cache 作為快取暫存的函式庫(kù)資料,而不以 /etc/ld.so.cache 為預(yù)設(shè)值 -p :列出目前有的所有函式庫(kù)資料內(nèi)容(在 /etc/ld.so.cache 內(nèi)的資料!) 范例: [root @test /root]# ldconfig -p 333 libs found in cache `/etc/ld.so.cache' libz.so.1 (libc6) => /usr/lib/libz.so.1 libz.so (libc6) => /usr/lib/libz.so libxsltbreakpoint.so.1 (libc6) => /usr/lib/libxsltbreakpoint.so.1 libxslt.so.1 (libc6) => /usr/lib/libxslt.so.1 libxrx.so.6 (libc6) => /usr/X11R6/lib/libxrx.so.6 libxrx.so (libc6) => /usr/X11R6/lib/libxrx.so ........ [root @test /root]# more /etc/ld.so.conf /usr/kerberos/lib /usr/X11R6/lib [root @test /root]# ldconfig <==以 /etc/ld.so.conf 的內(nèi)容進(jìn)行函式庫(kù)的重建( /etc/ld.so.cache )

  ·說明:

  系統(tǒng)預(yù)設(shè)的函式庫(kù)都是由 ldconfig 設(shè)定后寫入 /etc/ld.so.cache 當(dāng)中!然后供系統(tǒng)來讀取使用!那么您如何知道目前的函式庫(kù)有多少呢?呵呵!使用 ldconfig 就可以知道啦!以 ldconfig -p 可以列出 /etc/ld.so.cache 的內(nèi)容呢!那么 /etc/ld.so.conf 又是什么呢?!很簡(jiǎn)單,那就是『目前你的系統(tǒng)中主要的函式庫(kù)放置的目錄』,以上式為例,則主要的 XFree86 函式庫(kù)放置在 /usr/X11R6/lib 當(dāng)中,另外還有常用的 kerberos 的函式庫(kù)也擺在其中!如果您的其他函式庫(kù)需要寫入系統(tǒng)中,讓系統(tǒng)可以很快的找到該函式庫(kù)而予以取用的話,那么將你所安裝的套件(通常是 tarball 的套件)所產(chǎn)生的 lib 目錄,給他寫到 /etc/ld.so.conf 這個(gè)檔案中,然后再以 ldconfig 重新建立 /etc/ld.so.cache 即可!

  ·ldd

  [root @test /root]# ldd [-vdr] [filename] 參數(shù)說明: -v :列出所有內(nèi)容資訊; -d :重新將資料有遺失的 link 點(diǎn)秀出來! -r :將 ELF 有關(guān)的錯(cuò)誤內(nèi)容秀出來! 范例: [root @test /root]# cd /lib [root @test /lib]# ldd libdb.so libc.so.6 => /lib/libc.so.6 (0x400ae000) /lib/ld-linux.so.2 => /lib/ld-linux.so.2 (0x80000000) [root @test /lib]# ldd -v libdb.so libc.so.6 => /lib/libc.so.6 (0x400ae000) /lib/ld-linux.so.2 => /lib/ld-linux.so.2 (0x80000000) Version information: ./libdb.so: libc.so.6 (GLIBC_2.1.3) => /lib/libc.so.6 libc.so.6 (GLIBC_2.1) => /lib/libc.so.6 libc.so.6 (GLIBC_2.2) => /lib/libc.so.6 libc.so.6 (GLIBC_2.0) => /lib/libc.so.6 /lib/libc.so.6: ld-linux.so.2 (GLIBC_2.1.1) => /lib/ld-linux.so.2 ld-linux.so.2 (GLIBC_2.2.3) => /lib/ld-linux.so.2 ld-linux.so.2 (GLIBC_2.1) => /lib/ld-linux.so.2 ld-linux.so.2 (GLIBC_2.2) => /lib/ld-linux.so.2 ld-linux.so.2 (GLIBC_2.0) => /lib/ld-linux.so.2

  ·說明:

  ·如果您常常升級(jí)安裝 RPM 的套件時(shí),應(yīng)該常常會(huì)發(fā)現(xiàn)那個(gè)『相依屬性』的問題吧!?沒錯(cuò)!我們可以先以 ldd 來視察『相依函式庫(kù)』之間的相關(guān)性!以先取得了解!例如上面的例子中,我們檢查了 libc.so 這個(gè)在 /lib 當(dāng)中的函式庫(kù),結(jié)果發(fā)現(xiàn)他其實(shí)還跟 libc.so.6 有關(guān)呢!也與 ld-linux.so.2 有關(guān)說!所以我們就需要來了解一下,那個(gè)檔案到底是什么套件的函式庫(kù)呀!?使用 -v 這個(gè)參數(shù)還可以得知該函式庫(kù)來自于哪一個(gè)套件!像上面的資料中,就可以得到該 libc.so.6 其實(shí)可以支援 GLIBC_2.1.1 等的版本!

  檢驗(yàn)軟體正確性

  在我們的 Linux 系統(tǒng)當(dāng)中,為了怕系統(tǒng)商( distribution )推出的檔案被修改過,因此都會(huì)有所謂的 MD5 的軟體指紋驗(yàn)證功能!例如在南臺(tái)灣最大的 ftp 學(xué)術(shù)網(wǎng)站

  中山大學(xué)的 ftp 網(wǎng)站里頭的 Red Hat 7.3 這個(gè)可開機(jī)光碟的完整套件,在該目錄底下,除了完整的的可開機(jī)光碟的映象檔(image)之外,還會(huì)附上一個(gè)檔名為 MD5SUM 的檔案,這個(gè)檔案的內(nèi)容有點(diǎn)像這樣:

  -----BEGIN PGP SIGNED MESSAGE----- Hash: SHA1 c9a4d963a49e384e10dec9c2bd49ad73 valhalla-SRPMS-disc1.iso 41b03d068e84d2a17147aa27e704f79b valhalla-SRPMS-disc2.iso cb91810ce8173039fed24420407e4c59 valhalla-i386-disc1.iso ec1b813d32ffdc8edc2be261735d17de valhalla-i386-disc2.iso 5dc81ce523cfddf99b4d4d63e91bcaa7 valhalla-i386-disc3.iso -----BEGIN PGP SIGNATURE----- Version: GnuPG v1.0.6 (GNU/Linux) Comment: For info see http://www.gnupg.org iD8DBQE8z/oCIZGAzdtCpg4RAsMvAJ9+xOn4Pw1T0mp8zVT64cEDWuqqKwCfblTd 4Lw0SvJC+v/6JbGIxJWL7aA= =0xs+ -----END PGP SIGNATURE-----

  這說明的是,『在 valhalla-i386-disc1.iso 這個(gè)檔案中,有個(gè) MD5SUM 的檔案指紋表,如果該檔案是原本開發(fā)廠商提供的檔案時(shí)(沒有被修改過!),則以 md5sum 這支程式進(jìn)行檢驗(yàn)時(shí),會(huì)得到左邊的指紋表!』那有什么用呢?!呵呵!用途可大了,前一陣子不是常常發(fā)現(xiàn)有些免費(fèi)的軟體被利用來作為收集使用者的電子郵件、常上網(wǎng)站資料,及其他使用者私人的資訊嗎?嘿嘿!那就是利用軟體的特性來『偷』使用者的咚咚,那么萬(wàn)一 Red Hat 提供的光碟映象檔(image)被下載之后,讓有心人士偷偷修改過,再轉(zhuǎn)到 Internet 上面流傳,那么你下載的這個(gè)檔案偏偏不是原廠提供的,呵呵!你能保證該檔案的內(nèi)容完全沒有問題嗎?!當(dāng)然不能對(duì)不對(duì)?!是的,這個(gè)時(shí)候就有 md5sum 這個(gè)檔案指紋的咚咚出現(xiàn)啦!說說他的用法吧!

  · md5sum

  [root @test /root]# md5sum [-bct] filename [root @test /root]# md5sum [--status|--warn] --check filename 參數(shù)說明: -b :使用 binary 的讀檔方式,預(yù)設(shè)為 Windows/DOS 檔案型態(tài)的讀取方式; -c :檢驗(yàn) md5sum 檔案指紋; -t :以文字型態(tài)來讀取 md5sum 的檔案指紋。 范例: [root @test /root]# md5sum -t logfile.sh <==使用文字型態(tài)來檢驗(yàn)檔案的 md5 2a6da1ba121c7a83496fa2afc3e522bb logfile.sh <==顯示出的這個(gè)檔案的 md5 內(nèi)容 [root @test /root]# echo testing >> logfile.sh<==改變一下檔案內(nèi)容看看; [root @test /root]# md5sum -t logfile.sh <==再檢查一下 dc39058c7acbad49fbd13946407c2152 logfile.sh <==嘿嘿!密碼的內(nèi)容不一樣了!! [root @test /root]# md5sum --status --check logfile.sh <==看此檔案有無 md5sum 的指紋創(chuàng)建 md5sum: logfile.sh: no properly formatted MD5 checksum lines found 因?yàn)檫@個(gè)檔案是我自己建立的,并沒有寫入任何的 md5 資料,所以....

  ·說明:

  一般而言,每個(gè)系統(tǒng)里面的檔案內(nèi)容大概都不相同,例如你的系統(tǒng)中的 /etc/passwd 這個(gè)登入資訊檔與我的一定不一樣,因?yàn)槲覀兊氖褂谜吲c密碼、 Shell 及家目錄等大概都不相同,所以由 md5sum 這個(gè)檔案指紋分析程式所自行計(jì)算出來的指紋表當(dāng)然就不相同啰!以上面的例子來說明,當(dāng)原本的 logfile.sh 被改變之后,在經(jīng)由 md5sum 計(jì)算一次,嘿嘿!指紋改變了~~這說明了我們的檔案被修改過了,與原先的內(nèi)容不相同啰!

  好了,那么如何使用這個(gè)東西呢?基本上,您必須要為您的這些重要的檔案進(jìn)行指紋資料庫(kù)的建立(好象在做戶口調(diào)查!),將底下這些檔案建立資料庫(kù):

  o /etc/passwd

  o /etc/shadow(假如你不讓使用者改密碼了)

  o /etc/group

  o /usr/bin/passwd

  o /sbin/portmap

  o /bin/login (這個(gè)也很容易被駭!)

  o /bin/ls

  o /bin/ps

  o /usr/bin/top

  等等,這幾個(gè)檔案最容易被修改了!因?yàn)楹芏嗄抉R程式執(zhí)行的時(shí)候,還是會(huì)有所謂的『執(zhí)行序, PID』為了怕被 root 追查出來,所以他們都會(huì)修改這些檢查排程的檔案,如果你可以替這些檔案建立指紋資料庫(kù)(就是使用 md5sum 檢查一次,將該檔案指紋記錄下來,然后常常以 shell script 的方式由程式自行來檢查指紋表是否不同了!),那么對(duì)于檔案系統(tǒng)會(huì)比較安全啦!!

  網(wǎng)路資源

  剛剛最前面說過了,套件升級(jí)最主要的考量就是『安全性』啦!所以請(qǐng)隨時(shí)注意安全性方面的問題!目前國(guó)內(nèi)的主要安全網(wǎng)站為:『臺(tái)灣網(wǎng)路危機(jī)處理小組』這個(gè)組織,請(qǐng)隨時(shí)注意上面發(fā)布的新聞!另外,如果跟鳥哥一樣使用的是 Red Hat 的 distrubution 的話,那么 Red Hat 的 Errata 網(wǎng)頁(yè)則不可不光臨!好啦!底下列出幾個(gè) RPM 相關(guān)的網(wǎng)頁(yè)與 Red Hat 的 Errata 網(wǎng)頁(yè)提供大家參考啰!

  ·RPM 包裝檔案管理程式:http://www.study-area.org/tips/rpm.htm

  ·中文 RPM HOW-TO:http://www.linux.org.tw/CLDP/RPM-HOWTO.html

  ·RPM 的使用:http://linux.tnc.edu.tw/techdoc/rpm-howto.htm

  ·大家來作 RPM :http://freebsd.ntu.edu.tw/bsd/4/3/2/29.html

  ·一本 RPM 的原文書:http://linux.tnc.edu.tw/techdoc/maximum-rpm/rpmbook/

  ·Red Hat 的 Errata 網(wǎng)頁(yè):http://www.redhat.com/apps/support/errata/

來源:網(wǎng)絡(luò)搜集//所屬分類:Linux教程/更新時(shí)間:2011-12-08
相關(guān)Linux教程
国产精品无码白浆高潮| 波多野结衣家庭教师视频| 999精品久久久| 日韩三级网址| 成人爽a毛片一区二区免费| 国产婷婷成人久久av免费高清 | 91超碰在线免费观看| ass极品水嫩小美女ass| 香港三日本三级少妇66| 久久久精品网| 日韩一区二区在线看| 精品国产乱码久久久久久久软件| 88久久精品无码一区二区毛片| 日韩午夜视频在线| 一本大道久久加勒比香蕉 | 国产欧美一级片| 亚洲黄色精品| 欧美亚洲自拍偷拍| av日韩中文字幕| 人妻精品久久久久中文| 亚洲欧美日本国产| 久久久精品影视| 久久99国产精品久久久久久久久| 精品视频免费在线播放| 亚洲综合五月天婷婷丁香| 亚洲精品极品| 欧美一二三四在线| 日韩av电影免费在线| 精品少妇久久久| 久久久久久久久久久久久久| 午夜精彩视频在线观看不卡| 91久久久在线| 99久久精品免费视频 | 日本韩国在线不卡| 免费国偷自产拍精品视频| 九色成人搞黄网站| 91蜜桃传媒精品久久久一区二区| 久久五月天综合| 国产精品亚洲a| 欧美视频在线观看一区二区三区| 韩国女主播成人在线| 亚洲性夜色噜噜噜7777| 霍思燕三级露全乳照| 国产熟女一区二区丰满| 久久福利资源站| 国产一区二区日韩精品欧美精品| 亚洲中文字幕无码专区| 亚洲毛片欧洲毛片国产一品色| 精品一区精品二区高清| 中文字幕av一区| 日本一极黄色片| 北岛玲heyzo一区二区| av亚洲精华国产精华精| 久久久噜久噜久久综合| 在线观看免费看片| 中文一区二区三区四区| **欧美大码日韩| 91日本在线观看| 裸体武打性艳史| 一区二区三区四区在线观看国产日韩| 777奇米成人网| 中文字幕欧美日韩一区二区三区| 亚洲一区在线观| 精品一区二区影视| 日日狠狠久久偷偷四色综合免费 | 日韩乱码一区二区| 亚洲三级网站| 精品视频在线播放| 亚洲爆乳无码专区| 国产成人精品123区免费视频| 久久久久久久久岛国免费| 日韩av免费一区| 三年中国中文观看免费播放| 欧洲杯半决赛直播| 欧美精品视频www在线观看| 中文字幕一区二区三区5566| 99在线精品视频免费观看软件| 国精产品一区一区三区mba视频| 欧美xxxx18国产| 中文字幕在线视频一区二区| 国产精品宾馆| 欧美日韩在线免费| 婷婷五月色综合| 国产精品久久久久久无人区| 国产suv精品一区二区6| 韩国19禁主播vip福利视频| 亚洲第一黄色网址| 色小子综合网| 精品国产麻豆免费人成网站| 欧美性大战久久久久xxx | 久久亚洲无码视频| 99久久精品国产亚洲精品| 欧美一区二区视频网站| 国产美女在线一区| 全球最大av网站久久| 亚洲日穴在线视频| 精品国产综合久久| 中文字幕av第一页| 床上的激情91.| 日韩美女视频免费在线观看| 国产人妻精品一区二区三区不卡| 一区二区三区四区五区精品视频| 国产亚洲视频中文字幕视频| 亚洲精品乱码久久久久久动漫| 欧美变态网站| 欧美日韩激情一区二区三区| 欧美精品久久久久久久久久久| 姬川优奈av一区二区在线电影| 亚洲人成在线播放网站岛国| 久久亚裔精品欧美| 国产女人高潮时对白| 久久九九99视频| 91免费版网站在线观看| 久久精品久久久久久久| 成人亚洲精品久久久久软件| 国产精品久久久久久久久久久不卡| 青娱乐国产在线视频| 日韩精品欧美成人高清一区二区| 欧美区二区三区| 精品欧美一区二区久久久| 亚洲香蕉网站| 菠萝蜜影院一区二区免费| 国产精品无码网站| 国内精品久久久久久久97牛牛 | 久久夜色精品一区| 99re国产视频| 亚洲视频中文字幕在线观看| 久久―日本道色综合久久| 国产chinese精品一区二区| 在线观看国产精品视频| 国产亚洲制服色| 国产精品一区视频网站| 国产日本精品视频| 国产精品毛片高清在线完整版| 麻豆亚洲一区| 午夜在线视频观看| 亚洲一区电影777| 国产四区在线观看| 四虎精品一区二区免费| 91国模大尺度私拍在线视频 | 久久精品久久精品| 国产成人精品一区二区| 狠狠躁夜夜躁人人爽天天高潮| 国产麻豆精品theporn| 国产在线精品自拍| 在线观看色网站| 国产精品少妇自拍| 视频一区不卡| 九九九精品视频| 欧美日韩在线免费视频| 丁香婷婷激情网| 久久91成人| 亚洲精品在线视频| 免费在线观看污| 久久久久国产一区二区| 国产va免费精品高清在线| 综合激情网五月| 91麻豆国产福利精品| 蜜桃精品久久久久久久免费影院| 免费观看黄色av| 午夜视频一区二区| 欧美日韩精品在线一区二区 | 日韩精品中文字| 香蕉视频黄色在线观看| 麻豆久久婷婷| 国产精品极品美女粉嫩高清在线| 波多野结衣视频网站| 国产婷婷色一区二区三区| 日本一区不卡| 久久久久久一区二区三区四区别墅| 欧美午夜影院一区| 欧美丝袜在线观看| 欧美激情第10页| 欧美激情视频一区二区| 日韩字幕在线观看| 久久精品日产第一区二区三区高清版| 日本高清一区| 日韩国产大片| 日韩欧美一二区| 国产精品无码在线| 亚洲免费一区二区| 国产日本欧美一区二区三区| av中文字幕免费在线观看| 亚洲国产精品一区二区www在线| 欧美视频在线观看视频| 自拍亚洲一区| 精品国产一区二区三区四区在线观看| 人人澡人人澡人人看| 成人黄页毛片网站| 日韩欧美激情一区二区| 日韩视频一二区| 亚洲美女av电影| 国产成人精品视频免费| 国产99久久久久久免费看农村| 久久久久久九九| 日韩欧美专区| 日韩成人在线网站| 亚洲区一区二区三| av一区二区三区| 中文字幕成人一区| 天堂网av成人| 久热精品视频在线观看| 中文字字幕在线中文| 亚洲欧美国产三级| 哪个网站能看毛片| 午夜亚洲福利| 国产精品av网站| 蜜桃视频久久一区免费观看入口| 欧美日韩国产精品| 国产在线观看中文字幕| 性娇小13――14欧美| 成人免费福利视频| 亚洲精品国产嫩草在线观看| 精品欧美一区二区在线观看| 91在线无精精品白丝| 丁香一区二区三区| 亚洲一卡二卡三卡| 亚洲欧洲免费| 久久久久久久久国产| 一区二区三区日| 色综合av在线| 欧美肉大捧一进一出免费视频| 激情五月婷婷综合| 日本一区二区三区四区高清视频| 国产精品sss在线观看av| 日韩最新免费不卡| 久久久久亚洲视频| 日韩欧美在线字幕| 无码人妻丰满熟妇区毛片蜜桃精品| 奇米影视7777精品一区二区| 国产在线精品一区二区三区| 欧美经典一区| 日韩在线观看视频免费| 国产一级淫片a视频免费观看| 亚洲成人精品在线观看| 亚洲激情二区| 国产丝袜视频一区| 欧美成人国产精品高潮| 中文字幕国产一区二区| 国产婷婷一区二区三区| 女人香蕉久久**毛片精品| 国产区精品在线观看| 精品亚洲美女网站| 亚洲美女福利视频网站| 日韩av无码中文字幕| 亚洲精品欧美激情| 欧美国产在线一区| 韩国三级在线一区| 超碰在线免费观看97| 日韩免费视频| 国产精品视频免费在线| 亚洲精品.com| 一本大道亚洲视频| 中文资源在线播放| 欧美三片在线视频观看| 一区二区三区在线观看免费视频| 国产视频不卡一区| 苍井空浴缸大战猛男120分钟| 老鸭窝亚洲一区二区三区| 免费在线观看91| 国产精品入口久久| 国产精品九九九| 99riav视频一区二区| 国产一区二区三区精品久久久| 成人免费毛片视频| 欧美午夜不卡视频| 国产精品理论在线| 国产精品久久久久桃色tv| 手机av在线网| 极品少妇xxxx精品少妇偷拍| 日韩中文在线字幕| 欧美视频网站| 精品视频免费观看| 亚洲男人都懂第一日本| 国产精品久久9| **日韩最新| 久久久久久国产| 香港三日本三级少妇66| 亚洲天堂免费观看| 一本一道人人妻人人妻αv| 欧美一区二区不卡视频| 免费一级特黄特色大片| 日韩欧美亚洲成人| 制服丨自拍丨欧美丨动漫丨| 亚洲精品免费播放| 中出视频在线观看| 国产精品久久看| 免费人成视频在线播放| 99re这里只有精品首页| 久久久国产欧美| 国产成人亚洲精品狼色在线 | 性色一区二区三区| 亚洲精品免费在线看| 国产精品豆花视频| 日韩欧美一区二区三区四区| 亚洲精品99| 九色视频成人porny| 日韩三级在线| 国产欧美一区二区视频| 日韩一区欧美| 国产一区二区久久久| 四虎成人精品永久免费av九九| 国产v亚洲v天堂无码| 精品日韩免费| 国产精品久久久久久久久久久久午夜片| 人体久久天天| 亚洲综合小说区| 国产欧美亚洲精品a| 97久草视频| 日韩在线高清| 精品999在线观看| 希岛爱理av一区二区三区| 久久青青草综合| 一个色综合网| 视频一区在线免费观看| 亚洲国产专区| 国产精品12p| 日韩高清不卡在线| 秋霞无码一区二区| 国产精品一区二区久久不卡| 一本久道中文无码字幕av| 国产精品香蕉一区二区三区| jizz欧美激情18| 97se亚洲国产综合自在线观| 午夜xxxxx| 国产精品伦理一区二区| 国产白嫩美女无套久久| 亚洲一二三级电影| 老熟妇高潮一区二区三区| 欧美在线免费视屏| 欧美在线观看不卡| 欧美成人精品福利| 99精品人妻无码专区在线视频区| 亚洲性视频网址| 东京一区二区| 97视频在线观看视频免费视频| 日韩一区二区三区精品视频第3页 日韩一区二区三区精品 | 91丨porny丨户外露出| jazzjazz国产精品久久| 成人av片在线观看| 国产三级生活片| 国产精品入口麻豆九色| 在哪里可以看毛片| 色老头久久综合| 亚洲精品午夜国产va久久成人| 亚洲第一精品自拍| 国产综合视频在线| 欧美激情中文字幕乱码免费| 91精品短视频| 99久久综合狠狠综合久久止| 亚洲综合五月| gogogo免费高清日本写真| 美美哒免费高清在线观看视频一区二区| 黄色a级片免费| 久久久影院官网| 国产成人福利在线| 欧美专区日韩专区| 日韩欧美一级大片| 最近2019中文字幕大全第二页| 日韩亚洲国产免费| 成人精品在线观看| 午夜久久tv| 久久久久久免费看| 91在线观看高清| b站大片免费直播| 欧美老人xxxx18| 国内精品偷拍视频| 亚州国产精品久久久| 亚洲国产合集| 日韩国产精品一区二区三区| 麻豆精品一区二区综合av| 亚洲精品性视频| 一区二区三区日韩精品视频| 在线观看 中文字幕| 亚洲欧美日韩精品久久| 日韩在线你懂得| 成人在线免费观看一区| 国产日韩1区| 亚洲少妇第一页| 亚洲精品水蜜桃| 国产精久久久久久| 亚洲图片在线综合| 国产一精品一av一免费爽爽| 国产精品日本一区二区| 亚洲免费影院| 一级淫片在线观看| 亚洲成人一二三| 国产精品乱码一区二区视频| 久久夜精品香蕉| 亚洲婷婷丁香| 超碰在线免费观看97| 99re成人精品视频| 91香蕉国产视频| 精品成人一区二区三区四区| 小黄鸭精品aⅴ导航网站入口| 成人欧美一区二区三区黑人| 亚洲三级免费| 夜夜夜夜夜夜操| 日韩欧美国产激情| 国产高清精品软件丝瓜软件|