包管理与包安装

该博客针对ubuntu下包安装进行讲解

软件包

  • 将应用程序的二进制文件、配置文档、man、info帮助页面等文件合并打包生成一个文件,这个文件就是软件包.
  • 其中应用程序的二进制文件是经过源码编译好的程序文件

命令

  • 命令分为两种

    1. 内建命令(不需要安装)

      shell自带一些功能,shell被加载到内存的时候,像cd/echo这样的命令是被shell解释并执行的,不会新开进程

    2. 外部命令(需要安装)

      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的工作流程

  1. 扫描本地索引列表
  2. 软件依赖性检查(并针对依赖性包进行依赖性检查,并扫描索引列表)
  3. 显示下载信息并向用户询问是否要安装
  4. 从软件源指定的镜像站点中,下载软件包
  5. 解压
  6. 安装/配置

示例

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 文档
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值