Linux軟體安裝

来源:http://www.cnblogs.com/xiaohuochai/archive/2017/10/07/7635185.html
-Advertisement-
Play Games

[1]分類 [2]RPM [3]RPM安裝 [4]查詢與校驗 [5]YUM [6]源碼包安裝 [7]腳本安裝 [8]Nodejs安裝 ...


前面的話

  window裡面的軟體無法在linux中安裝,好處是windows中絕大多數的木馬、病毒對Linux沒有影響,壞處是軟體需要針對linux再次開發。本文將詳細介紹Linux軟體安裝

 

分類

【1】源碼包

  源碼包的優點:

  1、開源,如果有足夠的能力,可以修改源代碼;

  2、可以自由選擇所需的功能

  3、軟體是編譯安裝,所以更加適合自己的系統,更加穩定、效率更高;

  4、卸載方便;

  源碼包的缺點:

  1、安裝過程步驟較多,尤其安裝較大的軟體集合時(如LAMP環境搭建),容易出現拼寫錯誤

  2、編譯過程時間較長,安裝比二進位安裝時間長

  3、因為是編譯安裝,安裝過程中一旦報錯新手很難解決

【2】二進位包(RPM包、系統預設包)

  二進位包是指源碼包經過編譯之後的包,也就是常說的RPM包

  二進位包的優點:

  1、包管理系統簡單,只通過幾個命令就可以實現包的安裝、升級、查詢和卸載

  2、安裝速度比源碼包快很多

  二進位包的缺點:

  1、經過編譯,不能再看到源代碼

  2、功能選擇不如源碼包靈活

  3、依賴性

【3】腳本安裝包

  所謂的腳本安裝包,就是把複雜的軟體包安裝過程寫成了程式腳本,初學者可以執行程式腳本實現一鍵安裝。但實際安裝的還是源碼包或二進位包

  優點:安裝簡單、快捷

  缺點:完全喪失了自定義性

 

RPM

  所有RPM包都在系統光碟的Packages目錄中

mkdir /mnt/cdrom/
mount /dev/sr0  /mnt/cdrom/
cd /mnt/cdrom/Packages/

【命名規則】

httpd-2.2.15-15.el6.centsos.1.i686.rpm

  httpd 軟體包名

  2.2.15 軟體版本

  15 發佈的次數

  el6.centos 適合的Linux平臺

  i686 適應的硬體平臺

  rpm 包擴展名

【依賴性】

  1、樹形依賴:a->b->c 解決方法:從後往前安裝

  2、環形依賴:a->b->c->a 解決方法:放在一條命令中安裝即可

  3、模塊依賴:庫文件依賴,庫也叫模塊,就是linux中的函數,它有一個典型的特征,就是以【.so.數字】結尾,它依賴的其實是一個文件,而不是軟體包。該文件藏身在某一個軟體包當中。只要將該文件所在的軟體包安裝上,該文件也就安裝了。解決方法:登錄www.rpmfind.net網站,輸入庫文件名稱查詢到對應的rpm包,然後安裝即可

  

RPM安裝

【包名】

  包全名:操作的包是沒有安裝的軟體包時,要使用包全名,且要註意路徑

  包名:操作已經安裝的軟體包時,使用包名,是搜索/var/lib/rpm/中的資料庫

  比如,httpd-2.2.15-15.el6.centsos.1.i686.rpm是包全名,而httpd是包名

【安裝命令】

rpm -ivh 包全名
選項:
    -i(install) 安裝
    -v(verbose) 顯示詳細信息
    -h(hash) 顯示進度
    --nodeps 不檢測依賴性

【升級命令】

rpm -Uvh 包全名
選項:
    -U(upgrade) 升級

【卸載命令】

  [註意]卸載命令使用的是包名,而且不一定要在安裝目錄下

rpm -e 包名
選項:
    -e(erase) 卸載
    --nodeps 不檢查依賴性

 

查詢與檢驗

【查詢是否安裝】

rpm -q 包名
#查詢包是否安裝
  -q  查詢(query)

rpm -qa
#查詢所有已經安裝的rpm包
  -a  所有(all) 
rpm -qa | grep httpd

【查詢軟體包詳細信息】

rpm -qi 包名
    -i 查詢軟體信息(information) 
    -p 查詢未安裝包(package)

【查詢包中文件安裝位置】

rpm -ql 包名
    -l   列表(list)
    -p   查詢未安裝包信息(package)

  RPM包預設安裝路徑如下

【查詢系統文件屬於哪個RPM包】

rpm -qf 系統文件名
  -f 查詢系統文件屬於哪個軟體包(file)

