linux入門之軟件包管理
一、rpm 安裝
程序包管理器就是將編譯好的應用程序的各組成文件打包一個或幾個程序包文件,從而方便快捷地實現程序包的安裝,卸載查詢,升級和校驗等管理操作,在CentOS系統上使用rpm命令管理程序包進行安裝、卸載、升級、查詢、校驗、數據庫維護等操作時,需要先對光盤進行掛載 ,掛載光盤命令如下
[root@localhost ~]#mount /dev/cdrom /media mount: /dev/sr0 is write-protected, mounting read-only
出現下邊那條命令顯示掛載成功,接下來開始演示rpm命令的具體相關應用。
rpm {-i|--install} [install-options] PACKAGE_FILE…
-iv 顯示程序包管理執行進度
-ivh PACKAGE_FILE 顯示過程及安裝進度百分比
--test: 測試安裝,但不真正執行安裝,即dry run模式
--nodeps:在安裝時忽略依賴關系
--replacepkgs 重復安裝已安裝過的包,文件覆蓋
--replacefiles 將要安裝包的部分文件與其他已安裝的包文件沖突,可繼續安裝,文件不覆蓋
--noscripts 安裝時不執行包中自帶的腳本
-a: 所有包
-f: 查看指定的文件由哪個程序包安裝生成
-p rpmfile:針對尚未安裝的程序包文件做查詢操作
--provides: 查看指定包提供了哪些CAPABILITY
-R 查詢 常用查詢用法
-qi 包名 顯示包的詳細信息
-qf 文件路徑 查詢指定文件來自於哪一個已安裝的rpm包
-qc PACKAGE
-e 卸載包
有關於rpm的相關應用就是應用的安裝,不過安裝一般都比較單一,我所說的單一就是大多數都用rpm –ivh 來對程序進行安裝,在這裏我就不做過多演示,我將演示的是用rpm來恢復文件。
實驗1 刪除文件後利用rpm2cpio解開rpm來恢復文件
[root@localhost ~]#rm -rf /etc/rc.d/init.d/functions
刪除指定文件
[root@localhost ~]#cat /etc/rc.d/init.d/functions cat: /etc/rc.d/init.d/functions: No such file or directory
查驗是否刪除成功
[root@localhost ~]#cat /etc/rc.d/init.d/functions cat: /etc/rc.d/init.d/functions: No such file or directory
[root@localhost ~]#rpm -qf /etc/rc.d/init.d/functions
initscripts-9.49.41-1.el7.x86_64
獲取曾經安裝過的版本信息
[root@localhost ~]#mount /dev/cdrom /media/
mount: /dev/sr0 is write-protected, mounting read-only
對光盤進行掛載
[root@localhost ~]#cp /media/Packages/initscripts-9.49.41-1.el7.x86_64.rpm /app
復制到臨時目錄下
[root@localhost ~]#cd /app
[root@localhost app]#rpm2cpio initscripts-9.49.41-1.el7.x86_64.rpm|cpio -id
3039 blocks
用rpm2cpio來解開文件
[root@localhost app]#cp etc/rc.d/init.d/functions /etc/rc.d/init.d/
復制到原目錄下
[root@localhost app]#cat /etc/rc.d/init.d/functions
# -*-Shell-script-*-
#
# functions This file contains functions to be used by most or all
# shell scripts in the /etc/init.d directory.
#
cat一下測試實驗操作成果,過多文件內容在此不做過多展示。
二、yum管理
YUM: Yellowdog Update Modifier,rpm的前端程序,可解決軟件包相關依賴性,可在多個庫之間 定位軟件包,yum repository: yum repo,存儲了眾多rpm包,以及包的相關的元數據文件(放置於特定 目錄repodata下) ,主要用於解決安裝一個包時,需要滿足別的包依賴關系,比rpm更容易操作,重點在於對倉庫的配置。
1、對rpm進行倉庫的配置
/etc/yum.repos.d/*.repo 倉庫路徑
[repoid] 倉庫的名稱,不能重復
name= 倉庫的描述,可以不寫,將會用repoid當作name
enabled=1|0 激活或禁用倉庫,若不寫該行,則默認啟用
gpgcheck=1|0 是否在安裝包是檢測gpg簽名,默認檢測,即為1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7 指定gpg key的路徑
2、倉庫配置成功後,直接用yum命令來進行包的安裝
yum install 包名[*包名*] [包名2……]
-y 自動應答
reinstall 包名 重新安裝指定的包
update 更新包
remove 卸載包 卸載時不會連同依賴包一同卸載
info 包名 查看指定包的詳細信息
yum list
all 默認 表示列出所有包
updates 列出可更新的包
installed 列出已安裝的包
@repoid 表示該包安裝自指定的倉庫
installed 表示該包由rpm命令手工安裝
base 未安裝的包,來自於base
epel 未安裝的包,來自於epel
@base 該包已經安裝,且是從base安裝的
@anaconda 該包已經安裝,且是從操作系統的安裝程序anaconda安裝的
repolist [enabled] 默認,只顯示已激活的倉庫
disabled 僅顯示已禁用的倉庫
all 顯示所有倉庫
3、yum安裝時,要有必要的對yum進行清空和重建一下緩存
yum clean all 清空yum緩存
yum makecache 重建緩存,(沒有緩存時,首次使用yum的任何命令都會自動重建)
4、 yum provides "*/rz" 搜索一個文件來自於哪個rpm包,可以是未安裝的包
yum search 關鍵字 模糊搜索 軟件包和描述
yum deplist php 列出指定包所依賴的所有包
5、 yum history 列出所有的yum歷史
info # 查看某條歷史的詳細信息
redo # 重做某條歷史
undo # 撤消某條歷史
如果該歷史為install,則undo 是remove
如果該歷史為remove,則undo 是install
實驗2 yum倉庫的配置
[root@localhost ~]#vim /etc/yum.repos.d/wsy.repo
[base] 教室本地base
name=Red Hat Enterprise Linux $releasever Repo
baseurl=http://172.18.0.1/centos/$releasever
enabled=1
gpgcheck=0
[epel] 在線epel
name=mage epel
baseurl=https://mirrors.tuna.tsinghua.edu.cn/epel/7/x86_64/
enabled=1
gpgcheck=0
wq保存後即可生效,然後就可以用yum命令進行包的安裝了
三、dnf包管理
DNF 介紹 新一代的RPM軟件包管理器。他首先出現在 Fedora 18 這個發行版中。而最近,他取代了 YUM,正式成為 Fedora 22 的包管理器。但是目前使用並不是很多,最常用的還是上邊的兩種安裝包管理,DNF與yum的安裝和使用很相似,配置文件存放在 /etc/dnf/dnf.conf
1、常見用法如下
dnf [options] <command> [<arguments>...]
dnf –version
dnf repolist
dnf clean all
dnf makecache
dnf list installed
dnf list available
dnf search nano
dnf history
dnf history undo 1
2、程序包的編譯流程為 源代碼-->預處理-->編譯-->匯編-->鏈接-->執行
以C語言源代碼為例編譯安裝三步驟:
- configure (1) 通過選項傳遞參數,指定啟用特性、安裝路徑等;執行時會參考用戶的指定以及 Makefile.in文件生成Makefile (2) 檢查依賴到的外部環境,如依賴的軟件包
- make 根據Makefile文件,構建應用程序
- make install 復制文件到相應路徑
下面我在通過一個實驗進行源碼包安裝apache
實驗3 在CentOS7上編譯安裝apache 2.4源碼包,並啟動此服務
lftp 172.18.0.1
user thirty-three pass:thirty-three
get files/httpd-2.4.27.tar.bz2
exit
連接教室服務器,下載源碼
tar xvf httpd-2.4.27.tar.bz2
對得到文件進行解壓縮
yum groupinstall Development Tools
切換到http-2.4.27/下進行Development Tools的安裝
./configure --help
./configure --prefix=/app/apache24 --sysconfdir=/etc/apache24
別的軟件的運行支持,選項參數,特性,路徑等
make
make install
vim /etc/profile.d/mg.sh
apachectl start 啟動apachectl
vim /app/apache24/htdocs/index.html 網頁的編輯
iptables –F 關閉防火墻
進行瀏覽器的訪問,訪問最後結果如圖
linux入門之軟件包管理