1. 程式人生 > >yum管理及源碼安裝

yum管理及源碼安裝

debug 顯示 led prim yandex upgrade bsp .net extra

一、配置YUM庫及更新操作


yum概述

    基於RPM包構建的軟件更新機制,自動解決軟件依賴關系

YUM倉庫格式



本地:file://
網絡:ftp://或http://

yum源裏面包含的內容

1、rpm包
2、元數據文件
mount /dev/cdrom /media
cd /media/Server
ls re*
在每個yum倉庫中,都有repodata目錄(存放的是倉庫數據)
#baseurl代表yum在互聯網上所查找的鏈接地址。這裏需要解釋一下
#$basearch代表了系統的構架格式如i386和repodata存放repomd.xml文件的文件夾位置。

Linux yum配置文件詳解

yum的配置一般有兩種方式: 一種是直接配置/etc目錄下的yum.conf文件, 另外一種是在/etc/yum.repos.d目錄下增加.repo文件。

yum的配置文件yum.conf詳解

$ cat /etc/yum.conf
[main]

cachedir=/var/cache/yum         #yum下載的RPM包的緩存目錄
keepcache=0                        #緩存是否保存,1保存,0不保存。
debuglevel=2                       #調試級別(0
-10),默認為2(具體調試級別的應用,我也不了解)。 logfile=/var/log/yum.log #yum的日誌文件所在的位置 exactarch=1 #在更新的時候,是否允許更新不同版本的RPM包,比如是否在i386上更新i686的RPM包。 obsoletes=1 #這是一個update的參數,具體請參閱yum(8),簡單的說就是相當於upgrade,允許更新陳舊的RPM包。 gpgcheck=1 #是否檢查GPG(GNU Private Guard),一種密鑰方式簽名。 plugins=1 #是否允許使用插件,默認是0不允許,但是我們一般會用yum-fastestmirror這個插件。 installonly_limit
=3 #允許保留多少個內核包。 exclude=selinux* #屏蔽不想更新的RPM包,可用通配符,多個RPM包之間使用空格分離。

配置YUM客戶端


1、yum的配置文件