【查詢軟體包的依賴性】

rpm -qR 包名
    -R 查詢軟體包的依賴性(requires)
    -p 查詢未安裝包信息(package)

【校驗】

rpm -V 已安裝的包名
    -V: 校驗指定RPM包中的文件(verify)

  執行 rpm -V httpd 後,無任何提示,代表該文件沒有被做任何修改。因此,判斷本地的apache與官方給出的是否一致, 從而判斷是否被修改

  修改文件 /etc/httpd/conf/httpd.conf , 在註釋行添加任意內容後, 再次執行rpm -V httpd 後,有如下提示

S.5....T. c /etc/httpd/conf/httpd.conf

  驗證內容中的8個信息的具體內容如下

S : 文件大小是否改變
M : 文件的類型或文件的許可權( rwx )是否被改變
5 : 文件MD5校驗和是否改變( 可以看成文件內容是否改變 )
D : 設備的主從代碼是否改變
L : 文件路徑是否改變
U : 文件的屬主( 所有者 ) 是否改變
G : 文件的屬組是否改變
T : 文件的修改時間是否改變 

【RPM包中的文件提取】

  rpm2cpio表示將rpm包轉換為cpio格式的命令

  cpio是一個標簽工具,它用於創建軟體檔案文件和從檔案文件中提取文件

rpm2cpio 包全名 | cpio -idv .文件絕對路徑
cpio選項 < [文件|設備]
選項
    -i: copy-in模式,還原
    -d:還原時自動新建目錄
    -v:顯示還原過程

 

YUM

  使用yum安裝的好處在於,所有軟體包都在官方伺服器上,當進行yum線上安裝時,可以自動解決依賴性問題

  [註意]redhat的yum線上裝需要付費,centOS不需要

【yum源文件】

  在/etc/yum.repos.d/目錄中,預設有4個yum源文件,其中CentOS-Base.repo是基本yum源文件,如果能上網,那它是預設生效的,而其他的都是預設不生效的

[base]:容器名稱,一定要放在[]中,名字可以隨便起
name:容器說明,名字也是隨便起
mirrorlist:鏡像站點,這個可以註釋掉
baseurl:yum源伺服器的地址,預設是CentOS官方的yum源伺服器。如果覺得慢,可以修改為其他yum源地址
enabled:如果不寫或寫成enable=1則生效,寫成enable=0則不生效。預設最後一個容器不生效,其他容器都生效
gpgcheck:如果是1,則RPM的數字證書生效,0則不生效。一般都要開啟,開啟後安裝時會驗證rpm包是否是官方的,以保證系統安全
gpgkey:數字證書的公鑰文件保存位置,不用修改

  預設系統安裝後,在目錄/etc/pki/rpm-gpg下都會存在數字證書。前面的file://表示文件協議,後面的/etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7是數字證書的位置

【光碟yum源搭建】

  1、掛載光碟

mkdir /mnt/cdrom
#建立掛載點

mount /dev/sr0 /mnt/cdrom
#掛載光碟

  2、使網路yum源失效

  判斷yum源是根據尾碼名repo來實現的,修改尾碼名則可以使該yum源失效

cd/etc/yum.repos.d/
#進入yum源目錄
mv CentOS-Base.repo CentOS-Base.repo.bak
#修改Yum源文件尾碼名,使其失效

  3、使光碟yum源生效

vim CentOS-Media.repo

  baseurl=file:///mnt/cdrom:地址為光碟掛載地址,如果有多餘的光碟掛載點,需要註釋掉不存在或不需要使用的光碟掛載地址

  [註意]註釋的時候,一定要把引號寫在行首,否則不生效

  enabled=1:把enabled=0改為enabled=1,使該yum源配置生效

  4、命令

  yum list:該命令可驗證目前使用的yum源有哪些可用的rpm包

【yum命令】

【查詢】

yun list
#查詢所有可用軟體包列表
yum search 關鍵字
#搜索伺服器上所有和關鍵字相關的包

【安裝】

  yum安裝只寫包名即可

yum -y install 包名
  選項:
  -install 安裝
  -y  (自動回答yes)

【gcc安裝】

  gcc是C語言的編譯器,gdk是java的編譯器,bash是linux命令行的編譯器

yum -y install gcc

【升級】

  如果不寫包名,只寫yum -y update會導致系統直接崩潰

yum -y update 包名
    -update:升級
    -y:自動回答yes

【卸載】

  伺服器使用最小化安裝,用什麼軟體安裝什麼,儘量不要卸載

yum -y remove 包名
    -remove:卸載
    -y:自動回答yes

【組管理命令】

