Linux程序包管理

Linux程序包管理


  • RPM包基礎

  • RPM

  • YUM

  • 編譯安裝


概述

Linux上的程序包管理,是我們的必備技能,本文將從三個視角:rpm、yum、源碼編譯來淺析Linux的程序包管理。首先,我們來看下本文的主要內容:

- 程序包的命名- RPM: 程序包管理器    安裝、卸載、升級、查詢、校驗、數據庫維護
    
- YUM: RPM的前端程序    yum的配置文件
    yum的常規操作:升級、檢查、卸載、查看、包組管理
    使用光盤當作本地yum倉庫
    yum的命令行選項及repo配置文件中的可用變量
    
- 編譯安裝    編譯安裝三步驟
    編譯安裝後的相關配置

RPM包

在瞭解RPM之前,我們需要了解下關於rpm包的基本知識,通常,一個二進制應用程序的組成部分有:二進制文件、庫文件、配置文件、幫助文件,而源代碼與rpm包都有各自的命名規則:

源代碼:
    name-VERSION.tar.gz|bz2|xz
    其中,VERSION: major.minor.release
    
rpm包:
    name-VERSION-release.arch.rpm
    其中,VERSION: major.minor.release
         release:release.OS
    如:ash-4.2.46-19.el7.x86_64.rpm
    
    另外,noarch表示與平臺無關

而包與包之間,是存在依賴關係的,甚至循環依賴,由此纔有也RPM與YUM,以下爲包的主要分類:

Application-VERSION-ARCH.rpm: 主包
Application-devel-VERSION-ARCH.rpm開發子包
Application-utils-VERSION-ARHC.rpm其它子包
Application-libs-VERSION-ARHC.rpm其它子包

對於庫文件,有以下兩個常用命令及相關配置文件

