淘寶做網(wǎng)站退款河南網(wǎng)絡(luò)推廣公司
淺談Yum 安裝和 源碼安裝
本文所敘述的Linux系統(tǒng)是基于RedHat發(fā)行版的CentOS7
yum安裝
1. 前言
我們知道在Windows上下載的安裝包后綴是
.exe
,與之對應(yīng)的 在 Linux下的安裝包的后綴是.rpm
rpm (Red Hat Package Manager) 是紅帽軟件包管理器
我們在Windows電腦上下載完
.exe
安裝包后,雙擊打開即可安裝,完全不用操心其內(nèi)部配置和代碼的聯(lián)系方式。但是,在Linux下,比如你下載一個mysql5.7 的rpm包,那么當你使用
rpm
命令去安裝的時候,就告訴你這個rpm 還依賴于其他的rpm包,你必須按照順序來一個一個安裝,這樣顯得非常麻煩,且對新手很不友好!
那么,有沒有一種工具,讓我們無需關(guān)心其rpm包之間的依賴,更加方便快捷的安裝某個應(yīng)用呢,答案是肯定的。
這里貼上rpm軟件包管理器的常用命令作為學習和參考
# 一、查詢已安裝的軟件包
$ rpm -q 軟件包名 # 查詢軟件包是否安裝
$ rpm -ql 軟件包名 # 查詢軟件包的文件具體安裝位置
$ rpm -qi 軟件包名 # 查詢軟件包信息# 二、安裝、升級、卸載軟件包$ rpm -ivh 軟件包名 # 安裝軟件包(其中,i表示安裝,v表示顯示安裝過程,h表示顯示安裝進度)
$ rpm -Uvh 軟件包名 # 升級軟件包(U表示升級)
$ rpm -e 軟件包名 # 卸載軟件包
2. 橫空出世
yum就是這樣一個方便快捷的工具,對小白同學非常友好。
它會自己解決rpm包之間的依賴關(guān)系,我們只需要一個簡簡單單的命令即可完成安裝
# 比如我們安裝mysql $ yum -y install mysql
像上面的命令一樣,我們就只提供給我們想要安裝的應(yīng)用名稱,即可完成安裝。
那么可能有人會問了,這個yum 是從哪里找的rpm安裝包呢?安不安全呢?下載速度怎么樣啊?
3. yum 源倉庫
這個非常好理解,這個yum 倉庫里面存放的就是絕大部分rpm安裝包,幾乎是囊括了你所需要的軟件包。
你就跟windows電腦里的軟件管家對比,之前你下載一個微信、QQ啥軟件的,你都要去百度上尋找官網(wǎng)下載
一不小心可能還下載到病毒,但你去本機自帶的軟件管家里下載,起碼保證你方便尋找,安全可靠。
那yum倉庫就跟軟件管家一毛一樣。里面存放了非常之多的rpm包,當你敲了命令后,他就會去這個倉庫里找rpm包
并且自動解決這些包之間的依賴關(guān)系,且您放心,這個倉庫都是有專人在維護的,可靠性、安全性、完整性不需要擔心。
But,But,But 最大的難點就是下載速度比較慢,因為這個倉庫是在國外在維護
訪問下載速度自然也就慢了,如果你可以科學上網(wǎng)
的話,那當我沒說…
當然,解決辦法還是有滴!國內(nèi)也是有這樣的倉庫的,由國內(nèi)知名的大廠在維護,比如阿里云、網(wǎng)易、搜狐等
國內(nèi)開源鏡像站
https://developer.aliyun.com/mirror/
http://mirrors.sohu.com
http://mirrors.163.com
但是哦,我在上面說的是這個倉庫囊括了絕大多數(shù)安裝包,有的沒有的,就需要第三方可信任組織的軟件包
- epel 它提供了眾多centos額外的第三方包
http://mirrors.sohu.com/fedora-epel/7/x86_64/Packages/
https://developer.aliyun.com/mirror/epel/
現(xiàn)在,你有了國內(nèi)的yum 倉庫,你就可以去這個地址下下載啦
老規(guī)矩,附上一份yum 常用命令
$ yum install -y 軟件名 # 安裝軟件
$ yum remove 軟件名 # 卸載軟件
$ yum update 軟件名 # 更新軟件
$ yum update # 更新所有軟件包
$ yum search 軟件名 # 搜索指定軟件
$ yum list # 列出所有軟件包
$ yum list installed # 列出已安裝的所有軟件包
$ yum list available # 列出可用的安裝包
$ yum clean all # 清理下載的緩存,釋放磁盤空間
BUT,又有人可能會問,那yum怎么知道要去這個地址下載軟件呢?
嘿!請往下接著瞧
4. 配置倉庫地址
首先要說明的一點是,yum是分為服務(wù)端和客戶端。
服務(wù)端說白了就是yum 倉庫,提供服務(wù)的
客戶端就是我們個人、企業(yè)的主機,來獲取這些服務(wù)的機器
我們先來看看yum 的客戶端
# 客戶端的配置文件是 /etc/yum.conf 文件 它為所有倉庫提供公共配置 $ vim /etc/yum.conf[main] cachedir=/var/cache/yum/$basearch/$releasever # 注明緩存的文件目錄位置 keepcache=0 # 本地緩存是否保留 0 否 1 是 debuglevel=2 # 調(diào)日志級別 logfile=/var/log/yum.log # 日志文件目錄位置 exactarch=1 # 精確匹配系統(tǒng)平臺(CentOS、Ubantu) obsoletes=1 gpgcheck=1 plugins=1 installonly_limit=5 # 同時安裝幾個軟件包 bugtracker_url=http://bugs.centos.org/set_project.php?project_id=23&ref=http://bugs.centos.org/bug_report_page.php?category=yum distroverpkg=centos-release# This is the default, if you make this bigger yum won't see if the metadata # is newer on the remote and so you'll "gain" the bandwidth of not having to # download the new metadata and "pay" for it by yum not having correct # information. # It is esp. important, to have correct metadata, for distributions like # Fedora which don't keep old packages around. If you don't like this checking # interupting your command line usage, it's much better to have something # manually check the metadata once an hour (yum-updatesd will do this). # metadata_expire=90m# 最后一句話解釋一下,請將你的yum 倉庫配置文件(也就是倉庫地址咯)放在 /etc/yum.repos.d目錄下,要以.repo結(jié)尾才可以 # PUT YOUR REPOS HERE OR IN separate files named file.repo # in /etc/yum.repos.d
# 那我們cd 到該目錄下看看 $ cd /etc/yum.repos.d # 切記,必須將*.repo文件放在這個目錄下,也不能放在它的子目錄下,且只在這個目錄下才可行。
我們來以這個目錄下的
CentOS-Base.repo
文件為例來說明文件內(nèi)容$ vim CentOS-Base.repo# CentOS-Base.repo # # The mirror system uses the connecting IP address of the client and the # update status of each mirror to pick mirrors that are updated to and # geographically close to the client. You should use this for CentOS updates # unless you are manually picking other mirrors. # # If the mirrorlist= does not work for you, as a fall back you can try the # remarked out baseurl= line instead. # #[base] name=CentOS-$releasever - Base -mirrors.sohu.com # 倉庫的名字 failovermethod=priority # roundrobin 隨機挑選 priority 順序讀取 baseurl=http://mirrors.sohu.com/centos/7/os/x86_64/Packages/=http://mirrors.sohu.com/centos/7/updates/x86_64/Packages/ gpgcheck=1 # 是否檢測秘鑰 gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7 # 公鑰存放路徑# 指定rpm包升級的時候,去哪里找 #released updates [updates] name=CentOS-$releasever - Updates mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=updates&infra=$infra #baseurl=http://mirror.centos.org/centos/$releasever/updates/$basearch/ gpgcheck=1 gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7# epel額外包的下載地址 #additional packages that may be useful [extras] name=CentOS-$releasever - Extras mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=extras&infra=$infra #baseurl=http://mirror.centos.org/centos/$releasever/extras/$basearch/ gpgcheck=1 gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7
自己自定義的時候的格式,按照[base]的那個來,其余的updates和 extras都也一樣
我們可以去阿里巴巴的鏡像網(wǎng)站看看如何配置
[阿里巴巴CentOS的[base]的配置源教程](centos鏡像_centos下載地址_centos安裝教程-阿里巴巴開源鏡像站 (aliyun.com))
[阿里巴巴CentOS的[extras]的配置源教程](epel鏡像_epel下載地址_epel安裝教程-阿里巴巴開源鏡像站 (aliyun.com))
源碼安裝
上面的yum 安裝方式有利有弊
利:安裝方便快捷,適合新手,配置相對方便,可以自動解決依賴關(guān)系
弊:不能自定義應(yīng)用、不能指定應(yīng)用的下載版本
源碼安裝利弊
- 利:可以指定下載版本,設(shè)置參數(shù)、指定安裝路徑、擴展第三方功能
- 弊:不適合新手,適合老手,不能自動解決依賴關(guān)系,安裝復(fù)雜、配置相對復(fù)雜
建議方式:yum 和 源碼一起使用,即可解決絕大部分問題
源碼安裝分三步
前提條件:準備好開發(fā)工具以及開發(fā)環(huán)境
- 開發(fā)工具:gcc make 等
- 開發(fā)組件
yum groups install "Development Tools"
yum groups install "Platform Development"
第一步
執(zhí)行腳本 configure 文件
# 1.解壓提前下載好的tar.gz 的源碼包
# 2.cd 到解壓的目錄下
# 3.然后執(zhí)行./configure --prefix=軟件安裝路徑對于C C++ 代碼進行編譯安裝,需要執(zhí)行configure腳本來生成Makefile文件來檢查依賴和外部環(huán)境# 假設(shè)你已經(jīng)下載了nginx-1.12.0.tar.gz壓縮包在/opt目錄下$ cd /opt/
$ tar -zxvf nginx-1.12.0.tar.gz # 解壓
$ cd nginx-1.12.0
$./configure --prefix=/data/nginx_test01 # 指定安裝的目錄到/data/nginx_test01 下
$ ls # 可以看到Makrfile文件
第二步
執(zhí)行make 命令
# make 的作用就是進行源代碼編譯,以及提供一些功能
# 在當前目錄(/opt/nginx-1.12.0)下輸入make指令
$ make
第三步
開始安裝 make install
# 當你執(zhí)行完這條命令后,才會生成/data/nginx_test01這個文件夾
# 還是在當前目錄下,輸入make install命令
$ make install
# 然后這個目錄文件就生成了 /data/nginx_test01
演示啟動玩一下
# 上面已經(jīng)編譯安裝完了nginx,現(xiàn)在我們來啟動它
$ cd /data/nginx_test01
$ ls
$ cd ./sbin # bin目錄是二進制文件可執(zhí)行的目錄
$ ls # 然后可以看見一個nginx可執(zhí)行文件,執(zhí)行它
$ ./nginx# 然后去網(wǎng)頁上訪問IP加端口,看看是否成功# 如果出現(xiàn)403,則需要淺淺的配置一下nginx的配置文件
$ cd /data/nginx_test01/conf
$ vim nginx.conf# user nobody; # 將第一行代碼取消注釋,nobody改成root 以root用戶執(zhí)行
user root;
...
...
# 保存退出# 重啟nginx
$ cd ..
$ ./sbin/nginx -s reload
# 然后就好了
最后一步,將啟動文件地址加入到PATH里,配置全局變量
就不用每次去指定目錄里再去啟動、重啟了
# 我想直接輸入 nginx啟動它,就必須要配置環(huán)境變量
# 那么就可以將 /data/nginx_test01/sbin 寫入環(huán)境變量$ vim /etc/profile.d/nginx.sh
# 寫入這樣一條命令
$ export PATH=/data/nginx_test01/sbin:$PATH
# 保存退出# 重新讀取配置文件
$ source /etc/profile.d/nginx.sh# 然后就可以啟動、重啟、停止nginx服務(wù)了
$ nginx #啟動
$ nginx -s stop #停止
$ nginx -s reload
$ nginx -s restart
感謝自己的記錄和堅持不懈,加油! 今日學習記錄和分享到此結(jié)束! 下次再見!