Yellow Dog! COMMAND && source

linux程序包管理之yum

       yum:之前命名為:yellow dog ,后來因為及其好用,很多發行版都以此為默認rpm程序前端管理工具,故此更名為:yellowdog update modifier,更牛的還有一個基于redhat的二次發行版也叫yellow dog

功能:

yum解決程序包依賴性前端管理工具:

Centos:yum,dnf

suse:zyyer(rpm)

yum repository:yum repo (yum倉庫)

存儲了眾多rpm包,以及包的相關元數據文件(放置于特定目錄下:repodate):

 

repodate:目錄所在的位置就應該是倉庫應該指向的路徑,而這個路徑指向的叫做文件服務器,其中有ftp、http、file、nfs等

yum客戶端:

配置文件:

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

 //為所有倉庫提供公共配置(如:在安裝程序包時是否要精確的平臺匹配(exactarch=1)、 裝某一個包時是否要檢查其合法性及其完整性(gpgcheck=1,1表示開啟)是否支持插件機制(plugins=1)等等………),此文件很少動用。

各倉庫的定義地址:/etc/yum.repos.d/*.repo 

    //此遵循linux把大配置文件分割為小文件進行管理風格,每個文件中以.repo結尾的可以配置一個至多個倉庫,用此方法便于管理

倉庫的定義:

        [repository]倉庫名

name:描述

baseurl:yum倉庫地址(其中可同時指定多個)

enabled:{1|0}:默認開啟(1為開啟)

gpgcheck:對于此倉庫的所有程序包在安裝之前是否要檢查其來源合法性及其完整性

repo_gpgcheck:是否要檢查倉庫元數據文件的簽名信息。

gpgkey:指明一個url,系其秘鑰文件地址

mirrorlist:以鏡像方式指定baseurl地地址

enablegroups={1|0}:是否支持在此倉庫中使用組來批量管理程序包。

failovermethod {roundrobin(輪尋)|priority(優先級)}:baseurl指向多個時,默認為roundrobin(意為隨機挑選),而priority則是至上而下的故障轉移方法 

cost:默認為1000,如果決定把某一個倉庫cost值變小,則此倉庫則會優先應用。

yum命令的用法:

yum [options] [command] [package …]

子命令:

        * install package1 [package2] […]

安裝指定程序包

        * reinstall package1 [package2] […]

            重啟安裝==rpm -ivh –replacepkgs  P-file


        * update [package1] [package2] […]

升級的指定程序包:

        * downgrade package1 [package2] […]

降級指定的程序包

        * check-update

檢查有哪些升級包可用

        * remove | erase package1 [package2] […]

卸載指定程序包(依賴于此刪除的程序包的所有包都會被卸載)

        * info […]

用于列出可用的包的描述和匯總信息

#yum info gcc

        * provides | whatprovides feature1 [feature2] […]

查看指定的特性(可以是某文件)是由那個程序包提供

相當于rpm -qf

#yum provides  /bin/cat  /bin/ls

        * clean [ packages | metadata | expire-cache | rpmdb | plugins | all ] 

清理本地緩存:

        * makecache

生成、構建緩存

        * search string1 [string2] […]

根據指定的關鍵字搜索包含指定的關鍵的所有信息(模糊匹配,匹配的是程序包的包名和summary(摘要總結))


        * localinstall rpmfile1 [rpmfile2] […]

           (maintained for legacy reasons only – use install)

        * localupdate rpmfile1 [rpmfile2] […]

           (maintained for legacy reasons only – use update)

安裝及升級本地程序包(并非yum倉庫中的包)

//在網上download一個程序包,如果此包擁有依賴關系。則不能用rpm -ivh,則需使用yum 只帶的本地安裝命令。如遇發現需要解決依賴關系,yum會自動從倉庫中查找安裝。解決了依賴關系問題。 

注:可直接使用install,功能相同

        

        * deplist package1 [package2] […]

查看指定包所依賴的(capabilities)能力

顯示指定程序包的依賴關

 #yum deplist p-name

          *   history   [info|list|packages-list|packages-info|summary|ad don -info|redo|undo|roll-back|new|sync|stats]

查看yum事務歷史

查看過去的事物中發生的什么事,查詢不觸發事物,只有安裝,升級、卸載等修改類的動作才會觸發事物

#yum history

                summary:只顯示摘要

#yum history summary

 list :默認動作

 stats:顯示統計數據

顯示倉庫列表總量:(默認顯示啟用的)

repolist [all|enabled|disabled]  

顯示所有:all,

啟用 :enabled,

未啟用:disabled

顯示程序包:

    yum list available| updates |installed | [glob_exp1] […]

#yum list | less      

#ConsoleKit.x86_64   0.4.1-6.el6      @anaconda-CentOS-201605220104.x86_64/6.8

顯示程序包后面為@anaconda時,表示已經安裝過,并且是操作系統安裝時直接裝上的。

yum list [all | glob_exp1] [glob_exp2] […]

   all :顯示所有的

#yum list all

  glob_exp1:顯示glob匹配到的程序包

#yum list php*

     yum list available| updates |installed | [glob_exp1] […]

available:顯示倉庫中有但并為安裝的

updates:可用的升級包

installed:已安裝的包

都可用glob模糊匹配指定程序包

包組管理相關命令

       * grouplist [hidden] [groupwildcard] […]

顯示包組

        * groupinstall group1 [group2] […]

安裝包組(只能安裝顯示出來可用的組

         #yum groupinstall “development-toos”

        * groupupdate group1 [group2] […]

升級包組

        * groupremove group1 [group2] […]

移除指定包組

        * groupinfo group1 […]  

包組信息

# yum groupinfo "development-toos"

其中:Mandatory表示必須安裝的包

default:默認要安裝的包

options:可選的

yum的命令行選項:

用在命令行中執行安裝卸載程序包時的選項

    --nogpgcheck:禁止做包校驗
    --enablerepo=(repoid) :臨時禁用指定的某repo
    --disablerepo=repoidglob   :臨時啟用指定的repo
    -y:自動回答為yes
    -q:靜默模式
    -noplugins:禁用所有插件

yum的repo配置文件中可用的變量:

為什么會用到變量:

判斷獲取當前系統發行版本號

判斷平臺架構

$releasever:當前os的發行版的主版本號

$arch  :平臺

$basearch:基礎平臺(只要是32位的通通認為是i3863 )

$YUM0-$YUM9  :如果需要,自己定義

定義:http://mirrors.magedu.com/centos/$releasever/$basharch/os


創建yum倉庫

    如果多個倉庫中同時擁有一個程序包,會優先應用cost值低的倉庫

createrepo [options] <directory>

options:可省略

移動到rpm所在的文件目錄

[centos@root /yum/repo]#createrepo  ./     

 //會嘗試讀取每一個rpm包的元數據,把原數據讀出來之后,分析創建一個repo。

創建之后保存名字為repodate,可進入查看

之后添加到/etc/yum.repos.d/*.repo文件內。即可使用

用repolist列出已經配置的所有可用倉庫

程序包編譯安裝

     編譯是真正將代碼編譯成為cpu可以執行的指令的過程,能夠編譯成為自己需要版本的過程。

1.找不到合適的rpm包

2.雖然有合適的,不滿足我們的需要的功能

    testapp-VERSION-release.src.rpm 

    //使用rpmbuild命令制作成二進制格式的rpm包,而后再安裝。

   

     src=source :未經過編譯的源碼包,能夠編譯成為當前硬件架構適用的程序

 源代碼組織格式:

    源代碼–預處理–編譯(gcc)–匯編器–鏈接–執行

多文件:文件中的代碼之間。很可能存在跨文件依賴關系:

項目打包構建管理工具:

c、c++:make(會完成以上源代碼的所有過程)

(configure –》Makefile.in (模板)–》makefile)

java:maven

C代碼編譯安裝三步驟

(1)./configure

1) 通過選項傳遞參數,指定啟用特性、安裝路徑等;執行時會參考用戶的指定以及Makefile.in文件生成makefile

2)檢查依賴到的外部環境;

 (2)make

根據makefile文件,構建應用程序

(3)make  install

(使用install命令)

開發工具:

     對于 不同的程序都是不同的

    autoconf:生成configure腳本

//autofile需要結合額外的配置文件去生成configure腳本。

    automake:生成Makefile.in 


 建議:安裝前查看(軟件里自帶的)INSTALL,README

開源程序源代碼的獲取

官方自建站點

apache.org(ASF)

mariadb.org

代碼托管:

SourceForge

Github.com

code.google.com

c/c++:gcc (GUN C complier GUN的組織c編譯器)

融合了很多其他編譯器

編譯C源代碼:

前提:提供開發工具及開發環境

開發工具:make,gcc等

開發環境:開發庫,頭文件

glibc:GUN的C標準庫

 

通過“包組”提供開發組件

#yum grouplist 

Centos 6 :“Development Tools”,"Server Platfor Development"

第一步:configure腳本

選項:指定安裝位置,指定啟用的特性。

–help:獲取其支持的選項

[root@CentOs6 httpd-2.2.29]# ./configure –help

選項分類:

安裝路徑設定:

–prefix=/Path/to/somewhere:指定默認安裝位置

//如果其他很多文件安裝地址不指定自動在默認目錄下創建子目錄

–sysconfdir=/path/to/somewhere:配置文件安裝位置:

system type:

只有在交叉編譯時才會用到

可選特性:

disable feature:禁用某個特性

enable feature:啟用某個特性

optional Packages

可選程序包,依賴到的程序包

–with-PACKAGE[=ARG]

–without-PACHAGE

第二步:make

第三部:make insatll

第二第三部一般不需要用其他附加選項,直接執行就行。

步驟實現:

1、進入源碼包目錄:設置configure屬性

     #./configure –prefix=/usr/local/apache2 –sysconfigdir=/etc/http2

2、屬性執行完成之后使用make命令執行編譯

     # make


3、編譯完成之后執行安裝命令安裝即完成

    # make install




安裝后的配置:

(1)如果不在命令搜索路徑下,則需導出二進制程序目錄至PATH環境變量中:

編輯文件/etc/profile.d/NAME.sh

export PATH=/PATH/TO/BIN:$PATH

(2)導出庫文件路徑

編輯文件/etc/ld.so.conf.d/NAME.conf

添加新的庫文件所在目錄至此文件中;

讓系統重新生成緩存

ldconfig -v

(3)導出頭文件

基于鏈接的方式實現

ln -sv 

導出所有每一個文件為一個鏈接

(4)導出幫助手冊

編輯/etc/man.config文件

添加MANPATH=/usr/local/apchach2/man    //此為http服務源碼安裝時指定的文件地址



原創文章,作者:Lii,如若轉載,請注明出處:http://www.www58058.com/38187

(0)
LiiLii
上一篇 2016-08-21 20:46
下一篇 2016-08-21 20:46

相關推薦

  • linux基礎之bash特性知識點

    1、 Linux上的文件管理類命令都有哪些,其常用的使用方法及其相關示例演示。     Linux 一切皆文件。個人理解 在linux下的命令操作都算是對文件操作     那么文件管理命令類命令可以分為下面幾類     目錄操作: &nbs…

    Linux干貨 2016-09-24
  • 如何在CentOS 6上安裝配置Samba

    Samba主要用于windows與Linux之間的文件共享,使用SMB/CIFS協議。CentOS 6默認安裝不包括samba軟件包,所以需要我們手動進行安裝。 Step 1 >> 安裝samba [root@localhost ~]# yum install samba -y Step 2 >> 創建一個共享用戶名和密碼 [root…

    Linux干貨 2016-03-22
  • 使用keepalive實現nginx反向代理高可用

    簡介: 在網站架構中,為了分散客戶端對服務器的訪問壓力,可以使用nginx作為反向代理。但是使用一個nginx作為代理服務器必定會面對單點故障的情況,所以一般使用多臺nginx反代服務器,而使用多臺nginx服務器還要面對如何協調調度的問題。在此,我給大家介紹使用keepalive協調調度nginx反代服務器的方法。   keepalive簡介 說…

    2017-05-15
  • 初學linux遇到的問題

    1 su uername 顯示的是基本格式,不是類似于[root@Centos7 ~]#,看著不知道進入到哪個目錄。解決辦法:在家目錄下使用ls -a命令顯示隱藏文件,使用nano .bash_profile命令,在那里編輯PS1=”[\u@\h \W]\\$”保存退出就好了。 疑問:為什么不在/etc/bashrc下更改呢?自答:改…

    Linux干貨 2017-07-15
  • 運維自動化之系統安裝

    自動化安裝系統,cobbler的安裝使用

    Linux干貨 2018-01-15
  • Linux腳本基礎練習

    馬哥教育網絡班+ 第7周課堂練習 Linux腳本基礎練習 練習: 1、創建一個10G分區,并格式為ext4文件系統; (1)要求其block大小為2048,預留空間百分比為2,卷標為MYDATA,默認掛載屬性包含acl (2)掛載至/data/mydata目錄 要求掛載時禁止程序自動運行,且不更新文件的訪問時間戳 第一步,在虛擬機中掛載一塊20G的新硬盤 &…

    Linux干貨 2016-11-09
欧美性久久久久