[TOC]

0x00 apt快速入门

apt命令全称是Advanced Packaging Tool是Linux系统下的一款安装包管理工具,可以说是Ubuntu系统下最为重要的命令安装、更新、卸载软件升级系统内核都离不开apt命令。

apt工作原理:
Ubuntu采用集中式的软件仓库机制,将各式各样的软件包分门别类地存放在软件仓库中,进行有效地组织和管理,然后将软件仓库置于许许多多的镜像服务器中,并保持基本一致。这样所有的Ubuntu用户随时都能获得最新版本的安装软件包。
因此对于用户这些镜像服务器就是他们的软件源(Reposity), 然而由于每位用户所处的网络环境不同, 不可能随意地访问各镜像站点。
WeiyiGeek.apt工作原理

apt-get是apt包的管理工具他们根据/etc/apt/sources.list里的软件源地址列表搜索目标软件、并通过维护本地软件包列表来安装和卸载软件。

$vi /etc/apt/sources.list   #更改更新源

#文件的内容是软件包的描述信息, 该软件包括当前系统所使用的 ubunt 安装源中的所有软件包,其中包括当前系统中已安装的和未安装的软件包.
/var/lib/dpkg/available

#目录是在用 apt-get install 安装软件时,软件包的临时存放路径
/var/cache/apt/archives

#存放的是软件源站点
/etc/apt/sources.list

#使用apt-get update命令会从/etc/apt/sources.list中下载软件列表,并保存到该目录
/var/lib/apt/lists


(1)apt-get / apt 命令一览:

#apt [选项] 命令
apt search|install|remove [package] #搜索安装移除
apt reinstall [package] #重新安装
apt update #- 更新可用软件包列表
apt upgrade #- 通过 安装/升级 软件来更新系统
apt full-upgrade #- 通过 卸载/安装/升级 来更新系统
apt edit-sources #- 编辑软件源信息文件
apt autoremove #卸载所有自动安装且不再使用的软件包
apt show [package] #显示软件包具体信息例如:版本号,安装大小,依赖关系,bug报告等等。
apt list --upgradeable #显示可升级的软件包
apt list --installed #显示已安装的软件包


# apt-get [选项] 命令
# apt-get [选项] source 软件包1 [软件包2 ...
apt-get search [package] #搜索软件包
apt-get install|remove [package] #安装或移除软件包
apt-get reinstall [package] #重新安装

apt-get update #取回更新的软件包列表信息,返回三种状态:一是命中,一是获取,一是忽略。
apt-get update --fix-missing [package] #更新软件列表/更新异常索引文件
apt-get upgrade #更新升级软件包
apt-get dselect-upgrade #使用 dselect 升级
apt-get dist-upgrade # 发行版升级 (升级系统到新版本)

apt-get purge #卸载并清除软件包的配置
apt-get --purge remove|autoremove # package 删除包及其依赖的软件包+配置文件等

apt-get autoclean #删除已下载的旧包文件
apt-get clean && sudo apt-get autoclean #清理无用的包
apt-get check #核对以确认系统的依赖关系的完整性

apt-get source package #下载该包的源代码
apt-get build-dep package #为源码包配置所需的编译依赖关系

apt-get download [package] #下载指定的二进制包到当前目录
apt-get changelog [package] #下载指定软件包,并显示其变更日志(changelog)


#实例执行
#第一步,需要修改软件源配置文件的各个配置项中的版本标识。类似于将以下配置项。
deb http://cn.archive.ubuntu.com/ubuntu/ dapper main restricted
#修改为:
deb http://cn.archive.ubuntu.com/ubuntu/ feisty main restricted
#第二步,使用“ apt-get update ”命令刷新软件包更新列表。
#第三步,使用“ apt-get dist-upgrade ”命令为系统升级新的版本。 #更新系统版本

$apt show git #显示软件信息
Package: git
Version: 1:2.20.1-2
Priority: optional
Section: vcs
Maintainer: Gerrit Pape <[email protected]>
Installed-Size: 36.1 MB

$apt-get check #检测下载安装的软件包
正在读取软件包列表... 完成
正在分析软件包的依赖关系树
正在读取状态信息... 完成


(2)apt-cache命令一览

apt-cache search package  #搜索包 与 apt search 类似
apt-cache show package #获取包的相关信息,如说明、大小、版本等 与 apt show类似
apt-cache depends package #了解使用依赖
apt-cache rdepends package #查看该包被哪些包依赖
apt-cache pkgnames #列出所有软件包的名字
apt-cache policy #显示软件包的安装设置状态


#实例:
$apt-cache policy git #安装状态
git:
已安装:1:2.20.1-2
候选: 1:2.20.1-2
版本列表:
*** 1:2.20.1-2 500
500 http://mirrors.aliyun.com/kali kali-rolling/main amd64 Packages
100 /var/lib/dpkg/status


0x01 dpkg快速入门

描述:dpkg是软件包管理基础工具“Debian Packager ”的简写,为 “Debian” 专门开发的套件管理系统,方便软件的安装、更新及移除,dpkg命令与rpm有异曲同工之妙;
使用方法:

dpkg --help
dpkg –licence #显示dpkg的Licence
dpkg –version #显示dpkg的版本号

使用案例:

#示例1.安装/删除/更新/读取软件
dpkg -i <.deb file name> #安装指定deb软件包
dpkg -R /usr/local/src #安装一个目录下面所有的软件包
dpkg -r avg71flm #删除软件包(保留其配置信息)
dpkg -P avg71flm # 删除一个包(包括配置信息),完全清除一个已安装的包。和 remove 不同的是,remove 只是删掉数据和可执行文件,purge 另外还删除所有的配制文件。
dpkg –update-avail <Packages-file> #替代软件包的信息
dpkg –merge-avail <Packages-file> #合并软件包信息
dpkg –forget-old-unavail #丢失所有的Uninstall的软件包信息
dpkg –clear-avail #删除软件包的Avaliable信息


dpkg -b direc×y [filename] #建立一个deb文件
dpkg -c filename #显示一个Deb文件的目录


20)搜索Deb包

22)
命令行:dpkg -s package-name
示例:dpkg -s ssh
23)
命令行:dpkg -L package-Name
示例:dpkg -L apache2
24)
25)
命令行:dpkg -p package-name
示例:dpkg -p cacti


#示例2.信息读取
dpkg -A package_file #从软件包里面读取软件的信息
dpkg -L package #查看软件安装在什么地方,显示一个包安装到系统里面的文件目录信息
dpkg -C #查找只有部分安装的软件包信息
dpkg -l package-name-pattern #列出软件版本软件名,已安装包
dpkg -p package-name #显示包的具体信息小写
dpkg -S filename-search-pattern #搜索指定包里面的文件(模糊查询)
dpkg -I filename [control-file] #显示一个Deb的说明,搜索Deb包
dpkg -s package-name #报告指定包的状态信息

#释放软件包,但是不进行配置
dpkg –unpack avg71flm_r28-1_i386.deb # 如果和-R一起使用,参数可以是一个目录


#安装一个目录下面所有的软件包
dpkg –configure avg71flm_r28-1_i386.deb # #如果和-a一起使用,将配置所有没有配置的软件包
dpkg -reconfigure xxx #重新配置软件,具体的应用此处不赘述。


#比较同一个包的不同版本之间的差别
dpkg –compare-versions ver1 op ver2

#有些软件很难卸载,而且还阻止了别的软件的应用,就能够用这个,但是有点冒险
dpkg --force-all --purge packagename


#64位得安装32位兼容库:
dpkg --add-architecture i386

dpkg是软件包管理工具,还 简单