在Linux系統(tǒng)中有多種包管理器,這里我們學習一下軟件是如何安裝的勾给?包管理器是如何使用的训柴。本節(jié)我們將學習到的內(nèi)容有:
一哑舒、軟件包管理器
包管理器是方便軟件安裝、卸載幻馁,解決軟件依賴關系的重要工具
(1)CentOS洗鸵、Redhat、Fedora使用yum包管理器仗嗦,軟件安裝包格式為rpm
(2)Debian膘滨、Ubuntu使用apt包管理器,軟件安裝包格式為deb
二稀拐、rpm包與rpm命令
1. 讀懂rpm包的名稱
- 所有rpm包都是以
.rpm
后綴結(jié)尾的吏祸; - 軟件版本需要標記,因為在安裝這個軟件包的時候呢钩蚊,軟件包之間會有一個互相的依賴關系的問題的,軟件版本主要是用來解決依賴關系的蹈矮;
- 系統(tǒng)版本:這里的
el7
表示軟件發(fā)行商砰逻,el7
表示此包是由 Red Hat 公司發(fā)布,適合在RHEL 7.x
(Red Hat Enterprise Linux) 和 CentOS 7.x 上使用泛鸟。但是如果系統(tǒng)版本是el6的話蝠咆,是可以強制安裝到centos7的系統(tǒng)上,但是其軟件的穩(wěn)定性或者版本的兼容性可能會有問題。所以當我們?nèi)ミx擇rpm包的時候刚操,我們第一個要看它的軟件版本闸翅,是否符合我們的要求。另外我們還需要查看的系統(tǒng)版本是否與我們系統(tǒng)的發(fā)行版本對應菊霜; -
平臺:目前服務器大部分都是x86_64的平臺
2. 了解rpm常用命令
rpm命令常用參數(shù):
(1)-q
查詢軟件包
查詢當前系統(tǒng)中安裝了哪些軟件包坚冀;
rpm -qa # 查看系統(tǒng)安裝的所有軟件包
顯示當前系統(tǒng)所有已經(jīng)安裝的軟件包,條目太多如果想要分屏顯示鉴逞,可以在上面命令的基礎上添加一個管道符|
和more
參數(shù)
rpm -qa | more # 分屏查看系統(tǒng)所有已經(jīng)安裝的軟件包
按空格鍵
換瀏覽下一頁记某;按回車鍵
瀏覽下一行,按q
退出构捡;
我們?nèi)绻氩榭茨骋粋€單獨的軟件包是否安裝液南,可以使用命令:rmp -q <軟件包名稱>
rpm -q vim-common # 查詢是否安裝vim-common
(2)-i
安裝軟件包
安裝指定軟件包,使用命令rpm -i <軟件包名稱>
rpm -i vim-enhanced-7.4.629-6.el7.armv7hl.rpm
如果安裝的時候出現(xiàn)以下報錯:
失敗原因:依賴錯誤勾徽,它有一個依賴關系需要我們手動去解決滑凉,安裝vim-enhanced時需要先安裝vim-common,再去安裝vim-enhanced喘帚,這樣呢我們才不會被依賴關系所困擾畅姊。
如果依賴關系非常多,手動解決太麻煩啥辨,我們可以使用解決依賴關系有效的工具:yum倉庫涡匀,它可以自動幫我們解決依賴關系;
在安裝軟件包的時候溉知,如果軟件包的版本不符合我們的要求陨瘩,我們還可以通過源代碼來編譯安裝軟件包。
(3)-e
卸載軟件包
卸載指定軟件包级乍,使用命令rpm -e <軟件包名稱>
rpm -e vim-common
如果想卸載多個軟件包的話舌劳,多個軟件包之間用空格隔開即可。
在查詢和卸載軟件包時玫荣,我們只需要寫上軟件包的名稱即可甚淡,但是安裝軟件包的時,需要寫上完整的軟件包名稱捅厂。
三贯卦、 yum倉庫
yum倉庫也叫yum包管理器,官方提供了yum源(http://mirror.centos.org/centos/7/)焙贷,但是在國內(nèi)訪問速度較慢撵割,我們可以使用國內(nèi)一些公司或者機構(gòu)提供的倉庫源速度會快很多
1. 如果切換國內(nèi)源呢?
方法01:我們可以修改配置文件/etc/yum.repos.d/CentOS-Base.repo
來切換國內(nèi)源辙芍;
方法02:還有一種方法就是啡彬,直接把國內(nèi)的源配置文件下載下來覆蓋系統(tǒng)中的原配置文件羹与,使用命令:
wget -O /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-7.repo
然后運行yum makecache
生成新的緩存,讓我們的軟件包指向開源鏡像站庶灿。
2. yum命令常用選項
(1) install 安裝軟件包
使用yum進行安裝不用考慮軟件包的依賴關系纵搁,系統(tǒng)會自動幫你找到你需要的依賴包,一并安裝往踢,通過yum install <軟件包名>
就可以安裝指定的軟件包腾誉;比如當我們想安裝軟件包:vim-enhanced
就可以使用命令:
yum install vim-enhanced
這些軟件包的安裝都是一個一個的安裝,但是我們使用Linux系統(tǒng)時通常需要一次性安裝多個軟件菲语。比如我們Linux系統(tǒng)要做服務器的話妄辩,通常要安裝httpd
、mysql
山上、php
之類的眼耀;如果我們要做c語言開發(fā)的話,通常就需要安裝cmake
佩憾、gcc
之類的哮伟,但是一個一個的安裝可能會由于版本問題或者依賴問題導致安裝失敗,這時候yum提供了一種很人性化的安裝方式yum groupinstall <整組軟件包>
妄帘,可以幫我們一次性安裝好一整套軟件包楞黄,我們使用命令:
yum grouplist
可以查看系統(tǒng)中有哪些可以使用的軟件包套件:
可以看到軟件套裝有:最小安裝、計算節(jié)點抡驼、基礎設施服務鬼廓、基礎網(wǎng)絡服務、虛擬化主機致盟、桌面系統(tǒng)碎税、網(wǎng)絡控制臺工具、圖形管理工具馏锡、系統(tǒng)管理工具等等雷蹂,都是可以整套安裝的,比如我們想安裝基礎網(wǎng)絡服務套裝就可以直接使用命令:
yum groupinstall "Basic Web Server"
就可以安裝一整套基礎網(wǎng)頁服務器所需要的軟件包杯道,然后輸入y再回車就可以了匪煌,注意不要忘了加雙引號哦!
(2)remove 卸載軟件包
如果想把已經(jīng)安裝的軟件包vim-enhanced卸載党巾,可以通過yum remove <軟件包名>
來卸載指定的軟件包萎庭。
(3) list 查看軟件包
如何查看系統(tǒng)中已經(jīng)安裝過哪些安裝包?我們可以使用命令:
yum list
來查看當前系統(tǒng)中已經(jīng)安裝的軟件包齿拂;
(4) update 升級軟件包
系統(tǒng)中的軟件怎么更新升級呢驳规,可以使用命令:
yum update
來更新升級軟件包,系統(tǒng)會根據(jù)yum倉庫里的最新版本创肥,提示哪些軟件包需要重新安裝哪些需要升級,根據(jù)命令按y再回車就可以升級到y(tǒng)um倉庫中最新版本了。
四叹侄、源代碼編譯安裝
使用yum或者rpm安裝很高效與便捷巩搏,這也是yum、rpm包管理工具被用戶廣泛使用的原因趾代。但是很多時候最新版本的軟件還沒有被yum倉庫收錄贯底,我們想使用最新版本的軟件可以通過源代碼編譯安裝
我們以安裝opentesty為例,使用源碼編譯的方式進行安裝:
第一步:下載應用程序源代碼
wget https://openresty.org/download/openresty-1.15.8.1.tar.gz
第二步:解壓縮gzip文件
tar zxf openresty-1.15.8.1.tar.gz
第三步:進入源碼目錄
cd openresty-1.15.8.1
第四步:配置源碼環(huán)境
由于當前的系統(tǒng)環(huán)境以及預先設置在源碼中了撒强,但是沒有真正的和我們系統(tǒng)環(huán)境進行匹配禽捆,所以我們使用./config
去自動配置一下我們內(nèi)核的版本、編譯器匹配飘哨,再使用--prefix
參數(shù)來指定應用程序安裝位置胚想,如果不指定安裝位置的話,刪除軟件的時候就會很不方便芽隆;
./configure --prefix=/usr/local/openresty
如果執(zhí)行命令時出現(xiàn)報錯:/usr/bin/env: perl: No such file or directory
原因:未安裝gcc編譯環(huán)境導致
解決辦法:安裝gcc浊服、gcc-c++、perl
yum -y install gcc gcc-c++ perl make kernel-headers kernel-devel
安裝完成后如果繼續(xù)報錯:
原因:缺少PCRE庫
解決辦法:我們再安裝一下PCRE庫
yum install pcre-devel
安裝完成后胚吁,我們繼續(xù)在當前目錄進行./config
配置操作
這是發(fā)現(xiàn)又報錯了:
原因:缺少OpenSSL庫
解決方法:安裝OpenSSL庫
yum install openssl-devel
一般devel表示該模塊的開發(fā)包
安裝完成后牙躺,我們繼續(xù)在當前目錄進行./config
配置操作
經(jīng)過一番折騰,我們的./config終于配置通過了
第五步:編譯源碼
將源代碼編譯為可執(zhí)行程序腕扶,使用-j2
參數(shù)孽拷,意味著我們使用兩個邏輯內(nèi)核來編譯源碼,再一定程度上加快編譯速度
make -j2
實際上我們上一步配置完成后半抱,系統(tǒng)提示我們使用gmake來進行編譯脓恕,gmake與make都可以達到同樣的編譯操作目的
我們可以參照它的需求來使用命令,同樣可以加上
j2
參數(shù):
gmake -j2
第六步:安裝
執(zhí)行完編譯操作后代虾,我們查看一下源代碼目錄
我們編譯好的應用文件进肯、配置文件、依賴的模塊就會出現(xiàn)在build目錄中棉磨,這時候我們將編譯好的程序安裝到指定目錄(指定目錄我們在配置那一步已經(jīng)申明好了)
make install
安裝完成后江掩,openresty就會安裝到/usr/local/openresty
目錄下:
以上,我們就完成了如何通過源代碼編譯來進行安裝我們的軟件乘瓤。
五环形、內(nèi)核升級
升級Linux內(nèi)核有兩種方式:
- 使用包管理器進行安裝;
- 使用源代碼編譯方式進行安裝衙傀;
1. 使用包管理器安裝內(nèi)核
第一步:查看內(nèi)核版本
使用命令:
uname -r
第二步:升級內(nèi)核版本
直接使用命令:
yum install kernel
系統(tǒng)會返回yum倉庫中抬吟,適合當前架構(gòu)的最新內(nèi)核版本,
如果我們不想安裝最新版本统抬,我們想安裝指定版本則使用命令:
yum install kernel-3.10.0
安裝指定版本3.10.0的內(nèi)核火本。
第三步:升級已經(jīng)安裝的其它軟件包和補丁
yum update
有時候yum倉庫沒有最新的軟件危队,我們還可以切換epel倉庫進行安裝,通過yum install epel-release
來安裝使用epel倉庫钙畔,可以通過epel倉庫來擴展yum倉庫里的文件茫陆,一些常用的軟件都可以通過eple倉庫來進行安裝;
2.源代碼編譯安裝內(nèi)核
第一步:安裝依賴包
安裝的時候報錯擎析,就新增一個包簿盅,所需要的包全部列在這
yum install gcc gcc-c++ make ncurses-devel openssl-devel elfutils-libelf-devel
第二步:下載并解壓縮內(nèi)核
(https://www.kernel.org)下載最新穩(wěn)定版本的內(nèi)核,內(nèi)核版本在2.6以前揍魂,版本編號劃分主版本桨醋、次版本(偶數(shù)代表穩(wěn)定版,奇數(shù)代表不穩(wěn)定版)现斋、末版本喜最,之后就沒有這種劃分了。
我們選擇5.7.2版本下載步责,然后進行解壓縮
wget https://cdn.kernel.org/pub/linux/kernel/v5.x/linux-5.7.2.tar.xz
tar xvf linux-5.7.2.tar.xz -C /usr/src/kernels
第三步:配置內(nèi)核編譯參數(shù)
cd /usr/src/kernels/linux-5.7.2/
make menuconfig | allyesconfig | allnoconfig
menuconfig表示:圖形化菜單選擇配置
allyesconfig表示:只有系統(tǒng)有的功能全部都配置上
allnoconfig表示:只要最小的內(nèi)核返顺,什么功能都不要帶,連啟動都啟動不了
第四步:使用當前系統(tǒng)內(nèi)核配置
cp /boot/config-kernelversion.platform /usr/src/kernels/linux-5.7.2/.config
將當前系統(tǒng)以及有的內(nèi)核配置復制到待安裝的內(nèi)核目錄中并重命名為.config
蔓肯,這樣就會減少配置的復雜的
第五步:編譯
我們可以使用lscpu
命令查看當前CPU的信息遂鹊,CPU的個數(shù):
使用命令:
make -j4 all
對所有的選項進行編譯
第六步:安裝內(nèi)核
make modules_install
make install
先安裝內(nèi)核所支持的模塊,然后在把內(nèi)核自己安裝過去蔗包,然后再自動修改啟動的配置文件秉扑,安裝完成后使用命令reboot讓系統(tǒng)進行重啟,并進入引導grub界面调限,選中最新的內(nèi)核版本進入系統(tǒng)舟陆。
以上,我們使用源碼編譯安裝內(nèi)核就完成了~
·