linux-8. 軟件包管理和服務管理

一、Red Hat 系列

Redhat、Centos、Fedora等

1. 手動安裝

1.1 rpm命令管理

  1. RPM包命令原則

    httpd-2.2.15-15.el6.centos.1.i686.rpm
    httpd:		軟件包名
    2.2.15:	軟件版本
    15:		軟件發佈的次數
    el6.centos:	適合的Linux平臺
    i686:		適合的硬件平臺
    rpm:		rmp包擴展名
    
  2. RPM包依賴性

    • 樹形依賴:a->b->c
    • 環形依賴:a->b->c->a
    • 模塊依賴:模塊依賴(以.so.數字 結尾的文件)查詢網站:www.rpmfind.net
  3. 常用命令

    # 1. RPM包安裝
    rpm -ivh 包名
    # -i (install): 安裝
    # -v (verbose): 顯示安裝信息
    # -h (hash): 	顯示進度
    # --nodeps: 	不檢測依賴性 
    rpm -ivh mysql-connector-odbc-5.1.1r1144-7.el6.i686.rpm
    
    # 2. RPM包升級
    rmp -Uvh 包名
    # -U:	升級
    rpm -Uvh mysql-connector-odbc-5.1.1r1144-7.el6.i686.rpm
    
    # 3. 卸載
    rmp -e 包名
    # -e (erase): 	卸載
    # --nodeps:		不檢查依賴性
    rmp -e httpd
    
    # 4. 查詢包是否安裝
    rmp -q 包名
    # -q (query): 查詢
    # -a (all):所有
    rmp -q httpd
    # 查詢所有已經安裝的rpm包
    rmp -qa
    
    # 5. 查詢軟件包詳細信息
    rmp -qi 包名
    # -i (information):查詢軟件信息
    # -p (package):查詢未安裝包信息
    rmp -qi httpd
    rmp -qp mysql-connector-odbc-5.1.1r1144-7.el6.i686.rpm
    
    # 6. 查詢包中文件安裝位置
    rmp -ql 包名
    # -l (list): 列表
    rmp -ql httpd
    rmp -qpl mysql-connector-odbc-5.1.1r1144-7.el6.i686.rpm
    
    # 7. 查詢系統文件屬於哪個RPM包
    rpm -qf 系統文件名
    # -f (file):查詢系統文件屬於哪個軟件包  
    
    # 8. 查詢軟件包的依賴性
    rmp -qR 包名
    # -R (rquires): 查詢軟件包的依賴性
    rmp -qR httpd
    rmp -qpR mysql-connector-odbc-5.1.1r1144-7.el6.i686.rpm
    

1.2 RPM包校驗

	# 1. RPM包校驗
	rmp -V 已安裝的包名
	# -V (verify): 校驗指定RPM包中的文件
	
	rpm -V httpd
	# 修改一點內容後,再校驗
	vim /etc/httpd/conf/httpd.conf
	rpm -V httpd
	# 結果如下圖:

在這裏插入圖片描述

1. 驗證內容中的8個信息的具體內容如下:
	- S:	文件大小是否改變
	- M:	文件的類型或文件的權限(rwx)是否被改變
	- 5:	文件MD5校驗和是否改變(可以看成文件內容是否改變)
	- D:	設備中的代碼是否改變
	- L:	文件路徑是否改變
	- U:	文件的所有者是否改變
	- G:	文件的所屬組是否改變
	- T:	文件的修改時間是否改變
2. 文件類型
	- c:	配置文件 (config file)
	- d:	普通文檔 (documentation)
	- g: 	ghost file,很少見
	- l:	授權文件 (license file)
	- r:	描述文件 (read me)

1.3 RPM包中文件提取

rpm2cpio 包全名 | cpio -idv .文件絕對路徑
# rpm2cpio: 將rpm包轉換爲cpio格式的命令
# cpio:是一個標準工具,它用於創建軟件檔案文件和從檔案文件中提取文件

cpio 選項 < [文件|設備]
# -i: copy-in模式,還原
# -d: 還原是自動新建目錄
# -v: 顯示還原過程

# eg:
# 查詢ls命令屬於哪個軟件包, 也可以從網卡找屬於哪個包
rpm -qf /bin/ls
# 造成ls命令誤刪除假象
mv /bin/ls /tmp/
# 提取RPM包中ls命令到當前目錄的/bin/ls下,假設當前目錄爲/root
rpm2cpio /mnt/cdrom/Packages/coreutils-8.4-19.el6.i686.rpm | cpio -idv ./bin/ls
# 把ls命令複製到/bin/目錄下,修復文件丟失
cp /root/bin/ls /bin/

