Skip to main content

Yum & Rpm

Yum

系統更新

yum repolist enabled

查詢所有可更新的套件
yum list updates

更新所有套件
yum update --disablerepo=epel

停用有問題的 yum-updatesd,並以下列方式取代

停用 yum-updatesd
service yum-updatesd stop
chkconfig yum-updatesd off

新增 /etc/cron.daily/yum.cron
#!/bin/sh
/usr/bin/yum -R 120 -e 0 -d 0 -y update yum
/usr/bin/yum -R 10 -e 0 -d 0 -y update                        #如果不想讓系統自動更新所有套件,可註解這行。

chmod 0755 /etc/cron.daily/yum.cron 

各種舊版本的套件庫位址

http://vault.centos.org/

如果想將多個 CD 的 ISO 檔合併成一個 DVD ISO,可以使用附件區的 mkdvdiso.sh,這只能使用在 RedHat/CentOS 版本,使用方法如下:

yum install anaconda-runtime mkisofs

./mkdvdiso.sh cd/ /tmp/CentOS-5.5-i386-bin-DVD.iso

TIPs:

所有 CD ISO 檔放在 cd/ 目錄內

必須關閉 SELinux

輸出檔路徑必須是絕對路徑

清除最新套件庫清單及暫存的套件檔

yum clean all

搜尋特定檔案名稱屬於哪個套件
搜尋 libstdc++.so.6

yum whatprovides "*/libstdc++.so.6" 

列出指定套件的相依性

yum deplist <package-name>

repoquery --requires <package-name>

下載 RPM 套件

yum -y install yum-utils.noarch
yumdownloader <package-name>

; Extract downloaded RPM
rpm2cpio dekiwiki-10.0.1-3.1.noarch.rpm | cpio -idmv 

yum -y install --downloadonly --downloaddir=/tmp/packages NetworkManager

安裝時臨時啟用一個不常用的套件庫位址

yum --enablerepo=elrepo-kernel install kernel-ml kernel-ml-devel

使用光碟 ISO方式來升級系統

# vi /etc/yum.repo.d/CentOS-Media.repo

[c6-local]
name=CentOS-$releasever - Media
baseurl=file:///mnt/iso/
gpgcheck=0
enabled=0

NOTE: enabled=0,不是 1。將 DVD 掛載為 /mnt/iso。 

# yum --disablerepo=\* --enablerepo=c6-local upgrade

安裝本機端的 RPM 套件

yum --nogpgcheck install htop-1.0.2-1.el5.rf.x86_64.rpm

安裝指定版本套件

yum --showduplicates list <package-name>
yum list <package-name>-<version>
yum install <package-name>-<version> 

列出所有套件庫位址

yum repolist
yum repolist enabled 

列出已安裝套件

yum list installed
yum list installed |tail -n +3|cut -d' ' -f1 > installed_packages.lst
或
rpm -qa > installed_packages.lst

yum -y install $(cat installed_packages.lst) 

安裝 EPEL 套件庫
EPEL - Extra Packages for Enterprise Linux

rpm -ivh http://mirror01.idc.hinet.net/EPEL/5/i386/epel-release-5-4.noarch.rpm
rpm -ivh http://mirror01.idc.hinet.net/EPEL/6/i386/epel-release-6-8.noarch.rpm 

TIPs:

錯誤: Error: Cannot retrieve metalink for repository: epel. Please verify its path and try again
解決: sed -i "s/mirrorlist=https/mirrorlist=http/" /etc/yum.repos.d/epel.repo

安裝 ELRepo 套件庫
ELRepo - The Community Enterprise Linux Repository

rpm --import http://elrepo.org/RPM-GPG-KEY-elrepo.org

for RHEL-5, CENTOS-5
rpm -Uvh http://elrepo.org/elrepo-release-5-2.el5.elrepo.noarch.rpm

for RHEL-6, CENTOS-6
rpm -Uvh http://elrepo.org/elrepo-release-6-3.el6.elrepo.noarch.rpm

安裝 RPMforge/RepoForge 套件庫
RPMforge 是由 Dag 及其他包裝者合作維護的。他們為 CentOS 提供超過 5000 個套件,包括 wine、vlc、mplayer、xmms-mp3 及其他受歡迎的媒體工具。它並不是 Red Hat 或 CentOS 的一部份,但卻是為那些發行版本而設計的。

http://repoforge.org/use/

CentOS 如何補安裝套件組
系統在第一次安裝時,都可以選擇要安裝哪些套件組,假使之後系統要補裝某套件組,例如 GNOME 視窗套件,可以使用這些指令,而不用一一找出有哪些相依性的套件名稱。

列出有哪些套件組可安裝
# yum grouplist
安裝 GNOME 視窗套件組
# yum groupinstall "GNOME Desktop Environment"
移除套件組
# yum groupremove "Office Suite and Productivity" "Dial-up Networking Support"

設定 proxy
編輯 /etc/yum.conf

proxy=http://<username>:<password>@<this.is.proxy.ip:<port>/
proxy=http://windowsad\username:password@proxy.server:port/

安裝本機上的 RPM

# yum localinstall my.rpm
建立 YUM 套件庫主機

安裝套件 createrepo
CetOS 5:

createrepo /source/path/reas5
createrepo -g  /source/path/reas5/repodata/comps.xml

CetOS 6/7:

 createrepo /yum-repo-packages/centos_6.4_x86_64
 createrepo -g /yum-repo-packages/centos_6.4_x86_64/repodata/2727...cab6f72-c6-x86_64-comps.xml /yum-repo-packages/centos_6.4_x86_64

RPM

查詢指令

# 查詢已安裝的套件的詳細資訊
rpm -qi <package-name>

# 查詢已安裝套件是 32 或 64 bit
rpm -qa --qf "%{n}-%{v}-%{r}.%{arch}\n" | grep -i <package-name>

# 查詢未安裝的套件資訊
rpm -qpi your.rpm
less your.rpm

# 列出已安裝套件的相依性
rpm -q --requires <package-name>

# 列出未安裝的 RPM 的相依性
rpm -qp --requires your.rpm

# 列出一個尚未安裝的 RPM 所包含的檔案列表
rpm -qlp your.rpm

# 查詢檔案所屬的套件名稱
rpm -qf /usr/bin/ksh

# 查詢 RPM Public Key
rpm -q gpg-pubkey | sort | uniq -c | sort -nr

Rebuild source-rpm

yum install rpm-build
rpmbuild --rebuild something.src.rpm

GPG