ldd: 查看二進制程序所依賴的庫文件
ldconifg: 管理及查看本機裝載的庫文件
配置文件:/etc/ld.so.conf, /etc/ld.so.conf.d/*.conf
緩存文件:/etc/ld.so.cache

下面是一個常見的rpm包:

wKioL1fBXCjxOvCmAACgqhtLmQo563.png


RPM

rpm - RPM Package Manager

RPM就是一個包管理器,對rpm的主要操作有:

安裝:rpm {-i|--install} [install-options] PACKAGE_FILE ...
卸載:rpm {-e|--erase} [--allmatches] [--nodeps] [--noscripts]
升級:rpm {-U|--upgrade} [install-options] PACKAGE_FILE ...      
     rpm {-F|--freshen} [install-options] PACKAGE_FILE ...
查詢:rpm {-q|--query} [select-options] [query-options]
校驗:rpm {-V|--verify} [select-options] [verify-options]
數據庫維護:rpm {--initdb|--rebuilddb}
            /var/lib/rpm

使用示例

  1. 安裝一個rpm包:

[root@centos7 ~]#rpm -ivh tree-1.6.0-10.el7.x86_64.rpm

wKioL1fBXXjB5EwSAAAzmRvG8lI730.png

[install-options]
	-h: hash marks輸出進度條;每個#表示2%的進度;	
	--test: 測試安裝,檢查並報告依賴關係及衝突消息等;	
	--nodeps: 忽略依賴關係,不建議	
	--replacepkgs: 重新安裝,注意不會替換配置文件	
	--nosignature: 不檢查包簽名信息,不檢查來源合法性	
	--nodigest: 不檢查包完整性信息
  1. 卸載一個rpm包:

[root@centos7 ~]#rpm -e tree
[erase-options]
--almatches: 卸載所有匹配指定名稱的程序包的各版本:
--nodeps: 忽略依賴關係 
--test;測試卸載,dry run模式
  1. 查詢一個rpm包:

[root@centos7 ~]#rpm -qi tree

wKioL1fBXmbT5x1_AADBQEPeX9o017.png

[root@centos7 ~]#rpm -ql tree

wKioL1fBXnSSNugjAAA-nr6nF-k980.png

[query-options]
    -a,--all: 查詢所有已經安裝過的包	
    -f FILE: 查詢指定的文件由哪個程序包安裝生成;	
    --chargelog: 查詢rpm包的changlog; 
    -l,--list: 程序包安裝生成的所有文件列表;	
    -i,--info: 程序包相關的信息,版本號,大小,所屬的包組等	
    -c,--configfiles: 查詢指定的程序提供的配置文件	
    -d,--docfiles: 查詢指定的程序包提供的文檔 
    --provides: 列出指定的程序包提供的所有CAPABILITY	
    -R,--requires: 查詢指定的程序包的依賴關係 
    --scripts: 查看程序包自帶的腳本片斷
  1. 校驗一個rpm包:

[root@centos7 ~]#rpm -V tree 
[root@centos7 ~]#echo $?
0
[root@centos7 ~]#
公鑰如何得到:
   	在光盤中:RPM-GPG-KEY-CentOS-7
   	或者在此路徑下:ls /etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7
   	獲取並導入信任的包製作者的密鑰:
   	
對於CentOS發行版來說:    #rpm --import /media/cdrom/RPM-GPG-KEY-CentOS-7驗證:
	(1)安裝此組織簽名的程序時,會自動執行驗證
	(2)手動驗證:rpm -K PACKAGE_FILE
[root@centos7 ~]#rpm -K tree-1.6.0-10.el7.x86_64.rpm 
tree-1.6.0-10.el7.x86_64.rpm: rsa sha1 (md5) pgp md5 OK
[root@centos7 ~]#

關於rpm包製作與使用時的加密解密問題:

製作者:

1.使用單向加密算法去提取這個包的特徵碼,特徵碼是定長的;

2.用私鑰加密特徵碼,附加在文件後面,私鑰加密的特徵碼就是數字簽名;

使用者:

1.拿到製作者的公鑰,去解密特徵碼,如果能解密則表明該rpm包的確爲相應的製作者,這便是來源合法性驗證

2.用同樣的單向加密算法對包作計算,計算得到一個特徵碼,然後拿特徵碼與解密數字簽名的特徵碼作比對,如果二者一樣,則驗證了其完整性。

[root@centos7 ~]#rpm -ql tree 
/usr/bin/tree
/usr/share/doc/tree-1.6.0
/usr/share/doc/tree-1.6.0/LICENSE
/usr/share/doc/tree-1.6.0/README
/usr/share/man/man1/tree.1.gz

[root@centos7 ~]#echo >> /usr/bin/tree   # 給/usr/bin/tree裏面追加空格
[root@centos7 ~]#rpm -V tree # 驗證安裝完之後包文件有無變動
S.5....T.    /usr/bin/tree    # 大小,MD5,時間戳已變

[root@centos7 ~]#rpm -K tree-1.6.0-10.el7.x86_64.rpm # 驗證來源合法性與包的完整性
tree-1.6.0-10.el7.x86_64.rpm: rsa sha1 (md5) pgp md5 OK
[root@centos7 ~]#
校驗:
   S file Size differs
   M Mode differs (includes permissions and file type)   
   5 digest (formerly MD5 sum) differs
   D Device major/minor number mismatch
   L readLink(2) path mismatch
   U User ownership differs
   G Group ownership differs
   T mTime differs
   P caPabilities differ
  1. 升級rpm包:

rpm -Uvh PACKAGE_FILE...
rpm -Fvh PACKAGE_FILE...

-U:升級或安裝-F:升級    --oldpackage: 降級;--force: 強制升級;    
注意:
(1)不要對內核做升級操作;Linux支持多內核版本並存,因此,直接安裝新版本內核;
(2)如果某原程序包的配置文件安裝後曾被修改過,升級時,新版本的程序提供的
同一個配置文件不會覆蓋原有版本的配置文件,而是把新版本的配置文件重命名後
(FILENAME.rpmnew)後提供;
  1. 數據庫重建| 此功能慎用!

rpm管理器數據庫路徑:/var/lib/rpm/,相關的查詢操作,通過此處的數據庫進行;

rpm {--initdb|--rebuilddb}	
--initdb: 初始化數據庫,當前無任何數據庫可初始化創建一個新的;當前有時不執行任何操作;	
--rebuilddb: 重建,無論當前存在與否,直接重新創建數據庫

在其他目錄構建rpm數據庫:

[root@centos7 ~]#rpm --initdb --dbpath=/tmp/rpm
[root@centos7 ~]#ls /tmp/rpm
/Basenames     __db.003    Name          Requirename
Conflictname  Dirnames    Obsoletename  Sha1header
__db.001      Group       Packages      Sigmd5
__db.002      Installtid  Providename   Triggername

看重建之後的區別

[root@centos7 ~]#rpm --rebuilddb --dbpath=/tmp/rpm
[root@centos7 ~]#ls /tmp/rpm/                     
Basenames     Dirnames  Installtid  Obsoletename  Providename  Sha1header  Triggername
Conflictname  Group     Name        Packages      Requirename  Sigmd5
[root@centos7 ~]#

rpm命令小結:

rpm命令實現程序管理:

安裝:-ivh, --nodeps, --replacepkgs
卸載:-e, --nodeps
升級:-Uvh, -Fvh, --nodeps, --oldpackge
查詢:-q, -qa, -qf, -qi, -qd, -qc, 
	-q --scripts, -q --chagelog, 
	-q --provides,-q --requires
校驗:-V

導入GPG密鑰:
--import, -K(檢驗來源合法性與包完整性)
--nodeigest(校驗時不檢查完整性)
--nosignature(校驗時不檢查來源合法性)包來源合法性驗正及完整性驗正:
完整性驗正:SHA256
來源合法性驗正:RSA

查詢公鑰:0數據庫重建:--initdb, --rebuilddb

YUM

rpm給我們的包管理帶來的便利,但在安裝包時,卻無法自動解決包之間的依賴關係,比如你要安裝一個包,它可能會提示你此包依賴A包,此時就需要再安裝A包了,但在安裝A包時又提示你安裝B包與C包,此時你又不得不再安裝B包與C包,最後再回頭來安裝你想要安裝的包。如此反覆,對於一個高效率工作的人來說,簡直苦不堪言啊;由此,yum成華麗現身了,yum就是rpm的一個前面工具,其主要的優勢是可以自動地解決包與包之間的依賴關係,另外,yum還能一次性安裝一個包組;由可可見,yum是基於rpm的,二者是一個相輔相成的關係。

yum的主要知識點:

yum客戶端的配置文件及變量
使用光盤當作本地yum倉庫
與rpm相近功能的實現 
yum的包組管理功能

yum客戶端的配置文件

/etc/yum.conf:爲所有倉庫提供公共配置
/etc/yum.repos.d/*.repo:爲倉庫的指向提供配置

什麼是yum的倉庫?

我們用rpm安裝rpm包時,rpm包的來源於光盤,在光盤的Packets目錄裏面有少量的rpm包;那麼,對於yum而言,它也需要指向一個“倉庫”的東西,不然“巧婦難爲無米之炊”啊,而這個“倉庫”,既可以是本地的,也可以是網絡上的。

如何指向yum倉庫,這就需要我們來配置/etc/yum.repos.d/*.repo ,重要的一點是,指向yum倉庫的地址一定是 repodata 這個rpm包元數據文件的父目錄,且該配置文件的命名必須要以.repo爲擴展名,否則出錯!指向yum倉庫的配置文件的定義如下:

[repositoryID]
name=Some name for this repository
baseurl=url://path/to/repository/enabled={1|0}
gpgcheck={1|0}
gpgkey=URL
enablegroups={1|0}
failovermethod={roundrobin|priority}
默認爲:roundrobin,意爲隨機挑選;
cost= 默認爲1000

參考示例:

  1 [base]     # 遠程yum源
  2 name=CentOS 7
  3 baseurl=http://10.1.0.1/cobbler/ks_mirror/7/    # repodata 的父目錄
  4 gpgcheck=1          # 開啓完整性與來源合法性,0則表示關閉
  5 gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7
  6 enabled=0   # 啓用此yum源,0表示禁用
  7 
  8 [base_local]    # 本地光盤yum源
  9 name=Mirros-CentOS 7
 10 baseurl=file:///media/cdrom   # 光盤的掛載點
 11 gpgcheck=1
 12 gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7
 13 ecabled=1

wKioL1fBYSjwWtXbAABfrBzDA1c851.png

顯示倉庫列表

[root@centos7 /etc/yum.repos.d]#yum repolist

wKiom1fBYXXSOPE5AABnxoZO-Kk096.png

此時我們就可以利用yum實現rpm的相應功能了。

當然,天下武功,唯快不破,對於創建yum倉庫,我們還有“快招”!

yum-config-manager命令:

yum-config-manager常用參數:
    --add-repo="repodata的父目錄或光盤的掛載點”    
    --disable "倉庫名“  禁用倉庫    
    --enable "倉庫名”   啓用倉庫

快速創建網絡yum倉庫:

[root@centos7 ~]#yum-config-manager --add-repo=
 Loaded plugins: fastestmirror, langpacks
adding repo from: 

[10.1.0.1_cobbler_ks_mirror_7_]
name=added from: 
baseurl=
enabled=1
[root@centos7 ~]#

wKioL1fBYr_xRV8oAABDP-9V_SE724.png

快速創建光盤yum倉庫:

[root@centos7 ~]#yum-config-manager --add-repo=
 Loaded plugins: fastestmirror, langpacks
adding repo from: 

 [media_cdrom_]
name=added from: 
baseurl=
enabled=1
[root@centos7 ~]#

wKiom1fBaC-yhq8kAABRmAvC2HY405.png

禁用base倉庫:

[root@centos7 ~]#yum-config-manager --disable base

wKioL1fBaGihfTDxAABw26vq4G8734.png

該命令實際上是修改了.repo文件,重啓之後依然有效。

wKiom1fBaILSR88yAAAvMcg84MQ989.png

開啓base倉庫:

[root@centos7 ~]#yum-config-manager --enable base

wKiom1fBaKOzE9rTAABy6rKRIMU106.png

禁用所有yum倉庫:

[root@centos7 ~]#yum-config-manager --disable *

開啓所有yum倉庫:

[root@centos7 ~]#yum-config-manager --enable *

另外,yum的repo配置腳本已經寫好,問題來了,當我們在一個既有CentOS 7, 又有CentOS 6的環境中需要運行yum的repo配置文件時,發現適用於適用於CentOS 7的不適用於CentOS 6,反之亦然,如此,repo配置文件也有了屬於自己的變量:

yum的repo配置文件中可用的變量:
$releasever: 當前OS的發行版的主版本號
$arch: 平臺,i386,i486,i586,x86_64等
$basearch:基礎平臺;i386
$YUM0-$YUM9:自定義變量

實例:
http://server/centos/$releasever/$basearch/
http://server/centos/7/x86_64
http://server/centos/6/i384

製作本地yum源

我們除了用光盤當作本地yum源外,還可以利用第三方的rpm包來個性化地製作我們所無需要的本地yum源。首先,我們要從一個站點去下載所需的rpm包,然後在下載的rpm包的所在目錄下利用createrepo這個命令就可以製作本地yum源了。

登錄ftp服務器下載所需rpm包:

[root@centos7 ~]#lftp 10.1.0.1lftp 10.1.0.1:~> cd pub   
lftp 10.1.0.1:/pub/Sources/7.x86_64> !mkdir /testdir/zsh   # 在本地創建/testdir/zsh目錄,格式爲! COMMAND
lftp 10.1.0.1:/pub/Sources/7.x86_64> lcd /testdir/zsh  # lcd進相應的目錄
lcd ok, local cwd=/testdir/zsh
lftp 10.1.0.1:/pub/Sources/7.x86_64> lpwd   # 查看是否成功進入相應的目錄/testdir/zsh
lftp 10.1.0.1:/pub/Sources/7.x86_64> mget zsh-5.0.2-7.el7_1.2.x86_64.rpm  # 下載rpm包,引自作爲測試僅下載一個
2489616 bytes transferred                                    
lftp 10.1.0.1:/pub/Sources/7.x86_64> bye
[root@centos7 ~]#cd /testdir/zsh 
[root@centos7 /testdir/zsh]#ls  
zsh-5.0.2-7.el7_1.2.x86_64.rpm
[root@centos7 /testdir/zsh]#

關於createrepo命令:

createrepo [options] <directory>     # 目錄是必選

創建本地yum源:

[root@centos7 /testdir/zsh]#createrepo .  # 在當前目錄下創建本地yum源

wKioL1fBaRKTR1IqAACE9rN5Qi0348.png

創建配置文件:

[root@centos7 /testdir/zsh]#yum-config-manager --add-repo=
 Loaded plugins: fastestmirror, langpacks
adding repo from: 
[testdir_zsh]
name=added from: 
baseurl=
enabled=1
[root@centos7 /testdir/zsh]#

查看:

wKioL1fBaXejVEAwAADBIhL_Sq0137.png

驗證:安裝zsh

[root@centos7 /testdir/zsh]#yum -y install zsh

wKiom1fBaY3wK5dmAACOxOj9bvg232.png

wKiom1fBaZzRmZqBAABQmFjmij8286.png

此時,我們的本地yum源就可以認爲創建成功了!

yum常見命令行

顯示倉庫列表:yum repolist [all|enabled|disabled]
顯示程序包:yum list {available|installed|updates}
安裝程序包:yum install package1 [package2] [...]
            yum reinstall package1 [package2] [...] (重新安裝)
升級程序包:yum update [package1] [package2] [...]
            yum downgrade package1 [package2] [...] (降級)
檢查可用升級:yum check-update
卸載程序包:yum remove | erase package1 [package2] [...]
查看程序包information:yum info [...]
查看指定的特性(可以是某文件)是由哪個程序包所提供:
    yum provides | whatprovidesfeature1 [feature2] [...]清理本地緩存:
    yum clean [ packages | metadata | expire-cache | rpmdb| plugins | all ]構建緩存:
    yum makecache   # 緩存元數據
搜索:yum search string1 [string2] [...]以指定的關鍵字搜索程序包名及summary信息
查看指定包所依賴的capabilities:
    yum deplist package1 [package2] [...]查看yum事務歷史:
    yum history
    yum history info 6
    yum history undo 6  # 執行yum命令的撤銷操作
日誌:/var/log/yum.log

--nogpgcheck:禁止進行gpgcheck
-y: 自動回答爲“yes”
-q:靜默模式
--disablerepo=repoidglob:臨時禁用此處指定的repo
--enablerepo=repoidglob:臨時啓用此處指定的repo
--noplugins:禁用所有插件

相關示例:

[root@centos7 ~]#yum makecache   # 緩存元數據
Loaded plugins: fastestmirror, langpacks
testdir_zsh                                                                    | 2.9 kB  00:00:00     
(1/2): testdir_zsh/other_db                                                    | 1.5 kB  00:00:00     
(2/2): testdir_zsh/filelists_db                                                | 5.7 kB  00:00:00     
Loading mirror speeds from cached hostfile
Metadata Cache Created
[root@centos7 ~]#
[root@centos7 ~]#yum history

wKioL1fBah-Rikn-AACUg0UgfIw666.png

[root@centos7 ~]#yum check-update  # 檢查可用升級
[root@centos7 ~]#yum -y update zsh

wKiom1fBajbAiiqyAADYMYYcEIM956.png

[root@centos7 ~]#yum deplist zsh  查看指定包所依賴的能力capabilities

wKioL1fBak6Txdb3AACXr6ykMQg775.png

[root@centos7 ~]#yum provides zsh   # 查看指定的包的特性由哪個程序提供

wKiom1fBamPwVI-7AABv820lACg045.png

yum的包組管理功能

yum groupinstall group1 [group2] [...]
yum groupupdate group1 [group2] [...]
yum grouplist [hidden] [groupwildcard] [...]
yum groupremove group1 [group2] [...]
yum groupinfo group1 [...]

包與包組的關係,在其結構關係上,類似於用戶與用戶組的概念,都是爲了方便管理。yum的包組管理命令與yum的常規安裝卸載升級命令用法相似。

源碼編譯

有了rpm與yum,有時也不能完全滿足我們的需求,比如我我們要升級一個程序,但這個程序沒有相應的rpm包,或者其rpm包版本過舊,而我們我們只有源碼包,此時我們就需要編譯安裝程序了;另外,yum安裝時是自動解決依賴關係,有可能安裝了我們好些不需要的東西,而我們不想安裝沒必要的東西,此時,我們也要考慮編譯安裝。編譯安裝有三大步驟,但有時我們也需要具體的軟件具體對待,在編譯前需要閱讀其安裝信息。

C代碼編譯安裝三步驟:
1、./configure:
(1) 通過選項傳遞參數,指定啓用特性、安裝路徑等;執行時會參考用戶的指定以及makefile.in文件生成makefile
(2) 檢查依賴到的外部環境,如依賴的軟件包
2、make:根據makefile文件,構建應用程序
3、make install:複製文件到相應路徑

開發工具:
autoconf: 生成configure腳本
automake:生成Makefile.in
注意:安裝前查看INSTALL,README

在編譯前,我們需要準備好開發環境與開發工具,開發環境包括:開發庫,頭文件,glibc, 標準庫;開發工具包括:make, gcc等;這些開發組件往往通過“包組”提供,所以我們只需安裝相應的包組就可以了。

實現:通過“包組”提供開發組件
CentOS 6:
Development Tools
Server Platform Development
CentOS 7:
Development Tools
Development and Creative Workstation

在安裝時,./configure --help 可獲取其支持的安裝選項,同時,安裝路徑與配置文件的位置都是可以手工指定的,軟件的可選特性當選擇性的禁用,依賴的包當然也是可禁用的。這就是個性化的編譯安裝:

安裝路徑設定:
--prefix=/PATH: 指定默認安裝位置,默認爲/usr/local/
--sysconfdir=/PATH:配置文件安裝位置
System types:支持交叉編譯

Optional Features: 可選特性
--disable-FEATURE
--enable-FEATURE[=ARG]

Optional Packages: 可選包,
--with-PACKAGE[=ARG],依賴包
--without-PACKAGE,禁用依賴關係

下面以安裝http來簡要說明編譯安裝的大致過程:

  1. 下載 httpd-2.2.29.tar.bz2並解壓,進入解壓後的目錄

[root@centos7 ~/httpd-2.2.29]#./configure --prefix=/usr/local/http2 --sysconfdir=/etc/bin/http2

wKioL1fBa5PSGRA1AAB_oXXXr0c586.png

wKioL1fBa6XRvAmzAAA3tNAjCnk070.png

  1. make

[root@centos7 ~/httpd-2.2.29]#make
  1. make install

[root@centos7 ~/httpd-2.2.29]#make install

此時,我們可進入安裝目錄看下:

wKiom1fBa9WTNmxEAACsEB63XFM124.png

至此,我們的安裝過程就結束了,要想更加高效地使用該軟件的功能,我們還有安裝後的配置需要“善後”:

安裝後的配置:
(1) 二進制程序目錄導入至PATH環境變量中;
編輯文件/etc/profile.d/NAME.shexport PATH=/PATH/TO/BIN:$PATH(2) 導入庫文件路徑
編輯/etc/ld.so.conf.d/NAME.conf添加新的庫文件所在目錄至此文件中
讓系統重新生成緩存:
ldconfig[-v]
(3) 導入頭文件
基於鏈接的方式實現:
ln -sv
(4) 導入幫助手冊
編輯/etc/man.config|man_db.conf文件
添加一個MANPATH
  1. 將二進制程序目錄導入至PATH環境變量中

vim http2.sh

export PATH=$PATH:/usr/local/http2
  1. 導入庫文件路徑

vim http2.conf

/usr/local/http2/lib          

[root@centos7 ~]#ldconfig   # 重新生成緩存
[root@centos7 ~]#
  1. 導入頭文件

[root@centos7 /usr/local/http2/include]#ln -sv /usr/local/http2/include /usr/include/http2.h

wKioL1fBbFGQLR-QAABvAOnMyGk303.png

  1. 導入幫助手冊

wKiom1fBbGajLUdJAABLu2JzjU8746.png

現在我們嘗試使用man幫助:

wKioL1fBbHeTZxllAABINM4yTsk899.png

apachectl - Apache HTTP Server Control Interfacestartstop restart

現在嘗試啓動http:

[root@centos7 ~]#apachectl start

查看80端口是否已開啓:

[root@centos7 ~]#netstat -ant

wKioL1fBbI3B7yomAACsRLHPRiM267.png

OK,我們來查看一下網頁:

[root@centos7 ~]#links    # 此命令沒有就直接yum安裝

wKiom1fBbKaCbFLKAAAVkjisTwg651.png

wKiom1fBbLfxFkPeAAC6Oj2-SLE938.png

瀏覽器再次查看(此步驟沒必要)

wKiom1fBbSfQ8gm8AAME0lT92Y4208.png

至此,源碼編譯安裝的試驗就結束了!

我們在本文中主要介紹了rpm的常規命令操作,yum的配置文件及創建網絡yum源、使用光盤當作yum源、創建本地yum源及其常規操作,最後簡要介紹了下源碼編譯安裝的三步驟,其實make與make install是可以一起執行的,即make & make install. 這就是我們程序包管理的主要內容了!

止戰

2016.8.26


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