2. yum在線自動安裝

2.1 網絡yum源

vim /etc/yum.repos.d/CentOS-Base.repo
# [base]	: 容器名稱,一定要放在[]中,可以隨意取
# name		: 容器說明,可以自己隨便寫
# mirrorlist: 鏡像站點,如果baseurl下載的比較慢,可以選擇下載快的鏡像站點進行下載
# baseurl	: yum源服務器的地址。默認是CentOS官方的yum源服務器,是可以使用的,如果你覺得慢,可以改成
#			  你喜歡的yum源地址
# enabled	: 此容器是否生效,不寫或寫成enabled=1:代表生效;enable=0:代表不生效
# gpgcheck	: 1:代表RPM的數字證書生效,0:不生效
# gpgkey	: 數字證書的公鑰文件保存位置。不用修改

2.2 常用yum命令

# 1. 查詢所有可用軟件包列表
yum list

# 2. 搜索服務器上所有和關鍵字相關的包
yum search 關鍵字

# 3. 安裝
yum -y install 包名
# -y 自動回答yes,如果沒有,安裝的過程會有交互式問答

# 4. 卸載
yum -y remove 包名
# 會卸載依賴包,導致其它軟件不可用, 儘量不要用yum進行卸載

# 5. 添加yum源
sudo yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

# 6. 更新
yum -y update

2.3 CentOS6 中替換yum源
爲什麼要替換yum源?
答:CentOS默認yum源是國外的, 速度無法保證,用起來很不爽,今天我們把默認源換成國內的163源,163是目前國內最好用的源,速度是相當快的,還有一些比較好的源,比如阿里源wget http://mirrors.aliyun.com/repo/Centos-7.repo
以把CentOS7 中的yum源更換成163源

    1. 進入yum源配置文件   cd /etc/yum.repos.d
    2. 備份一下當前的源,以防出錯後可以還原回來mv ./CentOS-Base.repo ./CentOS-Base-repo.bak
    3. 下載網易163的源 wget http://mirrors.163.com/.help/CentOS7-Base-163.repo
    4. 清理一下舊包 yum clean all
    5. 把下載下來文件 CentOS7-Base-163.repo設置成爲默認源 mv CentOS7-Base-163.repo CentOS-Base.repo
    6. 生成緩存即可用163源了 yum makecache

如果不做備份:

1. cd /etc/yum.repos.d
2. wget -O CentOS-Base.repo http://mirrors.163.com/.help/CentOS7-Base-163.repo
或者
curl -o CentOS-Base.repo http://mirrors.163.com/.help/CentOS7-Base-163.repo
4. yum clean all
5. yum makecache

2.4 yum軟件組管理命令

# 1. 列出所有可用的軟件組列表
yum grouplist

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

# 卸載指定軟件組
yum groupremove 軟件組名

2.5 光盤yum源搭建步驟

# 1. 掛載光盤
mount /dev/cdrom /mnt/cdrom

# 2. 讓網絡yum源文件失效
cd /etc/yum.repos.d/
mv CentOS-Base.repo CentOS-Base.repo.bak
mv CentOS-Debuginfo.repo CentOS-Debuginfo.repo.bak
mv CentOS-Vault.repo CentOS-Vault.repo.bak

# 3. 修改光盤yum源文件
vim CentOS-Media.repo
# 內容如下:
[c6-media]
name=CentOS-$releasever - Media
# 主要修改下面一行
baseurl=file:///mnt/cdrom
# 地址爲你自己的光盤掛載地址
#		file:///media/cdrom/
#		file:///media/cdrecorder/
# 註釋這兩個不存在的址
gpgcheck=1
enabled=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-6

2.6 rpm包默認安裝位置

路徑 作用
/etc 配置文件安裝目錄
/usr/bin 可執行文件
/usr/lib 程序所使用的函數庫保存位置
/usr/share/doc 基本的軟件使用手冊保存位置
/usr/share/man 幫助文件保存位置

3. 源碼包安裝

