作者 主題: 2004-09-07 台南班(16)  (閱讀 7014 次)

0 會員 與 1 訪客 正在閱讀本文。

netman

  • 管理員
  • 俺是博士!
  • *****
  • 文章數: 17383
    • 檢視個人資料
    • http://www.study-area.org
2004-09-07 台南班(16)
« 於: 2004-11-03 23:38 »
2004-11-02 (星期二)

* 溫習重點:

PACKAGE
 source / compiler / binary
 library
  static
   dynamic
  ldd
  ld.so.conf / ld.so.cache
 tarball
   ./configure
   Makefile
 RPM
  package-version-platform
  mode
   install
   uninstall
   query
   verify
  dependencies
 others
  dpkg
  apt
  ports
  urpm
 source RPM
  BUILD
  RPMS
          SOURCES
          SPECS
          SRPM
 rebuild srpm


* 思考練習:

1) 請問你是如何理解 library 的作用的?
   說明:

請問如下兩種 library 有何不同?
        static
        dynamic

請問如何查詢某一 binary 所需的 library ?
   方法:

請問如下兩個檔案有何不同:
        ld.so.conf
     ld.so.cache

請問如何將 ld.so.conf 的內容更新進 ls.so.cache ?
   方法:

2) 請問 RPM 的全稱是甚麼?
   全稱:

假設我現取得一個 rpm 的名稱如下:
   prog-devel-1.2.3-p5.i386.rpm
請指出屬於如下內容的部份:
   package:
   version:
   platform:

3) 根據上題的範例,假設 prog-devel 尚未安裝,
請問你如何用 rpm 將之安裝?
   方法:

假若之前就有一個 1.2.0-6 的版本已裝好了,
那你又如何升級至範例版本?
   方法:

若安裝完畢後發現範例套件並非我們需要的,
請問你如何移除呢?
   方法:

4) 根據上題的範例,請問你如何查詢範例套件是否已經安裝?
   方法:

若範例套件已經安裝,請問你如何查詢如下資訊?
   information:
   installed files:
   document:
   config files:

假設範例套件尚未安裝,上述資訊又如何查詢?
   方法:

假設我得到一個檔案路逕如下:
   /usr/local/lib/libprog.so.1.2.3
請問你如何得知它是哪個 pacakge 所裝的呢?
   方法:

5) 根據習題 4 的範例,若在安裝的過程中得到如下錯誤訊息:
   prog >= 1.2.3-p5 is needed by prog-devel
   prog-lib >= 1.2.3-p5 is needed by prog-devel
請問你將如何解決這個問題?
   方法:

6) 若條件允許的話,請安裝並學習其它系統的套件管理工具,諸如下列:
   dpkg
   apt
   ports
   urpm
並嚐試在你的系統上安裝 apt 及進行軟體安裝, 移除, 及昇級動作.
(實作)


7) 請問 binary RPM 與 source RPM 差別在哪裡?
   說明:

請問在 source RPM 的包裝目錄下,如下子目錄的用途是甚麼?
        BUILD
        RPMS
        SOURCES
        SPECS
        SRPM

8) 若我們要成功的包裝自己的 rpm 或 srpm ,
請問我們必需准備好甚麼?
   條件 1:
   條件 2:

倘若上述條件均已滿足,請問你可用甚麼命令包裝出如下項目:
   rpm:
   srpm:

假設我們已經取得一份 prog-1.2.3-p5.src.rpm ,
我們又如何在本機包裝出 rpm 呢?
   方法:

一旦上例 source rpm 已經成功包成 rpm ,
請問你如何得知?及如何安裝呢?
   方法:

9) 請從網路上下載最新版的 rp-pppoe 之 tarball 回來,
並以實作方式嘗試如下的安裝形式:
   tarball
   build rpm
   install rpm
   rebuild srpm

* next:
http://phorum.study-area.org/viewtopic.php?t=27447

yyycome

  • 懷疑的國中生
  • **
  • 文章數: 37
    • 檢視個人資料
2004-09-07 台南班(16)
« 回覆 #1 於: 2004-11-05 21:47 »
麻煩老師了~~

* 思考練習:

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

8) 若我們要成功的包裝自己的 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
可是在這個步驟一直失敗耶!!不知道錯在哪裡
df

netman

  • 管理員
  • 俺是博士!
  • *****
  • 文章數: 17383
    • 檢視個人資料
    • http://www.study-area.org
2004-09-07 台南班(16)
« 回覆 #2 於: 2004-11-05 22:26 »
1)
load 進 memory 而非 cpu
ldd 的參數是 binary 的路逕, 而非 dir
ld.so.conf 是預設之外的函數所在的目錄路逕

2)
i386 的平台泛指 intel 或兼容的 CPU

3)
-e 的參數不是 rpm file 哦, 請查筆記.

4)
要查 installed file 應是 -ql , 連同其他 query 一樣, argument 是 prog-devel.
若還沒安裝的話, 多加 -p prog-devel-1.2.3-p5.i386.rpm 就是了.

9)
能否貼一下最後幾行的 error 呢?

yyycome

  • 懷疑的國中生
  • **
  • 文章數: 37
    • 檢視個人資料
2004-09-07 台南班(16)
« 回覆 #3 於: 2004-11-08 22:59 »
RPM build errors:
installed(but unpacked)file found:
/etc/ppp/firewall-masp-3.5
/etc/ppp/firewall-standalone-3.5
/etc/ppp/pppoe-server-options-examle
/etc/ppp/pppoe.conf-3.5
/usr/doc/rp-pppoe-3.5/CHANGES
/usr/doc/rp-pppoe-3.5/HOW-TO-CONNETC
/usr/doc/rp-pppoe-3.5/LICENSE
/usr/doc/rp-pppoe-3.5/README
/usr/doc/rp-pppoe-3.5/SERVPOET
/usr/doc/rp-pppoe-3.5/pap-secrets
df

netman

  • 管理員
  • 俺是博士!
  • *****
  • 文章數: 17383
    • 檢視個人資料
    • http://www.study-area.org
2004-09-07 台南班(16)
« 回覆 #4 於: 2004-11-08 23:53 »
哦....
那你可在 rp-pppoe.spec 裡, 找到 %prep 那行,
在其上再加一行:

%undefine __check_files

yyycome

  • 懷疑的國中生
  • **
  • 文章數: 37
    • 檢視個人資料
2004-09-07 台南班(16)
« 回覆 #5 於: 2004-11-09 00:30 »
oh!oh!
still wrong ><

the same errors
df

netman

  • 管理員
  • 俺是博士!
  • *****
  • 文章數: 17383
    • 檢視個人資料
    • http://www.study-area.org
2004-09-07 台南班(16)
« 回覆 #6 於: 2004-11-09 00:36 »
代碼: [選擇]
%undefine __check_files
e 與 c 之間有一個空白加兩條底線, 而 k 與 f 之間只有一條低線, 沒空白.