CentOs之yum詳解及程序的編譯安裝

CentOs之yum詳解

yum的地位:yum是rpm的前端管理工具,而且依於rpm。


 yum倉庫yum repository,倉庫裏了衆多rpm包,以及包的相關的元數據文件.yum倉庫裏會有個repodata目錄存在.


yum支持的文件服器類型

ftp://  http:// file:///(本地服器,例光)   /nfs://

 

查看yum的信息

[[email protected]]# rpm -q yum ------查看yum命令的安裝包是哪個

yum-3.4.3-125.el7.centos.noarch

[[email protected]]# rpm -qc yum  ------查看yum命令的配置文件

/etc/logrotate.d/yum

/etc/yum.conf

/etc/yum/version-groups.conf


yum配置文件

/etc/yum.conf:此文件所有倉庫提供公共配置

/etc/yum.repos.d/*.repo:爲倉庫的指向提供配置。配置一個或多個倉庫指向,如果多個倉庫都有需要的那個程序包包,就選擇最近的倉庫,或者選擇成本低的倉庫

 

用man 5 yum.conf可以yum.conf文件的取幫助。

yum.conf文件的內容及格式

[[email protected]]# cat /etc/yum.conf  
[main]----------指公共區
cachedir=/var/cache/yum/$basearch/$releasever
keepcache=0
debuglevel=2
logfile=/var/log/yum.log
exactarch=1  爲1表示精確匹配,如果要的是centos7的包,centos6.7的就默認不匹配
obsoletes=1
gpgcheck=1    爲1表示檢測來源合法性及內容完整性
plugins=1
installonly_limit=5
………………………………………此處省略……字
# PUT YOUR REPOSHERE OR IN separate files named file.repo
# in /etc/yum.repos.d


 

倉庫的指向的定

[repositoryID] 倉庫ID

name=Some namefor this repository等號右是自己定的文件名

baseurl=url://path/to/repository/   等號右是要下的程序包的url

enabled={1|0}是否啓用倉庫,1表示啓用,默認爲1

gpgcheck={1|0}安裝前是否檢查來源合法性及完整性,1表示是

gpgkey=URL指明祕文件的路徑

enablegroups={1|0}是否支持在此倉庫上使用來批量管理包,1,表示是

failovermethod={roundrobin|priority};默認爲:roundrobin,意隨機挑

cost=1000,表示開,默認爲1000

 

創建yum倉庫

自行看/etc/yum.repos.d/CentOs-Base.repo個文件,然後我仿照個yum源倉庫文件的格式寫一個我自己的倉庫文件。注意:有repodata所在的路徑才能是yum源指定的路徑。

建之前先把原倉庫重命名一下。mv CentOS-Base.repo CentOS-Base.repo.bak

下面我來自己建本地yum源倉庫文件centos-local.repo,內容如下:

[base]

name=Base Repo172.16.0.1    ----------自己定的名字

baseurl=http://172.16.0.1/cobbler/ks_mirror/CentOS-7-x86_64-1503/  ----下程序包的路徑

gpgcheck=0---------------不檢查來源合法性及內容完整性

[epel]

name=Fedora EPELfor EL6 x86 64

baseurl=http://172.16.0.1/fedora-epel/7/x86_64/

gpgcheck=0

是兩個不同的倉庫,雖然寫在同一個文件。如果是相同的倉庫,裏面的文件是像,就可以把多個url寫在同一個“baseurl”下面。

 

 

yum命令的用法詳細信息manyum

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

 

倉庫列表:默認顯示已啓用的,即enabled

repolist[all|enabled|disabled]

[[email protected]]# yum repolist enabled   示可用的倉庫列表

[[email protected]]# yum repolist all         示可用的和不可用的倉庫列表

[[email protected]]# yum repolist disabled     示不可用的倉庫列表

示程序包

yum list [all |glob_exp1] [glob_exp2] [...]基於文件名通配找:


[root@yph7 yum.repos.d]# yum list | wc –l
15651                                -----------------一共有15651個程序包
[root@yph7 yum.repos.d]# yum list php* | wc –l
657                                  -------------------一共657個php開頭的程序包


yum list{available|installed|updates} [glob_exp1] [...]


[root@yph7 yum.repos.d]# yum list available示可以用的包

[root@yph7 yum.repos.d]# yum list installed示已安裝的包

[root@yph7 yum.repos.d]# yum list updates示可更新的包

[root@yph7 yum.repos.d]# yum list updates xorg* | wc–l

13             -------------------------一共有13個可更新的並且以xorg開的程序包

安裝程序包

install package1[package2] [...]

[root@yph7 ~]# yum install phpwapmail.noarch

[root@yph7 ~]# yum install gcc-4.5.4  如果不想安裝最新程序包,可以這樣指明要安裝程序包的版本

 

reinstall package1 [package2] [...]  重新安裝程序包

[root@yph7~]# yum reinstall zsh   在安裝zsh之後,要重新安裝一次


程序包

update [package1][package2] [...]

[root@yph7 ~]#yum update xorg-x11-drv-fbdev

……………………………………………………….

更新完:

  xorg-x11-drv-fbdev.x86_64 0:0.4.3-16.el6                                                                         

 

downgrade package1 [package2] [...]降級安裝

 

檢查可用升

check-update

[root@yph7 ~]#yum check-update | wc –l

71             ------------------有71個可用升

程序包

remove package1 [package2] [...]


[root@yph7 ~]#yum remove zsh ------會默認把依賴cpp的gcc也卸載掉
…………………………………………………..
刪除:
  zsh.x86_64 0:4.3.11-4.el6.centos                                                                                 
完畢!


看程序包information:

info [...]

[root@yph7 ~]#yum info zsh
名稱    :zsh
架構    :x86_64
版本    :4.3.11
發佈    :4.el6.centos
大小    :2.2 M
源    :base
簡介    :A powerful interactive shell
網址    :http://zsh.sunsite.dk/
協議    : BSD


看指定的特性或者文件是由哪個程序包所提供:類似 rpm -qf

provides |whatprovides feature1 [feature2] [...]


[root@yph7~]# yum provides zsh

[root@yph7~]# yum provides /etc/zshrc
Loadingmirror speeds from cached hostfile
zsh-4.3.11-4.el6.centos.x86_64: A powerful interactive shell
源    :base
匹配來源:
文件名    :/etc/zshrc
zsh-4.3.11-4.el6.centos.x86_64: A powerful interactive shell



清理本地

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

(對應於上面的單詞分別是)包,元數據,存,rpmdb ,插件,所有緩存


[root@yph7 ~]#yum clean expire-cache
正在清理軟件源: base epel extra
3 metadata 文件已移除


[root@yph7 ~]#yum clean metadata
正在清理軟件源: base epel extra
9 metadata 文件已移除
6 sqlite 文件已移除
0 metadata 文件已移除


[root@yph7 ~]#yum clean packages
正在清理軟件源: base epel extra
0 package 文件已移除


 

構建makecache

 

[root@yph7 ~]#yum makecache
………………………………………………….
(13/13):extra/7/x86_64/other_db                                      | 417kB  00:00:00     
Loading mirrorspeeds from cached hostfile
元數據緩存已建立


 

搜索:以指定的關字或字符串搜索程序包名及概要信息;

search string1[string2] [...]

 [root@yph7 ~]# yum search bash   -------由於結果比較多,只截取一部分內容
bash-argsparse.noarch: An high level argument parsing library for bash
bash-completion.noarch: Programmable completion for Bash
bash-doc.x86_64 :Documentation files for bash
python-argcomplete.noarch: Bash tab completion for argparse -------這個包名沒有“bash”,但概要信息裏有。


 

看指定包所依的capabilities

deplist package1[package2] [...]

[root@yph7 ~]#yum deplist zsh   -----------  查看zsh與其他包的依賴關係
軟件包:zsh.x86_64 4.3.11-4.el6.centos
   依賴:/bin/sh
   provider: bash.x86_64 4.1.2-33.el6
   依賴:/sbin/install-info
   provider: info.x86_64 4.13a-8.el6
   依賴:coreutils
   provider: coreutils.x86_64 8.4-37.el6
……………………………………………………….


看yum事務歷:在什麼候,有誰執哪些yum的安裝或卸等操作

history 

[info|list |summary| stats|packages-list|packages-info|addon-info|redo|undo|rollback|new|sync]


[root@yph7 ~]#yum history
ID     | 登錄用戶                 | 日期和時間       | 操作           | 變更數
-------------------------------------------------------------------------------
1 | 系統<空>                |2015-12-08 19:14 | Install        | 1137
[root@yph7 ~]#yum remove zsh
[root@yph7 ~]#yum history
ID     | 登錄用戶                 | 日期和時間       | 操作           | 變更數
-------------------------------------------------------------------------------
2 | root<root>              | 2015-12-2405:53 | Erase          |    1 <
1 | 系統<空>                |2015-12-08 19:14 | Install        | 1137>


[root@yph6 yum.repos.d]# yum history summary
Loaded plugins: fastestmirror, refresh-packagekit, security
Login user                 | Time                | Action(s)        | Altered 
-------------------------------------------------------------------------------
root <root>                | Last day            | Install          |        4
root <root>                | Last week           | Install          |       41
System <unset>             | Last 3 months       | Install          |      997
history summary


 

安裝及升本地程序包

安裝本地包,如果有依關係的包在網站上,yum會自安裝依包,rpm無此功能


 localinstall  rpmfile1 [rpmfile2] [...]      localinstall只是了兼容,建用install

  

[root@yph7 ~]#yum install booth-0.2.0-31.1.x86_64.rpm -----從下面可以看到會自動安裝依賴的包
---> 軟件包 booth.x86_64.0.0.2.0-31.1 將被 安裝
--> 正在處理依賴關係 cluster-glue-libs >= 1.0.6,它被軟件包 booth-0.2.0-31.1.x86_64 需要
---> 軟件包 clusterlib.x86_64.0.3.0.12.1-73.el6 將被 安裝
---> 軟件包corosync.x86_64.0.1.4.7-2.el6 將被 安裝


 

localupdate  rpmfile1 [rpmfile2] [...];同理,建議用update,而不是localupdate


[root@yph7 ~]#yum update zsh-5.0.2-7.el7_1.2.x86_64.rpm -------可以看到也是可以自動解決依賴關係的
正在檢查zsh-5.0.2-7.el7_1.2.x86_64.rpm: zsh-5.0.2-7.el7_1.2.x86_64
zsh-5.0.2-7.el7_1.2.x86_64.rpm將作爲zsh-5.0.2-7.el7_1.1.x86_64 的更新
正在解決依賴關係
--> 正在檢查事務
---> 軟件包 zsh.x86_64.0.5.0.2-7.el7_1.1 將被 升級
---> 軟件包 zsh.x86_64.0.5.0.2-7.el7_1.2 將被 更新
--> 解決依賴關係完成


 

管理的相關命令

grouplist  [hidden] [groupwildcard] [...]

 [root@yph7 ~]#yum grouplist | wc –l

96        ----------------------------一共96個包


groupinstall  group1 [group2] [...] ---安裝包內的包,而且自安裝依


[root@yph6 ~]#yum groupinstall "Server Platform" 
(15/18):openssl-1.0.1e-42.el6_7.1.x86_64.rpm                               | 1.5 MB     00:05    
(16/18):pam-1.1.1-20.el6_7.1.x86_64.rpm                                   | 658kB     00:01     
(17/18):redhat-lsb-4.0-7.el6.centos.x86_64.rpm                             |  11 kB    00:00     
(18/18):redhat-lsb-compat-4.0-7.el6.centos.x86_64.rpm                      |  10 kB    00:00


groupupdate  group1 [group2] [...]   升級包組內包

[root@yph7 ~]#yum groupupdate "Server Platform"

 

groupremove   group1 [group2] [...]   卸載包組內的包

[root@yph7 ~]#yum groupremove "XWindow System " ------------卸載圖形界面包


groupinfo   group1 [...]    查看包組的信息

[root@yph7 ~]#yum groupinfo "X Window System" 可以列出包內的所有包,包含下列三大類。

MandatoryPackages:必安裝的包  

Default Packages:默安裝的包  

OptionalPackages:可選擇安裝的包

 

 

 

yum的命令行選項

--nogpgcheck:安裝禁止行gpgcheck,即便倉庫中定義爲檢測

-y: 安裝程的交互自回答“yes”。

-q:靜默模式;

--disablerepo=repoidglob臨時禁用此指定的repo;

--enablerepo=repoidglob臨時啓用此指定的repo;

--noplugins:禁用所有插件;

 

repo配置文件中可用的

$releasever: 當前OS的行版的主版本號;比如centos7中的"7"

$basearch:基平臺;無i386,i486,是i586都理解i386

$arch: 平臺

$YUM0-$YUM9:

 

例如:http://mirrors.magedu.com/centos/$releasever/$basearch/os

 


用光盤做本地倉庫:


[root@yph6 media]# mkdir /media/cdrom

[root@yph6 media]# mount -r -t iso9660 /dev/cdrom  /media/cdrom

---"-r"爲只讀,"-t"指明類型,如iso9660;


或者用下面的方法掛載光盤:

[root@yph6 media]# mount -o loop /dev/cdrom /media/cdrom


新建或者添加yum倉庫指向:

[cdrom]

name=cdrom

baseurl=file:///media/cdrom

gpgcheck=0


通過光盤做的倉庫安裝zsh

[root@yph6 yum.repos.d]# yum install zsh
................................................
Dependencies Resolved
====================================================================================================================
 Package                 Arch                     Version                           Repository                 Size
====================================================================================================================
Installing:
 zsh                     i686                     4.3.11-4.el6                      cdrom                     2.2 M
Transaction Summary
====================================================================================================================
Install       1 Package(s)
..................................................................
Installed:
  zsh.i686 0:4.3.11-4.el6                                                                                           

Complete!



建本地yum倉庫: 

 

[root@yph7 repo]# createrepo ./  -把當前目錄創建爲本地yum倉庫,會讀取包的元數據,並創建repodata目錄
Spawning worker 0 with 54 pkgs
Spawning worker 1 with 54 pkgs
Spawning worker 2 with 54 pkgs
Spawning worker 3 with 53 pkgs
Workers Finished
Saving Primary metadata
Saving file lists metadata
Saving other metadata
Generating sqlite DBs
Sqlite DBs complete


[root@yph7 repo]# ls repodata ---出現repodata目錄說明倉庫創建成功,看看repodata裏的文件

1dc98dfa72c7eeabd25aa5288acf222d46270bf25e4c4695fc929ecbb2bf7c1f-primary.sqlite.bz2
64e03fa19b70d01b9dc3618a3967993d9edc2107d1522f78684538f90424c5b6-other.xml.gz
78ca5492b1c3eedb45c50f6d97f63724f1fb2e2ff8d5dc05f1d2c024c786d513-primary.xml.gz
ae734d43ef5877bfb1d913c516f1bf0c62035bd9d15d3eaeebce92960ffcdd40-filelists.xml.gz
baf986873befe7ab4b59e3a01a3fbd6d8fb69c061ba36869e17b769e860302a4-filelists.sqlite.bz2
dfb93d132de8da0c3c622c8fe8d3ddcb18d5e0c7cd8e2a4501b3ab69ce4641d1-other.sqlite.bz2
repomd.xml

repodata目錄下有個repomd.xml文件,這裏存儲同目錄下其他文件的特徵碼,指紋信息



[root@yph7 yum.repos.d]# vim centos-xen.repo 新建倉庫指向
[xen4centos]
name=Xen 4 centos 6
baseurl=file:///yum/repo
gpgcheck=0

 或者在/etc/repos.d/centos-local.repo裏添加新的倉庫指向


[root@yph7 yum.repos.d]# yum repolist ------查看剛纔創建的倉庫是否可用
base                                                                                        | 3.6 kB  00:00:00     
Not using downloaded repomd.xmlbecause it is older than what we have:
 Current   : Wed Aug  5 05:49:56 2015
 Downloaded: Wed Apr  1 08:19:442015
epel                                                    | 4.3kB  00:00:00     
extra                                                   |3.4 kB  00:00:00     
xen4centos                                             |2.9 kB  00:00:00     
xen4centos/primary_db                                 | 134 kB  00:00:00    
Loading mirror speeds from cachedhostfile
源標識                                           源名稱                                                       狀態
base                                            Base Repo 172.16.0.1                                          6,575
epel                                             Fedora EPEL forEL6 x86 64                                   8,508
extra/7/x86_64                                   CentOS 7x86_64 extras                                          277
xen4centos                                       Xen 4 centos 6                                                 215
repolist: 15,575


 [root@yph7 yum.repos.d]# yum install xen ------利用本地倉庫安裝xen程序,本地倉庫創建完成


 

  

程序包編譯安裝


源代碼編譯安裝過程.

源代--> 預處理 --> 編譯(gcc)--> 彙編(需要彙編器) --> 接(需要接器) -->

make會自動調動預處理器做預處理,再調動編譯

 

 

C代碼編譯安裝三步驟:

第一步: ./configure

(1) 通過選項傳遞參數,指定啓用特性、安裝路徑等;行./configure會參考用的指定以及Makefile.in文件生成makefile;makefile是編譯安裝時的必須依賴的引導文件。

(2) 檢查到的外部境;


第二步:make

make不是編譯器,它是管理器,調編譯器完成編譯的,只是個目管理工具,依於mkafile個文件完成對程序的安裝等操作。


第三步:make install

實這是一些腳本,把二制放到指定的二制的安裝路徑下去,文件放到指定的文件路徑下去作用大致就這些。

 


工具:

autoconf: 能生成configure腳本

automake:能生成Makefile.in

 :安裝前看INSTALL,README

 

開源程序源代取:

1、官方自建站點:

apache.org (ASF)

mariadb.org

2、託管:

SourceForge

Github.com

code.google.com

 

 

 

 

 

程序包編譯安裝的過程:

httpd-2.2.29源包,解看裏面的文件

[[email protected]]# ls
ABOUT_APACHE  buildconf     emacs-style  INSTALL         LICENSE        os               srclib
acinclude.m4  CHANGES       httpd.dep    InstallBin.dsp  Makefile.in   README            support
Apache.dsw    config.layout  httpd.dsp   LAYOUT          Makefile.win   README.platforms  test
build         configure      httpd.mak    libhttpd.dep    modules        README-win32.txt  VERSIONING
BuildAll.dsp  configure.in  httpd.spec   libhttpd.dsp    NOTICE         ROADMAP
BuildBin.dsp  docs          include      libhttpd.mak    NWGNUmakefile  server


在INSTALL文件裏可以看到安裝提示信息如下

$ ./configure--prefix=PREFIX ---------第一步

$ make                    ----------------第二

$ make install              -------------------第三步

$PREFIX/bin/apachectl start ---------------第四步

 

然後可以看configure命令的選項

[[email protected]]# ./configure –help

安裝之前先安裝好需要用到的工具,即一個包

[[email protected]]# yum groupinstall "Server Platform Development"

另外gcc也是個必須編譯的工具,也要裝上。

[[email protected]]# yum install gcc


然後需要選擇安裝路徑,因沒有通rpm包安裝,所以不能通rpm管理器卸,所以我只能手除其配置文件,所以要指定並住安裝路徑。

[[email protected]]# ./configure --prefix=/usr/local/apache2 --sysconfdir=/etc/httpd2  ---第一步

[[email protected]]# make     --------------第二步

[[email protected]]# make install  -----------第三步

[[email protected]]# cd /usr/local/apache2

[root@yph6apache2]# ls

bin  build cgi-bin  error  htdocs icons  include  lib logs  man  manual modules

[root@yph6apache2]# ls bin
ab         apr-1-config  apxs     dbmmanage  envvars-std   htdbm    htpasswd  httxt2dbm   rotatelogs
apachectl  apu-1-config checkgid  envvars    htcacheclean htdigest  httpd     logresolve


[root@yph6apache2]# ./bin/apachectl start -----------第四步

 

安裝後的配置

(1) 出二製程序目至PATH量中;否只能用絕對路徑

新建建文件/etc/profile.d/apache2.sh,寫入下行代碼

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

 

(2) 文件路徑

新建文件/etc/ld.so.conf.d/apache2.conf

個路徑/usr/local/apache2/lib添加至文件中,即添加新的文件所在目至此新建文件中;

重新生成存:ldconfig -v,否則只能下次開機才生效

 

 (3) 文件

本來include目錄應該在/usr/include 中才對,但現在卻在當前目錄下,可以

可以連接整個目錄過去,也可以連接每一個文件過去,可以導出整個目錄爲一個符號鏈接,也可以導出所有文件爲一個符號鏈接

基於接的方式實現

[root@yph6apache2]# ln -sv include /usr/include/apache2

[root@yph6 apache2]# ln -sv /uar/local/apache2/include /usr/include/apache2

`/usr/include/apache2' -> `/uar/local/apache2/include'



(4) 出幫助手冊

編輯/etc/man.config文件

MANPATH /usr/man

MANPATH/usr/share/man

MANPATH/usr/local/man

MANPATH/usr/local/share/man

MANPATH/usr/X11R6/man   --------------------前面幾行是/etc/man.config本來就有內容

MANPATH/usr/local/apache2/man ----------在MANPATH的行下面添加一行man路徑

 

 

 

注意:安裝程的選項

安裝路徑的定:

--prefix=/PATH/TO/SOMEWHERE:指定默安裝位置;默認爲/usr/local/

--sysconfdir=/PATH/TO/SOMEWHERE:配置文件安裝位置;

 有需要的可以加上下面的選項

System types:

OptionalFeatures: 可特性

--disable-FEATURE

--enable-FEATURE[=ARG]

OptionalPackages: 可

--with-PACKAGE[=ARG]依關係

--without-PACKAGE不允

 

 附加:

CentOS 6提供開發組的兩個重要包組爲:

 "Development Tools", "ServerPlatform Development",


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