歡迎您光臨本站 註冊首頁

yum和rpm詳解(2樓更新make工作過程和軟體包後綴解釋)

←手機掃碼閱讀     火星人 @ 2014-03-23 , reply:0

本人水平不高,很多地方寫的可能不對,希望大家多提意見。
blog:http://karon.cublog.cn/


本文的目的是僅僅是簡單的介紹如何在Fedora下安裝運行軟體。
基礎知識:需要有一點編程知識,至少要了解c語言的編譯過程。
所遇到的問題:fedora當中很有軟體通常不是安裝一個RPM包就可以解決的;很多軟體包需要編譯,這時軟體包所對應的kernel和你c語言lib庫版本,甚至你的gcc編譯器都有可能影響軟體安裝。
準備工作:了解所裝 fedora內核版本gcc版本
uname -r
2.6.15-1.2054_FC5
gcc -v
gcc 4.1.0 20060304 (Red Hat 4.1.0-3)

A:獲取和安裝軟體包
專門在Fedora和RHEL上運行的軟體通常是用RPM格式存儲的。大部分的Fedora和RHEL本身就是RPM格式的,那麼,如何獲得RPM格式的軟體包呢?
1:安裝CD和DVD--這個方法比較簡單,插入CD,進入所在軟家包的目錄,使用RPM安裝就可以,你可以看看CD中的內容
2:Fedora和FHEL官方的軟體庫--這裡是包含了經過Fedora項目認可的軟體庫,你可以在網路上找到。
下面是Fedora5的官方軟體庫
http://download.fedora.redhat.com/pub/fedora/linux/core/5/
提供了大量的官方認可的軟體包,通常這些都是光碟中已經包含的。
http://download.fedora.redhat.com/pub/fedora/linux/extras/5/
官方提供的額外軟體包,他不提供其他任何支持。
3:第三方的Fedora軟體庫。這些軟體由於受到版權或者其他問題,官方軟體庫並沒有提供。但是很有用,譬如你要播放MP3,但是使用他們的時候要注意,因為很可能不夠安全。
4:軟體項目站點。
有些應用程序本身就是持續開發的項目,他們有自己的站點,這些站點一般都會提供RPM包
下面是WINE項目的站點
http://www.winehq.com/
B:使用yum下載和安裝應用程序
Yellow Dog Updater,Modified(yum)可以幫助你從已經配置好的軟體庫中下載和安裝軟體包,甚至會考慮到軟體包之間的依賴關係。這個是安裝軟體包最好的方法。
1,配置yum
也就是配置/etc/yum.conf
[main]
cachedir=/var/cache/yum 緩存目錄
keepcache=0 確定緩存文件是否要保存
debuglevel=2 調試級別
logfile=/var/log/yum.log 日誌文件的位置
pkgpolicy=newest 嘗試請求軟體包的最新版本
distroverpkg=redhat-release 確定yum所下載的linux發布版本信息
tolerant=1 這個選項表示yum在編譯的過程中是否「寬容」,為1的話,yum會忽略很多錯誤
exactarch=1 這選項在yum更新的時候有用,他用來確定是否在i386上更新i686的軟體包,選1的話是不更新(需要設定的功能太多有的時候也很麻煩)
obsoletes=1 這個選項在yum(8)中有詳細的介紹,他是一個命令行參數,我們以後可以去看看
gpgcheck=1 是否檢查gpg GNU Privacy Guard可以用於加密
plugins=1 是否顯示插件,有必要設成1,這選項在默認的時候是0。
metadata_expire=1800

# PUT YOUR REPOS HERE OR IN separate files named file.repo
# in /etc/yum.repos.d
這裡所謂的repos其實就是軟體庫,你可以打開/etc/yum.repos.d看看


C:添加yum軟體庫
打開/etc/yum.repos.d可以看到軟體庫 默認的是fedora官方的軟體庫
[root@localhost documents]# cd /etc/yum.repos.d/
[root@localhost yum.repos.d]# ls
fedora-core.repo fedora-extras-development.repo fedora-legacy.repo fedora-updates-testing.repo
fedora-development.repo fedora-extras.repo fedora-updates.repo
添加一個軟體庫的準備工作是要明確你需要添加的軟體庫的確切位置 GPG密鑰,(GNU Private Guard ,一種密鑰方法,實現RFC2440 中定義的OpenGPG標準,自由軟體,GPG提供命令行形式的應用,可以輕鬆集成到其它應用程序中)
打開其中一個repo看看
內容解釋下
[core]
name=Fedora Core $releasever - $basearch 名字。$releasever其實就是你fedora的版本號,$basearch這個對於我來說就是i386
#baseurl=http://download.fedora.redhat.com/pub/fedora/linux/core/$releasever/$basearch/os/ 基本地址
mirrorlist=http://fedora.redhat.com/download/mirrors/fedora-core-$releasever 鏡像列表
enabled=1 本repo是否激活
gpgcheck=1 是否啟用gpg檢查
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-fedora file:///etc/pki/rpm-gpg/RPM-GPG-KEY 這個是GPG密鑰的地址

