1. 程式人生 > 實用技巧 >Catch That Cow POJ - 3278

Catch That Cow POJ - 3278

Linux軟體管理

目錄

1.RPM基本概述

1.1.什麼是rpm

RPM 全稱 RedHat Package Manager 縮寫,由紅帽開發用於軟體包的安裝、升級、解除安裝與查詢。

1.2.rpm包名組成部分

RPM 包命名以-將軟體分成了若干部分 bash-4.2.46-28.el7.x86_64.rpm

1.3.如何獲取rpm包

在我們剛開始學習 rpm包,建議先從本地映象中獲取 rpm 但實際生產環境中大多數是通過聯網方式獲取 rpm 包,或者搭建企業私有包管理倉庫平臺。

1.4.其他型別的安裝包

Linux 中除了 rpm 格式型別的包,還存在一些其他型別的軟體包。

分類 安裝 版本
rpm包 預先編譯打包,安裝簡單 軟體版本偏低
原始碼包 手動編譯打包,安裝繁瑣 軟體版本隨意
二進位制包 解壓即可使用, 安裝簡單 不能修改原始碼

2.RPM包管理命令

2.1.rpm安裝軟體包

  • -i:安裝軟體包
  • -v:顯示安裝過程
  • -h:顯示安裝進度條

1.使用 rpm 命令安裝本地路徑下軟體包

[[email protected] ~]# rpm -ivh /mnt/Packages/tree-1.6.0-10.el7.x86_64.rpm
[[email protected] ~]# rpm -ivh /mnt/Packages/vsftpd-3.0.2-22.el7.x86_64.rpm

2.使用 rpm 命令安裝網際網路上的軟體包

[[email protected] ~]# rpm -ivh https://mirrors.aliyun.com/zabbix/zabbix/3.0/rhel/7/x86_64/zabbix-agent-3.0.9-1.el7.x86_64.rpm

2.2.rpm依賴包安裝

包依賴是指 A-->依賴-->BB-->依賴-->C而C-->依賴-->A。當我們需要安裝的 rpm 型別包出現了依賴關係應該如何處理,比如安裝 samba 軟體包。

[[email protected] ~]# rpm -ivh /mnt/Packages/samba-4.8.3-4.el7.x86_64.rpm 
		error: Failed dependencies:
		libxattr-tdb-samba4.so()(64bit) is needed by samba-0:4.8.3-4.el7.x86_64
		libxattr-tdb-samba4.so(SAMBA_4.8.3)(64bit) is needed by samba-0:4.8.3-4.el7.x86_64
		samba-common-tools = 4.8.3-4.el7 is needed by samba-0:4.8.3-4.el7.x86_64
		samba-libs = 4.8.3-4.el7 is needed by samba-0:4.8.3-4.el7.x86_64

1.嘗試安裝依賴包 samba-common-tools

[[email protected] ~]# rpm -ivh /mnt/Packages/samba-common-tools-4.8.3-4.el7.x86_64.rpm

2.嘗試安裝依賴包 samba-libs

[[email protected] ~]# rpm -ivh /mnt/Packages/
[[email protected] ~]# rpm -ivh /mnt/Packages/samba-libs-4.8.3-4.el7.x86_64.rpm 

3.嘗試安裝依賴包 samba-common-tools

[[email protected] ~]# rpm -ivh /mnt/Packages/samba-common-tools-4.8.3-4.el7.x86_64.rpm 

4.最後嘗試安裝 samba 主程式包

[[email protected] ~]# rpm -ivh /mnt/Packages/samba-4.8.3-4.el7.x86_64.rpm 

PS: 由於rpm工具安裝rpm包依賴關係太強,所以通常我們都是使用 yum 來解決

2.3.rpm升級軟體包

下載 zabbix-agent 軟體包,分別下載 3.0 低版本、然後下載 4.2 高版來進行測試與實驗。

