该博客针对ubuntu下包安装进行讲解
软件包
- 将应用程序的二进制文件、配置文档、man、info帮助页面等文件合并打包生成一个文件,这个文件就是软件包.
- 其中应用程序的二进制文件是经过源码编译好的程序文件
命令
-
命令分为两种
-
内建命令(不需要安装)
shell自带一些功能,shell被加载到内存的时候,像cd/echo这样的命令是被shell解释并执行的,不会新开进程
-
外部命令(需要安装)
shell解释并开进程execl执行,此时环境变量是共享的,所以可以提前设置环境变量,供之后执行的命令使用
-
-
命令种类的查看
type 命令
-
shell命令解释器在执行命令时,是应先执行内部指令,若要执行的指令不是内部指令,则应是调用的外部指令。
- pwd命令是内建命令
- /bin/pwd是外部命令
-
shell找外部命令的时候是按照
echo $PATH
里面的顺序找的
命令与包的关系
-
命令就是一个可执行程序
-
命令在包里面,一个包可以有多个命令
-
包示例
sudo ar -x nmap_5.21-1.1ubuntu1_i386.deb #解压nmap_5.21-1.1ubuntu1_i386.deb
//生成了debian-binary data.tar.gz control.tar.gz
linux@ubuntu:/var/cache/apt/archives$ file debian-binary
debian-binary: ASCII text
linux@ubuntu:/var/cache/apt/archives$ cat debian-binary
2.0
linux@ubuntu:/var/cache/apt/archives$ sudo tar -xvf control.tar.gz
./
./postinst
./prerm
./md5sums
./control
linux@ubuntu:/var/cache/apt/archives$ sudo tar xvf data.tar.gz #在当前目录下生成了usr目录
linux@ubuntu:/var/cache/apt/archives/usr$ ls
bin lib share
linux@ubuntu:/var/cache/apt/archives/usr/bin$ ls
ncat ndiff nmap
命令的安装
安装的话分为几种
1/
下载二进制文件安装(这个不介绍)
2/
下载源码编译安装(这个不介绍)
3/
用包管理软件安装
包管理工具
目前各linux流行的有yum rpm apt dpkg
Red Hat Fedora CentOS RHEL : rpm/yum
Debian和Ubuntu : apt-get/dpkg
apt的作用:
-
在本地维护依赖关系
Ubuntu建立本地数据库,记录软件包之间的依赖关系。不知道在哪里
-
创建了一个软件库
源是提供软件下载的站点,不同的源提供的软件可能不同。
/etc/apt/sources.list配置文件中保存了提供deb软件包下载的站点,即源
/var/lib/apt/lists/目录下存放了本地索引列表
/var/cache/apt/archives/目录下存放了最近下载的deb软件包文件
-
提供了一套在操作系统中安装、升级、卸载需要的软件及查询软件状态信息的方法
例如apt的apt-get install 包名
apt-get install的工作流程
- 扫描本地索引列表
- 软件依赖性检查(并针对依赖性包进行依赖性检查,并扫描索引列表)
- 显示下载信息并向用户询问是否要安装
- 从软件源指定的镜像站点中,下载软件包
- 解压
- 安装/配置
示例
linux@ubuntu:/var/cache/apt/archives$ sudo apt-get install xchat
Reading package lists... Done
Building dependency tree
Reading state information... Done
The following NEW packages will be installed:
xchat
0 upgraded, 1 newly installed, 0 to remove and 0 not upgraded.
Need to get 0 B/354 kB of archives.
After this operation, 890 kB of additional disk space will be used.
WARNING: The following packages cannot be authenticated!
xchat
Install these packages without verification [y/N]? y
Selecting previously unselected package xchat.
(Reading database ... 149063 files and directories currently installed.)
Unpacking xchat (from .../xchat_2.8.8-3ubuntu12_i386.deb) ...
Processing triggers for man-db ...
Processing triggers for desktop-file-utils ...
Processing triggers for bamfdaemon ...
Rebuilding /usr/share/applications/bamf.index...
Processing triggers for gnome-menus ...
Setting up xchat (2.8.8-3ubuntu12) ...
用apt-get安装软件
装的话,并不是装了一个命令,而是可能装了好多个软件包
所以说首先要确定你要装的软件在哪个软件包里面,这个我也不知道怎么查
一般情况下用apt-get install 然后再稍微输入一些提示,然后加两个tab键,就会补全
常用命令
如何根据命令找对应的软件包
1/没有安装该条命令
去网上搜
2/已经安装这条命令
which 命令 |xargs -n 1 dpkg -S
或
命令 --version (部分查不到,最好不要用)
如何知道系统中所有的安装的包
dpkg -l | less #详细信息
apt-cache pkgnames #只有命令名
如何知道包里面有什么命令
apt-cache show 包名
dpkg包管理命令
dpkg -l | less (查看已经安装的的软件包信息,也可以和grep配合)
dpkg -s vim (查看指令软件包的详细信息)
dpkg -L vim (查看软件包的安装文件列表)
dpkg -S /bin/ls(查看文件属于哪个包)
dpkg -c xxx.deb (查看未安装的deb包的文件列表)
APT包管理命令
apt-get工具集
apt-get update 刷新软件源
apt-get upgrade 将所有软件包升级到最新版本
apt-get install xxx 安装软件包
apt-get --reinstall install xxx 不小心损坏了已经成功安装的软件包,重新安装软件包(安装不成功不能用这个命令)
apt-get remove xxx 不完全卸载 删除软件包及有依赖关系的软件包
apt-get --purge remove xxx 完全卸载 删除软件包及有依赖关系的软件包 删除软件包所使用的配置文件
apt-get -f install xxx 修复软件包的依赖关系(用于因故障中断依赖关系)
apt-get cheak xxx 检查依赖关系
apt-get clean 清空整个软件包缓冲区(除了lock和partial目录)
apt-get autoclean 清空重复的低版本的软件包
apt-cache工具集
apt-cache stats 查询数据源的相关统计信息
apt-cache pkgnames 获取目前系统中所有的已经安装的软件包
apt-cache search xxx (xxx为关键字) 查询软件包信息
apt-cache show xxx获取指定软件包的详细信息
apt-cache dumpavail 获取所有已安装软件包的详细描述信息
apt-cache showpkg 获取软件包的常规信息
apt-cache policy xxx 获取软件包当前的安装状态
apt-cache depends xxx 查询软件包的依赖关系
apt-cache redepends xxx查询反向依赖关系
apt-get autoclean 清楚软件包的 .deb 文档