第十章 Linux軟件包

第十章 Linux軟件包

軟件運行環境

軟件運行和編譯

  • ABI:Application Binary Interface

    • Windows與Linux不兼容

      ​ 1.ELF(Executable and Linkable Format)

      ​ 2.PE(Portable Executable)

    • 庫級別的虛擬化:

      1.Linux:WINE
      2.Windows:Cygwin
      
  • API:Application Programming Interface

    ​ POSIX:Portable OS

  • 程序源代碼–> 預處理–>編譯–>彙編–>鏈接

    ​ 靜態編譯:.a

    ​ 動態編譯:.so

靜態和動態鏈接

  • 鏈接主要作用是把各個模塊之間相互引用的部分處理好,使得各個模塊之間能夠正確的銜接,分爲靜態鏈接和動態鏈接
  • 靜態鏈接
    • 把程序對應的依賴庫複製一份到bao
    • libxxx.a
    • 嵌入程序包
    • 升級難,需要重新編譯
    • 佔用較多的空間,遷移容易
  • 動態鏈接
    • 只把依賴加做一個動態鏈接
    • libxxx.so
    • 連接指向
    • 佔用較少空間,升級方便

在這裏插入圖片描述

軟件包基礎

包和包管理器

  • 最初只有.tar.gz的打包的源碼文件,用戶必須編譯每個他想在GNU/Linux上運行的軟件。用戶們急需系統提供一種方法來管理這些安裝在機器上的軟件,當Debian誕生時,這樣一個管理工具也就應運而生,它被命名爲dpkg。從而著名的“package”概念第一次出現在GNU/Linux系統中,稍後Red Hat纔開發自己的“rpm”包管理器系統
  • 包的組成:
    • 二進制文件、庫文件、配置文件、幫助文件
  • 程序包管理器:
    • debian:deb文件,dpkg包管理器
    • redhat:rpm文件,rpm包管理器
      • rpm:Redhat Package Manager

包命名

  • 源代碼:name-VERSION.tar.gz|bz2|xz
    • VERSION:major.minor.release
  • rpm包命名方式:
    • name-VERSION-release.arch.rpm
    • 例:bash-4.2.46-19.el7.x86_64.rpm
    • VERSION:major.minor.release
    • release:release.OS
    • 常見的arch:
      • x86:i386,i486,i586,i686
      • x86_64:x64,x86_64,amd64
    • powerpc:ppc
    • 跟平臺無關:noarch

包命名和工具

  • 包:分類和拆包
    • Application-VERSION-ARCH.rpm:主包
    • Application-devel-VERSION-ARCH.rpm:開發子包
    • Application-utils-VERSION-ARHC.rpm:其它子包
    • Application-libs-VERSION-ARHC.rpm:其它子包
  • 包之間:可能存在依賴關係,甚至循環依賴
  • 解決依賴包管理工具:
    • yum:rpm包管理器的前端工具
    • apt:deb包管理器前端工具
    • zypper:suse上的rpm前端管理工具
    • dnf:Fedora 18 + rpm包管理前端管理工具

