Linux初級運維(十四)——Linux軟件管理

一、軟件包管理

    1、應用程序:

        程序,Architecture 

    C語言:源代碼-->(編譯)二進制格式

    腳本:解釋器(二進制程序)

    源代碼--> 編譯-->鏈接-->運行

        程序:

            庫:  靜態  動態

                   靜態鏈接   動態鏈接

    2、程序組成部分:

        二進制程序

        庫

        配置文件

        幫助文件


        /boot :存放內核,initrd(initramfs)

        /etc  :存放配置文件

        /usr 

        /var:是外圍的文件系統,存放日誌等文件,建議單獨分區

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

        /lib :存放庫文件

        /tmp

        /bin :存放二進制文件

        /sbin:存放二進制文件

        /proc

        /sys

        /mnt

        /media

        /home

        /root ;不能單獨分區

        /misc

        /opt 

        /srv


/etc , /bin ,/sbin, /lib, /usr/share/man:存放幫助文件

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

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


    系統啓動順序:  POST-->BIOS(HD)-->(MBR)bootloader(文件系統結構)-->內核

    3、程序: 指令+ 數據

        指令:芯片

                CPU:普通指令,特權指令

                  指令集

        C語言:

            Powerpc :二進制格式

    4、軟件包管理器:

            打包成一文件:二進制程序,庫文件,配置文件,幫助文件

            生成數據庫,追蹤所安裝的每一個文件

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

                (1)製作軟件包;(2)安裝、卸載、升級、查詢、校驗;

         前段工具:yum ,apt-get

         後端工具:RPM  ,dpt

二、rpm命令:

        rpm:管理命令

            數據庫 /var/lib/rpm

        rpmbuild:建立rpm

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

    1、rpm命名

        包:組成部分

            主包:

                bind-version  例如:bind-9.7.1-1.i586.el5.rpm

            子包:

                例如:bind-libs-9.7.1-1.i586.el5.rpm   例如:bind-utils-9.7.1-1.i586.el5.rpm

        包名格式:

                name-version-release.arch.rpm

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

        主版本號:重大改進

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

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

    2、rpm包

            二進制格式

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

                    bind-9.7.1-1.x86_64

    rpm:

        rpm -i  /PATH/TO/PACKAGE_FILE

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

                -v:顯示詳細過程

                -vv:更詳細的過程

        rpm -ivh /PATH/TO/PACKAGE_FILE

                --nodeps: 忽略依賴關係

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

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

    3、rpm查詢

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

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

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

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

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

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

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

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


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

                   rpm -qpi /PATH/TO/PACKAGE_FILE

                   rpm -qpl 

    4、rpm升級

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

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

                    --oldpackage:降級

    5、卸載

            rpm -e PACKAGE_NAME

                   --nodeps

    6、校驗

            rpm -V PACKAGE_NAME

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

            加密類型:

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

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

            rpm -k /PATH/TO/PACKAGE_FILE

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

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

    8、重建數據庫

        rpm        

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

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

三、yum

        yum倉庫中的元數據文件:

        primary.xml.gz

            所有RPM包的列表:

            依賴關係:

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

        filelists.xml.gz

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

        other.xml.gz

               額外信息,RPM

    1、定義yum

        如何爲yum定義repo文件

        [Repo_ID]

        name=Description

        baseurl=

            ftp://

            http://

            file:///

        enabled={1|0}

        gpgcheck={1|0}

        gpgkey=

    

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

        list:列表  

            all:

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

            installed:已經安裝的

            updates:可用的升級

        clean:清理緩存

            [packages | headers | metadata | dbcache | all ]

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

                all     ; enable:默認 ;    disable ;

        install :安裝

            yum install PACKAGE_NAME

                -y :自動回答爲yes

                --nogpgcheck 

        update:升級

        update_to :升級爲指定版本

        remove | erase: 卸載

        info:

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

    2、編譯安裝的三步驟:

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

        安裝“Development Tools”和 “Development Libraries”

        #tar

        #cd

        # ./configure

                --help

                --prefix=/path/to/somewhere

                --sysconfdir=/PATH/TO/CONFFILE_PATH

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

        #make

        #make install


        (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/tengin/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

    3、netstat命令:

            -r:顯示路由表

            -n:以數字方式顯示

            -t:建立的tcp連接

            -u:顯示udp連接

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

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

四、練習

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

        說明:此腳本能於同一個repo文件中創建多個yum源的指向;

        1、接受一個文件名做爲參數,此文件存放至/etc/yum.repos.d目錄中,且文件名以.repo爲後綴;要求,此文件不能事先存,否則,報錯;

        2、在腳本中,提醒用戶輸入repo id;如果爲quit,則退出腳本;否則,繼續完成下面的步驟;

        3、repo name 以及baseurl的路徑,而後以repo文件的格式將其保存至指定的文件中;

        4、enabled 默認爲1 ,而gpgcheck默認設定爲0;

        5、此腳本會循環執行多次,除非用戶爲repo id指定爲quit;

        image.png

 

五、while

        while ,until  for

        break :提前退出循環

        continue:提前結束本輪循環,而進入下一輪循環;

        image.png

六、練習題

       寫一個腳本:

    1、判斷一個指定的bash腳本是否有語法錯誤;如果有錯誤,則提醒用戶鍵入Q或者q無視錯誤並退出,其他任何鍵可以通過vim打開這個指定的腳本;

    2、如果用戶通過vim打開編輯後保存退出時仍然有錯誤,則重複第1步中的內容;否則,就正常關閉退出

        image.png

    

    

        

            

            

            

            

                

        

                


        

        

            

    

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