第十九章、Linux軟件管理

第十九章、Linux軟件管理


12_01_Linux軟件管理之一 rpm

 

程序組成部分:

         二進制程序

         

         配置文件

         幫助文件


跟目錄結構

/boot

/etc

/usr

/var

/dev

/lib

/tmp

/bin

/sbin

/proc

/sys

/mnt

/media

/home

/root

/misc

/opt

/srv

 

 

目錄講解:


/usr/share/man:幫助手冊


/etc, /bin, /sbin, /lib

         系統啓動就需要用到的程序,這些目錄不能掛載額外的分區,必須在根文件系統的分區上

            

/usr/ :操作系統核心功能,可以單獨分區

         bin

         sbin

         lib

            

/usr/local:第三方軟件

         bin

         sbin

         lib

         etc

         man

 

/opt:古老的方法第三方軟件

 

/proc

/sys

         這兩個目錄不能單獨分區,默認爲空;

        

輔助目錄:

/dev: 設備,不能單獨分區;

         2.6 內核後添加了:udev,動態加載設備文件

        

/root: 不能單獨分區

 

/var:建議單獨分區

     存放pid, lock, log文件


/boot:內核,initrd(initramfs)

         內核: bootloader負責加載,bootloader加載內核時並沒有文件系統,bootloader能夠識別文件系統結構

        應該單獨分區,根文件系統所在分區可能使用LVM,而LVM是內核的功能。



系統啓動次序:

POST-->BIOS(HD)-->(MBR)bootloader(文件系統結構,ext2, ext3, xfs)-->內核-->根

 

程序:指令+數據

         指令:芯片固化

                   CPU: 普通指令,特權指令

                   指令集

                  

 

軟件包管理器的核心功能:

1、製作軟件包;

2、安裝、卸載、升級、查詢、校驗;

 

Linux三大發行版:Redhat, SUSE, Debian 使用的軟件包管理工具

 

Redhat, SUSE: RPM

         Redhat Package Manager

         PRM is Package Manager


Debian: dpt

 


前端工具:yum, apt-get,爲了解決依賴關係

後端工具:RPM, dpt

 

yum: Yellowdog Update Modifier

 

 

12_02_Linux軟件管理之二 rpm


rpm命令:

         rpm:

                   數據庫: /var/lib/rpm, 一旦損壞,rpm工具就會失效

         rpmbuild:


軟件管理的工作包括:

安裝、查詢、卸載、升級、校驗、數據庫的重建、驗正數據包等工作;

 

rpm命名:

包:組成部分

         主包:

                   bind-9.7.1-1.el5.i586.rpm

         子包:

                   bind-libs-9.7.1-1.el5.i586.rpm

                   bind-utils-9.7.1-1.el5.i586.rpm

包名格式:

         name-version-release.arch.rpm

         bind-major.minor.release-release.arch.rpm

 

major: 主版本號:重大改進

minor: 次版本號:某個子功能發生重大變化

release: 發行號:修正了部分bug,調整了一點功能

第二個release:rpm包的發行號


源碼命名:bind-9.7.1.tar.gz     

 

rpm包格式分爲:

         二進制格式:

                   rpm包作者下載源程序,編譯配置完成後,製作成rpm包

                   bind-9.7.1-1.noarch.rpm

                   bind-9.7.1-1.ppc.rpm


         源碼格式:需要自己編譯,可以發揮硬件最大性能。

 

rpm的使用:

 

1、安裝

rpm -i /PATH/TO/PACKAGE_FILE

         -h: 以#顯示進度;每個#表示2%;

         -v: 顯示詳細過程

         -vv: 更詳細的過程

         --nodeps: 忽略依賴關係;

         --replacepkgs: 重新安裝,替換原有安裝;

         --force: 強行安裝,可以實現重裝或降級;

        

一般使用:rpm -ivh /PATH/TO/PACKAGE_FILE

      

2、查詢

rpm -q PACKAGE_NAME:查詢指定的包是否已經安裝

rpm -qa : 查詢已經安裝的所有包

 

