Linux學習筆記(九)軟件包管理

在Linux系統(tǒng)中有多種包管理器,這里我們學習一下軟件是如何安裝的勾给?包管理器是如何使用的训柴。本節(jié)我們將學習到的內(nèi)容有:


圖片.png

一哑舒、軟件包管理器

包管理器是方便軟件安裝、卸載幻馁,解決軟件依賴關系的重要工具
(1)CentOS洗鸵、Redhat、Fedora使用yum包管理器仗嗦,軟件安裝包格式為rpm
(2)Debian膘滨、Ubuntu使用apt包管理器,軟件安裝包格式為deb

二稀拐、rpm包與rpm命令

1. 讀懂rpm包的名稱
圖片.png
  • 所有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的平臺


    圖片.png
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)以下報錯:


圖片.png

失敗原因:依賴錯誤勾徽,它有一個依賴關系需要我們手動去解決滑凉,安裝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)源辙芍;

圖片.png

方法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)要做服務器的話妄辩,通常要安裝httpdmysql山上、php之類的眼耀;如果我們要做c語言開發(fā)的話,通常就需要安裝cmake佩憾、gcc之類的哮伟,但是一個一個的安裝可能會由于版本問題或者依賴問題導致安裝失敗,這時候yum提供了一種很人性化的安裝方式yum groupinstall <整組軟件包>妄帘,可以幫我們一次性安裝好一整套軟件包楞黄,我們使用命令:

yum grouplist

可以查看系統(tǒng)中有哪些可以使用的軟件包套件:


圖片.png

可以看到軟件套裝有:最小安裝、計算節(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


圖片.png

原因:未安裝gcc編譯環(huán)境導致
解決辦法:安裝gcc浊服、gcc-c++、perl

yum -y install gcc gcc-c++ perl make kernel-headers kernel-devel

安裝完成后如果繼續(xù)報錯:

圖片.png

原因:缺少PCRE庫
解決辦法:我們再安裝一下PCRE庫

yum install pcre-devel

安裝完成后胚吁,我們繼續(xù)在當前目錄進行./config配置操作
這是發(fā)現(xiàn)又報錯了:

圖片.png

原因:缺少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都可以達到同樣的編譯操作目的

圖片.png

我們可以參照它的需求來使用命令,同樣可以加上j2參數(shù):

gmake -j2

第六步:安裝
執(zhí)行完編譯操作后代虾,我們查看一下源代碼目錄

圖片.png

我們編譯好的應用文件进肯、配置文件、依賴的模塊就會出現(xiàn)在build目錄中棉磨,這時候我們將編譯好的程序安裝到指定目錄(指定目錄我們在配置那一步已經(jīng)申明好了)

make install

安裝完成后江掩,openresty就會安裝到/usr/local/openresty目錄下:

圖片.png

以上,我們就完成了如何通過源代碼編譯來進行安裝我們的軟件乘瓤。

五环形、內(nèi)核升級

升級Linux內(nèi)核有兩種方式:

  • 使用包管理器進行安裝;
  • 使用源代碼編譯方式進行安裝衙傀;
1. 使用包管理器安裝內(nèi)核

第一步:查看內(nèi)核版本
使用命令:

uname -r

第二步:升級內(nèi)核版本
直接使用命令:

yum install kernel

系統(tǒng)會返回yum倉庫中抬吟,適合當前架構(gòu)的最新內(nèi)核版本,


圖片.png

如果我們不想安裝最新版本统抬,我們想安裝指定版本則使用命令:

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)定版)现斋、末版本喜最,之后就沒有這種劃分了。

圖片.png

我們選擇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)核就完成了~

·

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末耻矮,一起剝皮案震驚了整個濱河市秦躯,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌裆装,老刑警劉巖踱承,帶你破解...
    沈念sama閱讀 206,839評論 6 482
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異哨免,居然都是意外死亡茎活,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,543評論 2 382
  • 文/潘曉璐 我一進店門琢唾,熙熙樓的掌柜王于貴愁眉苦臉地迎上來载荔,“玉大人,你說我怎么就攤上這事采桃±廖酰” “怎么了丘损?”我有些...
    開封第一講書人閱讀 153,116評論 0 344
  • 文/不壞的土叔 我叫張陵,是天一觀的道長工扎。 經(jīng)常有香客問我号俐,道長,這世上最難降的妖魔是什么定庵? 我笑而不...
    開封第一講書人閱讀 55,371評論 1 279
  • 正文 為了忘掉前任,我火速辦了婚禮踪危,結(jié)果婚禮上蔬浙,老公的妹妹穿的比我還像新娘。我一直安慰自己贞远,他們只是感情好畴博,可當我...
    茶點故事閱讀 64,384評論 5 374
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著蓝仲,像睡著了一般俱病。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上袱结,一...
    開封第一講書人閱讀 49,111評論 1 285
  • 那天亮隙,我揣著相機與錄音,去河邊找鬼垢夹。 笑死溢吻,一個胖子當著我的面吹牛,可吹牛的內(nèi)容都是我干的果元。 我是一名探鬼主播促王,決...
    沈念sama閱讀 38,416評論 3 400
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼而晒!你這毒婦竟也來了蝇狼?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 37,053評論 0 259
  • 序言:老撾萬榮一對情侶失蹤倡怎,失蹤者是張志新(化名)和其女友劉穎迅耘,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體诈胜,經(jīng)...
    沈念sama閱讀 43,558評論 1 300
  • 正文 獨居荒郊野嶺守林人離奇死亡豹障,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,007評論 2 325
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了焦匈。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片血公。...
    茶點故事閱讀 38,117評論 1 334
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖缓熟,靈堂內(nèi)的尸體忽然破棺而出累魔,到底是詐尸還是另有隱情摔笤,我是刑警寧澤,帶...
    沈念sama閱讀 33,756評論 4 324
  • 正文 年R本政府宣布垦写,位于F島的核電站吕世,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏梯投。R本人自食惡果不足惜命辖,卻給世界環(huán)境...
    茶點故事閱讀 39,324評論 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望分蓖。 院中可真熱鬧尔艇,春花似錦、人聲如沸么鹤。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,315評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽蒸甜。三九已至棠耕,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間柠新,已是汗流浹背窍荧。 一陣腳步聲響...
    開封第一講書人閱讀 31,539評論 1 262
  • 我被黑心中介騙來泰國打工渣聚, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留拍顷,地道東北人。 一個月前我還...
    沈念sama閱讀 45,578評論 2 355
  • 正文 我出身青樓幽污,卻偏偏與公主長得像框咙,于是被迫代替她去往敵國和親咕痛。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 42,877評論 2 345