-基本配置:/etc/yum.conf
-倉庫配置:/etc/yum.repos.d/*.repo
-日誌文件:/var/log/yum.log





2、yum緩存目錄
-

存放下載軟件包、倉庫記錄等數據
-/var/cache/yum/$basearch/$releasever

yum緩存:

/var/cache/yum:存放服務器的軟件信息

當執行yum install 軟件包 時,首先查看/var/lib/rpm數據庫下有沒有下載的軟件包,如果沒有則從/etc/yum.repos.d/下的.repo配置文件把軟件信息下載到本地,
並緩存在
/var/cache/yum,然後在/var/cache/yum裏面找到某一軟件的下載地址,然後把軟件安裝上。 1.先備份 2.wget http://mirrors.163.com/.help/CentOS6-Base-163.repo 3.yum makecache #生成緩存 4.yum install 軟件包 -y cat /etc/yum.conf 復制代碼 [main] cachedir=/var/cache/yum #yum下載的RPM包的緩存目錄 keepcache=0      #緩存是否保存,1保存,0不保存。 debuglevel=2     #調試級別(0-10),默認為2(具體調試級別的應用,我也不了解)。 logfile=/var/log/yum.log #yum的日誌文件所在的位置 exactarch=1     #在更新的時候,是否允許更新不同版本的RPM包,比如是否在i386上更新i686的RPM包。 obsoletes=1     #這是一個update的參數,具體請參閱yum(8),簡單的說就是相當於upgrade,允許更新陳舊的RPM包。 gpgcheck=1     #是否檢查GPG(GNU Private Guard),一種密鑰方式簽名。 plugins=1     #是否允許使用插件,默認是0不允許,但是我們一般會用yum-fastestmirror這個插件。 installonly_limit=3 #允許保留多少個內核包。 exclude=selinux*   #屏蔽不想更新的RPM包,可用通配符,多個RPM包之間使用空格分離。 # This is the default, if you make this bigger yum wont see if the metadata # is newer on the remote and so youll "gain" the bandwidth of not having to # download the new metadata and "pay" for it by yum not having correct # information. # It is esp. important, to have correct metadata, for distributions like # Fedora which dont keep old packages around. If you dont like this checking # interupting your command line usage, its much better to have something # manually check the metadata once an hour (yum-updatesd will do this). metadata_expire=90m      #設定保存時長 # PUT YOUR REPOS HERE or IN separate files named file.repo # in /etc/yum.repos.d keepcache=0修改成keepcacche=1 保存,退出。 以後安裝、更新的包,都會保存在/var/cache/yum/DT60SP3_Repository/packages目錄下面




3、.repo基本配置項

[源名稱]:自定義名稱,具有惟一性
name:本軟件源的描述字串
baseurl:指定YUM服務端的URL地址
enabled:是否啟用此頻道
gpgcheck:是否驗證待安裝的RPM包
gpgkey:用於RPM驗證的密鑰文件


[fedora] #方括號裏面的是軟件源的名稱,將被yum取得並識別

name=Fedora $releasever - $basearch #這裏也定義了軟件 倉庫的名稱,通常是為了方便閱讀配置文件,一般沒什麽作用,$releasever變量定義了發行版本,

通常是8,9,10等數字,$basearch變 量定義了系統的架構,可以是i386、x86_64、ppc等值,這兩個變量根據當前系統的版本架構不同而有不同的取值,
這可以方便yum升級的時候選擇 適合當前系統的軟件包,以下同……

failovermethod=priority #failovermethod 有兩個值可以選擇,priority是默認值,表示從列出的baseurl中順序選擇鏡像服務器地址,
roundrobin表示在列出的服務器中隨機選擇

exclude=compiz* *compiz* fusion-icon* #exclude這個選項是後來我自己加上去的,用來禁止這個軟件倉庫中的某些軟件包的安裝和更新,
可以使用通配符,並以空格分隔,可以視情況需要自行添加

#baseurl=http://download.fedoraproject.org/pub/fedora/linux/releases/$releasever/Everything/$basearch/os/
#上面的一行baseurl第一個字符是‘#‘表示該行已經被註釋,將不會被讀取,這一行的意思是指定一個baseurl(源的鏡像服務器地址)

#mirrorlist=http://mirrors.fedoraproject.org/mirrorlist?repo=fedora-$releasever&arch=$basearch
#上面的這一行是指定一個鏡像服務器的地址列表,通常是開啟的,本例中加了註釋符號禁用了,我們可以試試,
將$releasever和$basearch替換成自己對應的版本和架構,
例如10和i386,在<a href="http://www.it165.net/edu/ewl/" target="_blank" class="keylink">瀏覽器</a>中打開,
我們就能看到一長串鏡可用的鏡像服務器地址列表。

選擇自己訪問速度較快的鏡像服務器地址復制並粘貼到repo文件中,我們就能獲得較快的更新速度了,格式如下baseurl所示:
baseurl=
ftp://ftp.sfc.wide.ad.jp/pub/<a href="http://www.it165.net/os/oslin/" target="_blank" class="keylink">Linux</a>/Fedora/releases/10/Everything/i386/os
http://ftp.chg.ru/pub/<a href="http://www.it165.net/os/oslin/" target="_blank" class="keylink">Linux</a>/fedora/linux/releases/10/Everything/i386/os
http://ftp.yz.yamagata-u.ac.jp/pub/linux/fedora/linux/releases/10/Everything/i386/os
http://mirror.nus.edu.sg/fedora/releases/10/Everything/i386/os
http://mirror.yandex.ru/fedora/linux/releases/10/Everything/i386/os
http://ftp.twaren.net/Linux/Fedora/linux/releases/10/Everything/i386/os
http://ftp.itu.edu.tr/Mirror/Fedora/linux/releases/10/Everything/i386/os


enabled=1 #這個選項表示這個repo中定義的源是啟用的,0為禁用21.
gpgcheck=1 #這個選項表示這個repo中下載的rpm將進行gpg的校驗,已確定rpm包的來源是有效和安全的
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-fedora-$basearch #定義用於校驗的gpg密鑰,就是數位簽章的公鑰檔所在位置!23.








4、創建server.repo配置,添加本地倉庫

vim /etc/yum.repos.d/server.repo
baseurl=file:///media/RHEL_5.9%20x86_64%20DVD/Server    //空格用%20代替



yum倉庫中的元數據文件:

1、primary.xml.gz
a、所有RPM包的列表;
b、依賴關系;
c、每個RPM安裝生成的文件列表;

2、filelists.xml.gz
a、當前倉庫中所有RPM包的所有文件列表;
3、other.xml.gz
a、額外信息,RPM包的修改日誌;

4、repomd.xml
a、記錄的是上面三個文件的時間戳和校驗和;

5、comps*.xml: RPM包分組信息

註意:

1、紅帽6把yum倉庫的所有rpm放到一個目錄下,但是把repodata放到另外一個目錄下,所以repodata並不在掛載的目錄下;
2、使用yum倉庫時,一定要指向repodata所在的目錄
3、紅帽5的rpm包和repodata都放到同一個目錄;而紅帽6的rpm包和repodata不在同一個目錄下

yum客戶端操作



格式:yum [-y] 指令 [軟件名]
       list    查看軟件包列表及安裝狀態
       search    查看軟件包名稱或者描述重要關鍵字
       info    查看軟件包的說明信息,類似於rpm -qi
       install    安裝指定軟件包,類似於rpm -i
       update    升級指定軟件包,類似於rpm -F
       remove    卸載指定軟件包,類似於rpm -e
       provides    查看文件由那個包產生,類似於rpm -qf
       --nogpgcheck    不驗證gpg簽名
    yum clean all
    yum -y localinstall 本地安裝 [-y=yes]

本地無gpg公鑰簽名的安裝
yum -y localinstall [安裝包] --nogpgcheck

list: 列表
支持glob
all
available:可用的,倉庫中有但尚未安裝的
installed: 已經安裝的
updates: 可用的升級

repolist: 顯示repo列表及其簡要信息
all
enabled: 默認
disabled

軟件組基本操作

yum
      grouplist        查看軟件組列表
      groupinfo        查看軟件組說明信息
      groupinstall    安裝指定軟件組
      groupupdate    升級軟件組
      groupremove    卸載軟件組

清空本地yum緩存


1、適用於yum緩存存在錯誤時

-再次查詢或更新時,會自動重建緩存
yum clean all   //清空所有緩存
yum list          //再次查詢時更新
clean: 清理緩存
[ packages | headers | metadata | dbcache | all ]

搭建自定義yum源



1.先安裝createrepo軟件包
yum -y install createrepo
2.將搜集的*.rpm包文件集中到自定義的文件夾,例如:
mkdir /mydata
cp *.rpm /mydata
3.使用createrepo生成倉庫定義數據
createrepo /mydata
4.配置/etc/yum.repos.d目錄下的repo文件,註意把gpgcheck改為0,因為不是紅帽認證的。

例子:

YUM高級配置
1. 將rhel6.5 iso裏面的軟件全部拷貝到/data/rhel6
2. mkdir /data/rhel6/nsd1409,把相應的rpm包拷貝進去
3. 安裝createrepo軟件包
4. createrepo /data/rhel6/nsd1409
5. 修改yum客戶端配置文件
[root@localhost ~]# cat /etc/yum.repos.d/rhel6.5.repo 
[rhel-6.5]
name=Red Hat Enterprise Linux Server 
baseurl=file:///data/rhel6/
enabled=1
gpgcheck=0
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-redhat-release
[rhel-nsd1409]
name=Red Hat Enterprise Linux Nsd1409
baseurl=file:///data/rhel6/nsd1409
enabled=1
gpgcheck=0
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-redhat-release
6. yum clean all
7. yum list linuxqq

YUM 源優先級插件


Linux 發行版比較多,同時還有很多個人或組織維護了某些特定用途的安裝/升級源。Yum Priorities 插件可以用來強制保護源。它通過給各個源設定不同的優先級,使得系統管理員可以將某些源(比如 Linux 發行版的官方源)設定為最高優先級,從而保證系統的穩定性(同時也可能無法更新到其它源上提供的軟件最新版本)。


在控制臺運行 Yum Priorities 安裝指令

 yum install yum-priorities


配置使用 Yum Priorities

1.使用熟悉的文本編輯器(如 vim)打開 Yum Priorities 配置文件 /etc/yum/pluginconf.d/priorities.conf

vim /etc/yum/pluginconf.d/priorities.conf


2.確保配置文件中包含下面的行

[main]
enabled=1

保存並關閉該文件

3.打開 CentOS base 源配置文件 /etc/yum.repos.d/CentOS-Base.repo
將下面的文本分別添加到 Base, Updates, Addons, 和 Extras 這幾個源記錄的後面*

priority=1


將下面的文本添加到 CentOSPlus 源記錄的後面*

priority=2

註意:

* 源記錄(repository entry)是由 [ 和 ] 括起來的源名稱。例如,Base 源記錄就標記為 [base] 。
** 優先級由 1 ~ 9999 個數表示,1 的優先級最高。優先級小的源即使有某軟件的較新版本,如果優先級高的源中沒有,
在啟用該插件的情況下,系統也無法安裝/升級到該較新版本。圖形界面的 YUM 工具一般默認就已經包含了優先級插件。 *** 要禁用 YUM 優先級功能,只需要在(1.A.) /etc/yum/pluginconf.d/priorities.conf 中將 enable=1 改為 enable=0 即可。不建議!




本地yum源優先級比官網base源高,因此在yum安裝包時,首先會在本地查找,沒有找到才會去官網查找

備註:
1、要使priority參數有效,必須安裝yum-plugin-priorities插件
2、N為整型數.默認優先級為99.數值越小優先級越高;


二、源碼包的編譯安裝


1. 準備開發環境gcc、g++、make
2. 源碼安裝基本過程

tar         一般解包到/usr/src
./configure    配置,使用--prefix=/usr/local/軟件名  指定安裝位置
make        編譯
make install    安裝

三 源碼包編譯安裝

深入研究編譯

語言進行編譯,一般進行如下步驟:

1) 先檢查程序代碼中的語法是否正確

2) 將程序代碼轉換為機器碼

3) 程序代碼中如果使用其它的鏈接庫的機器碼,則鏈接之

4) 產生操作系統相關信息

5) 存儲為可執行文件

鏈接

是把存儲在鏈接庫中的機器碼存儲到程序中,這樣開發人員就不需要重復編寫相同的程序代碼,加快程序的開發速度。

鏈接分為:靜態鏈接和動態鏈接

靜態鏈接:

靜態鏈接是包含給用戶調用函數的集合,通常這些函數被其它程序調用的方法是,在程序編譯時,把函數的執行代碼寫入到應用程序中。

使用ar工具生成,一般以.a作為庫的文件名。

特點:

l

產生執行文件的體積較大

執行時需要較多內存空間

可獨立使用

動態鏈接

編譯程序時不會把鏈接庫的機器碼復制到程序中,而是存儲執行文件執行時需要的哪個鏈接庫、鏈接庫版本等信息;當程序執行時,可根據文件中記載鏈接庫信息,加載所需的鏈接庫的機器碼。

.so”作為庫的文件名

特點:

體積較小

內存空間少

無法獨立使用

查詢執行文件的鏈接方法

[root@noc hello]# file /bin/ls

/bin/ls: ELF 32-bit LSB executable, Intel 80386, version 1 (SYSV), for GNU/Linux 2.6.9, dynamically linked (uses shared libs), for GNU/Linux 2.6.9, stripped

看到:

dynamically linked:動態鏈接

static linked:靜態鏈接

查詢連接到的鏈接庫

[root@noc hello]# ldd /usr/sbin/setup

        linux-gate.so.1 =>  (0x00323000)

        libnewt.so.0.52 => /usr/lib/libnewt.so.0.52 (0x001a4000)

        libc.so.6 => /lib/libc.so.6 (0x00686000)

        libslang.so.2 => /usr/lib/libslang.so.2 (0x001bf000)

        libm.so.6 => /lib/libm.so.6 (0x003a8000)

        /lib/ld-linux.so.2 (0x00178000)

        libdl.so.2 => /lib/libdl.so.2 (0x00d37000)

準備源代碼編譯環境


1、開源軟件多使用C/C++語言開發

需要gcc、make等編譯工具
#gcc --version
#g++ --version
#make --version
通過yum安裝“開發工具”、“開發庫”包組,可解決編譯環境




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

編譯安裝的三步驟:
前提:準備開發環境(編譯環境)
安裝"Development Tools""Development Libraries"
RHEL5:"Development Tools""Development Libraries"
RHEL6::"Development Tools""Compatibility Libraries "
# tar
# cd
# ./configure  
    --help :獲取腳本的使用格式
    --prefix=/path/to/somewhere
    --sysconfdir=/PATH/TO/CONFFILE_PATH
    configure的功能:1、讓用戶選定編譯特性;2、檢查編譯環境;
# make
# make install

# tar xf tengine-1.4.2.tar.gz
# cd tegnine-1.4.2
./configure -- help | less
# ./configure --prefix=/usr/local/tengine --conf-path=/etc/tengine/tengine.conf
# make
# make install
# /usr/local/tengine/sbin/nginx
加入出現要依賴PCRE庫的解決方法:
a、在configure的過程中加上--without-http-rewrite_module
b、yum install pcre-devel

安裝軟件包的時候,如果把它安裝在非默認路徑,要註意:
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: 顯示重新搜尋庫的過程

要使用一個程序調用其它庫時,都要使用include來包含這些

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
    

編譯安裝的基本過程




make: 項目管理工具,能夠把C程序的多個不同文件做成一個項目,並且把這個項目的編譯過程通過一個配置文件來啟動,這個配置文件叫makefile;
    makefile: 定義了make(gcc,g++)按何種次序去編譯這些源程序文件中的源程序

automake, --> makefile.in(半成品) --> makefile
autoconf, --> configure

makefile的生成
automake:讓程序的作者對自己的源程序做一個簡單的定義,然後生成一個makefile的半成品(makefile.in),makefile無法跟用戶交互;此時makefile.in還可以接受另外一個工具所生產的腳本(autoconf)做配置

autoconf:給項目生成一個腳本(configure)
configure:配置腳本如何定義






編譯安裝的基本過程

下載源碼包後的安裝步驟:
1、tar解包,釋放源代碼至指定目錄
2、./configure配置,指定安裝目錄/功能模塊等選項
3、make編譯,生成可執行的二進制程序文件
4、make install安裝,將編譯好的文件復制到安裝目錄


解包

-使用tar解包,建議釋放到/usr/src目錄
-解包後位置:/usr/src軟件名-版本號/

配置


-

使用源碼目錄下的configure腳本
執行“./configure --help”可以查看幫助
./configure --prefix=/usr/local/apache2【 --prefix安裝指定路徑命令】 【查看軟件包裏多一個Makefile文件就說明執行成功】


編譯

執行make命令,如果編譯出錯,需要執行make clean再執行make

安裝

執行 make install命令

參考:http://cnzhx.net/blog/yum-priorities/

http://www.it165.net/os/html/201409/9273.html




yum管理及源碼安裝