庫文件

  • 查看二進制程序所依賴的庫文件
    • ldd /PATH/TO/BINARY_FILE
    例:
      [root@centOS7: ~]#whereis ls
      ls: /usr/bin/ls /usr/share/man/man1/ls.1.gz
      [root@centOS7: ~]#ldd /usr/bin/ls
      		linux-vdso.so.1 =>  (0x00007ffeb33c5000)
      		libselinux.so.1 => /lib64/libselinux.so.1 (0x00007f76b97cf000)
      		libcap.so.2 => /lib64/libcap.so.2 (0x00007f76b95ca000)
      		libacl.so.1 => /lib64/libacl.so.1 (0x00007f76b93c1000)
      		libc.so.6 => /lib64/libc.so.6 (0x00007f76b8ff4000)
      		libpcre.so.1 => /lib64/libpcre.so.1 (0x00007f76b8d92000)
      		libdl.so.2 => /lib64/libdl.so.2 (0x00007f76b8b8e000)
      		/lib64/ld-linux-x86-64.so.2 (0x00007f76b99f6000)
      		libattr.so.1 => /lib64/libattr.so.1 (0x00007f76b8989000)
      		libpthread.so.0 => /lib64/libpthread.so.0 (0x00007f76b876d000)
    
  • 管理及查看本機轉載的庫文件
    • ldconfig 加載配置文件中指定的庫文件
    • /sbin/ldconfig -p 顯示本機已經緩存的所有可用庫文件名及文件路徑映射關係
    • 配置文件:/etc/ld.so.conf,/etc/ld.so.conf.d/*.conf
    • 緩存文件:/etc/ld.so.cache

包管理器

  • 程序包管理器:

    功能:將編譯好的應用程序的各組成文件打包一個或幾個程序包文件,從而方便地實現程序包地安裝、卸載、查詢、升級和校驗等管理操作

  • 包文件組成(每個包獨有)

    RPM包內地文件

    RPM的元數據,如名稱,版本,依賴性,描述等

    安裝或卸載時運行的腳本

  • 數據庫(公共):/var/lib/rpm

    • 程序暴名稱及版本

    • 依賴關係

    • 功能說明

    • 包安裝後生成的各文件路徑及校驗碼信息

程序包的來源

  • 管理程序包的方式:

    使用包管理器:rpm

    使用前端工具:yum,dnf

  • 獲取程序包的途徑:

    (1)系統發版的光盤或官方的服務器

    ​ CentOS鏡像:

    ​ https://www.centos.org/download/

    ​ http://mirrors.aliyun.com

    ​ http://mirrors.sohu.com

    ​ http://mirrors.163.com

    (2)項目官方站點

    (3)第三方組織:

    ​ Fedora-EPEL : Extra Packages for Enterprise Linux

    ​ Rpmforge:RHEL推薦,包很全

    ​ 搜索引擎:

    ​ http://pkgs.org

    ​ http://pkgs.org

    ​ http://pkgs.org

    ​ https://sourceforge.net/

    (4)自己製作

    注意:第三方包建議要檢查其合法性,來源合法性程序包的完整性

rpm包管理

  • CentOS系統上使用rpm命令管理程序包:

    安裝、卸載、升級、查詢、校驗、數據庫維護

    • 安裝:rpm {i|–install} [install-options] PACKAGE_ FILE…

      -v: verbose詳細

      -vv: 更加具體

      -h:以#顯示程序包管理執行進度

      rpm -ivh PACKAGE_ FILE

rpm包安裝

[install-options]

​ --test:測試安裝,但不真正執行安裝,即dry run模式

​ --nodeps:忽略依賴關係

​ --replacepkgs|replacefiles:覆蓋安裝

​ --nosignature:不檢查來源合法性

​ --nodigest:不檢查包完整性

​ --noscripts:不執行程序包腳本

​ %pre:安裝前腳本 --nopre

​ %post:安裝後腳本 --nopost

​ %preun:卸載前腳本 --nopreun

​ %postun:卸載後腳本 --nopostun

rpm包升級

  • 升級:
  • rpm {-U|-upgrade}[install-options] PACKAGE_FILE…
  • rpm {-F|–freshen} [install-options] PACKAGE_FILE…
    • upgrade:安裝有舊版程序包,則“升級”,如果不存在舊版程序包,則“安裝”
    • freshen:安裝有舊版程序包,則“升級”,如果不存在舊版程序包,則不執行升級操作
    • rpm -Uvh PACKAGE_FILE…
    • rpm -Fvh PACKAGE_FILE…
    • –oldpackage:降級
    • –force:強制安裝

包查詢

  • rpm {-q|–query}[select-options] [query-options]

  • [select-options]

    • -a:所有包
    • -f:查看指定的文件由那個程序包安裝生成
    • -p rpmfile:針對尚未安裝的程序包文件做查詢操作
    • –whatprovides CAPABILITY:查詢指定的CAPABILITY由哪個包所提供
    • –whatrequires CAPABILITY:查詢指定的CAPABILITY被哪個包所依賴
  • rpm2cpio 包文件|cpio -itv 預覽包內文件

  • rpm2cpio 包文件|cpio -id “*.conf” 釋放包內文件

  • [query-options]

    • –changelog:查詢rpm包的changelog
    • -c:查詢程序的配置文件
    • -d:查詢程序的文檔
    • -i:information
    • -l:查看指定的程序包安裝後生成的所有文件
    • –script:程序包自帶的腳本
    • –provides:列出指定程序包所提供的CAPABILITY
    • -R:查詢指定的程序包所依賴的CAPABILITY
  • 常用查詢用法:

    • -qi PACKAGE, -qf FILE,-qc PACKAGE, -ql PACKAGE, -qd PACKAGE, -qpi PACKAGE_FILE, -qpl PACKAGE_FILE,…
  • 包卸載:

    • rpm {-e|–erase} [–allmatches] [–nodeps] [–noscripts] [–notriggers] [–test] PACKAGE_NAME…
    • 當包卸載時,對應的配置文件不會刪除,以FILENAME.rpmsave形式保留

包校驗

  • 包來源的合法性驗證及完整性驗證
    • 完整性驗證:SHA256
    • 來源合法性驗證:RSA
  • 公鑰加密
    • 對稱加密:加密、解密使用同一密鑰
    • 非對稱加密:密鑰是成對的
      • public key:公鑰,公開所有人
      • secret key:私鑰,不能公開
  • 導入所需要的公鑰
    • rpm -K|checksig rpmfile 檢查報的完整性和簽名
    • rpm --import /etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7
    • CentOS 7 發行版光盤提供:RPM-GPG-KEY-CentOS-7
    • rpm -qa “gpg-pubkey*”

rpm數據庫

  • 數據庫重建:
    • /var/lib/rpm
  • rpm {–initdb|–rebuilddb}
    • initdb:初始化
      • 如果事先不存在數據庫,則新建之
      • 否則,不執行任何操作
    • rebuilddb:重建已安裝的包頭的數據庫索引目錄

rpm常用選項組合

# 這裏tree做示例
## 安裝tree
rpm -ivh tree-1.6.0-10.el7.x86_64.rpm
## 查看tree命令
rpm -q tree
rpm -qi tree
rpm -ql tree
rpm -qf
rpm -qp filename
rpm -qc
rpm -q --scripts
rpm -qa
## 卸載tree(使用-q選項的標準輸出)
rpm -e tree-1.6.0-10.el7.x86_64

yum

  1. CentOS:yum,dnf

  2. YUM:Yellowdog Update Modifier,rpm的前端程序,可解決軟件包相關依賴性,可在多個庫之間定位軟件包,up2date的替代工具

  3. yum repository:yum repo,存儲了衆多rpm包,以及包的相關的元數據文件(放置於特定目錄repodata下)

    文件服務器:

    http://

    https://

    ftp://

    file://

#將其它文件移動到其它文件夾下
vim /etc/yum.repos.d/base.repo

[bash]
name=描述信息
baseurl=file:///misc/cd/
#檢查包來源
[epel]
name=aliyum epel
baseurl=https://mirrors.aliyun.com/epel/$releasever/$basearch/
gpgcheck=0
enabled=1

#列出yum(光盤源和epel源)
yum repolist
#安裝
yum install httpd
#卸載
yum remove httpd
#查看yum安裝歷史
yum history
#查看某一條歷史做了什麼(11是history中的id)
yum history info 11
#撤銷(11是history中的id)
yum history undo 11
#重做(11是history中的id
yum history redo 11

yum配置文件

1.yum客戶端配置文件:

​ /etc/yum.conf:爲所有倉庫提供公共配置

​ /etc/yum.repos.d/*.repo:爲倉庫的指向提供配置

​ 倉庫指向的定義:

[repositoryID]
name=Some name for this repository
baseurl=url://path/to/repository/
enabled={1|0}
gpgcheck={1|0}
gpgkey=URL
enablegroups={1|0}
#roundrobin:意爲隨機挑選,默認
#priority:按順序訪問
failovemethod={roundrobin|priority}
cose=默認爲1000

2.yum的repo配置文件中可用的變量:

$releasever:當前OS的發行版的主版本號
$arch:平臺,i386,i486,i586,x86_64等
$basearch:基礎平臺;i386,x86_64
$YUM0-$YUM9:自定義變量
#示例
http://server/centos/$releasever/$basearch/
http://server/centos/7/x86_ 64
http://server/centos/6/i386

yum源

1.阿里雲repo文件

​ http://mirrors.aliyun.com/repo/

2.CentOS系統的yum源

​ 阿里雲: https://mirrors aliyun.com/centos/$releasever/os/x86_ _64/

​ 清華大學: https://mirrors. tuna.tsinghua.edu.cn/centos/$releasever/os/x86 _64/

3.EPEL的yum源

​ 阿里雲: https://mirrors.aliyun.com/epel/$releasever/x86_64

4.阿里巴巴開源軟件

​ https://opsx.alibaba.com/

yum命令

1.yum命令的用法:

​ yum [options] [command] [package …]

2.顯示倉庫列表:

​ yum repolist [all | enabled|disabled]

3.顯示程序包:

​ yum list

​ yum list [all|glob_exp1] [glob_exp2] […]

​ yum list {available|installed|updates} [glob_ exp1] […]

4.安裝程序包:

​ yum install package1 [package2] […]

​ yum reinstall package1 [package2] […] (重 新安裝)

5.查看程序包information :

​ yum info […]

6.查看指定的特性(可以是某文件)是由哪個程序包所提供:

​ yum provides | whatprovides feature1 [feature2] […]

7.清理本地緩存:

​ 清除/var/cache/yum/basearch/basearch/releasever緩存

​ yum clean [ packages | metadata | expire-cache | rpmdb| plugins|all ]

8.構建緩存:

​ yum makecache

9.升級程序包:

​ yum update [package1] [package2] […]

​ yum downgrade package1 [package2] […] (降級)

10.檢查可用升級:

​ yum check-update

11.卸載程序包:

​ yum remove|erase package1 [package2] […]

12.搜索: yum search string1 [string2] […]

​ 以指定的關鍵字搜索程序包名及summary信息

13.查看指定包所依賴的capabilities :

​ yum deplist package1 [package2] […]

14.查看yum事務歷史:

​ yum history [infollistlpackages-listlpackages-info|

​ summaryladdon-info|redolundo|

​ rollback|new|sync|stats]

​ yum history

​ yum history info 6

​ yum history info 6

15.日誌: /var/log/yum.log

16.安裝及升級本地程序包:

​ yum localinstall rpmfile1 [rpmfile2] [.]

​ (用install替代)

​ yum localupdate rpmfile1 [rpmfile2] […]

​ (用update替代)

17.包組管理的相關命令:

​ yum groupinstall group1 [group2] […]

​ yum groupupdate group1 [group2] [.]

​ yum grouplist [hidden] [groupwildcard] […]

​ yum groupremove group1 [group2] [.]

​ yum groupinfo group1 […]

  1. yum 的命令行選項:
    1. –nogpgcheck:禁止進行gpg check
    2. -y:自動回答爲“yes”
    3. -q:靜默模式
    4. –disablerepo=repoidglob:臨時禁用此處指定的repo
    5. –enablerepo=repoidglob:臨時啓用此處指定的repo
    6. –noplugins:禁用所有插件

系統光盤yum倉庫

  • 系統安裝光盤作爲本地yum倉庫:
    • 1.掛載光盤至某目錄,例如/mnt/cdrom
      • mount /dev/cdrom /mnt/cdrom
    • 2.創建配置文件
      • [CentOS7]
      • name=
      • baseurl=
      • gpgcheck=
      • enabled=
    • 3.創建yum倉庫:
      • createrepo [options]

DNF (DaNdiFied)

◆DNF介紹:新一代的RPM軟件包管理器。DNF 發行日期是2015年5月11日, DNF包管理器採用Python編寫,發行許可爲GPL v2,首先出現在Fedora 18發行版中。在RHEL 8.0版本正式取代了YUM,DNF包管理器克服了YUM包管理器的一些瓶頸,提升了包括用戶體驗,內存佔用,依賴分析,運行速度等

◆安裝所需軟件包 ,依賴epel源

wget http://springdale.math.ias.edu/data/puias/unsupported/7/x86_64/dnf-conf-0.6.4-2.sdI7 .noarch.rpm

wget http://springdale.math.ias.edu/data/puias/unsupported/7/x86_64//dnf-0.6.4-2.sdl7.noarch.rpm

wget http://springdale.math.ias.edu/data/puias/unsupported/7/x86_ _64/python-dnf-0.6.4-2.sdI7 .noarch.rpm

yum install python-dnf-0.6.4- 2.sdl7.noarch.rpm dnf-0.6.4-2.sdl7.noarch.rpm dnf conf-0.6.4-2.sdl7.noarch.rpm python2-libcomps-0.1.8-3.el7.x86_ 64.rpm libcomps-0.1.8-3.el7.x86_ 64.rpm

◆配置文件: /etc/dnf/dnf.conf

◆倉庫文件: /etc/yum.repos.d/ *.repo

日誌: /var/og/dnf.rpm.log

DNF使用

幫助: man dnf

dnf用法:與yum-致

dnf [options] [< arguments> …]

dnf --version

dnf repolist

dnf clean all

dnf makecache

dnf list installed

dnf list available

dnf search nano

dnf history

dnf history undo 1

程序包編譯

◆程序包編譯安裝:

◆Application-VERSION-release.src.rpm -->安裝後,使用rpmbuild命令製作成二進制格式的rpm包,而後再安裝

◆源代碼–>預處理–>編譯–>彙編–>鏈接–>執行

◆>源代碼組織格式:

​ 多文件:文件中的代碼之間,很可能存在跨文件依賴關係

​ C、C++ : make項目管理器

​ configure腳本–> Makefile.in --> Makefile

​ java: maven

編譯安裝

  • C語言源代碼編譯安裝三步驟

    • 1、./configure腳本

      (1) 通過選項傳遞參數,指定啓用特性、安裝路徑等;執行時會參考用戶的指定以及Makefile.in文件生成Makefile

      (2)檢查依賴到的外部環境,如依賴的軟件包

      選項分類:

      安裝路徑設定:

      ​ --prefix=/PATH:指定默認安裝位置,默認爲/usr/local/

      –sysconfdir=/PATH:配置文件安裝位置

      System types:支持交叉編譯

      • Optional Features:可選特性

        ​ --disable-FEATURE

        ​ --enable-FEATURE[=ARG]

      • Optional Packages:可選包

        ​ --with-PACKAGE[=ARG] 依賴包

        ​ --without-PACKAGE 禁用依賴關係

      • 注意:通常被編譯操作依賴的程序包,需要安裝此程序包的“開發”組件,其包名一般類似於name-devel-Version

    • 2、make 根據Makefile文件,構建應用程序

    • 3、make install複製文件到相應路徑

    • 安裝後的配置:

      (1)二進制程序目錄導入至PATH環境變量中

      ​ 編輯文件/etc/profile.d/NAME.sh

      ​ export PATH=/PATH/TO/BIN:$PATH

      (2)導入幫助手冊

      ​ 編輯/etc/man.config|man_DB.conf文件

      ​ 添加一個MANPATH

  • 開發工具:

    • autoconf:生成configure腳本
    • automake:生成Makefile.in
  • 注意:安裝前查看INSTALL,README

  • 開源程序源代碼的獲取:

    • 官方自建站點:

      • apache.org(ASF:Apache SOftware Foundation)

      • mariadb.org

    • 代碼託管:

      • SourceForge.net
      • Github.com
      • code.google.com
  • c/c++編譯器:gcc(GNU C Complier)

  • 編譯C源代碼:

    • 準備:提供開發工具及開發環境

      • 開發工具:make,gcc等
      • 開發環境:開發庫,頭文件
      • glibc:標準庫
    • 實現:通過“包組”提供開發組件

      • Development Tools
      • Server Platform Development
    • 生產實踐:(基於最小化安裝的系統)

      yum install gcc gcc-c++ glibc glibc-devel pcre pcre-devel openssl openssl-devel systemd-devel zlib-devel vim lrzsz tree screen lsoftcpdump wget ntpdate net-tools iotop bc zip unzip nfs-utils
      

Ubuntu 軟件管理

◆Debian軟件包通常爲預編譯的二進制格式的擴展名".deb” , 類似rpm文件,因此安裝快速,無需編譯軟件。包文件包括特定功能或軟件所必需的文件、元數據和指令

◆dpkg : package manager for Debian ,類似於rpm,dpkg是基於Debian的系統的包管理器。可以安裝,刪除和構建軟件包,但無法自動下載和安裝軟件包或其依賴項

◆APT : Advanced Packaging Tool ,功能強大的軟件管理工具,甚至可升級整個Ubuntu的系統,基於客戶/服務器架構

◆APT工作原理:在服務器上先複製所有DEB包,然後用APT的分析工具genbasedir根據每個DEB包的包頭( Header )信息對所有的DEB包進行分析,並將該分析結果記錄在文件夾base內的一個DEB索引清單文件中,一旦APT 服務器內的DEB有所變動,要使用genbasedir產生新的DEB索引清單。客戶端在進行安裝或升級時先要查詢DEB索引清單,從而獲知所有具有依賴關係的軟件包,並一同下載到客戶端以便安裝。當客戶端需要安裝、升級或刪除某個軟件包時,客戶端計算機取得DEB索引清單壓縮文件後,會將其解壓置放於/var/cache/apt/ ,而客戶端使用apt-get install或apt-get upgrade命令的時候,就會將這個文件夾內的數據和客戶端計算機內的DEB數據庫比對,知道哪些DEB已安裝、未安裝或是可以升級的

◆dpkg常見用法: man dpkg

dpkg -i 	package.deb 安裝包
dpkg -r	 	package 刪除包,不建議,不自動卸載依賴於它的包
dpkg -P 	package 刪除包(包括配置文件)
dpkg -l 	列出當前已安裝的包,類似rpm -qa
dpkg -l package 	顯示該包的簡要說明,類似rpm -qi
dpkg -L package 	列出該包中所包含的文件,類似rpm -ql
dpkg -S <pattern> 	搜索包含pattern的包,類似rpm -qf 
dpkg -S package 	列出該包的狀態,包括詳細信息,類似rpm -qi
dpkg --configure package	配置包,-a使用,配置所有沒有配置的軟件包
dpkg -c package.deb	列出deb包的內容,類似rpm -qpl
dpkg --unpack package.deb	解開deb包的內容

◆dpkg示例:

◆列出系統上安裝的所有軟件包

​ dpkg -l

◆列出軟件包安裝的文件

​ dpkg -L bash

◆查看/bin/bash來自於哪個軟件包

​ dpkg -S /bin/bash

◆安裝本地的.deb文件

​ dpkg -i /mnt/cdrom/pool/main/z/zip/zip_ 3.0-11build1_ amd64.deb

◆卸載軟件包

​ dpkg -r zip

◆注意:一般建議不要使用dpkg卸載軟件包。因爲刪除包時,其它依賴它的包不會卸載,並且可能無法再正常運行

◆Debian使用APT工具來管理包系統,它與apt命令不同。在基於Debian的Linux發行版中,有各種工具可以與APT進行交互,以方便用戶安裝、刪除和管理的軟件包。apt-get是其中-一個常用的命令行工具,另外-款較爲流行的命令行與GUI兼顧的工具是aptitude , 之前最常用的Linux包管理命令都被分散在了apt-get、apt-cache和apt-config這三條命令中

◆在2014年apt命令發佈第一個穩定版 , Ubuntu 16.04引入新特性之一便是apt命令,apt命令解決了命令過於分散的問題,它包括apt-get命令出現以來使用最廣泛的功能選項,以及apt-cache和apt-config命令中很少用到的功能。在使用apt命令時,用戶不必再由apt-get轉到apt-cache或apt-config ,提供管理軟件包所需的必要選項

◆apt相當於apt-get、apt-cache 和apt-config中最常用命令選項的集合

◆apt具有更精減但足夠的命令選項,而且參數選項的組織方式更爲有效。此外,啓用的幾個特性也非常有幫助。例如:可以在使用apt命令安裝或刪除程序時看到進度條,apt還會在更新存儲庫數據庫時提示用戶可升級的軟件包個數

◆apt與apt-get有一-些類似的命令選項,但它並不能完全向下兼容apt-get命令,也即可用apt替換部分apt-get系列命令,但不是全部

◆查看幫助:apt help

◆apt與apt-get命令對比

`apt命令`			   `被取代的命令`			   `命令的功能`
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 searce			apt-cache search		搜索應用程序
apt show			apt-cache show			顯示安裝細節

◆apt特有的命令

​ apt list 列出包含條件的包(已安裝,可升級等)

​ apt edit-sources 編輯源列表

◆APT包索引來自/etc/apt/sources.list文件和/etc/apt/sources.list.d目錄中定義的存儲庫的可用包的數據庫。要使用存儲庫中所做的最新更改來更新本地程序包索引

◆apt命令操作(如安裝和刪除軟件包)記錄在/var/log/dpkg.log日誌文件中

◆apt示例:

◆安裝包:

​ apt install tree zip

◆刪除包:

​ apt remove tree zip

​ 說明: apt remove中添加–purge選項會刪除包配置文件,謹慎使用

◆更新包索引:

​ apt update

◆升級包:要升級系統,請首先更新軟件包索引,再升級

​ apt upgrade

練習

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 searce apt-cache search 搜索應用程序
apt show apt-cache show 顯示安裝細節


◆apt特有的命令

​	apt list					 列出包含條件的包(已安裝,可升級等)

​	apt edit-sources 	編輯源列表

◆APT包索引來自/etc/apt/sources.list文件和/etc/apt/sources.list.d目錄中定義的存儲庫的可用包的數據庫。要使用存儲庫中所做的最新更改來更新本地程序包索引

◆apt命令操作(如安裝和刪除軟件包)記錄在/var/log/dpkg.log日誌文件中

◆apt示例:

◆安裝包:

​	apt install tree zip

◆刪除包:

​	apt remove tree zip

​	說明: apt remove中添加--purge選項會刪除包配置文件,謹慎使用

◆更新包索引:

​	apt update

◆升級包:要升級系統,請首先更新軟件包索引,再升級

​	apt upgrade


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