yum grouplist
#列出所有可用的軟體列表

yum groupinstall 軟體組名
#安裝指定軟體組,組名可以由grouplist查詢出來

yum gourpremove 軟體組名
#卸載指定軟體組

  [註意]groupinstall中的軟體組名只支持英文 

【語言設置】

LANG=en_US:切換至英文(臨時生效)
LANG=zh_CN.utf8:切換至中文(臨時生效)

 

源碼包安裝

  源碼包和RPM包在安裝之後,最主要的區別在於安裝位置的不同

  源碼包是不能使用service命令來啟動服務,因為源碼包的安裝位置由用戶指定,放在哪並不統一,一般將其放在“/usr/local/軟體名”目錄下;而rpm包安裝後,啟動文件通常都是放在/etc/rc.d/init.d目錄中的,而service命令執行時,會自動搜索該目錄,所以rpm包安裝的服務可以使用service命令

service httpd start

  因為源碼包安裝的服務不能被伺服器管理命令管理,所以只能使用絕對路徑進行服務的管理

/usr/local/apache2/bin/apachectl start

  當然,如果將源碼包安裝後的啟動程式複製到/etc/rc.d/init.d目錄下,也可以使用service命令執行

【安裝準備】

  1、安裝gcc

  由於源碼包都是c語言寫的,所以要先安裝c語言編譯器:gcc

  2、源碼包下載

  從官方網站下載源碼包,若是下載到了windows上面,可以使用winSCP等軟體傳到linux上

   [註意]若已安裝了二進位包,則源碼包也是可以繼續安裝的,因為兩者安裝目錄不一樣。但是,並不建議這樣做,因為埠會衝突

  對於要求效率的軟體,要安裝源碼包版本,因為是本機編譯,更具有相容性和效率,而rpm包是軟體開發者提供的大眾版本,可用於不註重效率的應用

【註意事項】

  源代碼保存位置:/usr/local/src/

  軟體保存位置: /usr/local/

  如何確定安裝過程報錯:安裝過程停止,並出現error、warning或no的提示

【安裝】

  源碼包的安裝過程和安裝順序是固定的,下麵以安裝apache2為例,解壓縮後的目錄為httpd-2.2.31

  1、安裝時必須進入到解壓縮後的目錄httpd-2.2.31中

  2、configure命令用於軟體配置與檢查(基本上每個源碼包都會有該命令,即使個別的沒有該命令,也會提供相關替代命令)

  它有以下幾點功能:

  a、定義需要的功能選項;

  b、檢測系統環境是否符合安裝要求

  c、把a中定義好的功能選項和b中檢測系統環境的信息都寫入Makefile文件,用於後續的編輯(後續的'make'和'make install'命令都會依賴該文件)

  執行命令 ./configure --prefix=/usr/local/apache2,該命令用於指定安裝位置為:/usr/local/apache2 (其中的'apache2'目錄不需要提前創建,'make install'命令執行時會自動創建)。命令執行後,會在當前目錄生成Makefile文件

  3、執行‘make’命令,編譯源碼(這一步通常比較耗時)

  如果在編譯過程中報錯,則執行make clean命令來清除緩存、臨時文件等,使安裝環境恢復到未安裝狀態

  4、執行make install命令,安裝程式,此時會創建/usr/local/apache2目錄

  若在安裝過程中報錯,則需要刪除/usr/local/apache2目錄,並且執行make clean命令

  

腳本安裝

  所謂的一鍵安裝包,實際上還是安裝的源碼包與RPM包,只是把安裝過程寫成了腳本,便於初學者安裝。優點是簡單、快速、方便。缺點是不能定義安裝軟體的版本,不能定義所需要的軟體功能,源碼包的優勢喪失

  下麵以安裝LNMP(http://lnmp.org/download.html)為例

【準備工作】

  1、先停止之前安裝的apache和mysql服務(最好將源碼包安裝的apache目錄'/usr/local/apache2'也刪除

service apache stop
service httpd stop

  2、保證yum源正常:可以使用"yum list"命令測試。若是光碟yum源,記得掛載光碟

  3、關閉SELinux和防火牆

  a、永久關閉SELinux的方法:編輯文件"/etc/selinux/config",將"SELINUX=enforcing"改為"SELINUX=disabled",然後重啟系統即可

  b、永久關閉防火牆的方法:"chkconfig iptables off",開啟為:"chkconfig iptables on";

  臨時關閉防火牆的方法:"service iptables stop",開啟為:"service iptables start"

【開始安裝】

  1、將lnmp.org網站的一鍵安裝包上傳到伺服器根目錄下

  2、解壓縮安裝包

tar -zxvf lnmp1.4-full.tar.gz

  3、進入安裝目錄

cd lnmp1.4

  4、執行install.sh腳本

./install.sh

【安裝過程】

  運行上述LNMP安裝命令後,會出現如下提示:

  目前提供了較多的MySQL、MariaDB版本和不安裝資料庫的選項,需要註意的是MySQL 5.6,5.7及MariaDB 10必須在1G以上記憶體的更高配置上才能選擇!輸入對應MySQL或MariaDB版本前面的序號,回車進入下一步.

  需要設置MySQL的root密碼(不輸入直接回車將會設置為root)如果輸入有錯誤需要刪除時,可以按住Ctrl再按Backspace鍵進行刪除(個別情況下是只需要Backspace鍵)。輸入後回車進入下一步,如下圖所示:

  詢問是否需要啟用MySQL InnoDB,InnoDB引擎預設為開啟,一般建議開啟,直接回車或輸入 y ,如果確定確實不需要該引擎可以輸入 n,輸入完成,回車進入下一步。註意:選擇PHP7等高版本時需要自行確認是否與自己的程式相容。

  輸入要選擇的PHP版本的序號,回車進入下一步,選擇是否安裝記憶體優化:

  可以選擇不安裝、Jemalloc或TCmalloc,輸入對應序號回車,直接回車為預設為不安裝

  接著,會提示"Press any key to install...or Press Ctrl+c to cancel"後,按回車鍵確認開始安裝。 LNMP腳本就會自動安裝編譯Nginx、MySQL、PHP、phpMyAdmin、Zend Optimizer這幾個軟體。安裝時間可能會幾十分鐘到幾個小時不等,主要是機器的配置網速等原因會造成影響

  界面如下,表示安裝完成

【錯誤處理】

  如果安裝卡在了"php-fpm"那裡,通常表示已安裝成功,只是"php-fpm"那裡卡住了(物理機少見,但虛擬機比較常見),解決的方法就是:使用命令"pkill -9 php-fpm"殺掉"php-fpm"進程,然後重新啟動該進程"/etc/rc.d/init.d/php-fpm start"即可

 

 


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 參考資料:http://docs.oracle.com/database/122/SQLRF/Functions.htm#SQLRF006 Single-row functions return a single result row for every row of a queried table ...
  • 1、預編譯的好處 大家平時都使用過JDBC中的PreparedStatement介面,它有預編譯功能。什麼是預編譯功能呢?它有什麼好處呢? 當客戶發送一條SQL語句給伺服器後,伺服器總是需要校驗SQL語句的語法格式是否正確,然後把SQL語句編譯成可執行的函數,最後才是執行SQL語句。其中校驗語法,和 ...
  • 1》hadoop簡介: Hadoop是一個開發和運行處理大規模數據的軟體平臺,是Apache的一個用java語言實現開源軟體框架,實現在大量電腦組成的集群中對海量數據進行 分散式計算.Hadoop框架中最核心設計就是:HDFS和MapReduce,HDFS提供了海量數據的存儲,MapReduce提 ...
  • 在網上查找刪除重覆數據保留id最小的數據,方法如下: 自己使用的時候顯示報錯: [Err] 1093 - You can't specify target table ‘XXX’ for update in FROM clause 暫時不知道是什麼原因導致的。 然後想辦法分佈操作,首先篩選出有重覆u ...
  • 本文目錄:1.1 httpd命令和apachectl命令1.2 配置文件規則和常見指令 1.2.1 Listen指令 1.2.2 ServerRoot指令 1.2.3 DocumentRoot指令 1.2.4 DirectoryIndex指令 1.2.5 ServerName和ServerAlias ...
  • 前面的話 本文將詳細介紹如何下Linux環境下安裝NodeJS和mongoDB NodeJS 1、在官網下載Linux環境下的NodeJS安裝包 2、通過xftp軟體將安裝包上傳到伺服器 3、解壓縮.tar.xz尾碼的安裝包 4、解壓後,當前目錄下出現node-v8.6.0-linux-x64目錄, ...
  • Tips 原文作者:Víctor López Ferrando 原文地址: "30 interesting commands for the Linux shell" 這些是我收集了多年的Linux shell的30個有趣的命令和提示。 1. 監控命令(每2秒運行一次) 2. 使用一個埠殺死程式 ...
  • 1. 運行環境: OS:CentOS 7.3 / Python: 2.7.3/ Pip: 9.0.1 / Zabbix:3.2.8 / Redis:微軟雲Redis 3.2.7 Zabbix官方提供的監控模板。 項目地址:https://github.com/blacked/zbx_redis_te ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...