源碼包安裝和RPM包安裝的區別

  1. 安裝位置
    源碼包:安裝在指定的位置當中,一般是/usr/local/軟件名/
    RPM包:安裝的默認的路徑下,看2.5小節

  2. 安裝位置不同帶來的影響

    • RPM包安裝的服務可以使用系統服務管理命令(service)來管理,如RPM包安裝的apache的啓動方法有以下兩種:
      • /etc/rc.d/init.d/httpd start
      • service httpd start
    • 而源碼包安裝的服務則不能被服務管理命令管理,因爲沒有安裝到默認路徑中。所以只能用絕對路徑進行服務的管理,如
      • usr/local/apache2/bin/apachectl start
  3. 源碼包安裝過程
    具體的安裝步驟一般是源碼包中INSTALL文件中有詳細介紹
    以安裝apache爲例
    3.1 安裝

    # 1.安裝準備
    	- 安裝C語言編譯器
    	- 下載源碼包:http://mirror.bit.edu.cn/apache/httpd/
    
    # 2. 安裝注意事項
    	- 源代碼保存位置:`/usr/local/src/`
    	- 軟件安裝位置:`/usr/local/`
    
    # 3. 解壓縮下載的源碼包
    
    # 4. 進入縮目錄
    
    # 5. ./configure 軟件配置與檢查
    	- 定義需要的功能選項
    	- 檢測系統環境是否符合安裝要求
    	- 把定義好的功能選項和檢測系統環境的信息都寫入Makefile文件,用於後續的編譯
    ./configure --prefix=/usr/local/apache2 
    #  --prefix: 自定義安裝路徑
    
    # 6. 編譯: 將源碼包翻譯成二進制,此時生產的都是臨時文件,安裝路徑中還沒有寫入數據
    make
    # 如果此步出錯,可以使用 make clean 來清除make產生的臨時文件
    
    # 7. 安裝: 此時才向安裝路徑中寫入數據
    make install
    

    3.2 卸載
    不需要卸載命令,直接刪除安裝目錄即可。不會遺留任何垃圾文件

    rm -rf /usr/local/apache2 
    

二、Debian系列

2.1 手動安裝

dpkg [選項] 安裝包
dpkg -L +軟件包的名字,可以知道這個軟件包包含了哪些文件

2.2 apt-get在線安裝

  1. apt-get 安裝
    apt-get可以用於運作deb包
  • 安裝: apt-get install
  • 卸載: apt-get remove
  • 更新: apt-get update
  • 僅刪除不再能被下載的包: apt-get autoclean
  • 軟件包下載存放目錄: /var/cache/apt/archives/
  • 刪除安裝包: apt-get cleanaptitude clean
    注:刪除目錄/var/cache/apt/archives//var/cache/apt/archives/partial/下所有包(鎖定包除外)

deb包默認安裝位置

路徑 作用
/etc 配置文件安裝目錄
/usr/bin 可執行文件
/usr/lib 程序所使用的函數庫保存位置
/usr/share/doc 基本的軟件使用手冊保存位置
/usr/share/man 幫助文件保存位置

如:系統中的python2.7
可執行文件位置:/usr/bin/python
自帶的庫位置:/usr/lib/python2.6/dist-packages//usr/lib/python2.7/

pip安裝的法模塊默認放在:usr/local/lib/python2.7/dist-packages~/.local/lib/python2.7/site-packages

2.3 源碼包安裝

同Rea Hat系列的源碼安裝
源碼包安裝路徑:/usr/local/軟件名

三、服務管理

3.1 服務的分類

在這裏插入圖片描述
啓動與自啓動的區別:

  • 服務啓動:就是在當前系統中讓服務運行,並提供功能

  • 服務自啓動:自啓動是指讓服務在系統開機或重啓之後,隨着系統的啓動而自動啓動服務

    # 1.查看服務自啓動狀態,可以看到所有RPM包或DEB包安裝的服務
    chkconfig --list
    
    # 2. 源碼包安裝的服務,一般在/usr/local/下
    
    # 3. 查看某個服務是否已經啓動:
    ps aux | grep 服務名
    netstat -tlun | grep 服務名  
    

