Linux- yum

yum 簡介

 yum,是Yellow dog Updater, Modified 的簡稱,是杜克大學爲了提高RPM 軟件包安裝性而開發的一種軟件包管理器。起初是由yellow dog 這一發行版的開發者Terra Soft 研發,用python 寫成,那時還叫做yup(yellow dog updater),後經杜克大學的Linux@Duke 開發團隊進行改進,遂有此名。yum 的宗旨是自動化地升級,安裝/移除rpm 包,收集rpm 包的相關信息,檢查依賴性並自動提示用戶解決。yum 的關鍵之處是要有可靠的repository,顧名思義,這是軟件的倉庫,它可以是http 或ftp 站點,也可以是本地軟件池,但必須包含rpm 的header,header 包括了rpm 包的各種信息,包括描述,功能,提供的文件,依賴性等。正是收集了這些header 並加以分析,才能自動化地完成餘下的任務。

  yum 的理念是使用一箇中心倉庫(repository)管理一部分甚至一個distribution 的應用程序相互關係,根據計算出來的軟件依賴關係進行相關的升級、安裝、刪除等等操作,減少了Linux 用戶一直頭痛的dependencies 的問題。這一點上,yum 和apt 相同。apt 原爲debian 的deb 類型軟件管理所使用,但是現在也能用到RedHat 門下的rpm 了。

  yum 主要功能是更方便的添加/刪除/更新RPM 包,自動解決包的倚賴性問題,便於管理大量系統的更新問題。

  yum 可以同時配置多個資源庫(Repository),簡潔的配置文件(/etc/yum.conf),自動解決增加或刪除rpm 包時遇到的依賴性問題,保持與RPM 數據庫的一致性。

yum 安裝

yum.repos.d的配置文件中,通常位於/etc 目錄下面
1、查看系統默認安裝的yum

 rpm -qa|grep yum

2、卸載yum

rpm -e yum包列表

3、重新安裝yum
這裏可以通過wget 從網上下載相關包安裝,也可以掛載系統安裝光盤進行安裝,這裏選擇掛載系統安裝光盤進行安裝。

mount /dev/cdrom /mnt/

rpm -ivh yum-3.2.22-33.el5.centos.noarch.rpm yum-fastestmirror-1.1.16-14.el5.centos.1.noarch.rpm yum-metadata-parser-1.1.2-3.el5.centos.i386.rpm

yum -v

yum 的基礎安裝包包括:

yum  //RPM installer/updater
yum-fastestmirror  //Yum plugin which chooses fastest repository from a mirrorlist
yum-metadata-parser  //A fast metadata parser for yum

其他安裝包根據自己需要安裝。


yum 源碼配置

yum 的配置文件分爲兩部分:main 和repository

main 部分定義了全局配置選項,整個yum 配置文件應該只有一個main。常位於/etc/yum.conf 中。
repository 部分定義了每個源/服務器的具體配置,可以有一到多個。常位於/etc/yum.repo.d 目錄下的各文件中。

yum.conf 文件一般位於/etc目錄下,一般其中只包含main部分的配置選項。

[main]
cachedir=/var/cache/yum
  //yum 緩存的目錄,yum 在此存儲下載的rpm 包和數據庫,默認設置爲/var/cache/yum
keepcache=0
  //安裝完成後是否保留軟件包,0爲不保留(默認爲0),1爲保留
debuglevel=2
  //Debug 信息輸出等級,範圍爲0-10,缺省爲2
logfile=/var/log/yum.log
  //yum 日誌文件位置。用戶可以到/var/log/yum.log 文件去查詢過去所做的更新。
pkgpolicy=newest
  //包的策略。一共有兩個選項,newest 和last,這個作用是如果你設置了多個repository,而同一軟件在不同的repository 中同時存在,yum 應該安裝哪一個,如果是newest,則yum 會安裝最新的那個版本。如果是last,則yum 會將服務器id 以字母表排序,並選擇最後的那個服務器上的軟件安裝。一般都是選newest。
distroverpkg=redhat-release
  //指定一個軟件包,yum 會根據這個包判斷你的發行版本,默認是redhat-release,也可以是安裝的任何針對自己發行版的rpm 包。
