溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

linux之程序包安裝

發(fā)布時間:2020-07-21 17:44:42 來源:網(wǎng)絡(luò) 閱讀:866 作者:嘀充值成功 欄目:數(shù)據(jù)庫

!命令:執(zhí)行其他系統(tǒng)下的linux命令:如:#!pwd:查看路徑

lftp命令下:(子命令:單文件下載:get;目錄下載:mirror;多文件下載:mget;退出:bye)

一、軟件包組成:

    軟件包組成:(二進(jìn)制程序、庫文件、配置文件、幫助文件)

            二進(jìn)制程序文件:

                存放路徑:/bin;/sbin;/usr/bin;/usr/sbin;/usr/local/bin;/usr/local/sbin;

                    /bin;/sbin:系統(tǒng)自身啟動需要的二進(jìn)制文件;

                    /usr/sbin;/usr/local/bin:系統(tǒng)啟動后完成基本管理需要的二進(jìn)制文件;

                    /usr/local/bin;/usr/local/sbin:第三方管理需要的二進(jìn)制文件;

            庫文件:(也是可執(zhí)行文件,但不能獨立執(zhí)行,需要調(diào)用執(zhí)行)在程序中通常稱為函數(shù);

                    存放路徑:/lib;/usr/lib;/usr/local/lib;

                     庫文件分類:靜態(tài)庫(以.a結(jié)尾的文件)、動態(tài)庫(以.so結(jié)尾的文件)

                    庫文件配置路徑:/etc/ld.so.conf;/etc/ld.so.conf.d/*.conf

            配置文件:

                    存放路徑:/etc

            幫助文件:

                    幫助文件分類:手冊(/usr/share/man);README;INSTALL;通常后兩個都放在/usr/share/doc,

                                            man的配置文件在/etc/man_db.conf(定義man去×××幫助文件)


二、linux程序包管理工具:

包管理工具應(yīng)包含:文件清單、文件存放位置、軟件功能說明、依賴關(guān)系(依賴其他程序包)

程序包管理工具數(shù)據(jù)庫:追蹤軟件安裝位置,便于卸載操作,大多數(shù)存于/var/lib/rpm下

軟件包前端管理工具會自動查找、解決軟件包之間的依賴關(guān)系,然后安裝需要的軟件包。

Debian :dpt;apt-get(軟件包前端管理工具)

Redhat:rpm;yum(軟件包前端管理工具)

suse:rpm


軟件包安裝方法:包管理工具安裝、源代碼編譯安裝、軟件包管理器前端工具、通用二進(jìn)制格式;

    包管理工具安裝:rpm實現(xiàn)的功能:打包、安裝、查詢、升級、校驗、卸載等;

    編譯安裝:將源代碼編譯成二進(jìn)制格式文件;需提供環(huán)境(如:編譯器:gcc,g++;庫文件),

                     由于編譯安裝只能手動進(jìn)行安裝,為了方便管理(卸載、升級),一般安裝到特定的文中,帶來的問題:如找不到二進(jìn)制文件執(zhí)行(因為在環(huán)境變量中沒有定義)、找不到庫文件、找不到幫助手冊(可以通過修改配置文件或使用命令:man -M /path來指定幫助文件路徑)、頭文件路徑(/usr/include)。


三、軟件包及源程序命名:

    1、源程序命名:

            name-version.tar.{gz | bz2 | xz}  (包名-版本號.后綴名)

                其中的版本號組成:major.minor.release (主版本號.次版本號.發(fā)行號);主版本號一般是程序的重大改變,次版本號一般是程序部分功能發(fā)生改變,發(fā)型號一般是是bug修復(fù),一次升級時要查看相應(yīng)版本號。

            如:bash-4.3.1.tar.xz


    2、rpm包命名:

            name-version-release.arch.rpm (包名-源程序版本號-打包版本號.平臺.rpm;平臺指主機架構(gòu)如:i686,x86_64,amd64,ppc,noarch(表示與平臺無關(guān))) 此處的release是發(fā)行者打包的管理號,可能還包括所適用的操作系統(tǒng)(如:centos6);

而version也包含major.minor.release (主版本號.次版本號.發(fā)行號),解釋同源程序的release;

            如:bash-4.3.2-5.e16.x86_64.rpm  包名.源程序版本號.打包版本號及適用操作系統(tǒng).平臺.rpm 


    3、rpm分包命名:將某些功能做成獨立的包,需要此功能才安裝。

            主包包名-分包包名--version-release.arch.rpm   一般分包會依賴于主包,也就是說安裝分包必須安裝主包;

            主包:核心包;bind

            分包:支包;bind-chroot

                如:bind-chroot 

    4、程序包位置:

            一般放在packet下        


四、軟件包獲取及驗證軟件包:

紅帽軟件包第三方平臺:epel,現(xiàn)在由fedora來維護(hù);因此又叫fedroa-epel:

http://mirrors.sohu.com;這里的軟件一般是系統(tǒng)光盤不帶的;

http://rpmfind.net;用來搜rpm包的

http://rpm.pbone.net;用來搜rpm包的


rpm包驗證機制:來源合法性、包的完整性; 

gpg pgp:

redhat系列官方公鑰存放位置:

[root@promote ~]# ls /etc/pki/rpm-gpg/    //顯示公鑰文件

RPM-GPG-KEY-CentOS-7  RPM-GPG-KEY-CentOS-Debug-7  RPM-GPG-KEY-CentOS-Testing-7

[root@promote ~]#

[root@promote ~]# rpm --import /etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7    //導(dǎo)入公鑰

[root@promote ~]# rpm -K zziplib-utils-0.13.62-5.el7.x86_64.rpm            //驗證包來源合法

zziplib-utils-0.13.62-5.el7.x86_64.rpm: rsa sha1 (md5) pgp md5 OK

[root@promote ~]#



五、rpm包安裝、卸載、查詢、升級、校驗;

1、rpm包安裝:  要指定安裝文件的路徑(從哪個文件安裝)   

  rpm {-i|--install} [install-options] PACKAGE_FILE ...

install-options:

    -v:顯示詳細(xì)信息;

    -vv:顯示更詳細(xì)信息;

    -h:以#號顯示安裝進(jìn)度,一個#表示2%的進(jìn)度

    --nodeps:忽略依賴關(guān)系;注意:忽略依賴關(guān)系可能能安裝軟件包,但安裝后不一定能正常使用;

    --test:僅測試安裝,但不安裝

    --replacepkgs:重新安裝軟件包,替換已安裝包的所有文件;

常用組合:-ivh

如:

[root@promote ~]# rpm -ivh /cdrom/Packages/zsh-5.0.2-14.el7.x86_64.rpm

[root@promote ~]# rpm -ivh zziplib-utils-0.13.62-5.el7.x86_64.rpm

error: Failed dependencies:

        libzzip-0.so.13()(64bit) is needed by zziplib-utils-0.13.62-5.el7.x86_64

        libzzipfseeko-0.so.13()(64bit) is needed by zziplib-utils-0.13.62-5.el7.x86_64

        libzzipmmapped-0.so.13()(64bit) is needed by zziplib-utils-0.13.62-5.el7.x86_64

        zziplib(x86-64) = 0.13.62-5.el7 is needed by zziplib-utils-0.13.62-5.el7.x86_64

[root@promote ~]# rpm -ivh /cdrom/Packages/

注意:rpm安裝包不會自動安裝依賴的包;

[root@promote ~]# rpm -ivh --replacepkgs /cdrom/Packages/zsh-5.0.2-14.el7.x86_64.rpm


2、rpm包卸載:卸載只需要指包名;

     rpm {-e|--erase} [--allmatches] [--nodeps] [--noscripts]

 --nodeps:忽略依賴關(guān)系;

 --test:測試卸載

如:

[root@promote ~]#  rpm -e zsh

[root@promote ~]#


注意:在安裝或卸載的時候,如果有寫文件做了改動,rpm會將修改的文件cp一份作為備份,可以在警告信息中看到;waring。。。。。

3、rpm包查詢:

     rpm {-q|--query} [select-options] [query-options]

3.1查詢已安裝的軟件包信息

rpm -qa:查詢所有的包   //不支持golbing

rpm -qa | grep ‘包名’  :查詢特定的包

rpm -qi ‘包名’:查詢軟件包的摘要信息;

rpm -ql ‘包名’ :查詢軟件包安裝后產(chǎn)生的文件清單;

rpm -qf ‘文件的具體路徑’ :查詢某文件是由哪個rpm包安裝生成的;

rpm -qc ‘包名’: 查詢軟件包安裝后的配置文件清單;

rpm -qd ‘包名’:查詢軟件包安裝后產(chǎn)生的幫助文檔信息清單;

rpm -q --scripts ‘包名’ :查詢軟件包執(zhí)行的相關(guān)腳本;

               相關(guān)腳本分類:

                        preinstall:安裝前腳本;

                        postinstall:安裝后腳本;

                        preuninstall:卸載前腳本;

                        postuninstall:卸載后腳本;

如:

[root@promote ~]# rpm -q zsh

package zsh is not installed

[root@promote ~]# rpm -qa | grep zsh

zsh-5.0.2-14.el7.x86_64

[root@promote ~]# rpm -qi zsh    //查詢軟件包的相關(guān)摘要信息

[root@promote ~]#  rpm -ql zsh  | less//查詢zsh安裝產(chǎn)生的文件清單,并分頁顯示;

[root@promote ~]# rpm -qf /usr/share/zsh/site-functions/      //查詢site-functions是由哪個rpm包安裝

systemd-219-19.el7.x86_64

pulseaudio-6.0-7.el7.x86_64

zsh-5.0.2-14.el7.x86_64

[root@promote ~]#

[root@promote ~]# rpm -qf /etc/passwd   //查詢/etc/passwd由哪個rpm包安裝產(chǎn)生的;

setup-2.8.71-6.el7.noarch

[root@promote ~]#


3.2、查詢安裝軟件包的安裝后生成的相關(guān)信息 在q選項后加上p,

rpm -qpi ‘rpm安裝包路徑’:查詢軟件包如果安裝將會產(chǎn)生的的摘要信息;

rpm -qpl ‘rpm安裝包路徑’ :查詢軟件包如果安裝將會產(chǎn)生的文件清單;

rpm -qpc ‘rpm安裝包路徑’: 查詢軟件包如果安裝將會產(chǎn)生的的配置文件清單;

rpm -qpd ‘rpm安裝包路徑’:查詢軟件包如果安裝將會產(chǎn)生的幫助文檔信息清單;

rpm -qp --scripts ‘包名’ :查詢軟件包如果安裝將會執(zhí)行的相關(guān)腳本;

如:

[root@promote ~]# rpm -qpzziplib-utils-0.13.62-5.el7.x86_64.rpm    //注意此處是包路徑,不是包名

[root@promote cdrom]# rpm -qi zziplib-utils-0.13.62-5.el7.x86_64.rpm    //直接查會提示軟件未安裝

package zziplib-utils-0.13.62-5.el7.x86_64.rpm is not installed

  

4、rpm包升級; 

      rpm {-U|--upgrade} [install-options] PACKAGE_FILE ...         

      rpm {-F|--freshen} [install-options] PACKAGE_FILE ...

--force:新舊版本沖突時,強行升級;

--nodeps:忽略依賴關(guān)系

-U和-F都可以升級,不同的是:-U可以升級也可以全新安裝;-F只升級,如果老版本未安裝,此命令不生效;因此建議使用-U;

常用組合命令:-Uvh;-Fvh;


升級時需要注意的是:可能帶來依賴關(guān)系沖突,如x依賴y1.0,升級后x依賴于y2.0;

注意:內(nèi)核不應(yīng)該升級,應(yīng)該安裝,他允許許多版本并存;


5、rpm包校驗:

     rpm {-V|--verify} [select-options] [verify-options]

一般軟件包安裝后,用rpm -V ‘包名’進(jìn)行校驗,如果安裝后的文件被改動過,則會輸出信息;

如:

[root@promote ~]# rpm -V zsh

S.5....T.  c /etc/zshrc                

  S file Size differs

輸出信息解釋,有的沒有在這里輸出:

       M Mode differs (includes permissions and file type)

       5 digest (formerly MD5 sum) differs

       D Device major/minor number mismatch

       L readLink(2) path mismatch

       U User ownership differs

       G Group ownership differs

       T mTime differs

       P caPabilities differ

        . 表示沒有修改




六、rpm包的數(shù)據(jù)庫:

在linux系統(tǒng)中的大多數(shù)數(shù)據(jù)庫文件存放于:/var/lib目錄下;

rpm包數(shù)據(jù)庫:/var/lib/rpm;

[root@promote ~]# ls /var/lib/rpm -l

total 106552

-rw-r--r--. 1 root root  7254016 Dec 19 11:05 Basenames

-rw-r--r--. 1 root root    16384 Nov 29 20:31 Conflictname

-rw-r--r--. 1 root root   270336 Dec 19 11:34 __db.001        //__表示鎖文件

-rw-r--r--. 1 root root    81920 Dec 19 11:34 __db.002

-rw-r--r--. 1 root root  1318912 Dec 19 11:34 __db.003

-rw-r--r--. 1 root root  2154496 Dec 19 11:05 Dirnames

-rw-r--r--. 1 root root    36864 Dec 19 11:05 Group

-rw-r--r--. 1 root root    24576 Dec 19 11:05 Installtid

-rw-r--r--. 1 root root   106496 Dec 19 11:05 Name

-rw-r--r--. 1 root root    45056 Dec  6 22:17 Obsoletename

-rw-r--r--. 1 root root 94273536 Dec 19 11:05 Packages

-rw-r--r--. 1 root root  2596864 Dec 19 11:05 Providename

-rw-r--r--. 1 root root   724992 Dec 19 11:05 Requirename

-rw-r--r--. 1 root root   176128 Dec 19 11:05 Sha1header

-rw-r--r--. 1 root root   118784 Dec 19 11:05 Sigmd5

-rw-r--r--. 1 root root     8192 Nov 29 20:30 Triggername

[root@promote ~]#

如果rpm包的數(shù)據(jù)庫損壞,將導(dǎo)致rpm不能進(jìn)行查詢、卸載、升級、校驗等操作;


rpm [--initdb | --rebuilddb] 

--initdb:新建數(shù)據(jù)庫;不會覆蓋原文件;

--rebuilddb;重建數(shù)據(jù)庫;會覆蓋原文件;用的比較多;


七、源碼格式的rpm包:一般含有.src字符串的文件名;

如:tcl-tclreadline-2.1.0-3.el7.src.rpm

打包:rpm的包制作過程式根據(jù)spec文件來制作完成的, 

制作rpmbuild:





八、yum介紹:自動查找、下載并解決rpm包的依賴關(guān)系(前端管理工具)

1、yum服務(wù)端

yum倉庫(yum repository)的實現(xiàn)方式:遠(yuǎn)程方式( ftp://,http:// )、本地方式( file:///etc/ );

    一般rpm包都放在這些路徑下,用#createrepo 來創(chuàng)建源數(shù)據(jù);

    repodata存放的路徑就是yum倉庫的路徑;

yum安裝實現(xiàn)需要的步驟:


yum倉庫制作:(一般網(wǎng)上會有提供(如:http://mirrors.aliyun.com/centos/7/updates/x86_64/),但是如要要自己創(chuàng)建,可以按照如下流程:)

  •     光盤:光盤系統(tǒng)掛載在系統(tǒng)下,可以直接當(dāng)做yum倉庫使用;

  •     網(wǎng)上下載到本地制作:1、下載數(shù)據(jù)到本地、2、創(chuàng)建源數(shù)據(jù)

      createrepo:創(chuàng)建yum倉庫的源數(shù)據(jù);

     createrepo [options] <directory>     //創(chuàng)建源數(shù)據(jù),directory表示rpm包所在的路徑

      如:創(chuàng)建一個新倉庫:

[root@promote Packages]# cp a* /yum     //復(fù)制以a開頭的所有文件到/yum下,作為rpm包倉庫;

[root@promote Packages]# createrepo  /yum     //制作/yum下軟件包的源數(shù)據(jù)生成repodata;

2、yum客戶端

   yum install | reinstall | remove

    yum安裝依賴于yum倉庫,

    yum配置文件定義了yum倉庫(到哪里去找軟件包)

    yum主配置文件:/etc/yum.conf        //核心配置文件

    yum倉庫的子配置文件:/etc/yum.repos.d/*.repo    //可以自定定義yum倉庫源,放在此目錄下;

2.1、yum客戶端主配置文件事例

[main]            //定義哪個倉庫,倉庫的名字,為子倉庫提供默認(rèn)配置

cachedir=/var/cache/yum/$basearch/$releasever    //緩存目錄,在哪個目錄下緩存;

keepcache=0        //緩存保留時間   

debuglevel=2        //debug級別,數(shù)字越大,級別越高

logfile=/var/log/yum.log    //日志文件

exactarch=1                //匹配本地平臺(32\64位),1表示是,0表示不是;

obsoletes=1

gpgcheck=1        //檢查rpm包簽名,檢查來源合法性,1表示是,0表示不是;

plugins=1

installonly_limit=5

bugtracker_url=http://bugs.centos.org/set_project.php?project_id=23&ref=http://bugs.centos.org/bug_report_page.php?category=yum

distroverpkg=centos-release


2.2、yum客戶端子倉庫自定義(需要注意:“=”前后不能有空格)

[repository_ID]    //隨便起名,只要不沖突

name=        //倉庫名字描述信息,必不可少

baseurl=        //倉庫的路徑,ftp、http、file等

enables=     //倉庫是否啟用,1表示啟用,0表示不啟用;

gpgcheck=    //檢查軟件包合法性,1表示啟用,0表示不啟用;

gpgkey=    //如果啟用了合法性檢查,需定義秘鑰路徑;無論放哪里,只要能訪問到就可以

cost=    //定義訪問需要的代價,數(shù)字越小代價越低也就越優(yōu)先,

如:

[base]

name=CentOS-$releasever - Base

mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=os&infra=$infra

baseurl=http://mirrors.aliyun.com/centos/7/updates/x86_64/     //repodata在x86_64目錄下;  

gpgcheck=1

gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7


注意:yum倉庫路徑可以使用yum內(nèi)置變量來匹配平臺($basearch)和版本($releasever):

如:cachedir=/var/cache/yum/$basearch/centos/$releasever    //$releasever只匹配發(fā)行主版本號;$basearch匹配平臺;  如:匹配/var/cache/yum/i386/centos/7,var/cache/yum/x86_64/centos/6,


九、yum命令工具使用:

1、yum顯示相關(guān)信息

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

command:

    list [all | installed | available |updates  | extras | recent]:    顯示所有程序包 | 已安裝的包 | 可安裝的包 | 可更新的包 | 無法歸類到y(tǒng)um倉庫的包,額外的包 | 新增加yum倉庫的包;

    repolist [all | enabled | disabled:查看所有倉庫 | 啟用的倉庫 | 禁用的倉庫;

    info [包名]:相當(dāng)于rpm -qi,顯示摘要信息;

    grouplist  :顯示有哪些包組信息;

    groupinfo "組名" :顯示具體包組信息;

    clean [ packages | metadata | expire-cache | rpmdb | plugins | all ]:清空相關(guān)緩存

    makecache [fast] :手動建立本地緩存;

    provides | whatprovides feature1 [feature2] [...]     //查詢文件有哪個程序包安裝的;

    search string1 [string2] [...]     //查詢包中有相應(yīng)字符串的包;模糊匹配;


注意:yum list 支持同時查看安裝和未安裝的軟件包,rpm只能支持一種;yum支持globing,rpm不支持,


如:

[root@promote yum.repos.d]# yum list  | less

Loaded plugins: fastestmirror, langpacks

Loading mirror speeds from cached hostfile

 * base: ftp.sjtu.edu.cn

 * extras: ftp.sjtu.edu.cn

 * updates: ftp.sjtu.edu.cn

Installed Packages

389-ds-base.x86_64                      1.3.4.0-19.el7                 @anaconda  

zziplib-utils.x86_64                    0.13.62-5.el7                  base

zsh.x86_64                              5.0.2-14.el7                   installed

 //依次為:軟件包.平臺  源文件版本號-發(fā)行版本號 已安裝 ;@表示已經(jīng)安裝,@后面是通過哪個倉庫安裝;前面沒有@表示沒有安裝;installed表示已安裝,


[root@promote yum.repos.d]# yum repolist

Loaded plugins: fastestmirror, langpacks

Loading mirror speeds from cached hostfile

 * base: ftp.sjtu.edu.cn

 * extras: ftp.sjtu.edu.cn

 * updates: ftp.sjtu.edu.cn

repo id                                      repo name                                       status

aliyum                                       centos7                                           393

base/7/x86_64                                CentOS-7 - Base                                 9,363

extras/7/x86_64                              CentOS-7 - Extras                                 435

updates/7/x86_64                             CentOS-7 - Updates                                393

repolist: 10,584

[root@promote yum.repos.d]#


[root@promote ~]# yum provides /etc/passwd

Loaded plugins: fastestmirror, langpacks

Loading mirror speeds from cached hostfile

 * base: mirrors.cn99.com

 * extras: ftp.sjtu.edu.cn

 * updates: mirrors.cn99.com

setup-2.8.71-7.el7.noarch : A set of system configuration and setup files

Repo        : base

Matched from:

Filename    : /etc/passwd

setup-2.8.71-6.el7.noarch : A set of system configuration and setup files

Repo        : @anaconda

Matched from:

Filename    : /etc/passwd

[root@promote ~]#


[root@promote ~]# yum search  zsh        //搜索含有字符串的軟件包,

Loaded plugins: fastestmirror, langpacks

Loading mirror speeds from cached hostfile

 * base: mirrors.cn99.com

 * extras: ftp.sjtu.edu.cn

 * updates: mirrors.cn99.com

======================================== N/S matched: zsh =========================================

zsh-html.x86_64 : Zsh shell manual in html format

zsh.x86_64 : Powerful interactive shell

  Name and summary matches only, use "search all" for everything.

[root@promote ~]#


2、yum安裝:

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

command:

    install package1 [package2] [...] :安裝軟件包;yum安裝只需要指定安裝包名,不要指定路徑,因為他會去yum倉庫中自動搜索,但是rpm必須指定安裝文件的路徑;這里安裝的話需要手動確認(rèn),可以用-y來自動確認(rèn);

    reinstall package1 [package2] [...]:重新安裝軟件包;

    localinstall rpmfile1 [rpmfile2] [...]:    安裝本地rpm包,同時解決本地rpm包依賴關(guān)系,廢棄命令,但會檢查包合法性,可以使用--nogpgcheck關(guān)閉合法性檢查;

           (maintained for legacy reasons only - use install)

    localupdate rpmfile1 [rpmfile2] [...]:升級本地rpm包;廢棄命令

           (maintained for legacy reasons only - use update)



yum安裝需要使用yum倉庫,yum也可以不用yum倉庫直接安裝rpm包:如:

[root@promote Packages]# yum install zsh-html-5.0.2-14.el7.x86_64.rpm   //需指定包路徑

[root@promote ~]# yum localinstall zziplib-utils-0.13.62-5.el7.x86_64.rpm    //yum安裝本地rpm包

3、yum升級、降級:

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

command:

    update [package1] [package2] [...]        //升級

    update-to [package1] [package2] [...]    //指定版本升級(包名后跟版本號)

    check-update:檢查軟件包是否有升級包;

    upgrade [package1] [package2] [...]        //也是升級,現(xiàn)在不用了

    upgrade-to [package1] [package2] [...]    //升級到指定版本,也不用了現(xiàn)在

    downgrade package1 [package2] [...]    //向下降級

如:

[root@promote ~]# yum update-to python2-pyasn1.noarch

4、yum卸載yum卸載軟件時會自動卸載依賴它的包

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

command:

     remove | erase package1 [package2] [...]    //卸載軟件包;

如:

[root@promote ~]# yum remove bind

[root@promote ~]# yum erase zsh

5、yum包組查詢、安裝:如果組名之間有空格,需要用“”(引號)引起來;

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

command:

     groups [install | list | update| remove]: 包組安裝、查詢、升級、卸載;

如:

[root@promote ~]# yum groups list    //查詢有哪些包組;

[root@promote yum.repos.d]# yum groups install "Development Tools"    //安裝包組;


一般說到的開發(fā)環(huán)境包組有:

"Development"、"Server Platform Development"、"Desktop Platform Development"。

6、yum操作歷史查詢:

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

command:

    history   [info|list|packages-list|packages-info|summary|addon-info|redo|undo|roll‐

       back|new|sync|stats]

如:

[root@promote ~]# yum history

Loaded plugins: fastestmirror, langpacks

ID     | Login user               | Date and time    | Action(s)      | Altered

-------------------------------------------------------------------------------

     8 | root <root>              | 2016-12-19 19:40 | Erase          |    2

     7 | root <root>              | 2016-12-19 19:40 | Erase          |    1 EE

     6 | root <root>              | 2016-12-19 19:34 | Obsoleting     |    2

     5 | root <root>              | 2016-12-19 17:40 | Reinstall      |    1

     4 | root <root>              | 2016-12-19 17:37 | Update         |    1

     3 | root <root>              | 2016-12-19 17:31 | I, U           |    7  <

     2 | root <root>              | 2016-12-06 22:17 | Update         |    2 >

     1 | System <unset>           | 2016-11-29 20:14 | Install        | 1949

Warning: RPMDB altered outside of yum.

history list

[root@promote ~]#


7、yum

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

    command:

    version [ all | installed | available | group-* | nogroups* | grouplist | groupinfo ]




十、源碼文件編譯安裝:

更新系統(tǒng)時間:#ntpdata x.x.x.x    //指向時間服務(wù)器;

1、下載一個源碼格式文件:如Apache源文件:

[root@promote ~]# wget http://mirrors.sohu.com/apache/httpd-2.4.25.tar.gz


2、文件解壓縮

 tar [OPTION...] [FILE]...

    OPTION

        -xf:解壓縮所有文件:

[root@promote ~]# tar -xf httpd-2.4.25.tar.gz    //解壓縮,會出現(xiàn)一個一個不帶壓縮后綴的文件;

[root@promote ~]# ls

abc.txt          first.sh      httpd-2.4.25.tar.gz  zziplib-utils-0.13.62-5.el7.x86_64.rpm

anaconda-ks.cfg  httpd-2.4.25  ion

[root@promote ~]# 


3、編譯、安裝:

(編譯文件用gcc或g++,可是他不能解決文件之間的調(diào)用關(guān)系,make命令可以自動解決,但是他還是需要調(diào)用gcc或g++;);

make編譯一組文件,并解決調(diào)用關(guān)系;make編譯依賴于makefile文件,makefile文件制定了編譯的文件次序、參數(shù)等;makefile文件是用configure腳本加上makefile.in生成的;configure腳本是由開發(fā)工具autoconf生成的;makefile.in是由automake生成的;

makefile=configure腳本+makefile.in

 make [ -f makefile ] [ options ] ... [ targets ] ...

make install    //安裝;


總結(jié):

編譯步驟:

1、在源代碼程序目錄里執(zhí)行命令# ./configure  //檢查編譯環(huán)境是否完備;讓用戶定制編譯配置(通過腳本選項實現(xiàn))

2、執(zhí)行命令 # make 編譯

3、安裝二進(jìn)制文件: #make install



當(dāng)編譯安裝指定路徑時,程序在運行時可能找不到相應(yīng)的路徑,只能帶路徑執(zhí)行,如果不帶路徑運行相關(guān)命令,需要修改PATH文件包含相應(yīng)/bin,或/sbin;修改庫文件路徑包含相應(yīng)庫:/etc/ld.so.conf,/etc/ld.so.conf.d/*.conf;配置文件不需導(dǎo)出;修改幫助文件路徑/etc/man.conf,加上MANPATH=;


修改環(huán)境變量:

可以在/etc/profile.d在這個目錄下創(chuàng)建一個以.sh結(jié)尾文件,在里面加上:如:

export PATH=/usr/local/apr/bin:$PATH


導(dǎo)出庫文件:

[root@promote bin]# vim /etc/ld.so.conf.d/apr.conf

輸入內(nèi)容:

/usr/local/apr/lib

然后保存退出;

執(zhí)行命令#ldconfig -v重新搜索庫文件;


導(dǎo)出幫助文件:

[root@promote bin]# vim /etc/man_db.conf

在里面加上路徑:

MANPATH /usr/local/apr/man

然后保存退出;


鏈接頭文件:

#[root@promote httpd-2.4.25]# ln -sv /usr/local/apr/include /usr/include



查看程序運行依賴的庫:#ldd  程序

如:#ldd /bin/ls


ldconfig -v:重新搜索當(dāng)前系統(tǒng)上所有庫文件搜索路徑下庫文件,并生成緩存/etc/ld.so.cache




十一、源碼格式rpm安裝:

源碼格式的rpm安裝后不能直接使用;需編譯制作成rpm包才可以;

步驟:

1、下載源碼rpm包:

[root@promote ~]# wget

http://mirrors.aliyun.com/epel/7/SRPMS/n/nginx-1.10.2-1.el7.src.rpm


2、查看安裝nginx-1.10.2-1.el7.src.rpm后生成的文件列表:

[root@promote ~]# rpm -qpl nginx-1.10.2-1.el7.src.rpm

warning: nginx-1.10.2-1.el7.src.rpm: Header V3 RSA/SHA256 Signature, key ID 352c64e5: NOKEY

404.html

50x.html

README.dynamic

UPGRADE-NOTES-1.6-to-1.10

index.html

nginx-1.10.2.tar.gz

nginx-1.10.2.tar.gz.asc

nginx-auto-cc-gcc.patch

nginx-logo.png

nginx-upgrade

nginx-upgrade.8

nginx.conf

nginx.logrotate

nginx.service

nginx.spec            //rpm依賴.spec文件生成rpm包;

poweredby.png


3、安裝nginx-1.10.2-1.el7.src.rpm包:


[root@promote ~]# useradd mockbuild        //安裝文件需要mockbuild用戶和mockbuild組;

[root@promote ~]# rpm -ivh nginx-1.10.2-1.el7.src.rpm

warning: nginx-1.10.2-1.el7.src.rpm: Header V3 RSA/SHA256 Signature, key ID 352c64e5: NOKEY

Updating / installing...

   1:nginx-1:1.10.2-1.el7             ################################# [100%]

[root@promote ~]#


一般會安裝到當(dāng)前文件夾:

[root@promote ~]# ls

abc.txt            axel-2.4.tar.gz      nginx-1.10.2-1.el7.src.rpm

anaconda-ks.cfg    first.sh             rpmbuild

apr-1.5.2          httpd-2.4.25         wps-office_10.1.0.5672~a21_x86_64.tar.xz

apr-1.5.2.tar.bz2  httpd-2.4.25.tar.gz  zziplib-utils-0.13.62-5.el7.x86_64.rpm

axel-2.4           ion

[root@promote ~]# cd rpmbuild/

[root@promote rpmbuild]# ls

SOURCES  SPECS         //SOURCES下是源程序、補丁、腳本等文件;SPECS下的.sepc制作rpm包;

[root@promote rpmbuild]#


4、制作rpm包,

[root@promote SPECS]# rpmbuild -ba nginx.spec

[root@promote SPECS]# cd ..

[root@promote rpmbuild]# ls

BUILD  BUILDROOT  RPMS  SOURCES  SPECS  SRPMS

[root@promote rpmbuild]#

[root@promote rpmbuild]# ls RPMS/

noarch  x86_64

[root@promote rpmbuild]# cd RPMS/            此目錄下是制作號的rpm包;可以直接安裝

[root@promote RPMS]# cd x86_64/

[root@promote x86_64]# ls            //查看制作好的rpm包;

nginx-1.10.2-1.el7.centos.x86_64.rpm

nginx-debuginfo-1.10.2-1.el7.centos.x86_64.rpm

nginx-mod-http-geoip-1.10.2-1.el7.centos.x86_64.rpm

nginx-mod-http-p_w_picpath-filter-1.10.2-1.el7.centos.x86_64.rpm

nginx-mod-http-perl-1.10.2-1.el7.centos.x86_64.rpm

nginx-mod-http-xslt-filter-1.10.2-1.el7.centos.x86_64.rpm

nginx-mod-mail-1.10.2-1.el7.centos.x86_64.rpm

nginx-mod-stream-1.10.2-1.el7.centos.x86_64.rpm

[root@promote x86_64]#


[root@promote x86_64]# cd ..

[root@promote RPMS]# ls

noarch  x86_64

[root@promote RPMS]# cd ..

[root@promote rpmbuild]# ls

BUILD  BUILDROOT  RPMS  SOURCES  SPECS  SRPMS

[root@promote rpmbuild]# ls SRPMS/            //此目錄下是源碼格式rpm包;

nginx-1.10.2-1.el7.centos.src.rpm

[root@promote rpmbuild]#


5、安裝rpm包;

[root@promote x86_64]# rpm -ivh nginx-1.10.2-1.el7.centos.x86_64.rpm


向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI