【Linux】Linux簡介

慚愧啊!接觸Linux有兩年了吧,到今天,才知道發行版,內核版,才知道Ubuntu,red hat 啥關係,才知道爲什麼之前裝openssl庫走的坑,爲什麼有的用yum命令,有的用apt......

轉載自:https://tutorial.linux.doc.embedfire.com/zh_CN/latest/linux_basis/software_package.html

 

4. Linux系統簡介

Linux系統由Linus Torvalds (林納斯·託瓦茲)於1991年發佈在新聞組的內核發展而來,由於它在發佈之初就免費和自由傳播,支持多用戶、多任務及多線程,且兼容POSIX標準,使得它支持運行當時主流系統Unix的一些工具軟件,吸引了衆多的使用者和開發者,逐漸發展壯大至今。

關於Linux系統的發展歷史,建議閱讀其作者Linus本人的自傳《Just For Fun》一書。

當我們說Linux系統時,其含義往往是指採用Linux內核的操作系統。Linux內核負責控制硬件、管理文件系統、進程管理、網絡通訊等,但它本身並沒有給用戶提供必要的工具和應用軟件。

由於Linux內核本身是開源的,所以一些人和廠商在其規則之下,基於Linux內核搭配各種各樣系統管理軟件或 應用工具軟件,從而組成一套完整可用的操作系統,見下圖。我們稱這樣的系 統爲Linux發行版(distribution)。完整的Linux系統就如同 汽車,Linux內核構成了最爲關鍵的引擎,不同的發行版就類似使用相同引擎的不同車型。

人們製作發行版通常用於特定的用途,構建哲學不一,側重點有所不同,因 而Linux發行版可謂百花齊放。其中以Debian、Suse及Fedora派系的發行版最 爲常見。對於基礎用戶來說,常常會困惑於安裝某些軟件時,軟件的安裝幫助會針 對不同派系的Linux給出不同的安裝指令,這實際是由於不同Linux派系之 間使用不同的包管理軟件(可理解爲使用不同的軟件商店),這無傷大雅。常見的Linux發行版關係見下圖。

4.1.1. Debian派系

Debian派系下主要包含Debian、Ubuntu等發行版。

Debian的特色在於其海量的軟件支持和apt-get軟件包管理系統,而且其支持的硬件 平臺非常全面,包括x86、AMD、MIPS、ARM、POWERPC等。

Ubuntu衍生自Debian,由於其易用性,可以說是最成功的Linux桌 面版,且它的成功已經開始漫延至其服務器版本,目前還推出了Ubuntu Core版本 針對物聯網等小型設備領域,非常有發展前景。本書將採用Ubuntu作爲開發主機的系統環境。

Debian和Ubuntu官網有非常豐富的使用教程,而且中文支持也很好,推 薦初學者多多瀏覽其中的內容,尤其是Debian。

Debian官網:https://www.debian.org

Ubuntu官網:https://ubuntu.com

4.1.2. Fedora派系

Fedora派系下包含Fedora、Red Hat Linux、Red Hat Enterprise(RHEL)、CentOS等發行版。

Red Hat Linux是由Red Hat(紅帽)發行的個人版本Linux,現已停止開發,他們轉而 開發主要應用於服務器領域的Red Hat Enterprise Linux(RHEL),即紅帽企業版Linux。使用RHEL的好處是獲得安全穩定的技術支持以 及企業級的保證,這正是衆多服務器應用場景的核心需求,紅帽公司也正是依靠提供這 些服務成爲了最賺錢的Linux公司。現紅帽公司已被IBM收購。

Fedora發行版是由社區基於RHEL構建的,由Red Hat公司贊助,它大膽採用和驗證最 新的技術,部分經驗證的技術會被加入至RHEL。因而Fedora與RHEL是被互惠互利關係。從另 一個角度看,Fedora也被認爲是RHEL的小白鼠版本。

CentOS全名爲Community Enterprise Operation System,即社區企業操作系統,它由紅帽遵循開源協議公開的RHEL源代碼構建而 成,它們的區別在於CentOS提供免費的長期升級和更新服務,使用CentOS相當於 使用RHEL而不尋求紅帽的技術支持,CentOS在我國的小型服務器領域應用非常廣泛。

4.1.3. Open SUSE派系

SUSE派系下包含SUSE、SUSE Linux Enterprise Server(SLES)、openSUSE等發行版, 它們的關係類似於Fedora, Red Hat Enterprise Linux(RHEL) 和CentOS的關係。相對Red Hat專長x86架構的計算機來說,SUSE在誕生之初就瞄準大型機,所以SUSE在大型服務器領域佔有一席之地。

4.1.4. 麒麟

由於軍政系統對信息安全要求嚴格,我國基於Linux內核構建了中標 麒麟、優麒麟、銀河麒麟等發行版,其特色主要在於自主、風險可控。

 

9. 包管理工具

在windows操作系統中,我們要想安裝某個軟件的時候,只要點開相應的exe文件,一直按”下一步”,最後點”完成”,這樣就可以在我們電腦上使用這個軟件了。前面我們也提到過,Ubuntu提供了一個軟件商店,雖然它也可以提供軟件的下載,並且能夠自動安裝,但是有些軟件並不一定能夠在裏面搜索得到,那隻能以源 碼的方式來安裝軟件。採用這種安裝方式,都需要檢測當前的系統環境,設置編譯的參數,如加入/剔除某個模塊等,這樣的安裝方式就顯得非常的繁瑣。

9.1. 軟件包與包管理工具

目前,大多數類 Unix 操作系統都提供了一種中心化的機制用來搜索和安裝軟件,軟件開發者先在固定的硬件平臺上將需要安裝或升級的軟件編譯好,然後再將軟件的所有相關的文件打包存放在公開的服務器中。用戶想要安裝某個軟件時,通過包的形式進行分發,包提供了操作系統的基本組件,以及共享的庫、應用程序、服務和文檔 ,當用戶需要時,可以運行特定的指令來安裝。負責這部分工作內容的工具被稱爲包管理工具,包管理工具除了安裝軟件外,它還負責更新已經安裝的包。

在Linux操作系統中,最常見的兩種包分別是deb和rpm。

9.1.1. deb包、dpkg及apt

在Debian、Ubuntu等Linux發行版中,通常使用deb(debian)形式的軟件包,如圖 8‑1是Vim軟件的deb安裝包。

softwa002.jpguploading.4e448015.gif轉存失敗重新上傳取消未找到圖片02|

若下載了deb軟件包,可使用如下命令進行安裝,其中xxxx.deb爲要安裝的軟件包的名字:

1
sudo dpkg -i xxxx.deb

命令中的dpkg(Debian Packager)是Debian專門開發的包管理工具,它可以用 來安裝、更新和移除軟件,安裝時它需要使用deb軟件包。

dpkg是一個底層的包管理工具,主要用於對已下載到本地和已經安裝的軟件 包進行管理。在它之上的apt(Advanced Package Tool)包管理工具,其功能 則更加豐富和方便使用,使用apt能夠自動從互聯網的軟件倉庫中搜索、安裝、升級、卸載 軟件,它會諮詢軟件倉庫,並能安裝軟件時的模塊及依賴問題。

如果是使用apt工具安裝某個軟件,直接使用如下命令即可,它會自動下載並安裝軟件:

1
sudo apt-get install 軟件名

概括起來可以這麼理解,deb是軟件包,dpkg是手動安裝工具,apt是自動安裝工具。

9.1.2. rpm包、rpm及yum

類似地,在RedHat,Fedora,Centos等派系的Linux發行版中,通常 使用rpm(RedHat Package Manager)形式的軟件包,下圖是Vim軟件的rpm安裝包。

softwa003.jpguploading.4e448015.gif轉存失敗重新上傳取消未找到圖片03|

若下載了rpm軟件包,可使用如下命令進行安裝,其中xxxx.rpm爲要安裝的軟件包的名字:

1
rpm -ivh xxxx.rpm

命令中的rpm與dpkg的功能類似,同樣是主要用於對已下載到本地和已經安裝 的軟件包進行管理。在它之上yum(Yellow dog Updater, Modified)包管理 工具,功能與apt類似,它會諮詢軟件倉庫,並能安裝軟件時的模塊及依賴問題。

使用yum安裝軟件的命令如下,同樣地,它會自動下載並完成安裝:

1
yum install 軟件名

關於這些軟件包和工具,總結如下表:

表 軟件包和工具

  Debian派系發行版 Redhat派系發行版
軟件包 deb rpm
基礎包管理工具 dpkg rpm
上層包管理工具 apt yum

9.2. apt工具使用

本書使用的Linux發行版是Ubuntu,對應的包管理工具就是apt工具,apt包管 理工具包含了apt-get工具,主要負責軟件包的的安裝、卸載以及更新等事務,除 此之外,還有apt-cache,用於查詢軟件包的相關信息,apt-config,用於配 置所有apt工具。

9.2.1. 安裝與刪除軟件包

1
apt-get install

使用apt-get工具安裝程序的時候,需要你知道應用程序的名字。具體的命令語法:

1
sudo apt-get install 軟件包名

apt-get install會掃描本地存放的軟件包更新列表/var/lib/apt/lists/,找 到最新版本的軟件包,然後檢查軟件包依賴關係,找到支持該軟件正常運行的 所有軟件包,並從鏡像源地址中下載所需的軟件包,最後解壓軟件包,自動完 成應用程序的安裝和配置。

下面帶大家來安裝一個有趣的命令:sl。運行該命令之後,你的終端裏會出 現一輛火車在跑,執行以下命令:

softwa004.jpguploading.4e448015.gif轉存失敗重新上傳取消未找到圖片04|

可以看到終端會輸出很多信息,下面我們把輸出信息拆分成三塊進行講解:

softwa005.jpguploading.4e448015.gif轉存失敗重新上傳取消未找到圖片05|

上圖中的輸出信息,apt-get install正讀取軟件包列表,並且檢查軟件包的依賴關係,並且列出了所有的依賴文件。

softwa006.jpguploading.4e448015.gif轉存失敗重新上傳取消未找到圖片06|

上圖則是apt-get install從鏡 像源http://cn.archive.ubuntu.com/ubuntu中下載所需要的軟件,並且 自動解壓,完成安裝的整個過程。

運行剛剛安裝的軟件,在終端輸入命令:sl,就可以看到下圖的畫面。

softwa007.jpguploading.4e448015.gif轉存失敗重新上傳取消未找到圖片07|

9.2.1.1. apt-get remove

講了如何安裝軟件,自然也要知道如何卸載一個軟件,具體的命令語法如下:

1
sudo apt-get remove 軟件包名

softwa008.jpguploading.4e448015.gif轉存失敗重新上傳取消未找到圖片08|

在執行命令之後,終端會提示是否繼續執行刪除操作,輸入”Y”的話,該軟件 就和你徹底說拜拜了,輸入”n”的話,則會終止當前的刪除操作。

9.2.2. 常用鏡像站

使用apt-get install安裝軟件時,可注意到它是從Ubuntu官方源地址下載的,但Ubuntu默認官 方的軟件倉庫都設置在國外,經常出現軟件包安裝更新緩慢甚至下載超時等異常情況。實 際上,國內有許多第三方軟件倉庫鏡像源,可以從這些國內倉庫安裝軟件工具。

常用的國內鏡像源有:

這些鏡像站通常包含非常豐富的軟件,以清華大學鏡像源的網站爲例,見下圖,在其鏡 像列表中可以找到ubuntu的軟件源,點擊ubuntu右側的”?”,還可以查看到如下的幫助說明。

softwa009.pnguploading.4e448015.gif轉存失敗重新上傳取消未找到圖片09|softwa010.pnguploading.4e448015.gif轉存失敗重新上傳取消未找到圖片10|

點擊鏡像站中的ubuntu鏈接,可以看到如下所示的界面。

softwa011.pnguploading.4e448015.gif轉存失敗重新上傳取消未找到圖片11|

該頁面下的目錄pool就是各種Ubuntu軟件存放的位置,點擊該地址,可以看到如下所示的內容。

softwa012.pnguploading.4e448015.gif轉存失敗重新上傳取消未找到圖片12|