# wget  https://mirrors.aliyun.com/zabbix/zabbix/3.0/rhel/7/x86_64/zabbix-agent-3.0.9-1.el7.x86_64.rpm
# wget  https://mirrors.aliyun.com/zabbix/zabbix/4.2/rhel/7/x86_64/zabbix-agent-4.2.0-1.el7.x86_64.rpm

1.先安裝 zabbix-agent-3.0 低版本

[[email protected] ~]# rpm -ivh zabbix-agent-3.0.9-1.el7.x86_64.rpm

2.嘗試使用 rpm -ivh 安裝 zabbix-agent-4.2 高版本(會出現報錯)

[[email protected] ~]# rpm -ivh zabbix-agent-4.2.0-1.el7.x86_64.rpm

3.使用 rpm -Uvh 升級 zabbix-agent4.2 版本。(完美解決)

[[email protected] ~]# rpm -Uvh zabbix-agent-4.2.0-1.el7.x86_64.rpm

2.4.rpm解除安裝軟體包

如果需要解除安裝 rpm 包,可以先檢視該包是否存系統中,然後在進行解除安裝操作。

1.使用 rpm -q 查詢軟體包是否存在系統

[[email protected] ~]# rpm -q zsh

2.使用 rpm -e 解除安裝軟體包

[[email protected] ~]# rpm -e zsh

2.5.rpm查詢軟體包

選項 描述
rpm -q 檢視指定軟體包是否安裝
rpm -qa 檢視系統中已安裝的所有RPM軟體包列表
rpm -qi 檢視指定軟體的詳細資訊
rpm -ql 查詢指定軟體包所安裝的目錄、檔案列表
rpm -qc 查詢指定軟體包的配置檔案
rpm -qf 查詢檔案或目錄屬於哪個RPM軟體

1.查詢 vsftpd 這個 rpm 包是否安裝

[[email protected] ~]# rpm -q vsftpd

2.模糊查詢系統已安裝的 rpm

[[email protected] ~]# rpm -qa |grep ftp

3.查詢 vsftpd 軟體包相關資訊

[[email protected] ~]# rpm -qi vsftpd

4.查詢 vsftpd 軟體包所安裝後在系統中生成的檔案路徑

[[email protected] ~]# rpm -ql vsftpd

5.查詢 vsftpd 軟體包的主配置檔案

[[email protected] ~]# rpm -qc vsftpd

6.查詢配置檔案或系統命令是由哪個 rpm 包提供

[[email protected] ~]# rpm -qf /etc/vsftpd/vsftpd.conf
[[email protected] ~]# rpm -qf /usr/sbin/vsftpd

7.查詢未安裝的 rpm 包會產生哪些檔案

[[email protected] ~]# rpm -qlp /mnt/Packages/samba-3.6.23-41.el6.x86_64.rpm

2.6.rpm包管理小結

  • 1.如何查詢 util-linux 軟體包安裝了哪些檔案?
  • 2.如何查詢 mkdir 命令是由哪個 RPM 軟體包安裝的?
  • 3.安裝 .rpm 軟體包時,-i、-U、選項有何區別?

3.YUM基本介紹

3.1.什麼是YUM

yum/dnfRedHatCentOS 系統中的軟體包管理器。它能夠通過網際網路下載 .rpm 格式包進行安裝,並能自動處理其依賴間關係,無須繁瑣地一次次下載安裝。

3.2.什麼是YUM源

要使用 yum 命令工具安裝更新軟體,需要有一個包含各種 rpm 軟體包的倉庫,這個軟體倉庫我們一般稱為 yum 源。當然這個源可以是本地倉庫、也可以是網路倉庫。如圖所示:

client --ftp/http/file-> yum地址 --->yum倉庫(rpm包集合)

3.3.YUM配置檔案

CentOS8 的配置檔案

[root@e84356b681bf etc]# cat /etc/yum.conf
[main]
gpgcheck=1                          # 檢查來源是否合法,需要有製作者的公鑰資訊
installonly_limit=3                 # 同時可以安裝5個軟體包、最小為2,設定為0或者1則不限制
clean_requirements_on_remove=True   # 刪除包時,是否將不再使用的包刪除
best=True                           # 升級時,自動選擇安裝最新版,即使缺少包的依賴
skip_if_unavailable=False

