第十章 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:重建已安裝的包頭的數據庫索引目錄
- initdb:初始化
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
-
CentOS:yum,dnf
-
YUM:Yellowdog Update Modifier,rpm的前端程序,可解決軟件包相關依賴性,可在多個庫之間定位軟件包,up2date的替代工具
-
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/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 […]
- yum 的命令行選項:
- –nogpgcheck:禁止進行gpg check
- -y:自動回答爲“yes”
- -q:靜默模式
- –disablerepo=repoidglob:臨時禁用此處指定的repo
- –enablerepo=repoidglob:臨時啓用此處指定的repo
- –noplugins:禁用所有插件
系統光盤yum倉庫
- 系統安裝光盤作爲本地yum倉庫:
- 1.掛載光盤至某目錄,例如/mnt/cdrom
- mount /dev/cdrom /mnt/cdrom
- 2.創建配置文件
- [CentOS7]
- name=
- baseurl=
- gpgcheck=
- enabled=
- 3.創建yum倉庫:
- createrepo [options]
- 1.掛載光盤至某目錄,例如/mnt/cdrom
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