[core-debuginfo]
name=Fedora Core $releasever - $basearch - Debug
baseurl=http://download.fedora.redhat.com/pub/fedora/linux/core/$releasever/$basearch/debug/
enabled=0
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-fedora file:///etc/pki/rpm-gpg/RPM-GPG-KEY

[core-source]
name=Fedora Core $releasever - Source
baseurl=http://download.fedora.redhat.com/pub/fedora/linux/core/$releasever/source/SRPMS/
enabled=0
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-fedora file:///etc/pki/rpm-gpg/RPM-GPG-KEY

現在說一下我所知道的yum的方法,還不一定準確,yum會檢查baseurl/repodata/repomd.xml,這個索引文件,找不到的會失敗的。所以添加軟體庫的時候要注意一下,特別是第3方軟體庫

我們現添加一個軟體庫,就把傳說中的rpm.livna.org軟體庫加進來,嘿嘿O^O
按照上面的格式來寫
[livna]
name=livna $releasever - $basearch
baseurl=http://rpm.livna.org/fedora/5/i386/ 當然這裡你還可以用http://rpm.livna.org/fedora/$releasever/$basearch/
enabled=1
gpgcheck=1
gpgkey=http://rpm.livna.org/RPM-LIVNA-GPG-KEY-i386
保存為livna.repo就可以了。
現在yum install mplayer
下載個mplayer看看 (mplayer對偶這樣的傢伙很合適,不過就是操作性太差勁了)
注意:1,看看你的所選擇的基礎地址下面 有滅有/repodata/repomd.xml.
2,gpgkey這個要找對位置,也可以下載到本地文件中。一般是放在file:///etc/pki/rpm-gpg/目錄下
現在介紹yum的命令參數
安裝
yum install 軟體名
列表
yum list I less
查找
yum provides 軟體名
單個軟體升級
yum update 軟體名
全部升級
yum update (這個命令的時間會很長,對於我來說恐怕要一個星期的時間)
刪除安裝后的軟體包
yum clean packages (這個命令會把你存放在/var目錄下的包全部刪掉)
D:使用yum自動更新。
首先yum是一個服務
[root@localhost ~]# chkconfig --list yum
yum 0:關閉 1:關閉 2:關閉 3:關閉 4:關閉 5:關閉 6:關閉
然後我們讓他在3和5模式下自動運行
[root@localhost ~]# chkconfig --level 35 yum on
[root@localhost ~]# chkconfig --list yum
yum 0:關閉 1:關閉 2:關閉 3:啟用 4:關閉 5:啟用 6:關閉
這樣你就可以在開機的時候自動運行yum了。(太久沒有進行過更新的話不要用這種方法)
E:其他YUM的用法
可以用YUM從安裝CD中安裝軟體
添加一個cd.repo文件,內容如下:
[cd]
name=livna $releasever - $basearch
baseurl=file:///mnt/cdrom 這個是你掛載光碟機的目錄
enabled=1
gpgcheck=1
gpgkey=file:///mnt/cdrom/RPM-GPG-KEY 這個是GPG密鑰。
完成,其實這樣做不是很有必要