3.2 RPM或才DEB包安裝服務的管理

  1. 安裝服務的位置

    路徑 作用
    /etc/init.d 啓動腳本位置
    /etc/sysconfig 初始化環境配置文件位置
    /etc/ 配置文件位置
    /etc/xinetd.conf xinetd配置文件
    /etc/xinetd.d 基於xinetd服務的啓動腳本
    /etc/lib/ 服務產生的數據放在這裏
    /var/log/ 日誌
  2. 獨立服務的啓動

    /etc/init.d/獨立服務名 start|stop|status|restart
    service 獨立服務名 start|stop|status|restart
    
    # 查看所有服務的狀態
    service --status--all
    
  3. 獨立服務的自啓動

    # 三種方式
    # 1. chkconfig [--level 運行級別] [獨立服務名] [on|off]
    chkconfig --level 2345 httpd on
    
    # 2. 修改/etc/rc.d/rc.local文件,加入
    /etc/rc.d/init.d/httpd start
    
    # 3. 使用ntsysv命令管理自啓動(red hat 專有)
    
  4. 基於xinetd服務
    基於xinetd的服務越來越少了,其中telnet就是一個,本節瞭解一下即可。另外在xinetd服務中啓動與自啓動是一個概念,這一點要特別注意。

    # 1. 安裝xinetd與telnet
    yum -y install xinetd
    yum -y install telnet-server
    
    # 2. xinetd服務的啓動
    vim /etc/xinetd.d/telnet
    service telnet
    {
    	flags		=REUSE   	# 標誌爲REUSE,設定TCP/IP socket可重用
    	socket_type	=stream		# 使用TCP協議數據包
    	user		=root		# 啓動服務的用戶爲root
    	wait 		=no			# 允許多個連接同時連接
    	server 		=/usr/sbin/in.telnetd # 服務的啓動程序
    	log_on_failure += USERID # 登陸失敗後,記錄用戶的ID
    	disable		=no 		# no:服務啓動, yes:服務不啓動
    }
    
    # 3. 重啓xinetd服務
    service xinetd restart
    
    # 4. xinetd服務的自啓動, 以下兩種方法
    chkconfig telnet on
    ntsysv # red hat 專有
    

3.3 源碼包安裝服務的管理

# 1. 源碼包安裝服務的啓動與停止
# 	 使用絕對路徑,調用啓動腳本來啓動。不同的源碼包的啓動腳本不同。可以查看
#    源碼包的安裝說明,查看啓動腳本的方法
/usr/local/apache2/bin/apachectl start|stop

# 2. 源碼包服務的自啓動
vim /etc/rc.d/rc.local
# 加入以下內容
/usr/local/apache2/bin/apachectl start

# 3. 讓源碼包服務被服務管理命令識別
# 3.1 讓源碼包的apache服務能被service命令管理啓動
ln -s /usr/local/apache2/bin/apachectl /etc/init.d/apache
# 3.2 讓源碼包的apache服務能被chkconfig與ntsysv命令管理自啓動
vim /etc/init.d/apache
# chkconfig:35 86 76
# 指定httpd腳本可以被chkconfig命令管理。格式是:
# chkconfig:運行級別 啓動順序 關閉順序
# description:source package apache
# 說明,內容隨意

# 4. 將apache添加至chkconfig命令管理中
chkconfig --add apache
# 查看是否添加成功
chkconfig --list | grep apache

/etc/init.d/apache 文件內容如下:在這裏插入圖片描述

其他下載命令wget和curl

  1. 下載單個文件
    wget http://mirrors.aliyun.com/repo/Centos-7.repo

  2. 使用 wget -O 下載並以不同的文件名保存
    參數-O來指定一個文件名
    wget -O wordpress.tar.gz http://cn.wordpress.org/wordpress-4.9.4-zh_CN.tar.gz

  3. 使用 wget -c 斷點續傳
    使用wget -c重新啓動下載中斷的文件:
    對於我們下載大文件時突然由於網絡等原因中斷非常有幫助,我們可以繼續接着下載而不是重新下載一個文件
    wget -c http://mirrors.aliyun.com/repo/Centos-7.repo
    4、使用 wget -b 後臺下載
    對於下載非常大的文件的時候,我們可以使用參數-b進行後臺下載
    wget -b http://mirrors.aliyun.com/repo/Centos-7.repo
    你可以使用以下命令來察看下載進度
    tail -f wget-log

  4. 使用 wget –mirror 鏡像網站

  5. 使用 wget -i 下載多個文件

# 1 首先,保存一份下載鏈接文件 
cat > filelist.txt 
url1 
url2 
url3 
url4 
# 2. 接着使用這個文件和參數-i下載  
wget -i filelist.txt

wget不是安裝方式,它是一種下載工具,類似於迅雷。
通過HTTP、HTTPS、FTP三個最常見的TCP/IP協議下載,並可以使用HTTP代理,名字是World Wide Web”與“get”的結合。如果要下載一個軟件,可以直接運行:
wget 下載地址
如果當前ubuntu未安裝wget,可按下列操作進行安裝和檢查是否安裝成功:
sudo apt-get update
sudo apt-get install wget
wget --version

發佈了140 篇原創文章 · 獲贊 44 · 訪問量 12萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章