其中有四個目錄,分別是main,multiverse,restricted以及universe四個”倉庫”,它們 主要是依據軟件包是否開源來進行劃分的:

  • main表示完全開源軟件,可以被Ubuntu官方完全支持的軟件。
  • muitiverse表示非開源軟件,不提供任何的支持和補丁。
  • restricted表示 不完全開源的軟件,依然能被Ubuntu官方支持的軟件,但可能不能提供完全的技術支持。
  • universe表示Ubuntu官方不提供支持與補丁,全靠社區支持。

這四個目錄中的軟件都是按照軟件名稱的首字母進行分類,極大地方便了我們搜索某個 軟件,如下所示。不過,當我們使用時,是直接通過apt工具下載的,而不需要自己來到開源鏡像站中查找。

softwa013.jpguploading.4e448015.gif轉存失敗重新上傳取消未找到圖片13|

9.2.3. 修改軟件源(圖形)

在Ubuntu下可直接在”軟件和更新”的配置中修改軟件源,見下圖。

softwa014.pnguploading.4e448015.gif轉存失敗重新上傳取消未找到圖片14|

在彈出的界面選擇”其他站點”->”mirrors.tuna.tsinghua.edu.cn”(清華大學 鏡像源)或”mirrors.aliyun.com”(阿里雲鏡像源)網址,如下圖所示。

softwa015.pnguploading.4e448015.gif轉存失敗重新上傳取消未找到圖片15|softwa016.pnguploading.4e448015.gif轉存失敗重新上傳取消未找到圖片16|

選擇後關閉該窗口它會提示更新源,點擊”重新載入”即可,見下圖。

softwa017.pnguploading.4e448015.gif轉存失敗重新上傳取消未找到圖片17|

9.2.4. 軟件源格式

在後面我們的開發板會提供Debian及Ubuntu的鏡像,但在開發板中修改軟件源 並沒有上述的圖形界面這麼方便,我們通常是使用終端去修改軟件源配置文件 實現的,而且在後期搭建開發環境的時候,也常常需要修改各種配置文件。在本例 子中如果改得不對,還可以通過上面的圖形界面修改回來,所以我們就趁這個機會先熟悉一 下修改配置文件的過程吧。修改配置文件的步驟爲:熟悉配置文件的格式->修改配置文件->更新配置。

我們先來了解軟件源配置文件的格式,在Ubunut下,軟件源的配置是記錄 在文件/etc/apt/sources.list中的,我們可以通過cat命令輸出該文件的內容,查 看自己電腦上的源配置:

1
at /etc/apt/sources.list

softwa018.pnguploading.4e448015.gif轉存失敗重新上傳取消未找到圖片18|

/etc/apt/sources.list文件具有一定的格式如下所示。

官方軟件源(/etc/apt/sources.list節選)

1 deb http://cn.archive.ubuntu.com/ubuntu/ bionic main restricted

2 deb-src http://cn.archive.ubuntu.com/ubuntu/ bionic main restricted

第三方鏡像源(以清華大學鏡像源爲例)

1 deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ bionic main restricted universe multiverse

2 deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ bionic main restricted universe multiverse

我們以清華大學提供的鏡像源爲例,講解一下Ubuntu軟件源的格式。

/etc/apt/sources.list中每一行都代表了一個軟件源,每行的軟件源描述又可以分爲四個部分,見下表。

表 軟件源格式

軟件包格式 鏡像源地址 Ubuntu發行版版本代號 要下載軟件包的類型
deb/deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ bionic main restricted universe multiverse

這四部分的說明如下:

  • 第一部分,軟件包格式。apt工具下載某個格式的軟件包,有deb和deb-src兩種格 式。deb格式就是所要的軟件安裝包,而deb-src則是對應軟件的源代碼。因爲 開源協議,我們在下載某個軟件的同時,也可以下載到某個軟件的源代碼。
  • 第二部分,鏡像源地址, apt工具去什麼地方可以下載到我們所 需要的軟件包。這個地址可不是什麼普通的地址,關於這部分內容後面還會繼續介紹。
  • 第三部分,Ubuntu發行版本的版本代號。在本章開篇處,曾提到 了包管理工具中的軟件都是經過Linux開發者在特定的硬件平臺上編譯成功 之後,發佈出來的。因此,同一個軟件,在不同的平臺上不一定適用,因此,在 下載的時候,千萬不能搞錯版本,張冠李戴。Ubuntu中的每個版本都是由一個形容詞和一個動物名稱組 成,並且形容詞和名詞的首字母都是一致的。如果當前版本的首字母是 D ,下個 版本就要以 E 來起頭。

