首頁 > 軟體

Linux下系統軟體包管理(rpm、yum、原始碼包安裝)

2020-06-16 18:02:13

1. rpm工具
rpm全稱為RedHat Package Manager,紅帽軟體包管理工具,設計理念是開放的,不僅僅是在RedHat平台上,在SUSE上也是可以使用的。

rpm包名字構成由-和.分成了若干部分,如abrt-cli-2.0.8-15.el6.CentOS.i686.rpm,abrt-cli是包名,2.0.8-15是版本號,el6指的是redhat企業版6,centos指的是這是在centos上用的,i686指的是平台型別。有些rpm包並沒有寫具體的平台而是noarch,這代表這個rpm包沒有硬體平台限制。

安裝一個包:rpm -ivh /mnt/Packages/libjpeg-turbo-devel-1.2.1-1.el6.i686.rpm
-i    表示安裝
-v    視覺化
-h    顯示安裝進度
--force : 強制安裝,即使覆蓋屬於其他包的檔案也要安裝
--nodeps : 當要安裝的rpm包依賴其他包時,即使其他包沒有安裝,也要安裝這個包

[root@localhost mnt]# rpm -ivh tree-1.5.3-2.el6.i686.rpm 
Preparing...                ########################################### [100%]
  1:tree                  ########################################### [100%]

升級:rpm -Uvh filename.rpm
-U    就是升級的意思

rpm的解除安裝:
rpm -e filename  //這裡的filename是通過rpm的查詢功能所查詢到的
rpm -qa |grep libjpeg-turbo-devel
rpm -e libjpeg-turbo-devel
12345 [root@localhost ~]# rpm -q tree
tree-1.5.3-2.el6.i686
[root@localhost ~]# rpm -e tree
[root@localhost ~]# echo $?
0

echo $?    檢視上一條命令執行狀態,返回0表示執行成功,非0為不成功;

查詢一個包是否安裝
rpm -q  包名  (不帶有平台資訊以及字尾名 )

[root@localhost ~]# rpm -q tree
package tree is not installed

查詢當前系統所有安裝過的rpm包
rpm -qa 

查詢rpm包的相關資訊 :
rpm -qi 包名

列出一個rpm所安裝的檔案:
rpm -ql 包名
[root@localhost ~]# rpm -ql vim-enhanced
/etc/profile.d/vim.csh
/etc/profile.d/vim.sh
/usr/bin/ex
/usr/bin/rvim
/usr/bin/vim
/usr/bin/vimdiff
/usr/bin/vimtutor
/usr/share/man/man1/rvim.1.gz
/usr/share/man/man1/vimdiff.1.gz
/usr/share/man/man1/vimtutor.1.gz

檢視某個檔案屬於哪個rpm包:
rpm -qf filename

[root@localhost ~]# rpm -qf /etc/passwd
setup-2.8.14-20.el6_4.1.noarch

2. yum工具
yum list 列出所有可用rpm包資源
搜尋某個包: yum search  ‘keywords’或    yum list |grep ‘keywords’
yum 安裝包: yum install -y  filename(包名)
yum 解除安裝包: yum remove  -y filename (包名)
yum 升級包: yum update -y filename(包名)

yum 查詢包:yum provides  "*/vim"  //這裡用通配,可以查詢一個命令由哪個包安裝來的

yum grouplist  列出所有的套件
yum groupinstall    安裝套件
yum groupremove  解除安裝套件