CentOS7 的配置檔案

[[email protected] ~]# vim /etc/yum.cnf
cachedir=/var/cache/yum/$basearch/$releasever   # 快取目錄
keepcache=0                 # 快取軟體包,1啟動 0 關閉
debuglevel=2                # 除錯級別
logfile=/var/log/yum.log    # 日誌記錄位置
exactarch=1                 # 檢查平臺是否相容
obsoletes=1                 # 檢查包是否廢棄
gpgcheck=1                  # 檢查來源是否合法,需要有製作者的公鑰資訊
plugins=1
installonly_limit=5         # 同時可以安裝5個軟體包、最小為2,設定為0或者1則不限制

# metadata_expire=90m   #每小時手動檢查元資料
# in /etc/yum.repos.d   #包含repos.d目錄中的.repo檔案

3.4.配置YUM源示例

系統預設的源是國外提供,需要替換為國內的源

1.配置阿里 yum

[[email protected] ~]# wget -O /etc/yum.repos.d/CentOS-Base.repo \
http://mirrors.aliyun.com/repo/Centos-7.repo

2.配置第三方 yum 源(EPEL)

[[email protected] ~]# wget -O /etc/yum.repos.d/epel.repo \
http://mirrors.aliyun.com/repo/epel-7.repo

3.Nginx官方源,後期在學習 Nginx 時需要使用官方的 yum 源來安裝軟體

[[email protected] ~]# vim /etc/yum.repos.d/nginx.repo
[nginx]
name=nginx repo 
baseurl=http://nginx.org/packages/centos/7/$basearch/ 
gpgcheck=0
enabled=1
  • PS:源超找方式基本一致,Apache,Docker、Nginx、openstack、ELKStack

4.YUM日常操作

4.1.yum查詢軟體包

1.使用 dnf/yum list 查詢所有倉庫中的所有軟體包

[[email protected] ~]# yum list
[[email protected] ~]# yum list|grep ftp

2.使用 dnf/yum list installed 查詢所有已安裝至系統中的軟體包

[[email protected] ~]# dnf list installed

3.使用 dnf/yum provides 查詢系統命令來自於哪個軟體包

[[email protected] ~]# rpm -qf $(which cd)
bash-4.2.46-31.el7.x86_64
# PS: rpm需要知道命令的絕對路徑, 如果不存在該命令是無法查詢到該命令所屬的軟體包
	
[[email protected] ~]# yum provides cd
[[email protected] ~]# yum provides sl

4.2.yum安裝軟體包

1.使用 dnf/yum install 通過倉庫獲取軟體包進行安裝

# 互動,麻煩
[[email protected] ~]# yum install vsftpd

# 非互動
[[email protected] ~]# yum install vsftpd -y

2.使用 dnf/yum localinstall 安裝本地的rpm包,如果rpm包存在依賴,會自動查詢當前系統上已有的倉庫解決依賴關係

[[email protected] ~]# yum install https://mirrors.aliyun.com/centos/7.6.1810/os/x86_64/Packages/samba-4.8.3-4.el7.x86_64.rpm
	
#yum localinstall 直接安裝本的rpm包,會自動查詢當前系統上已有的倉庫解決依賴關係
[[email protected] ~]# yum localinstall  samba-4.8.3-4.el7.x86_64.rpm -y

4.3.yum重灌軟體包

當我們安裝好服務後,如果不小心刪除了服務的配置檔案,此時可以通過重灌的方式修復。

1.首先刪除 vsftpd 配置主檔案

[[email protected] ~]# rpm -qc vsftpd
[[email protected] ~]# rm -f /etc/vsftpd/vsftpd.conf

2.使用 dnf/yum reinstall 對軟體進行重新安裝

[[email protected] ~]# yum reinstall vsftpd

