Linux软件管理(未完待续)

  版权声明本文章参考《Linux man pages》做了修改,增添了一部分内容。未经作者允许,严禁用于商业出版,否则追究法律责任。网络转载请注明出处,这是对原创者的起码的尊重!!!


  起初 GNU/Linux 的世界中只有.tar.gz。如果用户要使用一个软件,那就必须自己编译。当 Debian 诞生以后,一种能管理操作系统中已安装的软件包的系统显得很有必要,这个系统被命名为‘dpkg’。‘软件包’一词在此第一次出现在 GNU/Linux。不久之后,红帽公司创建了他们自己的包管理系统‘rpm’。

  GNU/Linux 的创造者们很快又陷入了新的窘境。他们希望通过一种快捷、实用而且高效的方式来安装软件包,并能自动处理相互之间的依赖关系,还要在软件包升级过程中维护好配置文件。Debian 又一次充当了开路先锋的角色,她首创了 APT(Advanced Packaging Tool,高级软件包管理工具)。这一工具后来被 Conectiva 移植到红帽公司的 rpm 包管理系统。在其他一些发行版中,我们也能看到 APT 的身影。”

distribution软件管理机制本地管理指令在线管理机制在线管理指令
Red Hat/FedoraRPMrpmYUMyum
Debian/UbuntuDPKGdpkgAPTapt套件

1 在线管理机制

1.1 APT

1.1.1 重要的相关目录和文件

  • /etc/apt/sources.list
    存放的是软件源站点, 当你执行 sudo apt-get update 时,Ubuntu 就去这些站点下载软件包列表到/var/lib/apt/lists/目录中。
  • /etc/apt/sources.list.d/
    该文件夹下的文件是第三方软件的源,可以分别存放不同的第三源地址,只需“扩展名”为list即可,
  • /var/cache/apt/archives/
    目录是在用apt-get install 安装软件时,软件包的临时存放路径
  • /var/cache/apt/archives/partial/
    传输中软件包。

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

  • /var/lib/apt/lists/
    使用apt-get update命令会从/etc/apt/sources.list的源站点中下载软件列表,并保存到该目录,执行apt-get安装或升级时,会访问该目录的软件列表文件,以获取包信息。

  • /var/lib/apt/lists/partial/
    传输中的源的状态信息。
  • /etc/apt/apt.conf
    APT配置文件
  • /etc/apt/apt.conf.d/
    APT 配置文件,存放各个单独的配置
  • /etc/apt/preferences
    版本首选项
  • /etc/apt/preferences.d/
    版本首选项, 存放各个单独的版本首选项

1.1.2 工作原理

  Ubuntu采用集中式的软件仓库机制,将各式各样的软件包分门别类地存放在软件仓库中,进行有效地组织和管理。然后,将软件仓库置于许许多多的镜像服务器中,并保持基本一致。这样,所有的Ubuntu用户随时都能获得最新版本的安装软件包。因此,对于用户,这些镜像服务器就是他们的软件源(Reposity)。

  然而,由于每位用户所处的网络环境不同,不可能随意地访问各镜像站点。为了能够有选择地访问,在Ubuntu系统中,使用软件源配置文件/etc/apt/sources.list列出最合适访问的镜像站点地址。

  无论用户使用哪些手段配置APT软件源,只是修改了配置文件/etc/apt/sources.list,目的只是告知软件源镜像站点的地址。但那些所指向的镜像站点所具有的软件资源并不清楚,若每安装一个软件包,就在服务器上寻找一遍,效率是很低的。因而,就有必要为这些软件资源列个清单(建立索引文件),以便本地主机查询。

  索引文件的包信息主要有:Package、Architecture、Multi-Arch、Version、Priority、Section、Origin、Maintainer、Original-Maintainer、Bugs、Installed-Size、Provides、Depends、Breaks、Filename、Size、MD5sum、SHA1、SHA256、Homepage、Description、Task、Description-md5: 、Supported、conflict

  用户可以使用apt-get update命令更新软件包列表。在Ubuntu 中,apt-get update命令会扫描每一个软件源服务器,并为该服务器所具有软件包资源建立索引文件,存放在本地的/var/lib/apt/lists/目录中。使用apt-get执行安装、更新操作时,都将依据这些索引文件,获取相应包的信息,然后向软件源服务器申请资源。同时,APT能够检查Linux系统中的软件包依赖关系,大大简化了Ubuntu用户安装和卸载软件包的过程。

  使用apt-get install安装软件包大体分为4步:
  第一步,扫描本地存放的软件包更新列表(由apt-get update命令刷新更新列表,也就是/var/lib/apt/lists/),找到最新版本的软件包;
  第二步,进行软件包依赖关系检查,找到支持该软件正常运行的所有软件包;
  第三步,从软件源所指的镜像站点中,下载相关软件包;
  第四步,解压软件包,并自动完成应用程序的安装和配置。

  不过,APT并不是指某个命令,而是一组命令:

常用APT命令作用
apt-add-repository添加或者删除源站点
apt-cache查询软件包信息;
apt-cdrom将CD-ROM加入软件源配置文件。
apt-config用于读取APT配置文件的简单工具;
apt-extracttemplates提取一个或多个软件包的配置脚本和模板文件成
apt-file查到软件包所含的文件和安装的位置
apt-ftparchive生成APT用来访问分发源的索引文件。
apt-get管理软件包,包括安装、卸载、升级等操作;
apt-key管理apt认证包时使用的密钥。
apt-mark作为一个统一的前端来设置一个包的各种设置
apt-mirror创建镜像站点
apt-proxy用于搭建APT代理服务器;
apt-sortpkgs采用索引文件(源索引或包索引)对记录的包行排序
aptapt-get、apt-cache、apt-config常用命令的高级接口
apturl通过点击URL安装软件
aptitude整合dselect和apt-get的功能
aptoncd是将安装的软件包备份到光盘或ISO映像的简单方法

1.1.3 设置APT源

  在安装Linux时,系统会根据用户所选择的国家/时区,推荐合适的软件源地址。通常,用户使用默认的/etc/apt/sources.list文件就可以。不过,当用户发现更合适的软件源镜像站点时,可以重新设置APT源。sources.list 条目格式:

DebType  Repository_URL  Distribution  Component1  Component2……
  • DebType表示Deb软件包类型

    • deb表示二进制软件包
    • deb-src表示源码包;
  • Repository URL表示软件包所在仓库的地址。我们可以更换仓库来提高下载速度。

  • Distribution表示发行版本,发行版有两种分类方法:

    • 第一类是发行版的具体代号,如 xenial, trusty, precise 等;
    • 第二类则是发行版的发行类型,如 oldstable, stable, testing 和 unstable。
    • 另外,在发行版后还可能有进一步的指定,如 xenial-updates, trusty-security, stable-backports 等。
  • Component表示软件包组件类别

    • Debian
      • main——包含符合 DFSG指导原则的自由软件包,而且这些软件包不依赖不符合该指导原则的软件包。这些软件包被视为 Debian 发型版的一部分。
      • contrib——包含符合 DFSG 指导原则的自由软件包,不过这些软件包依赖不在 main 分类中的软件包。
      • non-free——包含不符合 DFSG 指导原则的非自由软件包。
    • Ubuntu
      • main——官方支持的自由软件。
      • restricted——官方支持的非自由的软件。
      • universe——非官方支持的自由软件。
      • multiverse——非官方支持的非自由软件。

1.1.4 添加删除仓库——apt-add-repository

  命令:apt-add-repository [OPTIONS] REPOSITORY
  功能:将一个APT仓库添加到/etc/apt/sources.list/etc/apt/sources.list.d/中或删除已存在的存储库。

常用选项描述
-m将大量调试信息打印到命令行中
-r删除指定的存储库
-y假设所有查询都是
-k使用自定义密钥服务器URL而不是默认值
-s允许从存储库下载源包
更多信息http://linux.51yip.com/search/apt-add-repository 和 man 手册
    http://man.linuxde.net/apt-add-repository

1.1.5 查询软件包信息——apt-cache

  命令:apt-cache subcommand [options] [pkg_list]
  功能:apt-cache在APT的包缓存上执行各种操作。 apt-cache不会改变系统状态,但会提供操作以从软件包元数据中生成感兴趣的结果。元数据是通过apt-get update命令获取和更新的。

常用子命令描述
gencaches创建APT的包缓存。
showpkg pkg获取二进制软件包的常规描述信息
showsrc pkg获取源码包的详细描述信息
show pkg获取二进制软件包的详细描述信息
stats获取软件源的基本统计信息
dump获取软件源中所有软件包的简要信息
dumpavail获取当前中已安装的所有软件包的描述信息
unmet获取所有未满足的依赖关系
search根据正则表达式检索软件包
depends pkg获取该软件包的依赖信息
rdepends pkg获取所有依赖于该软件包的软件包
pkgnames列出所有已安装软件包的名字
policy获取软件包当前的安装状态
常用选项描述
-p软件包的缓存
-s源代码包的缓存
-q关闭进度获取
-i获取重要的依赖关系,仅与unmet命令一起使用
-n只搜索包名,不搜索描述
-f搜索时显示完整的包信息
-c file指定配置文件
-o strings设置配置选项
更多信息http://linux.51yip.com/search/apt-cache 和 man 手册
    http://man.linuxde.net/apt-cache