rpm -qi PACKAGE_NAME: 查詢指定包的說明信息;

rpm -ql PACKAGE_NAME: 查詢指定包安裝後生成的文件列表;

rpm -qc PACEAGE_NEME:查詢指定包安裝的配置文件;

rpm -qd PACKAGE_NAME: 查詢指定包安裝的幫助文件;

 

rpm -q --scripts PACKAGE_NAME: 查詢指定包中包含的腳本

        

rpm -qf /path/to/somefile: 查詢指定的文件是由哪個rpm包安裝生成的;

        

如果某rpm包尚未安裝,我們需查詢其說明信息、安裝以後會生成的文件;

rpm -qpi /PATH/TO/PACKAGE_FILE

rpm -qpl /PATH/TO/PACKAGE_FILE

 

3、升級

rpm -Uvh /PATH/TO/NEW_PACKAGE_FILE: 如果裝有老版本的,則升級;否則,安裝;

rpm -Fvh /PATH/TO/NEW_PACKAGE_FILE:如果裝有老版本的,則升級;否則,退出;

         --oldpackage: 降級

        

4、卸載

rpm -e PACKAGE_NAME

         --nodeps

        

5、校驗

rpm -V PACKAGE_NAME

        

6、重建數據庫

rpm

          --rebuilddb: 重建數據庫,一定會重新建立;

          --initdb:初始化數據庫,沒有才建立,有就不用建立;

 

7、檢驗來源合法性,及軟件包完整性;

加密類型:

         1. 對稱:加密解密使用同一個密鑰

         2. 非對稱:一對兒密鑰,公鑰,私鑰;公鑰隱含於私鑰中,可以提取出來,並公開出去;       

         3. 單向:hash

 

# ls /etc/pki/rpm-gpg/

         RPM-GPG-KEY-redhat-release : 紅帽公司的公鑰

        

rpm --import /etc/pki/rpm-gpg/RPM-GPG-KEY-redhat-release: 導入密鑰文件


rpm -K /PAPT/TO/PACKAGE_FILE

         dsa, gpg: 驗正來源合法性,也即驗正簽名;可以使用--nosignature,略過此項

         sha1, md5: 驗正軟件包完整性;可以使用--nodigest,略過此項

        


12_03_Linux軟件管理之三 yum


yum倉庫中的元數據文件:

1. primary.xml.gz

         所有RPM包的列表;

         依賴關係;

         每個RPM安裝生成的文件列表;


2. filelists.xml.gz

         當前倉庫中所有RPM包的所有文件列表;


3. other.xml.gz

         額外信息,RPM包的修改日誌;

 

4. repomd.xml

         記錄的是上面三個文件的時間戳和校驗和;

        

5. comps*.xml

        RPM包分組信息;


如何爲yum定義repo文件

自己的yum配置文件保存在/etc/yum.respos.d下


[Repo_ID]

name=Description

baseurl=

         ftp://

         http://

         file:///

enabled={1|0}

gpgcheck={1|0}

gpgkey=

 

 

yum [options] [command] [package ...]


options:

-y: 自動回答爲yes

--nogpgcheck

 

command:

list: 列表

         支持glob

         all

         available:可用的,倉庫中有但尚未安裝的

         installed: 已經安裝的

         updates: 可用的升級

 

clean: 清理緩存

         [ packages | headers | metadata | dbcache | all ]

        

repolist: 顯示repo列表及其簡要信息

         all

         enabled:默認

         disabled

 

install: 安裝

         yum install PACKAGE_NAME


localinstall: 安裝本地rpm包,可以自動安裝依賴包


update: 升級

update_to: 升級爲指定版本

 

remove|erase:卸載

 

info: infomation,類似 rpm -qi

 

provides| whatprovides: 查看指定的文件或特性是由哪個包安裝生成的;


包組管理:

groupinfo

grouplist

groupinstall

groupremove

groupupdate

 

 

使用光盤作爲yum源:

/media/cdrom/{Server,VT,Cluster,ClusterStorage}

baseurl=file:///media/cdrom/Server

 