3.檢查 vsftpd 服務配置檔案是否恢復,以及軟體是否能正常使用。

[[email protected] ~]# rpm -qc vsftpd
/etc/logrotate.d/vsftpd
/etc/pam.d/vsftpd
/etc/vsftpd/ftpusers
/etc/vsftpd/user_list
/etc/vsftpd/vsftpd.conf

4.4.yum更新軟體包

#1.對比Linux已安裝的軟體和yum倉庫中的軟體, 有哪些需要升級
[[email protected] ~]# yum check-update

#2.更新acl軟體
[[email protected] ~]#  yum update acl -y

#3.更新整個系統所有的軟體,包括核心 (通常剛裝完系統會進行執行)
[[email protected] ~]#  yum update -y

4.5.yum刪除軟體包

[[email protected] ~]# yum install samba -y
[[email protected] ~]# yum remove samba -y

4.6.yum管理組包

1.使用 dnf/yum groups install 安裝一整個組的軟體

[[email protected] ~]# yum groups list
[[email protected] ~]# yum groups install Development tools \
Compatibility libraries \
Base Debugging Tools

2.使用 dnf/yum groups remove 刪除包組

[[email protected] ~]# yum groups remove  -y Base

4.7.yum管理倉庫

1.列出 dnf/yum repolist 源可用的軟體倉庫

[[email protected] ~]# yum repolist
[[email protected] ~]# yum repolist all  # 檢視所有的倉庫

2.通過 dnf/yum-config-manager 啟用和禁用倉庫

# C7
[[email protected] ~]# yum install https://dev.mysql.com/get/mysql80-community-release-el7-3.noarch.rpm -y

# C8
[[email protected] ~]# yum install https://dev.mysql.com/get/mysql80-community-release-el8-1.noarch.rpm -y

[[email protected] ~]# yum repolist all|grep mysql
[[email protected] ~]# yum-config-manager --disable mysql80-community		# 關閉倉庫
[[email protected] ~]# yum-config-manager --enable mysql80-community		# 啟用倉庫
  • PS: 本質都是在修改 repo 檔案中的 enable引數值 0 不啟用 1 啟用

4.8.yum管理歷史記錄

當我們刪除了某個軟體時,希望撤銷刪除的操作,可以使用 yum history undo

1.刪除 httpd 軟體,然後檢視操作記錄

[[email protected] ~]# yum remove httpd -y
[[email protected] ~]# yum history

2.使用 dnf/yum history undo Number 撤銷

[[email protected] ~]# yum history info N
[[email protected] ~]# yum history undo N

4.9.yum快取軟體包

1.快取rpm包方式一、通過修改 dnf/yum 全域性配置檔案

[[email protected] ~]# vim /etc/yum.conf
[main]
cachedir=/var/cache/yum/$basearch/$releasever
keepcache=1     # 啟動快取
[[email protected] ~]# yum install lrzsz -y
[[email protected] ~]# find /var/cache/yum/ -type f -name "*.rpm"

2.快取rpm包方式二、通過 dnf/yum下載該軟體包至本地,不進行安裝

[[email protected] ~]# yum install httpd -y \
--downloadonly \
--downloaddir=/opt

3.如果快取的資料包太多,可以使用 dnf/yum 清除快取

# 清理所有yum快取資訊,包括快取的軟體包
[[email protected] ~]# yum clean all

#僅清理所有快取的軟體包
[[email protected] ~]# yum clean packages

5.構建YUM倉庫實踐

5.1.搭建本地yum倉庫

很多時候剛安裝的linux系統不能聯網,但需要安裝相應環境的軟體包。這時候我們就可以利用光碟製作一個本地yum倉庫。

1.掛載映象

[[email protected] ~]# mount /dev/cdrom /mnt   

2.備份原有倉庫

[[email protected] ~]# gzip /etc/yum.repos.d/*

3.使用 yum-config-manager 命令可快速新增一個本地倉庫

[[email protected] ~]# yum install yum-utils -y
[[email protected] ~]# yum-config-manager --add-repo="file:///mnt"

