麻煩老師了~~
* 思考練習:
1) 請問你是如何理解 library 的作用的?
說明:如同一個圖書館,集合眾多的程式在裡面
請問如下兩種 library 有何不同?
static 在source code 編繹時會載入
dynamic 在binary code load到cpu時會載入
請問如何查詢某一 binary 所需的 library ?
方法: ldd /path/to/dir
例:ldd /bin/ls
請問如下兩個檔案有何不同:
ld.so.conf 函式庫的對照表
ld.so.cache更新函式庫所尋找的路徑
請問如何將 ld.so.conf 的內容更新進 ls.so.cache ?
方法: ldconfig -v
2) 請問 RPM 的全稱是甚麼?
全稱: redhat package management
假設我現取得一個 rpm 的名稱如下:
prog-devel-1.2.3-p5.i386.rpm
請指出屬於如下內容的部份:
package: prog-devel
version: 1.2.3-p5
platform:不清楚
3) 根據上題的範例,假設 prog-devel 尚未安裝,
請問你如何用 rpm 將之安裝?
方法: rpm -ivh --test prog-devel-1.2.3-p5.i386.rpm
rpm -ivh prog-devel-1.2.3-p5.i386.rpm
假若之前就有一個 1.2.0-6 的版本已裝好了,
那你又如何升級至範例版本?
方法:
rpm -U prog-devel-1.2.3-p5.i386.rpm
若安裝完畢後發現範例套件並非我們需要的,
請問你如何移除呢?
方法:
rpm -e --test prog-devel-1.2.3-p5.i386.rpm
rpm -e prog-devel-1.2.3-p5.i386.rpm
4) 根據上題的範例,請問你如何查詢範例套件是否已經安裝?
方法: rpm -qa | grep 'prog-devel'
若範例套件已經安裝,請問你如何查詢如下資訊?
information: rpm -qi
installed files: rpm -qa
document: rpm -qd
config files: rpm -qc
假設範例套件尚未安裝,上述資訊又如何查詢?
方法: 不清楚
假設我得到一個檔案路逕如下:
/usr/local/lib/libprog.so.1.2.3
請問你如何得知它是哪個 pacakge 所裝的呢?
方法: rpm -qf //usr/local/lib/libprog.so.1.2.3
5) 根據習題 4 的範例,若在安裝的過程中得到如下錯誤訊息:
prog >= 1.2.3-p5 is needed by prog-devel
prog-lib >= 1.2.3-p5 is needed by prog-devel
請問你將如何解決這個問題?
方法:同時兩個一起安裝
rpm -ivh
6) 若條件允許的話,請安裝並學習其它系統的套件管理工具,諸如下列:
dpkg
apt
ports
urpm
並嚐試在你的系統上安裝 apt 及進行軟體安裝, 移除, 及生級動作.
(實作)
7) 請問 binary RPM 與 source RPM 差別在哪裡?
說明:
binary RPM 可直接執行
source RPM 須經過編譯才binary才行,另外,
source可經由rebuild來產生tarball與spec檔,因此
只要有source檔,縱使別的檔案都不見了,也可以由source rpm產生
請問在 source RPM 的包裝目錄下,如下子目錄的用途是甚麼?
BUILD >build過程中,存放file的地方
RPMS > binary rpm
SOURCES > tarball
SPECS > spec
SRPM > source rpm

若我們要成功的包裝自己的 rpm 或 srpm ,
請問我們必需准備好甚麼?
條件 1: tarball(XXX.tar.gz)
條件 2: spce (xxx.spec)
倘若上述條件均已滿足,請問你可用甚麼命令包裝出如下項目:
rpm: rpmbuild -bb
srpm:rpmbuild -bs
假設我們已經取得一份 prog-1.2.3-p5.src.rpm ,
我們又如何在本機包裝出 rpm 呢?
方法: rpmbuild --rebuild prog-1.2.3-p5.src.rpm
一旦上例 source rpm 已經成功包成 rpm ,
請問你如何得知?及如何安裝呢?
方法: 去RPMS的目錄底下找
rpm -ivh prog-1.2.3-p5.src.rpm
9) 請從網路上下載最新版的 rp-pppoe 之 tarball 回來,
並以實作方式嘗試如下的安裝形式:
tarball
build rpm
install rpm
rebuild srpm
ps:這個實作一直沒成功,下列是我的方法:
cp rp-pppoe-3.5.tar.gz /usr/src/redhad/SOURCE
cp rp-pppoe-3.5.spec /usr/src/redhad/SPEC
rpmbuild -ba /usr/src/redhat/spec/rp-pppoe-3.5.spec
可是在這個步驟一直失敗耶!!不知道錯在哪裡