表 Ubuntu發行版版本代號

版本 版本代號
12.04 Precise Pangolin
14.04 Trusty Tahr
16.04 Xenial Xerus
18.04 Bionic Beaver

上表只列出了Ubuntu的LTS版本。LTS,是長期支持(Long Term Support)的縮寫。Ubuntu 桌面版通常每兩年發佈一個新的LTS版本,本書使用的Ubuntu18.04,對應的版本代號爲Bionic Beaver。

  • 第四部分,選擇要下載的軟件包的類型,前面介紹的main完全開源軟件, restricted不完全開源 的軟件,universe Ubuntu官方不提供支持與補丁的軟件,全靠社區支持。muitiverse非開源軟件。

9.2.5. 修改軟件源(命令行)

下面我們嘗試通過修改/etc/apt/sources.list文件修改軟件源。

建議在修改軟件源前,使用如下複製命令對原文件進行備份:

1
cp /etc/apt/sources.list /etc/apt/sources_bk.list

若修改後使用有問題,使用備份的/etc/apt/sources_bk.list覆蓋原文件後更新即可。

由於修改/etc/apt/sources.list配置文件通常需要管理員權限, 普通用戶在圖形界面直接雙擊打開該文件時,Ubuntu系統自帶的編輯器gedit只有只讀權限,無法修改。可以在終端中使用sudo以管理員的身份運行gedit,並打開/etc/apt/sources.list文件進行修改,命令如下:

1
sudo gedit /etc/apt/sources.list

在後面的系統應用中,我們常常需要修改某些系統配置文件,都可以通過這 種方式使用gedit進行修改,把命令中的文件名改成目標文件即可。

如果系統沒有gedit或者沒有圖形界面,一般直接在終端下使 用Vi/Vim編輯器進行修改,不會使用Vi/Vim的話,請在學習《使用Vim編輯器》的章 節後再進行修改。

把前面鏡像源使用幫助的sources.list文件內容複製替換文件/etc/apt/sources.list的原內容,保存後退出即可。

softwa019.jpguploading.4e448015.gif轉存失敗重新上傳取消未找到圖片19|

9.2.6. 更新軟件源

用戶一旦修改了軟件源配置文件/etc/apt/sources.list,需要運行apt-get update命令來更新軟件源中的所有軟件列表。

1
sudo apt-get update

未找到圖片20|

apt-get update命令會掃描每一個軟件源地址,併爲該軟件源地址所具有軟 件包資源建立索引文件,存放在本地的/var/lib/apt/lists/目錄下。

我們從上圖中,可以看到我們上面添加的中國科技大學的鏡 像源地址,在sources.list文件中選擇只下載main類型的軟件,因此在apt-get update的過程中,也只會去獲取main類型的軟件包。此外,圖中 的amd64是一種64位的電腦處理器架構,又稱”x86-64”或”x64”;i386則是 作爲對Intel(英特爾)32位微處理器的統稱。

softwa021.pnguploading.4e448015.gif轉存失敗重新上傳取消未找到圖片21|

本書的虛擬機使用的64位機器,我們打開上圖選中的文件,該文件主要 記錄了所有適用於am64架構處理器的軟件包。

softwa022.jpeguploading.4e448015.gif轉存失敗重新上傳取消未找到圖片22|

上圖中記錄了gcc-7軟件包的相關信息:

  • Package:記錄了關於軟件的具體名稱;
  • Architecture:該軟件包可以運行的平臺架構,常見的 有amd64,i386。Debian和Ubuntu的Linux發行版也支持armhf架構的處理器。
  • Depends:記錄了該軟件的需要依賴文件,而且還有相應的 版本要求。安裝gcc-7編譯器,需要依賴zlib1g,版本要求高於1:1.1.4。
  • Filename:記錄了該軟件包位於鏡像源的位置,是不是和我們上一節分析的內容一致。
    1. rubric:: apt-cache工具 :name: apt-cache工具

apt-cache是Ubuntu的另一個APT軟件包管理工具。通過apt-cache工具 配合對應的子命令,可以實現查找,顯示軟件包信息及包依賴關係等功能,見下表。

