yum管理及源碼安裝
一、配置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 won‘t see if the metadata # is newer on the remote and so you‘ll "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 don‘t keep old packages around. If you don‘t like this checking # interupting your command line usage, it‘s 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 ~ 99 的 99 個數表示,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管理及源碼安裝