建立原生的yum源
mount /dev/cdrom /mnt 
cp -r /etc/yum.repos.d  /etc/yum.repos.d.bak    //先備份一下
rm -f /etc/yum.repos.d/*
vim /etc/yum.repos.d/dvd.repo  #加入如下內容:
[dvd]
name=install dvd
baseurl=file:///mnt
enabled=1
gpgcheck=0
yum list  //檢視是否有dvd的標誌出現


安裝yum擴充套件源epel    可以安裝nginx、zabbix
rpm -ivh www.lishiming.net/data/attachmen ... e-6-8_32.noarch.rpm 
(其他地址http://www.aminglinux.com/bbs/thread-6721-1-1.html)
12 [root@localhost ~]# rpm -ivh http://www.lishiming.net/data/attachment/forum/epel-release-6-8_32.noarch.rpm
Retrieving http://www.lishiming.net/data/attachment/forum/epel-release-6-8_32.noarch.rpmwarning: /var/tmp/rpm-tmp.YcVQW6: Header V3 RSA/SHA256 Signature, key ID 0608b895: NOKEYPreparing...                ########################################### [100%]  1:epel-release          ########################################### [100%]

安裝完成之後yum list 右側可以列出很多epel的包,供以後使用;

使用yum下載rpm包,而不安裝,方法1:
yum有一個plugin(外掛)叫做yum-downloadonly,可以實現讓使用者只下載軟體包的功能;
首先需要安裝外掛:yum install -y yum-plugin-downloadonly
安裝完成後:yum install 包名 -y --downloadonly 
#這樣就已經下載,centos6預設在 /var/cache/yum/i386/6/base/packages 我這裡是32位元的顯示為i386目錄;
yum install 包名 -y --downloadonly --downloaddir=/usr/local/src  #指定一個下載目錄,如果是已經安裝過的rpm包這樣不成功,需要使用reinstall: yum reinstall  包名  -y --downloadonly --downloaddir=/usr/local/src
reinstall    重新安裝;

範例:

[root@localhost yum]# yum install -y yum-plugin-downloadonly
[root@localhost packages]# pwd
/var/cache/yum/i386/6/base/packages
[root@localhost packages]# ls -l
-rw-r--r--. 1 root root 36464 Jul  3  2011 tree-1.5.3-2.el6.i686.rpm

使用yum下載rpm包,而不安裝,方法2:

通過一個專門的包下載工具--yumdownloader。 這個工具是yum工具包(包含了用來進行yum包管理的幫助工具套件)的子集。

使用命令安裝:yum install -y yum-utlis
安裝完成後,下載rpm包,使用命令:yumdownloader 包名
下載的包儲存到當前的目錄,你需要使用root許可權,因為yumdownloader會在下載過程中更新包索引檔案。與yum命令不同的是,任何依賴包不會被下載。

設定yum保留下載的rpm包
yum 預設情況下,升級或者安裝後,會刪除下載的rpm包。

修改 /etc/yum.conf 組態檔保留下載的包;
[main]
cachedir=/home/soft/yumcache
keepcache=1
debuglevel=2
cachedir 存放下載包的地址,可以修改為自己放置的地址;
keepcacahe設定為1,表示儲存已經下載的rpm包;

3. 原始碼包安裝
原始碼包是開源的可自行更改的程式包,大多用C語言開發,不能直接使用,需要編譯成二進位制的可執行檔案;
編譯原始碼包的必須有gcc支援,如果沒有需要安裝 yum install -y gcc
通常情況編譯三步曲: ./configure 設定各種編譯引數; make 根據指定的編譯引數進行編譯;make install 安裝到指定目錄

範例:
1、下載原始碼包#cd /usr/local/src/ #約定目錄;
  首先安裝wget,安裝命令:yum install -y wget   

  #wget http://mirrors.hust.edu.cn/apache//httpd/httpd-2.2.29.tar.gz
2、解壓tar zxvf httpd-2.2.29.tar.gz  //檢視README或者INSTALL說明檔案
3、指定編譯引數 ./configure --help  可以檢視幫助
  #./configure --prefix=/usr/local/apache2    指定一個路徑;
  執行時提示checking for gcc... no    需要安裝gcc編譯器;安裝命令#yum install -y gcc
4、#echo $? 驗證是否成功
5、#make    編譯成二進位制的檔案;
6、#make install    安裝編譯後的檔案;

RPM包建立入門  http://www.linuxidc.com/Linux/2015-02/113559.htm

如何在Linux中建立RPM包?  http://www.linuxidc.com/Linux/2012-05/60278.htm

製作自己的rpm包 http://www.linuxidc.com/Linux/2013-06/86435.htm

Linux 下rpm安裝後的目錄結構和一些設定 http://www.linuxidc.com/Linux/2013-06/85761.htm

rpm與yum的綜合性介紹與範例演示 http://www.linuxidc.com/Linux/2013-05/84480.htm

Redhat Linux---rpm 命令詳解 http://www.linuxidc.com/Linux/2013-03/81971.htm

使用FPM輕鬆製作RPM包 http://www.linuxidc.com/linux/2014-06/103019.htm

本文永久更新連結地址http://www.linuxidc.com/Linux/2015-04/116336.htm


IT145.com E-mail:sddin#qq.com