tolerant=1
  //有1和0兩個選項,表示yum 是否容忍命令行發生與軟件包有關的錯誤,比如你要安裝1,2,3三個包,而其中3此前已經安裝了,如果你設爲1,則yum 不會出現錯誤信息。默認是0。
exactarch=1
  //有1和0兩個選項,設置爲1,則yum 只會安裝和系統架構匹配的軟件包,例如,yum 不會將i686的軟件包安裝在適合i386的系統中。默認爲1。
retries=6
  //網絡連接發生錯誤後的重試次數,如果設爲0,則會無限重試。默認值爲6.
obsoletes=1
  //這是一個update 的參數,具體請參閱yum(8),簡單的說就是相當於upgrade,允許更新陳舊的RPM包。
plugins=1
  //是否啓用插件,默認1爲允許,0表示不允許。我們一般會用yum-fastestmirror這個插件。
bugtracker_url=http://bugs.centos.org/set_project.php?project_id=16&ref=http://bugs.centos.org/bug_report_page.php?category=yum

# Note: yum-RHN-plugin doesn't honor this.
metadata_expire=1h

installonly_limit = 5

# PUT YOUR REPOS HERE OR IN separate files named file.repo
# in /etc/yum.repos.d

除了上述之外,還有一些可以添加的選項,如:

  exclude=selinux*  // 排除某些軟件在升級名單之外,可以用通配符,列表中各個項目要用空格隔開,這個對於安裝了諸如美化包,中文補丁的朋友特別有用。
  gpgcheck=1  // 有1和0兩個選擇,分別代表是否是否進行gpg(GNU Private Guard) 校驗,以確定rpm 包的來源是有效和安全的。這個選項如果設置在[main]部分,則對每個repository 都有效。默認值爲0。

本地源和網絡源

在目錄/etc/yum.repos.d/ 會有兩個文件,CentOS-Base.repo 是yum 網絡源的配置文件 和 CentOS-Media.repo 是yum 本地源的配置文件。
在配置的時候可以重新建立這樣文件也可以修改其中的配置。

本地源

  1. 掛載光驅到指定目錄
umount /dev/cdrom
mount /dev/cdrom /mnt/

2.配置開機自動掛載

vim /etc/fstab

添加如下內容

/dev/sr0 /mnt iso9660 defaults 0 0

3.刪除原有文件

cd /etc/yum.repos.sd
rm -fr *

4.創建新文件

vim rhel7.repo

文件內容如下

[rhel7-source]
name=rhel-server
baseurl=file:///mnt
enabled=1
gpgcheck=0

5.清空yum緩存並驗證

yum clean all

yum list

網絡源配置

這裏以阿里yum 源爲例子
1.備份

mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.backup

2.下載新的CentOS-Base.repo 到/etc/yum.repos.d/ 以CentOS6 爲例

wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-6.repo 

3.yum makecache生成緩存

yum makecache
yum list

其他優化

1.SSH配置 關閉GSSAPIAuth和DNS反解析,提供ssh連接速度

sed -i 's/^GSSAPIAuthentication yes$/GSSAPIAuthentication no/' /etc/ssh/sshd_config
sed -i 's/#UseDNS yes/UseDNS no/' /etc/ssh/sshd_config
service sshd restart

2.系統內核參數優化

cat >> /etc/sysctl.conf << EOF
net.ipv4.tcp_fin_timeout = 1
net.ipv4.tcp_keepalive_time = 1200
net.ipv4.tcp_mem = 94500000 915000000 927000000
net.ipv4.tcp_tw_reuse = 1
net.ipv4.tcp_timestamps = 0
net.ipv4.tcp_synack_retries = 1
net.ipv4.tcp_syn_retries = 1
net.ipv4.tcp_tw_recycle = 1
net.core.rmem_max = 16777216
net.core.wmem_max = 16777216
net.core.netdev_max_backlog = 262144
net.core.somaxconn = 262144
net.ipv4.tcp_max_orphans = 3276800
net.ipv4.tcp_max_syn_backlog = 262144
net.core.wmem_default = 8388608
net.core.rmem_default = 8388608
EOF
/sbin/sysctl -p

3.關掉不必要的服務

#藍牙服務
chkconfig bluetooth off
#打印服務
chkconfig cups off
#ipv6的iptables
chkconfig ip6tables off
#yum更新服務
chkconfig yum-updatesd off
# sendmail服務
chkconfig sendmail off

文章摘自

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