zoukankan      html  css  js  c++  java
  • yum 与 apt 的对比

     一、概念 

    使用yum/apt之前,你很可能会遇到配置源(ubuntu下一般内置的就比较好,所以可能很少人手动配置),那这个源是什么呢,就是告诉apt/yum,安装软件的时候你要从哪里下载。比如你使用163的源,然后你apt-get/yum install xxx的时候,就从你的源配置文件中读取位置(这里是163的服务器),然后可能在第一次会更新本地数据库(这个数据库中记录163服务器上拥有的软件包,软件包的依赖情况等),本地更新完了就从本地缓存数据库中读取依赖情况以及软件包的具体url,然后就会下载到本地缓存目录。下载完成后执行安装操作。

    说到安装操作,就要谈谈两种方式获取到的包的区别。yum获取到的是rpm,apt获取的是deb,其实你都可以看成是一个压缩包。里面有对应的软件。因为开发者不一样,所以两种软件包的解包方式不一样,和gz,rar包差不多,需要特定的命令去解,rpm包是rpm命令,deb是dpkg命令。
    那解开后能不能通用呢( 比如把deb解开后放到rhel中运行)。这个也不是不行但是要考虑到很多因素,假设包中是经过编译的二进制文件(就像windows下的可执行文件),那么就要考虑到依赖。如果是脚本文件就要好些,因为大部分脚本兼容性都比较好。
    这个依赖,就比较复杂了,当然也可以简单的说说,和windows的.dll类似,linux也有动态链接库文件,后缀一般为so,某些软件可能会依赖这些库,本来你的系统glibc是2.12版本的,而你移植过来是需要2.14版本的,你会发现运行不了。当然,是可以解决的,只是解决起来也麻烦. 大部分人不会选择这么做。
     

    二、apt

       apt简单的来说,就是给Ubuntu安装软件的一种命令方式。
     
    1、apt的相关文件
    /etc/apt/sources.list 设置软件包的获取来源
    /etc/apt/apt.conf apt配置文件
    /etc/apt/apt.conf.d/ apt的零碎配置文件
    /etc/apt/preferences 版本参数
    /var/cache/apt/archives/ 存放已经下载的软件包
    /var/cache/apt/archives/partial 存放正在下载的软件包
    /var/lib/apt/lists/ 存放已经下载的软件包详细信息
    /var/lib/apt/lists/partial/ 存放正在下载的软件包详细信息

     

     

     

     

     

    2、apt-get命令的子命令

    update 更新软件包列表
    upgrade 升级系统中的所有软件包
    install 安装软件包
    remove 卸载软件包
    autoremove 仅删除不需要再次下载的软件包
    purge 彻底删除软件包(包括配置文件)
    source 下载源代码
    build-dep 自动下载安装编译某个软件所需要的软件包
    dist-upgrade 升级整个发行版
    dselect-upgrade 安装dselect的选择进行升级
    clean 删除本地缓存的所有升级包
    autoclean 删除本地缓存中无用的软件包
    check 检查是否存在有问题的依赖关系
    例:$ sudo apt-get install php5-mysql apache2

    $ sudo apt-get update && sudo apt-get upgrade

     

     

     

     

     

     

     

     

     

    3、apt-get命令选项

    -d,--download-only 仅下载,不安装
    -f,--fix-broken 修复依赖问题(用于install和remove子命令)
    -m,--ignore-missing,--fix-missing 忽略缺失的软件包。遇到无法下载的软件包,自动忽略
    --no-download 禁止下载软件包。与-m配合,可以使apt只使用已经下载的软件包
    -q,--quiet 静默模式,输出的信息适合做日志
    -s,--simulate,--just-print 模拟测试,不做出实际操作,不改变系统
    -y,--yes,--assume-yes 在系统提问时,自动应答yes
    -u,--show-upgraded 显示已升级的软件包
    -V,--verbose-versions 显示已安装和已升级的软件包的完整版本号
    -b,--compile,--build 在源码包下载完成后进行编译
    --ignore-hold 忽略被保留的软件包
    --no-upgrade 不要升级软件包
    --force-yes 强制回答yes
    --print-uris 仅答应软件包地址,不安装
    --purge 彻底删除,包括配置文件
    --reinstall 重新安装软件包

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

    4、apt-cache命令

    功能:搜索某个软件包的名字或显示某个软件包的详细信息
    搜索mysql的软件包 $ apt-cache search mysql
    查看ssh软件包的详细版本号 $ apt-cache show ssh

     
     
     
     
     

    三、Yum

    任务 Red Hat、Fedora Ubuntu
    基本信息
    软件包后缀 *.rpm *.deb
    软件源配置文件 /etc/yum.conf /etc/apt/sources.list
    安装、删除、升级软件包
    更新软件包列表 每次运行yum时自动执行 apt-get update
    从软件仓库软件安装软件 yum install package apt-get install package
    安装一个已下载的软件包 yum install pkg.rpm

    rpm -i pkg.rpm

    dpkg -i pkg.deb

    pkg --install pkg.deb

    删除软件包 rpm -e package apt-get remove package
    软件包升级检查/测试 yum check-update apt-get -s upgrade

    apt-get -s dist-upgrade

    升级软件包 yum update

    rpm -Uvh [args]

    apt-get upgrade
    升级整个系统 yum upgrade apt-get dist-upgrade
    软件包信息
    获取某软件包的信息 yum search package apt-cache show package
    获取所有软件包的信息 yum list available apt-cache dumpavail
    显示所有已安装的软件 yum list installed

    rpm -qa

    dpkg -l

    dpkg --list

    获取某个已安装软件包的信息 yum info package

    rpm -qi package

    dpkg --status package
    列出某个已安装软件包所包含的文件列表 rpm -ql package  
    列出某个已安装软件包所包含的文档 rpm -qd package
    列出某个已安装软件包所包含的配置文件 rpm -qc package
    显示某个软件包所依赖的软件包列表 rpm -qR package apt-cache depends package
    显示某个软件包的反向依赖关系 rpm -q -whatrequires [args] apt-cache rdepends package
    软件包文件信息
    获取某个软件包文件的信息 rpm -qpi pkg.rpm dpkg --info pkg.deb
    获取某个软件包文件所包含的文件列表 rpm -qpl pkg.rpm dpkg --contents pkg.deb
    获取某个软件包文件所包含的文档 rpm -qpd pkg.rpm
    获取某个软件包文件所包含的配置文件 rpm -qpc pkg.rpm
    软件包解压 rpm2cpio pkg.rpm | cpio -vid dpkg-deb --extract pkg.deb
    搜索某个文件是由哪个软件包安装的 rpm -qf /file/name dpkg -S /file/name

    dpkg --search /file/name

    搜索所有提供某个文件的软件包 yum provides /file/name apt-file search /file/name
    杂项
    显示本地软件包缓存的状态 apt-cache stats
    校验所有已安装的软件包 rpm -Va debsums
    删除本地缓存的所有软件包 yum clean packages apt-get clean
    仅删除本地缓存中过时的软件包 apt-get autoclean
    删除所有软件包信息 yum clean headers apt-file purge
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
    参考:
    https://www.zhihu.com/question/35468373/answer/62894728
    http://www.cnblogs.com/tswcypy/p/3976879.html
  • 相关阅读:
    STL中的stack(堆栈)
    单链表的创建与删除
    面试题四 从尾到头打印链表
    第 1 章 第 2 题 空间敏感排序问题 位向量实现( bitset位向量 )
    第 1 章 第 2 题 位向量的数组实现问题 位运算实现
    第 1 章 第 1 题 高级语言的排序问题 C++标准算法实现
    面试题三 替换空格
    面试题二 二维数组中的查找
    面试题一 赋值运算符函数
    不为客户连接创建子进程的并发回射服务器( poll实现 )
  • 原文地址:https://www.cnblogs.com/rickzhai/p/6432643.html
Copyright © 2011-2022 走看看