F:關於RPM的工作方法問題
軟體包管理器,其實按照我自己的理解,他就是個類似rarlinux的歸檔管理器,只不過用有自己特定的釋放方式。現在我們找一個例子來實驗一下
rpm -Uvv alsaplayer-0.99.76-2.2.fc4.i386.rpm
這個軟體包是我隨便找的,不必在乎他是是么 -U表示安裝,v表示顯示信息,vv就表示顯示更詳細的信息
把顯示內容當中對我們有用的挑出來
D: opening db environment /var/lib/rpm/Packages joinenv
D: opening db index /var/lib/rpm/Packages rdonly mode=0x0
D: locked db index /var/lib/rpm/Packages
D: opening db index /var/lib/rpm/Pubkeys rdonly mode=0x0
warning: alsaplayer-0.99.76-2.2.fc4.i386.rpm: Header V3 DSA signature: NOKEY, ke y ID e42d547b
D: opening db index /var/lib/rpm/Providename rdonly mode=0x0
以上應該是打開一個資料庫,恩恩恩 就是RPM資料庫
D: added binary package [0] 增加一個軟體包
D: found 0 source and 1 binary packages 沒有源文件,有一個2進位的軟體包1
D: opening db index /var/lib/rpm/Depends create mode=0x0
D: opening db index /var/lib/rpm/Basenames rdonly mode=0x0
D: read h# 1166 Header sanity check: OK 讀取h# ,貌似是頭文件 ,檢查h#的需求
D: read h# 161 Header V3 DSA signature: OK, key ID 4f2a6fd2
D: Requires: /bin/sh YES (db files)
D: Requires: /bin/sh YES (cached)
D: read h# 88 Header V3 DSA signature: OK, key ID 4f2a6fd2
D: Requires: libFLAC.so.7 YES (db provides)
D: read h# 95 Header V3 DSA signature: OK, key ID 4f2a6fd2
D: Requires: libGL.so.1 YES (db provides)
D: Requires: libOggFLAC.so.3 YES (db provides)
D: read h# 48 Header V3 DSA signature: OK, key ID 4f2a6fd2
D: Requires: libX11.so.6 YES (db provides)
D: read h# 49 Header V3 DSA signature: OK, key ID 4f2a6fd2
D: Requires: libXext.so.6 YES (db provides)
D: read h# 54 Header V3 DSA signature: OK, key ID 4f2a6fd2
D: Requires: libXi.so.6 YES (db provides)
D: read h# 398 Header V3 DSA signature: OK, key ID 4f2a6fd2
D: Requires: libasound.so.2 YES (db provides)
.
.
.
.
看來h#的要求沒有辦法被滿足,那麼輸出錯誤的依賴關係
error: Failed dependencies:
libid3tag.so.0 is needed by alsaplayer-0.99.76-2.2.fc4.i386
libmad.so.0 is needed by alsaplayer-0.99.76-2.2.fc4.i386
libsndfile.so.1 is needed by alsaplayer-0.99.76-2.2.fc4.i386
libsndfile.so.1(libsndfile.so.1.0) is needed by alsaplayer-0.99.76-2.2.f c4.i386
libxosd.so.2 is needed by alsaplayer-0.99.76-2.2.fc4.i386
下面是關閉資料庫
D: closed db index /var/lib/rpm/Pubkeys
D: closed db index /var/lib/rpm/Conflictname
D: closed db index /var/lib/rpm/Providename
D: closed db index /var/lib/rpm/Basenames
D: closed db index /var/lib/rpm/Packages
D: closed db environment /var/lib/rpm/Packages
D: May free Score board((nil))
由此我可以粗略的知道RPM的工作方式:
1,打開rpm資料庫
2,從.軟體包中提取h#,並且檢查h#的需要是否被滿足?(這裡的依賴關係,有的是軟體包自己給出的,有的是你系統自帶,當然還可能有你沒有的。)
是:轉第4步 不是:轉第3步
3,顯示失敗的依賴關係
4,安裝軟體,解壓縮軟體包,並且放到合適的位置,這裡應該是有一定的規則。
5,關閉rpm資料庫
顯然,我這個軟體包不滿足依賴關係,如果強制用-force安裝的話可能出錯誤。
如果你失敗了,那就少什麼補什麼...這個么 ?具體的東西么 T^T 以後研究吧
G:使用RPM安裝和管理軟體包軟體包
介紹一下參數.
-U 升級,也包括安裝
-F 刷新,就是全體升級,不包括安裝
-v 顯示詳細信息, -vv顯示更加詳細的信息
-h 顯示文件釋放的進度
--force 嘿嘿 強制安裝,這裡強制安裝不是忽略依賴關係,而是強制安裝老版本或者是舊的軟體包
--nodeps 忽略依賴關係,這個不可靠的
--ignorearch 這個連主機構架都可以忽略.真的有用么?
-e 刪除軟體包
-q 查詢軟體包
-qa 列出所有已經安裝的軟體包
-qf file 列出該文件屬於那個軟體包
-qi 列出軟體包的詳細信息
-qR 列出所有軟體包的倚賴關係
-ql 列出軟體包的所有文件
-qd 列出軟體包所有的文檔
-qc列出軟體包所有的配置文件
-qd列出未安裝軟體包的信息

[ 本帖最後由 karon_fedora 於 2007-5-5 11:16 編輯 ]

[火星人 ] yum和rpm詳解(2樓更新make工作過程和軟體包後綴解釋)已經有522次圍觀

http://coctec.com/docs/linux/show-post-126447.html