4.當然我們也可以直接去編輯一個 .repo檔案,將倉庫資訊儲存至該檔案

[[email protected] ~]# vim /etc/yum.repos.d/cdrom.repo  
# 倉庫名稱
[cdrom]
# 倉庫描述資訊
name=This is local cdrom
# 倉庫url地址 ,可以是file:// ftp:// http:// 等協議
baseurl=file:///mnt
# 是否使用該YUM源(0代表禁用, 1代表啟用)
enabled=1
# 是否驗證軟體簽名(0代表禁用, 1代表啟用)
gpgcheck=0

5.生成快取資訊、然後使用 dnf/yum 安裝軟體測試

[[email protected] ~]# yum makecache
[[email protected] ~]# yum install lrzsz -y

5.2.搭建企業yum倉庫

很多時候不僅僅是一臺機器無法上網,而是很多機器都無法上網,但都有聯網下載軟體的需求,這個時候難道每臺機器都掛在光碟嗎,當然可以,但如果軟體出現了更新又該怎麼辦。所以我們需要構建一個企業級的 yum 倉庫,為多臺客戶端提供服務。

  • 本地光碟提供基礎軟體包: Base
  • yum快取提供常用軟體包: nginx, zabbix, docker

5.2.1.環境準備

系統 IP 角色
centos7 10.0.0.99 yum倉庫服務端
centos7 10.0.0.98 yum倉庫客戶端

5.2.2.服務端操作

1.關閉 iptables 防火牆、與 selinux

[root@yum_server ~]# systemctl stop firewalld
[root@yum_server ~]# setenforce 0

2.安裝 ftp 服務,啟動並加入開機啟動

[root@yum_server ~]# yum -y install vsftpd 
[root@yum_server ~]# systemctl start vsftpd 
[root@yum_server ~]# systemctl enable vsftpd

3.首先提供基礎 base 軟體包

[root@yum_server ~]# mkdir /var/ftp/centos7
[root@yum_server ~]# mount /dev/cdrom /mnt
[root@yum_server ~]# cp -rp  /mnt/Packages/*.rpm /var/ftp/centos7/

4.其次提供第三方源的 rpm 軟體包

[root@yum_server ~]#  cat wget_rpm_scripts.sh
#!/usr/bin/bash

get_zabbix_rpm_url=https://mirrors.aliyun.com/zabbix/zabbix/5.0/rhel/8/x86_64/
rpm_name=$(curl -s ${get_zabbix_rpm_url} | grep "^<a"|awk -F '"' '{print $2}')
rpm_dir=/var/ftp/ops

for name in ${rpm_name}
do
	if [ ! -d ${rpm_dir} ];then
		mkdir -p ${rpm_dir}
	fi
	wget -O ${rpm_dir}/${name}  ${get_zabbix_rpm_url}${name}
done

#安裝 createrepo 並建立生成倉庫
[root@yum_server ~]# yum -y install createrepo
[root@yum_server ~]# createrepo /var/ftp/ops

#PS: 如果此倉庫每次新增軟體則需要重新生成一次

5.2.3.客戶端操作

所有客戶端僅需將 yum 源指向本地服務端,即可使用本地伺服器提供的軟體包。

1.客戶端配置並使用 base 基礎源

[root@yum_client ~]# gzip /etc/yum.repos.d/*
[root@yum_client ~]# vim /etc/yum.repos.d/centos7.repo 
[centos7]
name=centos7_base
baseurl=ftp://10.0.0.99/centos7
gpgcheck=0

2.客戶端配置並使用 ops

[root@yum_client ~]# vim /etc/yum.repos.d/ops.repo 
[ops]
name=local ftpserver
baseurl=ftp://10.0.0.99/ops
gpgcheck=0

6.原始碼包管理實踐

6.1.什麼是原始碼包

原始碼包指的是開發編寫好的程式原始碼,但並沒有將其編譯為一個能正常使用的二進位制工具。

