• debian手册摘要


    apt-get source 包名 # 获取源码
    dpkg --info deb包名 # 查看包信息
    apt-cache show 包名 # 包信息(含有Depends、Suggests、Section、Priority、Mirror路径)
    apt-cache depends 包名 # 查看包的依赖信息
    apt-cache rdepends 包名 # 查看什么包以来它
    dpkg -l # 列出所有已安装的包 --list
    dpkg -L 包名 # 列出包安装到磁盘的所有文件路径(--listfiles)
    dpkg -S 文件名 # 查询文件所属的包名(--search)
    dpkg -s 包名 # 包状态(包有什么配置文件等信息 --status)
    update-alternatives # 修改虚拟软件包中的首选软件
    update-alternatives --display x-www-browser #列出x-www-browser默认使用什么
    update-alternatives --config x-www-browser #修改默认浏览器
    aptitude why <regex> # 解释为什么需要这个包
    apt install /path/to/<package_filename>.deb 安装本地软件包到系统中,同时尝试自动解决依赖
    aptitude hold/unhold 包名 # 保持/解除保持 包的当前版本(hold只是忽略safe-upgrade or full-upgrade,keep则忽略包的任何操作)
    echo "包名 hold" |dpkg --set-selections #保持当前版


    aptitude search [前缀]<正则>  #貌似比apt-cache search 强大
    前缀如下:
    ~n 包名符合regex
    ~d 描述符合regex
    ~t 软件集名称(task)
    ~G 匹配标签<Tag>
    ~v 虚拟软件包符合regex
    ~i 已安装符合regex
    ~M 自动安装
    ~i!~M 管理员选择安装的包(不含自动安装)

    下载chrome
    wget https://dl.google.com/linux/direct/google-chrome-stable_current_amd64.deb

    Debian 软件包管理系统依赖声明,它描述了这一事实:一些软件包需要其它软件包被安装才能正常运行或运行得更好。
    软件包 A 依赖(depends)软件包 B:要运行A必须安装 B。在有些情况下,A 不仅依赖 B,还要求 B 的特定版本。版本依赖通常有最低版本限制,A 更依赖于B的最新版而非某个特定版本。
    软件包 A 推荐(recommends)软件包 B:软件包维护者认为所有用户都不会喜欢缺少某些功能的 A,而这些功能需要 B 来提供。
    软件包 A 建议(suggests)软件包 B:B 中某些文件与 A 的功能相关,并能够增强 A 的功能。这种关系通过声明软件包 B 增强 Enhances 软件包 A 来表示。
    软件包 A 与软件包 B 冲突(conflicts):如果系统中安装了 B 那么 A 无法运行。“Conflicts”常和“replaces”同时出现。
    软件包 A 替换(replaces)软件包 B:B 安装的文件被 A 中的文件移除和覆盖了。
    软件包 A 提供(provides)软件包 B:A 中包含了 B 中的所有文件和功能。
    上述术语使用方法的更详细的信息参阅 Packaging Manual 和 the Policy Manual。
    注意,dselect 可以对 recommends 和 suggests 类软件包进行更细粒度的操作,apt-get 只会简单的下载安装 depends 类软件包而不管 recommends 和 suggests 类软件包。这两个程序均正式使用 APT 作为其后端。

    2.2.9 何为“Pre-depends”
    dpkg 总是在配置一个有依赖关系的包之前,先对被依赖的包进行配置。 然而,dpkg 通常将归档文件随意解包,不顾依赖性。 (从归档文件中解包并提取文件,将他们放置到正确的位置。) 如果是 Pre-Depends 包,则在所依赖的其它包被解包和配置之前, Pre-Depends 包不会被解包。 [2] 使用这种依赖的目的是为了将依赖复杂性降至最低。

    2.2.10 软件包状态
    软件包有各种状态:“unknown”,“install”,“remove”,“purge”和“hold”。这些“希望”标记描述了用户打算如何操作这些软件包(既可以使用 dselect 的“Select”菜单,也可以直接调用 dpkg)。
    它们的意思是:
    unknown - 用户并没描述他想对软件包进行什么操作。
    install - 用户希望对软件包进行安装或升级。
    remove - 用户希望删除软件包,但不想删除任何已有的配置文件。
    purge - 用户希望完全删除软件包,包括配置文件。
    hold - 用户希望软件包保持现状,例如,用户希望保持当前的版本,当前的状态,当前的一切。


    2.3.5 下载和缓存 .deb 文件
    如果你手工下载包文件到硬盘(这完全没有必要,请阅读上面有关 dpkg-ftp 或 APT 的内容),当你完成软件包安装工作后,可以从系统中删除 .deb 文件。

    如果是使用 APT,这些文件会缓存在 /var/cache/apt/archives/ 目录中。你可以在完成安装后删除它们(apt-get clean)或者将它们拷贝到另一个机器的 /var/cache/apt/archives/ 目录中以备以后的安装。


    **** 很重要的目录 /var/lib/dpkg/info/ ********
    如果只是用 aptitude(它不访问源代码相关的元数据),“deb-src”那行可以安全地删掉(或者在文件开头添加 “#” 来将它注释掉)。这可以加速档案库元数据的更新。

    https://www.debian.org/doc/manuals/debian-reference/ch02.zh-cn.html
    档案库 URL 套件名(代号) 目的
    http://deb.debian.org/debian/ stable (stretch) stable (stretch) release 版本
    http://deb.debian.org/debian/ testing (buster) testing (buster) release 版本
    http://deb.debian.org/debian/ unstable (sid) unstable (sid) release 版本
    http://deb.debian.org/debian/ experimental experimental pre-release 版本(可选,只适用于开发者)
    http://deb.debian.org/debian/ stable-proposed-updates 用于下一个稳定版本的更新(可选)
    http://security.debian.org/ stable/updates 用于 stable release 版本的安全更新(重要)
    http://security.debian.org/ testing/updates 用于 testing release 版本的安全更新(重要)
    http://deb.debian.org/debian/ stretch-updates 用于 stretch 的垃圾邮件过滤器、IM客户端等的兼容更新
    http://deb.debian.org/debian/ stretch-backports 用于 stretch 的较新的 backported 软件包(可选)
    只有带有安全更新的纯净的 stable release 版本可以提供最佳的稳定性。运行大多数 stable release 版本的软件包之中混合一些来自 testing 或 unstable release 版本的软件包会比运行纯净的 unstable release 版本冒更大的风险,这是因为库版本的不匹配导致的。如果在 stable release 版本下你真的需要一些程序的最新版本,请使用来自 stretch-updates 和 http://backports.debian.org (参见 第 2.7.4 节 “更新和向后移植”)的软件包。使用这些软件包时必须额外小心。

    区域 软件包数量 软件包组件标准
    main 57346 遵从 Debian 自由软件指导方针(DFSG),并且不依赖于 non-free
    contrib 341 遵从 Debian 自由软件指导方针(DFSG),但依赖于 non-free
    non-free 540 不遵从 Debian 自由软件指导方针(DFSG)


    不建议在新版本发布后在 stable Debian 系统上使用 aptitude 命令来进行跨版本的系统升级。
    建议使用"apt full-upgrade"或“apt-get dist-upgrade” 来进行这个操作。参见 Bug #411280。
    aptitude命令有时候会为了testing 或 unstable Debian 系统升级清除大量软件包。
    这个情况吓坏了许多的系统管理员。请不要惊慌。
    这似乎大多数是由元软件包的依赖或推荐的软件包版本偏差造成的,例如 gnome-core。
    要解决这个问题,可以在 aptitude 命令菜单中选择 “取消待执行的动作” ,退出 aptitude,并使用 “apt full-upgrade”。
    apt-get 和 apt-cache 是最基础 的基于 APT 的软件包管理工具。
    apt-get 和 apt-cache 只提供命令行用户界面。
    apt-get 是进行跨版本的主系统升级等操作的最合适工具。
    apt-get 提供了一个强大的软件包依赖解析器。
    apt-get 对硬件资源的要求不高。它消耗更少的内存并且运行速度更快。
    apt-cache 提供了一个 标准的正则表达式来搜索软件包名称和描述。
    apt 命令是一个用于软件包管理的高级命令行界面。它基本上是 apt-get、apt-cache 和类似命令的一个封装,被设计为针对终端用户交互的界面,它默认启用了某些适合交互式使用的选项。

    apt 工具在用户使用 apt install 安装软件包时提供了一个友好的进度条。
    在成功安装下载的软件包后,apt 将默认删除缓存的 .deb 软件包。
    [提示] 提示
    建议用户使用新的 apt(8) 命令用于 交互式的使用场景,而在 shell 脚本中使用 apt-get(8) 和apt-cache(8) 命令。

    aptitude 命令是最通用的基于 APT 的软件包管理工具。
    aptitude 提供了一个全屏的交互式文本用户界面。
    aptitude 同样也提供了一个命令用户界面。
    aptitude 是用于日常软件包管理(例如检查已安装的软件包和搜索可用的软件包)的最合适工具。
    aptitude 对硬件资源的要求更高。它消耗更多的内存并且运行速度更慢。
    aptitude 提供一个增强的正则表达式来搜索所有的软件包元数据。
    aptitude 可以管理软件包的多个版本,并且不使用 /etc/apt/preferences,这会十分直观。


    2.2.2
    apt 语法 aptitude 语法 apt-get / apt-cache 语法 说明
    apt update aptitude update apt-get update 更新软件包档案库元数据
    apt install foo aptitude install foo apt-get install foo 安装 “foo” 软件包的候选版本以及它的依赖
    apt upgrade aptitude safe-upgrade apt-get upgrade 安装已安装的软件包的候选版本并且不移除任何其它的软件包
    apt full-upgrade aptitude full-upgrade apt-get dist-upgrade 安装已安装的软件包的候选版本,并且需要的话会移除其它的软件包
    apt remove foo aptitude remove foo apt-get remove foo 移除 “foo” 软件包,但留下配置文件
    apt autoremove N/A apt-get autoremove 移除不再需要的自动安装的软件包
    apt purge foo aptitude purge foo apt-get purge foo 清除 “foo” 软件包的配置文件
    apt clean aptitude clean apt-get clean 完全清除本地仓库的软件包检索文件
    apt autoclean aptitude autoclean apt-get autoclean 清除本地仓库中过时软件包的软件包检索文件
    apt show foo aptitude show foo apt-cache show foo 显示 “foo” 软件包的详细信息
    apt search <正则表达式> aptitude search <regex> apt-cache search <regex> 搜索匹配 <regex> 的软件包
    N/A aptitude why <regex> N/A 解释匹配 <regex> 的软件包必须被安装的原因
    N/A aptitude why-not <regex> N/A 解释匹配 <regex> 的软件包不必安装的原因
    N/A aptitude search '~i!~M' apt-mark showmanual 列出手动安装的软件包

    2.2.7. aptitude 正则表达式
    aptitude 正则表达式是类 mutt 的拓展 ERE(参见 第 1.6.2 节 “正则表达式”),aptitude 具体的特殊匹配规则扩展如下。
    表 2.11. aptitude 正则表达式
    扩展匹配规则描述 正则表达式
    匹配软件包名称 ~n<regex_name>
    匹配描述 ~d<regex_description>
    匹配软件集名称 ~t<regex_task>
    匹配 debtag ~G<regex_debtag>
    匹配维护者 ~m<regex_maintainer>
    匹配软件包的 section ~s<regex_section>
    匹配软件包版本 ~V<regex_version>
    匹配档案库 ~A{stretch,buster,sid}
    匹配来源 ~O{debian,…}
    匹配优先级 ~p{extra,important,optional,required,standard}
    匹配必要的软件包 ~E
    匹配虚拟软件包 ~v
    匹配新的软件包 ~N
    匹配待执行的动作 ~a{install,upgrade,downgrade,remove,purge,hold,keep}
    匹配已安装软件包 ~i
    匹配带有 A 标签的已安装软件包(自动安装的软件包) ~M
    匹配不带有 A 标签的已安装软件包(管理员选择的软件包) ~i!~M
    匹配已安装并且是可升级的软件包 ~U
    匹配已删除但未清除的软件包 ~c
    匹配已移除,已清除或可移除的软件包 ~g
    匹配破坏依赖关系的软件包 ~b
    匹配破坏 <type> 依赖关系的软件包 ~B<类型>
    匹配 <pattern> 软件包的 <type> 依赖关系 ~D[<类型>:]<模式>
    匹配 <pattern> 软件包破坏的 <type> 依赖关系 ~DB[<类型>:]<模式>
    匹配依赖于 <pattern> 软件包的 <type> 依赖的软件包 ~R[<类型>:]<模式>
    匹配依赖于 <pattern> 软件包破坏的 <type> 依赖的软件包 ~RB[<类型>:]<模式>
    匹配其它已安装软件包所依赖的软件包 ~R~i
    匹配没有被其它已安装软件包所依赖的软件包 !~R~i
    匹配其它已安装软件包所依赖或建议安装的软件包 ~R~i|~R推荐:~i
    匹配 <pattern> 过滤版本之后的软件包 ~S 过滤 <模式>
    匹配所有软件包(真) ~T
    不匹配软件包(假) ~F

    2.3.3. 完整地清理已删除软件包
    您能清除所有已移除软件包的剩余配置文件。
    检查以下命令的结果。
    # aptitude search '~c'
    如果您确认所列出的软件包应当被完整删除,请运行以下命令。
    # aptitude purge '~c'
    您可能想要在交互模式中做类似的操作进行细粒度的控制。

    2.4. 高级软件包管理操作
    2.4.1. 命令行中的高级软件包管理操作
    下面列出了一些其它的软件包管理操作,这些操作对于 aptitude 过于高级或缺失所需的功能。
    表 2.13. 高级软件包管理操作
    命令 操作
    COLUMNS=120 dpkg -l <package_name_pattern> 列出已安装软件包的列表用于错误报告
    *dpkg -L <package_name> 显示一个已安装软件包的内容 (软件包包含什么文件或目录)
    dpkg -L <package_name> | egrep '/usr/share/man/man.*/.+' 列出一个已安装软件包的 man 手册页
    *dpkg -S <file_name_pattern> 列出匹配文件名的已安装软件包(查询一个文件属于哪个包)
    apt-file search <file_name_pattern> 列出档案库中匹配文件名的软件包
    apt-file list <package_name_pattern> 列出档案库中匹配的软件包的内容
    dpkg-reconfigure <package_name> 重新配置软件包
    dpkg-reconfigure -p=low <package_name> 通过最详细的方式来重新配置软件包
    configure-debian 以全屏菜单的形式重新配置软件包
    dpkg --audit 部分安装软件包的审计系统
    dpkg --configure -a 配置所有部分安装的软件包
    *apt-cache policy <binary_package_name> 显示一个二进制软件包的可用版本、优先级和档案库信息
    apt-cache madison <package_name> 显示一个软件包的可用版本和档案库信息
    apt-cache showsrc <binary_package_name> 显示一个二进制软件包的源代码软件包信息
    apt-get build-dep <package_name> 安装构建软件包所需要的软件包
    aptitude build-dep <package_name> 安装构建软件包所需要的软件包
    *apt-get source <package_name> (从标准档案库)下载源代码
    dget <URL for dsc file> (从其它档案库)下载源代码软件包
    dpkg-source -x <package_name>_<version>-<debian_version>.dsc 从源代码软件包集合(“*.orig.tar.gz” 和 “*.debian.tar.gz"/"*.diff.gz”)中构建代码树
    debuild binary 从本地的源代码树中构建软件包
    make-kpkg kernel_image 从内核源代码树中构建一个内核软件包
    make-kpkg --initrd kernel_image 从启用了 initramfs 的内核代码树中构建一个内核软件包
    dpkg -i <package_name>_<version>-<debian_version>_<arch>.deb 安装一个本地的软件包到系统中
    apt install /path/to/<package_filename>.deb 安装本地软件包到系统中,同时尝试自动解决依赖
    debi <package_name>_<version>-<debian_version>_<arch>.dsc 安装本地软件包到系统中
    dpkg --get-selections '*' >selection.txt 保存 dpkg 级别的软件包选择状态信息
    dpkg --set-selections <selection.txt 使用 dpkg 设置软件包选择状态
    echo <package_name> hold | dpkg --set-selections 使用 dpkg 将一个软件包的包选择状态设置为 hold(相当于 "aptitude hold < 包名> ")

    2.5.4. 获取用于软件包的元数据
    当使用 APT 工具时,如 aptitude, apt-get, synaptic, apt-file, auto-apt,我们需要更新包含 Debian 档案库信息元数据的本地拷贝。这些本地拷贝的文件名称,和在 "/etc/apt/sources.list" 文件里面的 distribution, area, architecture 相应名称一致。 (参见 第 2.1.4 节 “Debian 档案库基础”).
    "/var/lib/apt/lists/deb.debian.org_debian_dists_<distribution>_Release"
    "/var/lib/apt/lists/deb.debian.org_debian_dists_<distribution>_Release.gpg"
    "/var/lib/apt/lists/deb.debian.org_debian_dists_<distribution>_<area>_binary-<architecture>_Packages"
    "/var/lib/apt/lists/deb.debian.org_debian_dists_<distribution>_<area>_source_Sources"
    "/var/cache/apt/apt-file/deb.debian.org_debian_dists_<distribution>_Contents-<architecture>.gz" (apt-file)
    前 4 种类型的文件是所有相关的 APT 命令共享的,并且可以通过 “apt-get update” 或 “aptitude update” 在命令行中进行更新。如果在 “/etc/apt/sources.list” 中有相应的 “deb” 行,则 “软件包” 元数据会进行更新。如果在 “/etc/apt/sources.list” 中有相应的 “deb-src” 行,则 “源代码” 元数据会进行更新。
    除了远程获取元数据,aptitude 命令还会将它在本地产生的安装状态信息保存在 “/var/lib/aptitude/pkgstates” 中,这些信息只能被 aptitude 使用。


    2.5.9. dpkg 命令
    dpkg(1) 是 Debian 软件包管理中最底层的工具。它非常强大,必须小心使用。
    当安装名为 “<package_name>” 的软件包时,dpkg 会按照下列的顺序处理它。
    解包 deb 文件(等同于 “ar -x”)
    使用 debconf(1) 执行 “<package_name>.preinst”
    将软件包安装到系统中(等同于 “tar -x”)
    使用 debconf(1) 执行 “<package_name>.postinst”
    debconf 系统提供带有 I18N 和 L10N (第 8 章 国际化和本地化)支持的标准化用户交互。
    表 2.17. dpkg 创建的重要文件
    文件 内容说明
    /var/lib/dpkg/info/<package_name>.conffiles 列出配置文件。(使用者可修改的)
    /var/lib/dpkg/info/<package_name>.list 列出软件包安装的所有文件和目录
    /var/lib/dpkg/info/<package_name>.md5sums 列出软件包安装的文件的 MD5 哈希值
    /var/lib/dpkg/info/<package_name>.preinst 软件包安装之前运行的软件包脚本
    /var/lib/dpkg/info/<package_name>.postinst 软件包安装之后运行的软件包脚本
    /var/lib/dpkg/info/<package_name>.prerm 软件包移除之前运行的软件包脚本
    /var/lib/dpkg/info/<package_name>.postrm 软件包移除之后运行的软件包脚本
    /var/lib/dpkg/info/<package_name>.config 用于 debconf 系统的软件包脚本
    /var/lib/dpkg/alternatives/<package_name> update-alternatives 命令使用的替代信息
    /var/lib/dpkg/available 所有软件包的可用性信息
    /var/lib/dpkg/diversions dpkg(1) 使用的文件移动信息,由 dpkg-divert(8) 设置
    /var/lib/dpkg/statoverride dpkg(1) 使用的文件状态改变信息,由 dpkg-statoverride(8) 设置
    /var/lib/dpkg/status 所有软件包的状态信息
    /var/lib/dpkg/status-old “var/lib/dpkg/status” 文件的第一代备份
    /var/backups/dpkg.status* 第二代备份,以及“var/lib/dpkg/status”文件更旧的备份

    “status” 文件也被例如 dpkg(1)、“dselect update” 和 “apt-get -u dselect-upgrade” 等工具使用。
    专门的搜索命令 grep-dctrl(1) 可以搜索 “status” 和 “available” 元数据的本地副本。
    [提示] 提示
    在debian 安装器环境下, udpkg 命令用于打开udeb 软件包,udpkg 命令是 dpkg 命令的一个精简版本.


    可替代:
    update-alternatives --display x-www-browser #列出x-www-browser默认使用什么
    update-alternatives --config x-www-browser #修改默认浏览器

  • 相关阅读:
    JVM性能调优的6大步骤,及关键调优参数详解
    JVM内存调优原则及几种JVM内存调优方法
    关于大型网站技术演进的思考(十六)--网站静态化处理—前后端分离—下(8)
    关于大型网站技术演进的思考(十五)--网站静态化处理—前后端分离—中(7)
    关于大型网站技术演进的思考(十四)--网站静态化处理—前后端分离—上(6)
    关于大型网站技术演进的思考(十三)--网站静态化处理—CSI(5)
    关于大型网站技术演进的思考(十二)--网站静态化处理—缓存(4)
    关于大型网站技术演进的思考(十一)--网站静态化处理—动静分离策略(3)
    关于大型网站技术演进的思考(十)--网站静态化处理—动静整合方案(2)
    关于大型网站技术演进的思考(九)--网站静态化处理--总述(1)
  • 原文地址:https://www.cnblogs.com/mind-water/p/10534248.html
Copyright © 2020-2023  润新知