表 apt-cache工具

命令 作用
apt-cache showsrc 軟件包名 顯示軟件包的相關信息,如版本信息,依賴關係等
apt-cache search 軟件包名 按關鍵字查找軟件包
apt-cache depends軟件包名 顯示該軟件包的依賴關係信息
apt-cache rdepends軟件包名 顯示所有依賴於該軟件包的軟件包名字
apt-cache show 軟件包名 顯示指定軟件包的信息,如版本號,依賴關係等.
apt-cache pkgnames 顯示所有軟件包的名字
apt-cache policy 軟件包名 顯示軟件包的安裝狀態

例如,可通過如下命令搜索支持ifconfig命令的軟件包:

1
apt-cache search ifconfig

softwa023.pnguploading.4e448015.gif轉存失敗重新上傳取消未找到圖片23|

APT包管理工具還包括apt-config工具,用於配置所有的APT工具,但是我們 基本上接觸不到。因此,我們只需要重點掌握apt-get工具的用法,對於apt- cache的話,我們只需要大概瞭解即可。實際上,Ubuntu開發團隊也發現了這 個問題,並且給出了有效的解決方法:apt命令。這裏的apt命令和APT包管理 工具是完全不同的兩個東西,請不要混淆了。

9.3. apt與apt-get

前面介紹命令”apt-get install”時,已經爲大家演示瞭如何安裝軟件。下面的實驗 是大多數初學者經常會遇到的情況。現在我們執行下面的命令:

1
vim

終端會告訴你,找不到這個vim命令,並告訴你可以用下面提供命令來安 裝軟件,如下圖所示。Linux的終端往往會輸出一些有利於我們 解決問題的信息。而Windows偶爾會彈出一個對話框來提醒用戶。因 此,在今後的學習中,遇到問題,應該多關注終端的輸出信息,說不定裏面暗含着解決之道。

未找到圖片24|

不知道有沒有細心的讀者發現,此處Linux給出的解決方案是”apt install vim”而 不是”apt-get install vim”。實際上,在Ubuntu 16.04中就引入了 apt 命 令,並且越來越多Linux發行版也開始鼓勵用戶使用apt而不是apt-get。前面 我們提到,apt- cache、apt-config 等命令包含衆多了功能,但對於 Linux 用戶來說可能永 遠都不會使用到。apt 命令出現就是爲了解決上述的問題,它包括了 apt-get 命 令使用最廣泛的功能選項,以及 apt-cache 和 apt-config 命令中很少用到的功能,也就是說apt是集apt- get、apt-cache 和 apt-config 各工具之所長的工具。不僅如此,使用 apt 命 令安裝或刪除程序時,會有進度條顯示當前的進度。

表 apt命令

命令 作用
apt install 軟件包名 安裝指定的軟件包
apt remove 軟件包名 卸載指定的軟件包
apt update 更新軟件源列表
apt search 軟件包名 根據關鍵字搜索對應的軟件包
apt show 軟件包名 顯示軟件包的相關信息
apt list 根據名稱列出所有的軟件包

上表中列出了部分常用的apt命令,可以看到apt命令比APT包管理 工具更加精簡,更能滿足用戶的需求。用通俗一點的話講,就是別人需要三個 工具才能搞定的事情,我只需要一個apt命令,如原來的apt-get install 命令 改成apt install同樣也可以完成軟件的安裝。

我們輸入命令:

1
sudo apt install vim

之後,會提示你輸入密碼,接着便開始下載,安裝軟件 了。軟件安裝完成之後,再執行命令vim,終端就不會再報 錯了,這時候就可以使用我們的Vim編輯軟件,軟件界面如 下圖所示。

softwa025.jpguploading.4e448015.gif轉存失敗重新上傳取消未找到圖片25|

對於沒有用過Vim的用戶,如果你在Vim上嘗試折騰一翻後, 可能會出現各種情 況,如進入到了Vim的編輯模式,輸入了些內容,但不知道如何保存或退出,這些 我們將在《第10章 使用編輯器》章節中介紹,現在我們直接點擊終端右上角的關閉按鈕強制退出即可。

未找到圖片26|

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