6.2.為什麼需要原始碼包

  • 1.部分軟體官網僅提供原始碼包,需要自行編譯並安裝。
  • 2.部分軟體在新版本有一些特性還沒來得及製作成 rpm 包時,可以自行編譯軟體使用其新特性。

6.3.原始碼包的優缺點

  • 1.可以自行修改原始碼,需要會C
  • 2.可以定製需要的相關功能
  • 3.新版軟體優先更新原始碼
  • 4.缺點:
      1. 相對 rpm安裝軟體的方式會複雜很多。
      1. 標準化實施困難,自動化就無法落地。

6.4.原始碼包如何獲取

常見的軟體包都可以在官網獲取原始碼包,比如 apache、nginx、mysql

  • nginx原始碼包地址:http://nginx.org/en/download.html
  • httpd原始碼包地址:http://httpd.apache.org/download.cgi
  • zabbix原始碼包地址:https://www.zabbix.com/cn/download

6.5.原始碼包如何安裝

將原始碼包編譯為二進位制可執行檔案步驟如下圖,簡稱編譯三步曲:

PS: 此方法不是百分百通用於所有原始碼包,建議拿到原始碼包解壓後,進入到目錄找相關的README幫助文件

6.6.Nginx原始碼包編譯

下面通過編譯 Nginx 軟體來深入瞭解下原始碼包編譯的過程。

1.基礎環境準備

[[email protected] ~]# yum install -y gcc make wget 

2.下載 nginx 原始碼包

[[email protected] ~]# wget http://nginx.org/download/nginx-1.18.0.tar.gz

3.解壓 nginx 原始碼包,並進入相應目錄

[[email protected] ~]# tar xf nginx-1.18.0.tar.gz
[[email protected] ~]# cd nginx-1.18.0

4.配置相關的選項,並生成 Makefile

[[email protected] nginx-1.18.0]# ./configure --prefix=/opt/nginx-1.18.0

5.根據 Makefile 檔案,將軟體編譯為可執行的二進位制程式

[[email protected] nginx-1.18.0]# make

6.將編譯好的二進位制檔案拷貝至對應的目錄

[[email protected] nginx-1.18.0]# make install
  • 原始碼編譯報錯資訊處理
checking for C compiler ... not found ./configure: error: C compiler cc is not found 
# yum -y install gcc gcc-c++ make


./configure: error: the HTTP rewrite module requires the PCRE library.
You can either disable the module by using --without-http_rewrite_module
option, or install the PCRE library into the system, or build the PCRE library
statically from the source with nginx by using --with-pcre=<path> option.
# yum install -y pcre-devel


./configure: error: the HTTP gzip module requires the zlib library.
You can either disable the module by using --without-
http_gzip_module option, or install the zlib library into the
system, or build the zlib library statically from the source with
nginx by using --with-zlib=<path> option. 
# yum -y install zlib-devel


./configure: error: SSL modules require the OpenSSL library.
You can either do not enable the modules, or install the OpenSSL 
library into the system, or build the OpenSSL library statically
from the source with nginx by using --with-openssl=<path> option.
# yum -y install openssl-devel

7.Ubuntu軟體包管理

7.1.CentOS與Ubuntu的關係

  • Centos與Ubuntu區別,如下圖所示:
    • CentOS之前的地位:Fedora穩定版-->釋出-->RHEL穩定版-->釋出-->CentOS
    • CentOS如今的地位:Fedora穩定版-->釋出-->CentOS Stream-->釋出-->RHEL

從 Redhat 收購 CentOS,到 IBM 收購 Redhat,這是最大的一次變化。但同時也是一個機會,讓我們跳出舒適圈,去接觸其他優質穩定的企業級系統了。如 Debian、Ubuntu 等等。

7.2.Centos與Ubuntu的區別

CentOS vs Debian(含 Ubuntu)的區別:

操作內容 CentOS6/CentOS7 Debian/Ubuntu
軟體包字尾 *.rpm *.deb
源配置檔案 /etc/yum.conf /etc/apt/sources.list
網絡卡配置檔案 /etc/sysconfig/network-scripts/ifcfg-eth0 /etc/network/interfaces
建立使用者 預設建立使用者家目錄、直譯器bash 預設不建立使用者家目錄、直譯器為 sh
防火牆規則 預設規則 預設沒有任何規則
許可權 root 或普通使用者 預設普通使用者許可權
SSH 預設允許 root 登陸 預設不允許 root 登陸
selinux /etc/selinux/config 沒有 selinux
更新軟體包列表 yum makecache apt update
安裝軟體 yum install package apt install package
安裝已下載的軟體包 rpm -ivh pkg.rpm dpkg -i pkg.deb
安裝已下載的軟體包 yum localinstall pkg.rpm apt install ./pkg.deb
刪除軟體包 yum remove package apt remove|purge package

7.3.Ubuntu軟體包管理

Debian為軟體包定義的包名稱叫 deb,類似於 rpm 包。對於 deb包的管理方式有 dpkgapt兩種方式

  • dpkg:package manager for Debin,是基於 Debian 系統的包管理器。可以安裝、刪除,但無法解決依賴項
  • apt:advanced Packaging Tool,功能強大的軟體管理工具,類似於 dnf/yum

7.3.1.dpkg包管理

1.使用 dpkg 安裝軟體包

root@ubuntu:~# dpkg -i package.deb

2.使用 dpkg 刪除軟體包

# 不建議、不自動解除安裝依賴它的包
root@ubuntu:~# dpkg -r package.deb

# 刪除包(包括配置檔案)
root@ubuntu:~# dpkg -P package.deb

2.使用 dpkg 檢視軟體包

# 列出當前已安裝的包,類似於rpm -qa
root@ubuntu:~# dpkg -l

# 列出該包中所包含的檔案,類似於rpm -ql
root@ubuntu:~# dpkg -L package

# 檢視檔案所屬哪個包,類似於rpm -qf
root@ubuntu:~#  whereis ping
root@ubuntu:~#  dpkg -S /bin/ping

7.3.2.apt包管理

早起 Ubuntu 使用 apt-get 命令來管理軟體包,在 Ubuntu 16.04 釋出時,引入了新的包管理命令 apt。為什麼要引入 apt 命令呢?
因為早期 Linux 包管理命令都被分散在了 apt-get、apt-cache、apt-config 這三條命令當中。那麼 apt 命令的引入就是為了解決命令過於分散的問題。簡單來說就是:apt = apt-get、apt-cache、apt-config 中最常用命令選項的集合。

apt 命令 apt-get 命令 命令的功能
apt install apt-get install 安裝軟體包
apt remove apt-get remove 移除軟體包
apt purge apt-get purge 移除軟體包及配置檔案
apt update apt-get update 重新整理儲存庫索引
apt upgrade apt-get upgrade 升級所有可升級的軟體包
apt autoremove apt-get autoremove 自動刪除不需要的包
apt full-upgrade apt-get dist-upgrade 在升級軟體包時自動處理依賴關係
apt search apt-cache search 搜尋應用程式
apt show apt-cache show 顯示安裝細節

7.3.3.apt使用示例

1.配置 ubuntu 國內映象倉庫源

# 配置阿里雲倉庫指南
https://developer.aliyun.com/mirror/ubuntu?spm=a2c6h.13651102.0.0.3e221b11fQi6Sh

# /etc/apt/sources.list       (xenial 版本、universe 軟體包儲存的分類)
# deb http://mirrors.aliyun.com/ubuntu/ xenial universe

2.使用 apt 命令安裝軟體

root@ubuntu:~# apt search desktop
root@ubuntu:~# apt install xubuntu-desktop -y
root@ubuntu:~# apt install samba vsftpd apache2 -y

3.使用 apt 解除安裝軟體

# 並不會移除配置檔案
root@ubuntu:~# apt remove vsftpd -y

# 清理所有與vsftpd相關的配置
root@ubuntu:~# apt purge vsftpd -y