如何創建yum倉庫:

createrepo

創建 repodata路徑,生成源的元數據文件。

 

練習:

1、將系統安裝光盤掛載至/media/yum目錄,用其實現yum倉庫;

2、配置使用http://172.16.0.1/yum/{Server,VT,Cluster,ClusterStorage}爲可用yum倉庫;

 


寫一個腳本,完成如下功能:

說明:此腳本能夠爲指定網卡創建別名,則指定地址;使用格式如:mkethalias.sh -v|--verbose -i ethX

1、-i選項用於指定網卡;指定完成後,要判斷其是否存在,如果不存在,就退出;

2、如果用戶指定的網卡存在,則讓用戶爲其指定一個別名,此別名可以爲空;如果不空,請確保其事先不存在,否則,要報錯,並讓用戶重新輸入;

3、在用戶輸入了一個正確的別名後,請用戶輸入地址和掩碼;並將其配置在指定的別名上;

4、如果用戶使用了-v選項,則在配置完成後,顯示其配置結果信息;否則,將不顯示;

 

 

12_04_Linux軟件管理之四 yum


RPM安裝:

         二進制格式:

         源程序-->編譯-->二進制格式

                   有些特性是編譯選定的,如果編譯未選定此特性,將無法使用;

                   rpm包的版本會落後於源碼包,甚至落後很多;bind-9.8.7, bind-9.7.2

                  

定製:手動編譯安裝

 

編譯環境,開發環境

開發庫,開發工具

 

Linux: C,

GNU: C

 

C,C++:

    gcc: GNU C Complier, C

    g++:

 

make: 項目管理工具,

         makefile: 定義了make(gcc,g++)按何種次序去編譯這些源程序文件中的源程序

 

automake, --> makefile.in --> makefile

autoconf, --> configure

 

編譯安裝的三步驟:


前提:準備開發環境(編譯環境)

安裝"Development Tools"和"Development Libraries"

 

# tar

# cd

1. # ./configure 

         --help

         --prefix=/path/to/somewhere

         --sysconfdir=/PATH/TO/CONFFILE_PATH

         功能:1、讓用戶選定編譯特性;2、檢查編譯環境;

2. # make

3. # make install


e.g: 編譯安裝tengine

# tar xf tengine-1.4.2.tar.gz

# cd tegnine-1.4.2

# ./configure --prefix=/usr/local/tengine --conf-path=/etc/tengine/tengine.conf

# make

# make install

# /usr/local/tengine/sbin/nginx


如果軟件安裝到了非默認路徑下,需要做的修改:

1、修改PATH環境變量,以能夠識別此程序的二進制文件路徑;

         修改/etc/profile文件

         在/etc/profile.d/目錄建立一個以.sh爲名稱後綴的文件,在裏面定義export PATH=$PATH:/path/to/somewhere

2、默認情況下,系統搜索庫文件的路徑/lib, /usr/lib; 要增添額外搜尋路徑:

         在/etc/ld.so.conf.d/中創建以.conf爲後綴名的文件,而後把要增添的路徑直接寫至此文件中;

         # ldconfig 通知系統重新搜尋庫文件

                   -v: 顯示重新搜尋庫的過程

3、頭文件:輸出給系統

         默認:/usr/include

         增添頭文件搜尋路徑,使用鏈接進行:

                   /usr/local/tengine/include/   /usr/include/

                   兩種方式:

                   ln -s /usr/local/tengine/include/* /usr/include/ 

                   ln -s /usr/local/tengine/include  /usr/include/tengine

4、man文件路徑:安裝在--prefix指定的目錄下的man目錄;/usr/share/man   

                   1、man -M /PATH/TO/MAN_DIR COMMAND

                   2、在/etc/man.config中添加一條MANPATH

                  

netstat命令:

         -r: 顯示路由表

         -n: 以數字方式顯示

        

         -t: 建立的tcp連接

         -u: 顯示udp連接

         -l: 顯示監聽狀態的連接

         -p: 顯示監聽指定的套接字的進程的進程號及進程名



發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章