1.1.5 将CD-ROM加入源—apt-cdrom

  命令:apt-cdrom subcommands [-d|-r|-m|-f|-a|-h|-c config_name ]
  功能:用于检查Ubuntu安装光盘,也可将安装光盘作为软件源添加到软件源配置文件中

常用子命令描述
ident用于扫描Ubuntu安装光盘,
add用于向/etc/apt/sources.list文件添加CD-ROM配置项。
常用选项描述
-d指定CD-ROOM的挂载点
-r为一个已经识别CD-ROM改名
-m声明CD-ROOM无挂载点
-f快速模式,不检查软件包文件
-a完整扫描模式
-c file指定配置文件
-o strings设置配置选项
更多信息http://linux.51yip.com/search/apt-cdrom 和 man 手册
    http://man.linuxde.net/apt-cdrom

1.1.6 软件管理——aptapt-get

1.1.6.1 apt与apt-get的关系

  在基于 Debian 的 Linux 发行版中,有各种工具可以与 APT 进行交互,以方便用户安装、删除和管理的软件包。apt-get 便是其中一款广受欢迎的命令行工具,另外一款较为流行的是 Aptitude 这一命令行与 GUI 兼顾的小工具。

  apt套件包含许多工具,如apt-cache、apt-config 等。这些命令都比较低级又包含众多功能,普通的 Linux 用户也许永远都不会使用到。换种说法来说,就是最常用的 Linux 包管理命令都被分散在了 apt-get、apt-cache 和 apt-config这三条命令当中。

  apt 命令的引入就是为了解决命令过于分散的问题,它包括了 apt-get 命令出现以来使用最广泛的功能选项,以及 apt-cache 和 apt-config 命令中很少用到的功能。

  在使用 apt 命令时,用户不必再由 apt-get 转到 apt-cache 或 apt-config,而且 apt更加结构化,并为用户提供了管理软件包所需的必要选项。

  简单来说就是:apt = apt-get、apt-cache 和 apt-config 中最常用命令选项的集合。

1.1.6.2 apt命令的特点
  • 用户可以在同一地方集中得到所有必要的工具,不必再由 apt-get 转到 apt-cache 或 apt-config
  • apt具有更精减但足够的命令选项,而且参数选项的组织方式更为有效。
  • 命令安装或删除程序时有进度条。
  • 在更新存储库数据库时提示用户可升级的软件包个数。
1.1.6.3 软件管理命令——apt-get

  命令:apt-get subconmmand [options]
  功能:apt-get命令本身并不具有管理软件包功能,只是提供了一个软件包管理的命令行平台。在这个平台上使用更丰富的子命令,完成具体的管理任务。

常用子命令描述
update下载更新软件包列表信息
upgrade将系统中所有软件包升级到最新的版本
dist-upgrade发布版升级
dselect-upgrade根据dselect的选择来进行软件包升级
install下载所需软件包并进行安装配置
remove卸载软件包,但保留配置文件
purge卸载软件包和配置文件
autoremove根据依赖关系卸载软件包和卸载不需要或不满足依赖关系的软件包
source下载源码包
build-dep为源码包构建所需的编译环境
clean删除缓存区中所有已下载的包文件
autoclean删除缓存区中老版本的已下载的包文件
check检查系统中依赖关系的完整性
download下载二进软件包到当前文件夹
常用选项描述
-d仅下载软件包,而不安装或解压
-f修复系统中存在的软件包依赖性问题
-m当发现缺少关联软件包时,仍试图继续执行
-q将输出作为日志保留,不获取命令执行进度
–purge与remove子命令一起使用,完全卸载软件包,等效于purge子命令
–reinstall与install子命令一起使用,重新安装软件包
-b在下载完源码包后,编译生成相应的软件包
-s不做实际操作,只是模拟命令执行结果
-y对所有询问都作肯定的回答,apt-get不再进行任何提示
-u获取已升级的软件包列表
-V显示安装、升级过程
-u显示要升级的包
更多信息http://linux.51yip.com/search/apt-get 和 man 手册
    http://man.linuxde.net/apt-get
1.1.6.4 软件管理高级命令——apt

  命令:apt subconmmand [options] [pkg]
  功能:apt命令本身并不具有管理软件包功能,只是提供了一个软件包管理的命令行平台。在这个平台上使用更丰富的子命令,完成具体的管理任务。

常用命令描述
install下载所需软件包并进行安装配置
remove移除软件包,但保留配置文件
autoremove根据依赖关系卸载软件包和卸载不需要或不满足依赖关系的软件包
purge移除软件包及配置文件
search搜索应用程序
show显示软件包详细信息
update刷新存储库索引
upgrade升级所有可升级的软件包
full-upgrade在升级软件包时自动升级依赖包
list列出包,–installed,已安装;–upgradable可升级; –all-versions所有版本
edit-sources编辑源文件
更多信息http://linux.51yip.com/search/apt 和 man 手册
    http://man.linuxde.net/apt
1.1.6.5 apt与apt-get对照表
apt 命令取代的命令命令的功能
apt install 包名apt-get install 包名安装软件
apt remove 包名apt-get remove 包名移除软件,保留配置
apt autoremoveapt-get autoremove自动卸载软件
apt purge 包名apt-get purge 包名移除软件包及配置文件
apt search 包名apt-cache search 包名搜索应用程序
apt show 包名apt-cache show 包名显示软件包详细信息
apt updateapt-get update刷新存储库索引
apt upgradeapt-get upgrade升级所有可升级的软件包
apt full-upgradeapt-get dist-upgrade升级软件和依赖包
apt list –installeddpkg -l列出已安装的软件
apt list –upgradableapt-get -u upgrade –assume-no列出可升级的软件
apt edit-sourcesvim /etc/apt/sources.list编辑源文件

1.1.7 配置APT——apt-config

  命令:apt-config [–empty] [–format ‘%f “%v”;%n’] [-o=config_string] [-c=config_file] {shell | dump | {-v | –version} | {-h | –help}}
  功能:apt-config用于设置APT或读取APT配置文件

常用子命令描述
shell从shell脚本中获取配置信息
dump显示配置信息
常用选项描述
–empty输出中包含值为空的选项
–no-empty输出中不包含值为空的选项
–format ‘%f “%v”;%n’定义每个配置选项的输出。%t输出选项名,%f输出完整的层次结构名称,%v输出选项值。%n将被替换为换行符,而%N将被替换为制表符。 %可以使用%%打印。
-c file指定配置文件
-o设置配置选项,语法是-o Foo::Bar=bar
更多信息http://linux.51yip.com/search/apt-config 和 man 手册
    http://man.linuxde.net/apt-config

1.2 YUM

  redhot/centos使用yum来安装、卸载、搜索、查看应用程,会把所有的依赖包都一起安装。

sudo yum install:安装rpm软件包;
sudo yum update:更新rpm软件包;
sudo yum check-update:检查是否有可用的更新rpm软件包;
sudo yum remove:删除指定的rpm软件包;
sudo yum list:显示软件包的信息;
sudo yum search:检查软件包的信息;
sudo yum info:显示指定的rpm软件包的描述信息和概要信息;
sudo yum clean:清理yum过期的缓存;
sudo yum shell:进入yum的shell提示符;
sudo yum resolvedep:显示rpm软件包的依赖关系;
sudo yum sudo yum localinstall:安装本地的rpm软件包;
sudo yum localupdate:显示本地rpm软件包进行更新;
sudo yum deplist:显示rpm软件包的所有依赖关系。

2 本地管理机制

2.1 dpkg命令

dpkg安装deb包
Ubuntu软件包格式为deb,安装方法如下:

sudo  dpkg  -i  package.deb

dpkg的详细使用方法,网上有很多,下面简单列了几个:

dpkg -i package.deb 安装包
dpkg -r package 删除包
dpkg -P package 删除包(包括配置文件)
dpkg -L package 列出与该包关联的文件
dpkg -l package 显示该包的版本
dpkg –unpack package.deb 解开 deb 包的内容
dpkg -S keyword 搜索所属的包内容
dpkg -l 列出当前已安装的包
dpkg -c package.deb 列出 deb 包的内容
dpkg –configure package 配置包
根据Ubuntu中文论坛上介绍,使用apt-get方法安装的软件,所有下载的deb包都缓存到了/var/cache/apt/archives目录下了,所以可以把常用的deb包备份出来,甚至做成ISO工具包、刻盘,以后安装Ubuntu时就可以在没有网络环境的情况下进行了。下面的命令是拷贝archives这个目录到/var/cache/apt/目录下,替换原有的archives

enadmin@ubuntu-server:~/ftp$ sudo cp -r archives/ /var/cache/apt/

2.2 rpm

3 源代码安装

  如果要使用make安装的话,那么必须得安装build-essential这个依赖包。源码安装大致可以分为三步骤:

  • ./configure——配置编译选项,选项可通过 –help 查询。也有某些程序无需执行此步。
  • make——编译:一旦配置通过,可即刻使用make指令来执行源代码的编译过程。
  • 安装
    • make install——直接安装:如果编译没有问题,那么执行make install 就可以将程序安装到系统中了。
    • check install——生成deb/rpm包。

  版权声明本文章参考《Linux man pages》做了修改,增添了一部分内容。未经作者允许,严禁用于商业出版,否则追究法律责任。网络转载请注明出处,这是对原创者的起码的尊重!!!


  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

蓝月心语

你的鼓励是我最大的动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值