apt-get、apt、yum、dpkg、rpm

 

apt-get 命令详解(中文)以及实例:http://blog.51yip.com/linux/1176.html
linux yum命令详解:http://www.cnblogs.com/chuncn/archive/2010/10/17/1853915.html
配置 yum 源的两种方法:http://www.cnblogs.com/shuaixf/archive/2011/11/30/2268496.html

 

 

更新 LInux 系统步骤:

(1) 更新本地软件包列表库。 执行命令如下所示:
          root@Kali:~# apt-get update
          执行以上命令后, 需要等待一段时间。 执行完后, 会自动退出程序。
(2) 升级已存在的包。 执行命令如下所示:
          root@Kali:~# apt-get upgrade
(3) 升级到最新版本。 执行命令如下所示:
          root@Kali:~# apt-get dist-upgrade

 

 

Linux 软件包管理基本操作入门

 

        大多数现代类 Unix 操作系统都提供了一个集中的软件包管理机制,以帮助用户 搜索、安装 管理 软件。而软件通常以「包」的形式存储在仓库「repository」中,对软件包的使用和管理被称为包管理。而 Linux 包的基本组成部分通常有:共享库、应用程序、服务和文档。

        包管理通常 不仅限于软件的一次性安装,还包括了对已安装软件包进行升级的工具。「包仓库」有助于确保代码已经在你使用的系统上进行了审核,并由软件开发者或包维护者进行管理。

        在配置 Linux 服务器或开发环境时,通常都不仅限于使用官方源。相较于现如今软件版本快速更新迭代而言,虽然官方源所使用的稳定版软件包很可能已过时,但对于系统管理员和开发人员来说,掌握常见 Linux 包管理基本操作还是一项必备的常用技能。

 

软件包管理系统:简要介绍

大多数包管理系统是建立在包文件上的集合,包文件通常包含编译好的二进制文件和其它资源组成的:软件、安装脚本、元数据及其所需的依赖列表。

虽然大多数流行的 Linux 发行版在包管理工具、方式和形式都大同小异,但却还是有平台差异:

系统格式工具
Debian.debapt、apt-cache、apt-get、dpkg
Ubuntu.debapt、apt-cache、apt-get、dpkg
CentOS.rpmyum
Fedora.rpmdnf

Debian 及其衍生产品如:Ubuntu、Linux Mint 和 Raspbian 的包格式为.deb文件,APT 是最常见包操作命令,可:搜索库、安装包及其依赖和管理升级。而要直接安装现成.deb包时需要使用dpkg命令。

CentOS、Fedora 及 Red Hat 系列 Linux 使用RPM包文件,并使用yum命令管理包文件及与软件库交互。

在最新的 Fedora 版本中,yum命令已被dnf取代进行包管理。

 

更新本地包数据库列表

大多数 Linux 都使用本地数据库来存储远程可用的包仓库列表,所以在安装或升级包之前最好更新一下这个数据库。

系统命令
Debian / Ubuntusudo apt-get update
CentOSyum check-update
Fedoradnf check-update

 

升级已安装的包

在没有包管理方式时,要升级并保持 Linux 已装软件处在最新版本是一个巨大的工程,管理员和用户不得不手动跟踪上游软件版本变化及安全警告。在有了包管理系统之后,只需几条命令便可保持软件最新。

系统命令备注
Debian / Ubuntusudo apt-get upgrade仅升级已安装的软件包
 sudo apt-get dist-upgrade可添加或删除程序包,以满足新的依赖。
CentOSsudo yum update 
Fedorasudo dnf upgrade 

 

查找/搜索软件包

大多数 Linux 桌面版本都提供用户可搜索和安装软包的界面,这是找寻和安装软件的最佳方法。但对于追求效率和服务器管理员来说,使用命令行工具查找/搜索软件包才是正途。

系统命令备注
Debian / Ubuntuapt-cache search 搜索内容 
CentOSyum search 搜索内容 
 yum search all 搜索内容搜索所有内容,包括包描述。
Fedoradnf search 搜索内容 
 dnf search all 搜索内容搜索所有内容,包括包描述。

 

查看某个软件包信息

在决定安装哪个包之前,我们往往都需要查看该软件包的详细说明。包的说明文件中通常包括:包名、版本号及依赖列表等元数据,可以使用如下命令来查看。

系统命令备注
Debian / Ubuntuapt-cache show 包名显示有关软件包的本地缓存信息
 dpkg -s 包名显示包的当前安装状态
CentOSyum info 包名 
 yum deplist 包名列出包的以来
Fedoradnf info 包名 
 dnf repoquery –requires 包名列出包的以来

 

从软件仓库安装包

一旦我们知道某个软件包的名称之后,便可以使用如下命令从软件仓库安装包。

系统命令备注
Debian / Ubuntusudo apt-get install 包名 
 sudo apt-get install 包1 包2 …安装所有列出的包
 sudo apt-get install -y 包名无需提示直接安装
CentOSsudo yum install 包名 
 sudo yum install 包1 包2 …安装所有列出的包
 sudo yum install -y 包名无需提示直接安装
Fedorasudo dnf install 包名 
 sudo dnf install 包1 包2 …安装所有列出的包
 sudo dnf install -y 包名无需提示直接安装

 

从本地文件系统直接安装包

很多时候,我们在进行测试或从某个地方直接拿到软件包之后需要从本地文件系统直接安装包。Debian 及衍生系统可以使用 dpkg 进行安装,CentOS 和 Fedora 系统使用 yum  dnf 命令进行安装。

系统命令备注
Debian / Ubuntusudo dpkg -i 包名.deb 
 sudo apt-get install -y gdebi && sudo gdebi 包名.deb使用 gdebi 检索缺少的依赖关系
CentOSsudo yum install 包名.rpm 
Fedorasudo dnf install 包名.rpm 

 

移除已安装的包

由于包管理器知道哪些文件是由哪个包提供的,所以在卸载不需要的软件包之后通常可以获得一个干净的系统。

系统命令备注
Debian / Ubuntusudo apt-get remove 包名 
 sudo apt-get autoremove自动移除已知不需要的包
CentOSsudo yum remove 包名 
Fedorasudo dnf erase 包名 

 

 

一、rpm 包 安装方式步骤: 

1、找到相应的软件包,比如 soft.version.rpm,下载到本机某个目录; 
2、打开一个终端,su - 成 root 用户; 
3、cd soft.version.rpm 所在的目录; 
4、输入 rpm -ivh soft.version.rpm 


二、deb 包 安装方式步骤: 

1、找到相应的软件包,比如 soft.version.deb,下载到本机某个目录; 
2、打开一个终端,su - 成 root 用户; 
3、cd soft.version.deb 所在的目录; 
4、输入 dpkg -i soft.version.deb 


三、tar.gz 源代码 包 安装方式: 

1、找到相应的软件包,比如soft.tar.gz,下载到本机某个目录; 
2、打开一个终端,su -成root用户; 
3、cd soft.tar.gz所在的目录; 
4、tar -xzvf soft.tar.gz //一般会生成一个soft目录 
5、cd soft 
6、./configure 
7、make 
8、make install 


四、tar.bz2 源代码 包 安装方式: 

1、找到相应的软件包,比如soft.tar.bz2,下载到本机某个目录; 
2、打开一个终端,su -成root用户; 
3、cd soft.tar.bz2所在的目录; 
4、tar -xjvf soft.tar.bz2 //一般会生成一个soft目录 
5、cd soft 
6、./configure 
7、make 
8、make install 


五、apt 方式安装: 

1、打开一个终端,su -成root用户; 
2、apt-cache search soft 注:soft是你要找的软件的名称或相关信息 
3、如果2中找到了软件soft.version,则用apt-get install soft.version命令安 装软件 
注:只要你可以上网,只需要用apt-cache search查找软件,用 apt-get install 软件 


六、bin 文件安装: 

如果你下载到的软件名是soft.bin,一般情况下是个可执行文件,安装方法如下: 
1、打开一个终端,su -成root用户; 
2、chmod +x soft.bin 
3、./soft.bin //运行这个命令就可以安装软件了 


七、不需要安装的软件: 

有些软件,比如 lumaqq,是不需要安装的,自带 jre 解压缩后可直接运行。假设 下载的是lumaqq.tar.gz,使用方法如下: 
        1、 打开一个终端,su - 成 root 用户; 
        2、 tar -xzvf lumaqq.tar.gz  // 这一步会生成一个叫 LumaQQ 的目录 
        3、 cd LumaQQ 
        4、 chmod +x lumaqq  // 设置 lumaqq 这个程序文件为可运行 
        5、 此时就可以运行 lumaqq 了,用命令 ./lumaqq 即可,但每次运行要输入全路径或切换到刚才生成的LumaQQ目录里 
        6、 为了保证不设置路径就可以用,你可以在/bin目录下建立一个lumaqq的链接,
            用命令 ln -s lumaqq /bin/ 即可,以后任何时候打开一个终端输入lumaqq 就可以启动 QQ 了 
        7、 如果你要想 lumaqq 有个菜单项,使用菜单编辑工具,比如 Alacarte Menu Editor,
            找到上面生成的 LumaQQ 目录里的 lumaqq 设置一个菜单项就可以了,也可以直接到 /usr/share/applications目录,
            按照里面其它 *.desktop 文件的格式生成一个自己的 desktop 文件即可。

 

 

MAC 中的 brew 

 

一:简介

Homebrew 是 Mac 中常见的包管理器。类似 ubuntu 下 apt-get,centos 的 yum。

官网地址:https://brew.sh

 

二:安装

参考官网:/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install.sh)"

如果连接被拒绝,更新 host 文件再次安装

秘籍一:使用wget更新hosts
wget https://raw.githubusercontent.com/racaljk/hosts/master/hosts -qO /tmp/hosts && sudo sh -c 'cat /tmp/hosts > /etc/hosts'

在 Mac 上面安装 HomeBrew 失败的解决方案:修改 hosts 文件:https://blog.csdn.net/qq_33154343/article/details/106030933

苹果 mac 电脑中 brew 的安装使用及卸载详细教程:https://www.jianshu.com/p/65440ecc7023

 

三:使用

注意:下载太慢,可以替换国内的镜像源

链接地址:https://www.cnblogs.com/jingxiaoniu/p/11123377.html

brew home	    用浏览器打开brew的官方网站
brew list redis	查看redis的安装文件
brew cat redis	查看redis的 brew 安装脚本
brew cleanup	删除所有软件升级后的遗留旧版本查看已经安装的包:1.查看已经安装的包:   brew list 【xxx】2.查看包信息:         brew info 【xxx】3.查看包依赖:         brew deps 【xxx】4.查看配置信息:       brew config5.诊断问题:           brew doctor6.帮助信息:           brew help更新:1.更新Homebrew:              brew update2.查看需要更新的包:          brew outdated3.更新包(不加报名更新所有):brew upgrade 【xxx】4.锁定不想更新的包:          brew pin 【xxx】    5.取消锁定:                  brew unpin 【xxx】清理:1.清理旧版本:brew cleanup 【xxx】2.强制卸载:brew uninstall 【xxx】--force服务管理:1.列出所有正在运行的服务:brew services list2.启动一个服务:brew services start 【xxx】3.停止一个服务:brew services stop 【xxx】4.重启一个服务:brew services restart 【xxx】5.运行一个服务:brew services run 【xxx】6.卸载没有使用过的服务:brew services cleanup仓库管理:注意:当 brew 默认仓库 core 中不存在当前应用,可以使用tap方法添加应用1.已安装的仓库列表:brew tap2.添加仓库:brew tap 【user/repo URL】注:user/repo github上存在,brew tap user/repo 在本地对https://github.com/user/repo仓库上做了个克隆,完成后brew就可以在这个仓库包上工作,URL方法类同。3.移除仓库:brew untap tap

使用示例:

brew services list       # 查看系统通过 brew 安装的服务
brew services cleanup    # 清除已卸载无用的启动配置文件mysql 启动:brew services start mysql 停止:brew services stop mysql 重启:brew services restart mysqlphp 启动:brew services start php 停止:brew services stop php 重启:brew services restart phpnginx 启动:brew services start nginx 停止:brew services stop nginx 重启:brew services restart nginxbrew  install mysql  // 安装mysql
brew search mysql    // 搜索mysql
brew info mysql      // 查找mysql相关信息
brew update          // 更新自己的Homebrew
brew outdated        // 会显示哪些软件可以升级
brew upgrade         // 升级所有软件(后面不加名字)
brew upgrade  mysql  // 升级mysql软件
brew cleanup         // 定期清理一些安装包缓存
brew list            // 显示已经安装的软件
brew uninstall xx    // 卸载某些软件brew 安装的根目录 一般在:/usr/local/Cellar/ 下mac brew :command not founc 解决办法sudo vim .bash_profileexport PATH=/usr/local/bin:$PATHsource .bash_profile

 

 

apt-get 和 apt

 

( 使用的时候最好先配置下国内的源 )

 

一,什么的是 apt-get

高级包装工具(英语:Advanced Packaging Tools,简称:APT)是Debian及其衍生发行版(如:ubuntu)的软件包管理器。APT可以自动下载,配置,安装二进制或者源代码格式的软件包,因此简化了 Unix系统上管理软件的过程,apt-get命令一般需要root权限执行,所以一般跟着sudo命令。它根yum ,pacman,installpkg等性质差不多,是系统软件的管理工具。会用其中一种基本上都会用了。


二,apt-get 中文参数

用法:apt-get [选项] 命令  apt-get [选项] install|remove pkg1 [pkg2 ...]  apt-get [选项] source pkg1 [pkg2 ...]  apt-get 是一个下载安装软件包的简单命令行接口。  最常用的命令是update(更新) 和 install(安装)。  命令:  update     - 重新获取软件包列表  upgrade    - 进行更新  install    - 安装新的软件包  remove     - 移除软件包。卸载软件 autoremove - 自动移除全部不使用的软件包  purge      - 移除软件包和配置文件  source     - 下载源码档案  build-dep  - 为源码包配置编译依赖  dist-upgrade     - 发行版升级, 参见 apt-get(8)  dselect-upgrade  - 依照 dselect 的选择更新  clean      - 清除下载的归档文件  autoclean  - 清除旧的的已下载的归档文件  check      - 检验是否有损坏的依赖  选项:  -h   本帮助文件。  -q   输出到日志 - 无进展指示  -qq  不输出信息,错误除外  -d   仅下载 - 不安装或解压归档文件  -s   不实际安装。模拟执行命令  -y   假定对所有的询问选是,不提示  -f   尝试修正系统依赖损坏处  -m   如果归档无法定位,尝试继续  -u   同时显示更新软件包的列表  -b   获取源码包后编译  -V   显示详细的版本号  -c=? 阅读此配置文件  -o=? 设置自定的配置选项,如 -o dir::cache=/tmp  

 

三,apt-get 常用实例

apt-cache search packagename             搜索包
sudo apt-cache search string             在软件包列表中搜索字符串
apt-cache show packagename               获取包的相关信息,如说明、大小、版本等
sudo apt-get install packagename         安装包
sudo apt-get install packagename         -- reinstall 重新安装包
sudo apt-get -f install                  修复安装 "-f = --fix-missing"
sudo apt-get remove packagename          删除包
sudo apt-get remove packagename --purge  删除包,包括删除配置文件等sudo apt-get update               更新源
sudo apt-get upgrade              更新已安装的包
sudo apt-get dist-upgrade         升级系统sudo apt-get dselect-upgrade        使用 dselect 升级
apt-cache depends packagename       了解使用依赖
apt-cache rdepends packagename      是查看该包被哪些包依赖
sudo apt-get build-dep packagename  安装相关的编译环境
sudo apt-get source packagename     下载该包的源代码sudo apt-get clean      清理无用的包
sudo apt-get autoclean  清理无用的包
sudo apt-get check      检查是否有损坏的依赖dpkg –force-all –purge packagename  有些软件很难卸载,而且还阻止了别的软件的应用 ,就可以用这个,不过有点冒险。
apt-cache showpkg pkgs        —— 显示软件包信息。
apt-cache dumpavail           —— 打印可用软件包列表。
apt-cache show pkgs           —— 显示软件包记录,类似于dpkg –print-avail。
apt-cache pkgnames            —— 打印软件包列表中所有软件包的名称。
dpkg -S file                  —— 这个文件属于哪个已安装软件包。dpkg -L package               —— 列出软件包中的所有文件。# 列出所有与模式相匹配的软件包。如果您不知道软件包的全名,您可以使用“*package-name-pattern*”。
sudo dpkg -l package-name-pattern

典型应用

我是个赛车发烧友,想装个赛车类游戏玩玩。有哪些赛车类游戏可供选择呢?apt-cache search racing game
出来了一大堆结果。看看有没有更多关于torcs这个游戏的信息。apt-cache show torcs
看上去不错。这个游戏是不是已经安装了?最新版本是多少?它属于哪一类软件,universe还是main?apt-cache policy torcs
好吧,现在我要来安装它!:apt-get install torcs 
在控制台下我应该调用什么命令来运行这个游戏呢?在这个例子中,直接用 torcs 就行了。
但并不是每次都这么简单。我们可以通过查找哪些文件被安装到了 “/usr/bin”文件夹下来确定二进制文件名。
对于游戏软件,这些二进制文件将被安装到“/usr/games”下面。对于系统管理工具相应的文件夹是“/usr/sbin”。dpkg -L torcs | grep /usr/games/
命令的第一部分显示软件包“torcs”安装的所有文件(您自己试试看)。
命令的第二部分,我们告诉系统只显示前一部分的输出结果中含有“/usr/games”的那些行。
这个游戏很酷哦。说不定还有其他赛道可玩的?apt-cache search torcs
我的磁盘空间不够用了。我得把apt的缓存空间清空才行。apt-get clean
哦不,老妈叫我把机器上的所有游戏都删掉。但是我想把配置文件保留下来,这样待会我只要重装一下就可以继续玩了。apt-get remove torcs
如果我想连配置文件一块删除:apt-get remove –purge torcs额外的软件包 deborphan 和 debfoster 工具可以找出已经安装在系统上的不会被用到的软件包。提高命令行方式下的工作效率
您可以通过定义别名(alias)来提高这些命令的输入速度。
例如,您可以在您的 *~/.bashrc* 文件中添加下列内容
alias acs=’apt-cache search’
alias agu=’sudo apt-get update’
alias agg=’sudo apt-get upgrade’
alias agd=’sudo apt-get dist-upgrade’
alias agi=’sudo apt-get install’
alias agr=’sudo apt-get remove’
或者使用前面介绍的 aptitude 命令,如“alias agi=’sudo aptitude install’”。

 

apt 与 apt-get

在开始对比 apt 与 apt-get 命令的区别之前,我们先来看看这两个命令的背景,以及它们要试图达到的目的。

Debian 作为 Ubuntu、Linux Mint 和 elementary OS 等 Linux 操作系统的母板,其具有强健的「包管理」系统,它的每个组件和应用程序都内置在系统中安装的软件包中。Debian 使用一套名为 Advanced Packaging Tool(APT)的工具来管理这种包系统,不过请不要把它与 apt 命令混淆,它们之间是其实不是同一个东西。

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

如果你已阅读过我们的 apt-get 命令指南,可能已经遇到过许多类似的命令,如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 中最常用命令选项的集合。

 

apt 与 apt-get 之间的区别

通过 apt 命令,用户可以在同一地方集中得到所有必要的工具,apt 的主要目的是提供一种以「让终端用户满意」的方式来处理 Linux 软件包的有效方式。

apt 具有更精减但足够的命令选项,而且参数选项的组织方式更为有效。除此之外,它默认启用的几个特性对最终用户也非常有帮助。例如,可以在使用 apt 命令安装或删除程序时看到进度条。

apt 还会在更新存储库数据库时提示用户可升级的软件包个数。

如果你使用 apt 的其它命令选项,也可以实现与使用 apt-get 时相同的操作。

 

apt 和 apt-get 命令之间的区别

虽然 apt 与 apt-get 有一些类似的命令选项,但它并不能完全向下兼容 apt-get 命令。也就是说,可以用 apt 替换部分 apt-get 系列命令,但不是全部。

apt 命令取代的命令命令的功能
apt installapt-get install安装软件包
apt removeapt-get remove移除软件包
apt purgeapt-get purge移除软件包及配置文件
apt updateapt-get update刷新存储库索引
apt upgradeapt-get upgrade升级所有可升级的软件包
apt autoremoveapt-get autoremove自动删除不需要的包
apt full-upgradeapt-get dist-upgrade在升级软件包时自动处理依赖关系
apt searchapt-cache search搜索应用程序
apt showapt-cache show显示装细节

当然,apt 还有一些自己的命令:

新的apt命令命令的功能
apt list列出包含条件的包(已安装,可升级等)
apt edit-sources编辑源列表

需要大家注意的是:apt 命令也还在不断发展, 因此,你可能会在将来的版本中看到新的选项。

 

apt-get已弃用?

目前还没有任何 Linux 发行版官方放出 apt-get 将被停用的消息,至少它还有比 apt 更多、更细化的操作功能。对于低级操作,仍然需要 apt-get。

 

我应该使用 apt 还是 apt-get?

既然两个命令都有用,那么我该使用 apt 还是 apt-get 呢?作为一个常规 Linux 用户,系统极客建议大家尽快适应并开始首先使用 apt。不仅因为广大 Linux 发行商都在推荐 apt,更主要的还是它提供了 Linux 包管理的必要选项。

最重要的是,apt 命令选项更少更易记,因此也更易用,所以没理由继续坚持 apt-get。

最后提供两点使用上的建议:

  • apt 可以看作 apt-get 和 apt-cache 命令的子集, 可以为包管理提供必要的命令选项。
  • apt-get 虽然没被弃用,但作为普通用户,还是应该首先使用 apt。

 

 

aptitude 

aptitude 和 apt-get 一样,是 Debian 及其衍生系统中功能极其强大的 包管理工具。
但是 aptitude 与 apt-get 不同的是,aptitude 在处理依赖问题上更佳一些。

举例来说,aptitude 在删除一个包时,会同时删除本身所依赖的包。这样,系统中不会残留无用的包,整个系统更为干净。

一些常用 aptitude 命令,仅供参考。
命令                       作用
aptitude update              更新可用的包列表
aptitude upgrade             升级可用的包
aptitude dist-upgrade        将系统升级到新的发行版
aptitude install pkgname     安装包
aptitude remove pkgname      删除包
aptitude purge pkgname       删除包及其配置文件
aptitude search string       搜索包
aptitude show pkgname        显示包的详细信息
aptitude clean               删除下载的包文件
aptitude autoclean           仅删除过期的包文件1.aptitude 解决得更好的地方: install, remove, reinstall(apt-get无此功能), show(apt-get无此功能), search(apt-get无此功能), hold(apt-get无此功能), unhold(apt-get无此功能), 2.apt-get 解决得更好的地方: source(aptitude无此功能), build-dep (低版本的aptitude没有build-dep功能)3.apt-get 跟 aptitude 没什么区别的地方:update, upgrade apt-get upgrade      = aptitude safe-upgradeapt-get dist-upgrade = aptitude full-upgrgade其实用的比较多的是(这里以Linux上很有名的开源播放器VLC为例)
sudo apt-get install vlc
sudo apt-get remove vlc
apt-get update  更新源
apt-get upgrade 更新已安装的包有时候要添加软件源也可用这个命令:sudo apt-get add repostory:[软件源地址] 然后用apt-get update 更新源

aptitude    ——    详细查看已安装或可用的软件包。
与 apt-get 类似,aptitude 可以通过命令行方式调用,但仅限于某些命令 —— 最常见的有安装和卸载命令。
由于 aptitude 比 apt-get 了解更多信息,可以说它更适合用来进行安装和卸载。

sudo apt-cache showpkg pkgs  # 显示软件包信息。
sudo apt-cache dumpavail     # 打印可用软件包列表。
sudo apt-cache show pkgs     # 显示软件包记录,类似于dpkg –print-avail。
sudo apt-cache pkgnames      # 打印软件包列表中所有软件包的名称。
sudo dpkg -S file            # 这个文件属于哪个已安装软件包。
sudo dpkg -L package         # 列出软件包中的所有文件。

 

 

 

dpkg、apt-get、aptitude 三个命令的区别 及 使用

 

  1. dpkg 绕过 apt 包管理数据库对软件包进行操作,所以你用 dpkg 安装过的软件包,用 apt 可以再安装一遍,系统不知道之前安装过了,将会覆盖之前 dpkg 的安装。dpkg 是用来安装 .deb 文件,但不会解决模块的依赖关系,且不会关心ubuntu的软件仓库内的软件,可以用于安装本地的 deb 文件
  2. apt 会解决安装模块的依赖问题并会咨询软件仓库, 但不会安装本地的deb文件。apt 是建立在dpkg之上的软件管理工具
  3. aptitude 与 apt-get 一样,是 Debian 及其衍生系统功能极其强大的 包管理工具aptitude 与 apt-get 不同的是在处理依赖问题上更佳一些。举例来说,aptitude在删除一个包时,会同时删除本身所依赖的包。这样系统中不会残留无用的包整个系统更为干净。

 

安装软件包

dpkg -i package_name.deb    # 安装本地软件包,不解决依赖关系
apt-get install package     # 在线安装软件包
sudo apt-get install packagename   # 安装一个新软件包(参见下文的aptitude )
aptitude install pattern    # 在线安装软件包
apt-get install package     --reinstall   # 重新安装软件包
apitude reinstall package   # 重新安装软件包

 

移除软件包

dpkg -r package             # 删除软件包
apt-get remove package      # 删除软件包
sudo apt-get remove packagename        # 卸载一个已安装的软件包(保留配置文件)
aptitude remove package     # 删除软件包
dpkg -P                     # 删除软件包及配置文件
apt-get remove package --purge    # 删除软件包及配置文件
sudo apt-get --purge remove packagename # 卸载一个已安装的软件包(删除配置文件)
apitude purge pattern             # 删除软件包及配置文件apt-get autoremove     # 自动移除软件包,删除不再需要的软件包
注:aptitude 没有,它会自动解决这件事# 有些软件很难卸载,而且还阻止了别的软件的应用 ,就可以用这个,不过有点冒险。
sudo dpkg –force-all –purge packagename # 会把已装或已卸的软件都备份在硬盘上,所以如果需要空间的话,可以让这个命令来删除你已经删掉的软件
sudo apt-get autoclean apt

 

清除下载的软件包

apt-get clean        # 清除 /var/cache/apt/archives 目录,# 这个命令会把安装的软件的备份也删除,不过这样不会影响软件的使用的。
aptitude clean       # 清除 /var/cache/apt/archives 目录
apt-get autoclean    # 清除 /var/cache/apt/archives 目录,不过只清理过时的包
aptitude autoclean   # 清除 /var/cache/apt/archives 目录,不过只清理过时的包

 

编译相关   

apt-get source package      # 获取源码
apt-get build-dep package   # 解决编译源码 package 的依赖关系
aptitude build-dep pattern  # 解决编译源码 pattern 的依赖关系

 

平台相关

apt-cross --arch ARCH --show package     # 显示属于 ARCH 构架的 package 软件包信息
apt-cross --arch ARCH --get package      # 下载属于 ARCH 构架的 package 软件包
apt-cross --arch ARCH --install package  # 安装属于 ARCH 构架的 package 软件包
apt-cross --arch ARCH --remove package   # 移除属于 ARCH 构架的 package 软件包
apt-cross --arch ARCH --purge package    # 移除属于 ARCH 构架的 package 软件包
apt-cross --arch ARCH --update           # 升级属于 ARCH 构架的 package 软件包

注:慎重考虑要不要用这种方法来安装不同构架的软件包,这样会破坏系统。
    对于 amd64 的用户可能需要强制安装某些 i386 的包,千万不要把原来 amd64 本身的文件给 replace 了。
    最好只是安装一些 lib 到 /usr/lib32 目录下。
    同样地,可以用 apt-file 看某个其它构架的软件包包含哪些文件,或者是文件属于哪个包,
    不过记得最先要用 apt-file --architecture ARCH update 来升级apt-file 的数据库,在 search 或 show 时也要指定 ARCH。

 

更新源

apt-get update          # 更新源
sudo apt-get update     # 在修改/etc/apt/sources.list或者/etc/apt/preferences之後运行该命令。
aptitude update         # 更新源

 

更新系统

apt-get upgrade        #更新所有已安装的软件包
aptitude safe-upgrade  #更新已经安装的软件包
apt-get dist-upgrade   #将系统升级到新版本
aptitude full-upgrade  #将系统升级到新版本

 

 

yum 命令

 

        yum(全称为 Yellow dog Updater, Modified)是一个在 Fedora 和 RedHat 以及 SUSE 中的 Shell 前端软件包管理器。基于RPM包管理,能够从指定的服务器自动下载RPM包并且安装,可以自动处理依赖性关系,并且一次安装所有依赖的软体包,无须繁琐地一次次下载、安装。yum提供了查找、安装、删除某一个、一组甚至全部软件包的命令,而且命令简洁而又好记。yum起初是由yellow dog这一发行版的开发者Terra Soft研发,用Python写成,那时还叫做yup(yellow dog updater),后经杜克大学的Linux@Duke开发团队进行改进,遂有此名。yum的宗旨是自动化地升级,安装/移除rpm包,收集rpm包的相关信息,检查依赖性并自动提示用户解决。yum的关键之处是要有可靠的repository,顾名思义,这是软件的仓库,它可以是http或ftp站点, 也可以是本地软件池,但必须包含rpm的header, header包括了rpm包的各种信息,包括描述,功能,提供的文件,依赖性等.正是收集了这些 header并加以分析,才能自动化地完成余下的任务。

        Redhat 和 Fedora 的软件安装命令是 rpm ,但是用 rpm 安装软件最大的麻烦就是需要手动寻找安装该软件所需要的一系列依赖关系,超级 麻烦不说,要是软件不用了需要卸载的话由于卸载掉了某个依赖关系而导致其他的软件不能用是非常恼人的。令人高兴的是,Fedora 终于推出了类似于 ubuntu中的 apt 的命令 yum,令 Fedora的软件安装变得简单容易。Yum 有以下特点:
*可以同时配置多个资源库(Repository)
*简洁的配置文件(/etc/yum.conf)
*自动解决增加或删除rpm包时遇到的倚赖性问题
*使用方便
*保持与RPM数据库的一致性

yum,是 Yellow dog Updater Modified 的简称,

yum 的命令形式一般是如下:yum [options] [command] [package ...]
其中的[options]是可选的,选项包括-h(帮助),-y(当安装过程提示选择全部为"yes"),-q(不显示安装的过程)等等。[command]为所要进行的操作,[package ...]是操作的对象。

概括了部分常用的命令包括:

自动搜索最快镜像插件:   yum install yum-fastestmirror
安装yum图形窗口插件:    yum install yumex
查看可能批量安装的列表: yum grouplist

1 安装

yum install    //全部安装
yum install package1     //安装指定的安装包package1
yum groupinsall group1     //安装程序组group1

2 更新和升级

yum update    //全部更新
yum update package1    //更新指定程序包package1
yum check-update    //检查可更新的程序
yum upgrade package1    //升级指定程序包package1
yum groupupdate group1    //升级程序组group1

3 查找和显示

yum info package1    //显示安装包信息package1
yum list    //显示所有已经安装和可以安装的程序包
yum list package1    //显示指定程序包安装情况package1
yum groupinfo group1    //显示程序组group1信息yum search string 根据关键字string查找安装包

4 删除程序

yum remove | erase package1    //删除程序包package1
yum groupremove group1    //删除程序组group1
yum deplist package1    //查看程序package1依赖情况

5 清除缓存

yum clean packages    //清除缓存目录下的软件包
yum clean headers    //清除缓存目录下的 headers
yum clean oldheaders    //清除缓存目录下旧的 headers
yum clean, yum clean all (= yum clean packages; yum clean oldheaders)    //清除缓存目录下的软件包及旧的headers

比如,要安装游戏程序组,首先进行查找:
#:yum grouplist
可以发现,可安装的游戏程序包名字是”Games and Entertainment“,这样就可以进行安装:
#:yum groupinstall "Games and Entertainment"
所有的游戏程序包就自动安装了。在这里Games and Entertainment的名字必须用双引号选定,因为Linux下面遇到空格会认为文件名结束了,因此必须告诉系统安装的程序包的名字是“Games and Entertainment”而不是“Games"。

此外,还可以修改配置文件/etc/yum.conf选择安装源。可见yum进行配置程序有多方便了吧。
更多详细的选项和命令,当然只要在命令提示行下面:man yum

yum groupinstall "KDE (K Desktop Environment)"
yum install pirut k3b mikmod
yum groupinstall "Server Configuration Tools"
yum groupinstall "Sound and Video"
#yum groupinstall "GNOME Desktop Environment"
yum groupinstall "Legacy Software Support"
yum groupinstall "Development Libraries"
yum groupinstall "Development Tools"
#yum groupinstall "Windows File Server"
yum groupinstall "System Tools"
yum groupinstall "X Window System"
yum install PHP-gd
yum install gd-devel
yum groupinstall "Chinese Support"
#yum install samba-common  //该执行会一起安装 samba-client
#yum install samba
yum install gcc
yum install cpp
yum install gcc-c++
yum install ncurses
yum install ncurses-devel
yum install gd-devel php-gd
yum install gd-devel
yum install gcc
yum install cpp
yum install gcc-c++
yum install ncurses
yum install ncurses-devel
yum install gd-devel php-gd
yum install gd-devel
yum install zlib-devel
yum install freetype-devel freetype-demos freetype-utils
yum install libpng-devel libpng10 libpng10-devel
yum install libjpeg-devel
yum install ImageMagick
yum install php-gd
yum install flex
yum install ImageMagick-devel#yum install system-config-bind         
#yum groupinstall "DNS Name Server"      //安裝 bind 及 bind-chroot 套件
yum groupinstall "MySQL Database"'
yum clean all

-----------------------------------------------------------------------------------------------------------
1.列出所有可更新的软件清单。命令:yum check-update
2.安装所有更新软件。命令:yum update
3.仅安装指定的软件。命令:yum install packageName
安装的命令是,yum install xxx,
使用yum安装和卸载软件,有个前提是yum安装的软件包都是rpm格式的。
yum会查询数据库,有无这一软件包,如果有,则检查其依赖冲突关系,如果没有依赖冲突,那么最好,下载安装;
如果有,则会给出提示,询问是否要同时安装依赖,或删除冲突的包,你可以自己作出判断
删除的命令是,yum remove xxx,同安装一样,yum也会查询数据库,给出解决依赖关系的提示。
4.仅更新指定的软件。命令:yum update
5.列出所有可安裝的软件清单。命令:yum list
6.用YUM删除软件包。命令:yum remove
7.用yum查询想安装的软件
我们常会碰到这样的情况,想要安装一个软件,只知道它和某方面有关,但又不能确切知道它的名字。这时yum的查询功能就起作用了。
你可以用 yum search keyword这样的命令来进行搜索,比如我们要则安装一个Instant Messenger,但又不知到底有哪些,
这时不妨用 yum search messenger这样的指令进行搜索,yum会搜索所有可用rpm的描述,列出所有描述中和messeger有关的rpm包,
于是我们可能得到 gaim,kopete等等,并从中选择。
有时我们还会碰到安装了一个包,但又不知道其用途,我们可以用yum info packagename这个指令来获取信息。
1.使用YUM查找软件包。命令:yum search
2.列出所有可安装的软件包。命令:yum list
3.列出所有可更新的软件包。命令:yum list updates
4.列出所有已安装的软件包。命令:yum list installed
5.列出所有已安装但不在 Yum Repository 內的软件包。命令:yum list extras
6.列出所指定的软件包。命令:yum list 
7.使用YUM获取软件包信息。命令:yum info 
8.列出所有软件包的信息。命令:yum info
9.列出所有可更新的软件包信息。命令:yum info updates
10.列出所有已安裝的软件包信息。命令:yum info installed
11.列出所有已安裝但不在 Yum Repository 內的软件包信息。命令:yum info extras
12.列出软件包提供哪些文件。命令:yum provides

5.清除YUM缓存
yum 会把下载的软件包和header存储在cache中,而不会自动删除。
如果我们觉得它们占用了磁盘空间,可以使用yum clean指令进行清除,更精确的用法是yum clean headers清除header,
yum clean packages清除下载的rpm包,
yum clean all 清除所有
1.清除缓存目录(/var/cache/yum)下的软件包。命令:yum clean packages
2.清除缓存目录(/var/cache/yum)下的 headers。命令:yum clean headers
3.清除缓存目录(/var/cache/yum)下旧的 headers。命令:yum clean oldheaders
4.清除缓存目录(/var/cache/yum)下的软件包及旧的headers。命令:yum clean, yum clean all (= yum clean packages; yum clean oldheaders)


以上所有命令参数的使用都可以用man来查看:
1、安装图形版yumex:yum install yumex。
2、安装额外的软件仓库:
rpm.livna.org 的软件包仓库:
rpm -ivh http://livna-dl.reloumirrors.net … ease-7-2.noarch.rpm

freshrpms.NET 的软件包仓库:
rpm –ivh http://ftp.freshrpms.net/pub/fre … 1.1-1.fc.noarch.rpm

3、安装最快源 yum install yum-fastestmirror
资源真的是非常丰富,从Centos到Ubuntu,ISO镜像、升级包,应有尽有,上交的兄弟们真是幸福,羡慕啊。
不过还好,我们好歹也算是在教育网内,凑合着也可以沾点光,下载一些。
网址为:ftp://ftp.sjtu.edu.cn/

相应的yum的repo为
[updates]
name=Fedora updates
baseurl=ftp://ftp.sjtu.edu.cn/fedora/linux/updates/$releasever/$basearch/
enabled=1
gpgcheck=0
[fedora]
name=Fedora $releasever - $basearch
baseurl=ftp://ftp.sjtu.edu.cn/fedora/linux/releases/$releasever/Everything/$basearch/os/
enabled=1
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-fedora file:///etc/pki/rpm-gpg/RPM-GPG-KEY

如果在机器上安装了apt管理器,则相应的源为
repomd ftp://ftp.sjtu.edu.cn/ fedora/linux/updates/$(VERSION)/$(ARCH)/

repomd ftp://ftp.sjtu.edu.cn/ fedora/linux/releases/$(VERSION)/Everything/$(ARCH)/os/

这与前面yum的源的格式上有一些差别,需要加以注意。
下面介绍一下fedora 下安装 scim

1. 什么输入法适合我?
fcitx和scim是目前比较好的输入法, 但是他们的特点不同,fcitx只能输入中文,而scim可以根据需要,利用不同的码表达到中英日…等等各种语言的输入问题。如果你只懂中文,或者只会输 入英文&中文,那么fcitx是一个不错的选择,因为它漂亮,小巧,实用。如果你还需要输入日文或者其他语言,那么你因该安装scim。通 过合理的配置,他能够让你像在windows里面一样,想输入什么语言就能输入什么语言,同一种语言想用什么输入法就用什么输入法。Scim的扩充性很 强,而且比较稳定,我就是选择的是scim.
2. 安装一个新输入法前需要哪些准备?
如果你选择fcitx或者scim,那么我建议你删除系统自带的中文输入法。方法如下:
rpm –qa | grep iiimf | xargs rpm –e
rpm –qa | grep Chinput| xargs rpm –e
如果有哪一行提示rpm: no packages given for erase那表示本身你的系统里面没有该输入法,不用担心,继续往下看就行了。
说 明:rpm –qa是列出所有安装的rpm包,grep iiimf是选择出其中名字含有iiimf的那些包,xargs rpm –e的意思是把前面列出的这些包删除掉。Xargs的作用就是把前面通过 | 传过来的数据作为下面命令的参数。这就好比一个过滤器,首先是放着所有的安装包,然后grep以后,只留下了含有某些特定关键字的rpm包,然后通过 xargs和rpm –e的组合运用,把剩下的这些含有某特定关键字的包删掉。这样就达到了删除该输入法及相关包的目的。下面的Chinput也是如此,在此不再重复。如果你还安装了其他输入法,比如你原来装的是fcitx,现在想装scim,那么你最好模仿上面的样子把fcitx删除,方法就是把iiimf的位置改成 fcitx就可以了。
在安装新输入法之前,最好这样做一下,因为多种输入法同时存在一个系统中没有什么好处,你只可能去用一个,而且他们同时存在可能有的时候会出现问题,想想也知道,会互相竞争嘛。所以在此以后,你应该保证系统里面已经没有中文输入法了。通过类似以下方式验证:
whereis fcitx
whereis scim
whereis miniChinput


3. 输入法是何时被系统调用的?
很多人不知道输入法到底什么时候被load进来,不知道这个当然就不知道为什么有的时候呼不出输入法(因为可能根本没有调入)当然也不会知道如何配置能够符合自己的要求。
大 家都知道,linux下面比较常用的有两个桌面系统,gnome和kde,这都无所谓,他们其实都是架在X系统之上的。简单的说X系统就是一个最核心,也 是最底层的桌面系统,gnome也好,kde也罢,或者其他的什么fvwm之类的,都只不过是X系统和用户之间的另一层软件而已。所以要想达到不管使用什 么桌面系统,都能调入输入法,就是要在X系统启动的时候,让输入法也启动起来,那么这样之后,无论你使用的是gnome还是kde或者其他什么桌面,都能 够调入输入法。因为当轮到他们启动的时候,X系统已经启动好了,输入法已经被系统调入了。那么X系统又是如何启动的呢?让我们从startx开始说起。
无论你用什么桌面系统,都是通过startx启动的,那么startx究竟是什么呢?一个应用程序还是一个脚本文件?为什么它能够启动各种桌面系统,并且能够按照相应的配置文件来设置呢?带着疑问,我在console里面输入whereis startx.
在 找到了存放startx的路径以后,用编辑器打开它发现原来是一个脚本文件。这个脚本文件的内容可能根据发行版不同,会有差异,如果你懂一些shell的 语言,那么你可以尝试看看,不一定要全部看懂,但是你大致看过以后会发现最后有一个xinit的命令,然后跟着一些参数。我尝试在console下面输入 xinit(注意,不要在图形界面下做此操作)
发现图形界面启动拉,但是很丑陋,什么功能都没有,鼠标可以动,还有一个可以输入命令的小窗口。怎 么退出来?ctrl+alt+backspace. 原来如此,startx只是一个脚本,里面通过对一系列配置文件的分析设置,最终利用xinit命令启动图形界面。不管是kde还是gnome,都是在这 个脚本中完成的。那么让我们再打开startx脚本看看里面还做了些什么。你仔细看看,会发现有一个东西很显眼,就是/etc/X11/xinit /xinitrc,这个xinitrc好像很眼熟,在配置输入法的其他贴中总是看到,这里出现了肯定是里面运行了这个脚本。再看其他的一些东西,其实都是利用shell配置出一个xinit启动的参数,用来配置桌面系统用的,不用管它。目前已知的就是startx的时候它会去执行一个/etc/X11 /xinit/xinitrc的脚本,让我们打开来看看里面有什么。
打开一看,其中一段我觉得最有价值,是一个for循环,他依次执行了/etc /X11/xinit/xinitrc.d/下面的所有脚本。你可以耐心的找一下,一定可以发现。那么这个目录里面有些什么内容呢?有一个文件看名字就知道和输入相关,他叫xinput。等等,让我们理一下,是怎么从startx到xinput的。
首先是执行startx这个脚本文件,里面他会执行xinitrc这个脚本,然后xinitrc脚本里面的,叫xinput。OK, 我们继续,打开xinput看看。
4.安装软件包
rpm -Uvh scim-0.8.2-1.i586.rpm
rpm -Uvh scim-chinese-0.2.6-1.i586.rpm

5.修改配置文件
接下来重要的一步就是,修改一下
/etc /X11/xinit/xinitrc.d/xinput文件,让SCIM在X启动的时候也启动。我看到网上很多文章也说过,但总是不得要领,经过自己试 验,最简单的就是把xinput文件里的Chinput全部替换为SCIM,chinput替换为scim,保存重启X就可以了。
zh_CN*)
     if [ -e /usr/bin/scim ]; then
   XIM="SCIM"
            elif [ -e /usr/X11R6/bin/xcin ] ; then
                 export LC_CTYPE=zh_CN.GB2312
                 XIM="xcin-zh_CN.GB2312"  
     fi
;;
..............................

SCIM)
XIM_PROGRAM=scim
        XIM_ARGS="-d"
;;

然后修改/etc/gtk-2.0/gtk.immodules,找到这一行:
"xim" "X Input Method" "gtk20" "/usr/share/locale" "ko:ja:zh"
改为:
"xim" "X Input Method" "gtk20" "/usr/share/locale" "en:ko:ja:zh"
可能表示输入英文时也使用该输入法

安装完毕后运行scim-setup,将输入法的切换键改为ctrl+space

 

 

 

 

配置 yum 源的两种方法

 

由于 redhat的yum在线更新是收费的,如果没有注册的话不能使用,如果要使用,需将redhat的yum卸载后,重启安装,再配置其他源,以下为详细过程: 

1.删除redhat原有的yum 
rpm -aq|grep yum|xargs rpm -e --nodeps 

2.下载yum安装文件 
wget http://mirrors.163.com/centos/6/os/x86_64/Packages/yum-3.2.27-14.el6.centos.noarch.rpm 
wget http://mirrors.163.com/centos/6/os/x86_64/Packages/yum-metadata-parser-1.1.2-14.1.el6.x86_64.rpm 
wget http://mirrors.163.com/centos/6/os/x86_64/Packages/yum-plugin-fastestmirror-1.1.26-11.el6.noarch.rpm 
wget http://mirrors.163.com/centos/6/os/x86_64/Packages/python-iniparse-0.3.1-2.1.el6.noarch.rpm 

3.进行安装yum 

rpm -ivh python-iniparse-0.3.1-2.1.el6.noarch.rpm 
rpm -ivh yum-metadata-parser-1.1.2-14.1.el6.x86_64.rpm 
rpm -ivh yum-3.2.27-14.el6.centos.noarch.rpm um-plugin-fastestmirror-1.1.26-11.el6.noarch.rpm  
注意最后两个包必需同时安装,否则会相互依赖 

4.更新repo文件

mv /etc/yum.repos.d/rhel-debuginfo.repo /etc/yum.repos.d/rhel-debuginfo.repo.repo.bak

vi /etc/yum.repos.d/rhel-debuginfo.repo

内容为:

[base]
name=CentOS-$releasever - Base
baseurl=http://mirrors.163.com/centos/6.0/os/$basearch/
gpgcheck=1
gpgkey=http://mirrors.163.com/centos/RPM-GPG-KEY-CentOS-6

#released updates
[updates]
name=CentOS-$releasever - Updates
baseurl=http://mirrors.163.com/centos/6.0/updates/$basearch/
gpgcheck=1
gpgkey=http://mirrors.163.com/centos/RPM-GPG-KEY-CentOS-6

#packages used/produced in the build but not released
#[addons]
#name=CentOS-$releasever - Addons
#baseurl=http://mirrors.163.com/centos/$releasever/addons/$basearch/
#gpgcheck=1
#gpgkey=http://mirrors.163.com/centos/RPM-GPG-KEY-CentOS-6
#additional packages that may be useful
[extras]
name=CentOS-$releasever - Extras
baseurl=http://mirrors.163.com/centos/6.0/extras/$basearch/
gpgcheck=1
gpgkey=http://mirrors.163.com/centos/RPM-GPG-KEY-CentOS-6
#additional packages that extend functionality of existing packages
[centosplus]
name=CentOS-$releasever - Plus
baseurl=http://mirrors.163.com/centos/6.0/centosplus/$basearch/
gpgcheck=1
enabled=0

5、yum clean all 

6、yum install vim #测试一下可不可以用

 

【设置本地镜像作为yum源】

1、mkdir /mnt/cdrom

2   mount /dev/cdrom /mnt/cdrom  #挂着镜像,光盘

3  mkdir /home/redhat-iso

4  cp -Rf /mnt/cdrom/* /home/redhat-iso   #将光盘内的内容copy到某个路径下

5  vi /etc/yum.repos.d/rhel-debuginfo.repo  #编辑repo文件

添加一下内容:

[rhel_6_iso]
name=local iso 
baseurl=file:///home/redhat-iso/
gpgcheck=1
gpgkey=file:///home/redhat-iso/RPM-GPG-KEY-CentOS-6 #该处的gpgkey文件应该改成iso镜像中的文件名

 

 

【关于yum的一点资料】

一、yum是什么
yum = Yellow dog Updater, Modified
主要功能是更方便的添加/删除/更新RPM包.
它能自动解决包的倚赖性问题.
它能便于管理大量系统的更新问题


二、 yum特点
*可以同时配置多个资源库(Repository)
*简洁的配置文件(/etc/yum.conf,/etc/yum.repos.d 下的文件)
*自动解决增加或删除rpm包时遇到的倚赖性问题
*使用方便
*保持与RPM数据库的一致性

三、 yum安装
Centos/RHEL
1. #rpm -ivh yum-2.4.3-4.el4.centos.noarch.rpm

四、yum配置
yum的配置文件
yum的一切配置信息都储存在一个叫yum.conf的配置文件中,通常位于/etc目 录下,这是整个yum系统的重中之重,所以有必要详细介绍。下面是一个从网上找来的yum.con文件,让我们以此为例,进行说明。

[main] 
cachedir=/var/cache/yum 
debuglevel=2 
logfile=/var/log/yum.log 
pkgpolicy=newest 
distroverpkg=redhat-release 
tolerant=1 
exactarch=1 
retries=1 

[base] 
name=Fedora Core $releasever - $basearch - Base 
baseurl=http://download.atrpms.net/mirrors/fedoracore/$releasever/$basearch/os 
http://rpmfind.net/linux/fedora/cor...er/$basearch/os 
http://mirror.clarkson.edu/pub/dist...er/$basearch/os 

[updates-released] 
name=Fedora Core $releasever - $basearch - Released Updates 
baseurl=http://download.atrpms.net/mirrors/fedoracore/updates/$releasever/$basearch 
http://redhat.linux.ee/pub/fedora/l...sever/$basearch 
http://fr2.rpmfind.net/linux/fedora...sever/$basearch 

[Fedora.us] 
name=Fedora.us - $basearch - Extras 
baseurl=http://fedora.linux.duke.edu/fedorax86_64/fedora.us/$releasever/$basearch/RPMS.stable 

[Dag Wieers] 
name=Dag RPM Repository for Fedora Core 
baseurl=http://apt.sw.be/fedora/$releasever/en/$basearch/dag 

[Livna] 
Name=Livna RPM, Fedora Core $releasever - $basearch 
baseurl=http://rpm.livna.org/fedora/$releasever/$basearch/RPMS.stable 

[freshrpms] 
name=FreshRPMs 
baseurl=http://ayo.freshrpms.net/fedora/linux/$releasever/$basearch/freshrpms/ 
http://ftp.us2.freshrpms.net/linux/...arch/freshrpms/

 

第一部分(这是yum的全局性设置。默认一般不必改动。)

[main]
cachedir:yum缓存的目录,yum在此存储下载的rpm包和数据库,一般是/var/cache/yum。
debuglevel:除错级别,0-10,默认是2。
logfile:yum的日志文件,默认是/var/log/yum.log。
pkgpolicy:包的策略。一共有两个选项,newest和last,这个作用是如果你设置了多个repository,而同一软件在不同的repository中同时存在,yum应该安装哪一个,如果是newest,则yum会安装最新的那个版本。如果是last,则yum会将服务器id以字母表排序,并选择最后的那个服务器上的软件安装。一般都是选newest。
distroverpkg:指定一个软件包,yum会根据这个包判断你的发行版本,默认是redhat-release,也可以是安装的任何针对自己发行版的rpm包。
exactarch,有两个选项1和0,代表是否只升级和你安装软件包cpu体系一致的包,如果设为1,则如你安装了一个i386的rpm,则yum不会用1686的包来升级。
retries,网络连接发生错误后的重试次数,如果设为0,则会无限重试。
tolerent,也有1和0两个选项,表示yum是否容忍命令行发生与软件包有关的错误,比如你要安装1,2,3三个包,而其中3此前已经安装了,如果你设为1,则yum不会出现错误信息。默认是0。

除了上述之外,还有一些可以添加的选项,如

exclude=,排除某些软件在升级名单之外,可以用通配符,列表中各个项目要用空格隔开,这个对于安装了诸如美化包,中文补丁的朋友特别有用。
gpgchkeck= 有1和0两个选择,分别代表是否是否进行gpg校验,如果没有这一项,默认好像也是检查的。

第二部分:

配置repository服务器了,这是最令人激动的,有了好的repository,就如家门口开了大卖场,要什么东西稍微跑跑腿就行,对了这还是个免费的大卖场。
所有服务器设置都应该遵循如下格式:

1. [serverid]
2. name=Some name for this server
3. baseurl=url://path/to/repository/

其中serverid是用于区别各个不同的repository,必须有一个独一无二的名称。
name,是对repository的描述,支持像$releasever $basearch这样的变量;
baseurl是服务器设置中最重要的部分,只有设置正确,才能从上面获取软件。它的格式是:

1. baseurl=url://server1/path/to/repository/
2. url://server2/path/to/repository/
3. url://server3/path/to/repository/

其中url支持的协议有 http:// ftp:// file://三种。baseurl后可以跟多个url,你可以自己改为速度比较快的镜像站,但baseurl只能有一个,也就是说不能像如下格式:

1. baseurl=url://server1/path/to/repository/
2. baseurl=url://server2/path/to/repository/
3. baseurl=url://server3/path/to/repository/

其中url指向的目录必须是这个repository header目录的上一级,它也支持$releasever $basearch这样的变量。
url之后可以加上多个选项,如gpgcheck、exclude、failovermethod等,比如:

1. [updates-released]
2. name=Fedora Core $releasever - $basearch - Released Updates
3. baseurl=http://download.atrpms.Net/mirrors/fedoracore/updates/$releasever/$basearch
4. http://redhat.linux.ee/pub/fedora/linux/core/updates/$releasever/$basearch
5. http://fr2.rpmfind.net/linux/fedora/core/updates/$releasever/$basearch
6. gpgcheck=1
7. exclude=gaim
8. failovermethod=priority

其中gpgcheck,exclude的含义和[main]部分相同,但只对此服务器起作用,failovermethode 有两个选项roundrobin和priority,意思分别是有多个url可供选择时,yum选择的次序,roundrobin是随机选择,如果连接失 败则使用下一个,依次循环,priority则根据url的次序从第一个开始。如果不指明,默认是roundrobin。

几个变量

$releasever,发行版的版本,从[main]部分的distroverpkg获取,如果没有,则根据redhat-release包进行判断。
$arch,cpu体系,如i686,athlon等
$basearch,cpu的基本体系组,如i686和athlon同属i386,alpha和alphaev6同属alpha。

对yum.conf设定完成,我们就可以好好体验yum带来的方便了。

五、RHEL/CENTOS的yum源
1、修改配置文件
2、导入GPG KEY

导入每个reposity的GPG key,前面说过,yum可以使用gpg对包进行校验,确保下载包的完整性,所以我们先要到各个repository站点找到gpg key,一般都会放在首页的醒目位置,一些名字诸如 RPM-GPG-KEY.txt之类的纯文本文件,把它们下载,然后用rpm --import xxx.txt命令将它们导入,最好把发行版自带GPG-KEY也导入。rpm --import /usr/share/doc/redhat-release-*/RPM-GPG-KEY 官方软件升级用的上。

六、扩展你的rpm包
1、rpmforge
Centos/RHEL默认的yum软件仓库非常有限,仅仅限于发行版本那几张盘里面的常规包和一些软件包的更新,利用RpmForge,可以增加非常多的第三方rpm软件包。

获取
http://dag.wieers.com/rpm/packages/rpmforge-release/
找到与系统平台架构匹配的rpmforge包安装之即可。安装完后.默认会在系统的/etc/yum.repos.d/下新增两个文件,mirrors-rpmforge和rpmforge.repo

安装
# rpm -ivh rpmforge-release-0.3.6-1.el4.rf.i386.rpm
# rpm --import http://dag.wieers.com/rpm/packages/RPM-GPG-KEY.dag.txt

2、加速yum更新速度
安装yum的fast mirror插件,可以加快 CentOS/RHEL yum的速度和提高稳定性,效果显著。
centos5 
 #yum -y install yum-fastestmirror
centos4
 yum -y install yum-plugin-fastestmirror

 

七、 yum使用
注:当第一次使用yum或yum资源库有更新时,yum会自动下载所有所需的headers放置于/var/cache/yum目录下,所需时间可能较长.

系统更新(更新所有可以升级的rpm包,包括kernel)
#yum -y update

 

每天定期执行系统更新
#chkconfig yum on
#service yum start

 

*rpm包的更新,检查可更新的rpm包
#yum check-update

 

更新所有的rpm包
#yum update

 

更新指定的rpm包,如更新kernel和kernel source
#yum update kernel kernel-source

 

大规模的版本升级,与yum update不同的是,连旧的淘汰的包也升级
#yum upgrade

 

*rpm包的安装和删除
安装rpm包,如xmms-mp3
#yum install xmms-mp3

 

删除rpm包,包括与该包有倚赖性的包
#yum remove licq
注:同时会提示删除licq-gnome,licq-qt,licq-text

 

*yum暂存(/var/cache/yum/)的相关参数
清除暂存中rpm包文件
#yum clean packages

 

清除暂存中rpm头文件
#yum clean headers

 

清除暂存中旧的rpm头文件
#yum clean oldheaders

 

清除暂存中旧的rpm头文件和包文件
#yum clean 或#yum clean all
注:相当于yum clean packages + yum clean oldheaders

 

*rpm包列表
列出资源库中所有可以安装或更新的rpm包
#yum list

 

列出资源库中特定的可以安装或更新以及已经安装的rpm包
#yum list mozilla
#yum list mozilla*
注:可以在rpm包名中使用匹配符,如列出所有以mozilla开头的rpm包

 

列出资源库中所有可以更新的rpm包
#yum list updates

 

列出已经安装的所有的rpm包
#yum list installed

 

列出已经安装的但是不包含在资源库中的rpm包
#yum list extras
注:通过其它网站下载安装的rpm包
*rpm包信息显示(info参数同list)

 

列出资源库中所有可以安装或更新的rpm包的信息
#yum info

 

列出资源库中特定的可以安装或更新以及已经安装的rpm包的信息
#yum info mozilla
#yum info mozilla*
注:可以在rpm包名中使用匹配符,如列出所有以mozilla开头的rpm包的信息

 

列出资源库中所有可以更新的rpm包的信息
#yum info updates

 

列出已经安装的所有的rpm包的信息
#yum info installed

 

列出已经安装的但是不包含在资源库中的rpm包的信息
#yum info extras
注:通过其它网站下载安装的rpm包的信息

 

*搜索rpm包
搜索匹配特定字符的rpm包
#yum search mozilla
注:在rpm包名,包描述等中搜索

 

搜索有包含特定文件名的rpm包
#yum provides realplay

 

八、yum常用问题解决
1、如果网速慢的话可以通过增加yum的超时时间,这样就不会总是因为超时而退出。
#vi /etc/yum.conf
#加上这么一句
timeout=120

 

2、yum Existing lock错误的解决办法
如果系统启动的时候, yum出现Existing lock /var/run/yum.pid: another copy is running as pid 3380. Aborting.可以用下面的办法解决:
方法一
etc/init.d/yum-updatesd stop

方法二
#rm -f /var/run/yum.pid
主要原因就是yum在自动更新,只要关掉它就可以了。

 


先安装fastestmirror,让系统yum的时候自动选择最快的镜像:

#yum install yum-fastestmirror -y

接下来说说RPMForge。

RPMForge是一个安全、稳定并且更新及时的软件仓库,通过安装RPMForge可以是CentOS在进行yum update的时候多一个选择,有时候甚至是唯一的选择,比如想要升级rsync到3.0.x版本,如果懒得自己编译安装,就得依靠RPMForge了。

1、先安装priority这个yum的插件,这个插件用来设定安装软件时候软件仓库的优先级,一般是默认先从官方base或者镜像安装,然后从社区用户contribute的软件中安装,再从第三方软件仓库中安装。
#yum install yum-priorities

2、手动编辑 /etc/yum.repos.d/ 目录中后缀为.repos的文件来设置软件仓库的优先级
priority=N(N是整数,范围从1-99,数字越小代表优先级越高)

官方推荐配置是
[base], [addons], [updates], [extras] 这几部分 priority=1
[centosplus],[contrib] 这几部分priority=2
Third Party Repos such as rpmforge … priority=N  (where N is > 10 and based on your preference)

3、现在开始安装rpmforge的软件仓库
先下载rpmforge的安装包
      i386  wget http://apt.sw.be/redhat/el5/en/i386/RPMS.dag/rpmforge-release-0.3.6-1.el5.rf.i386.rpm

      x86_64 wget http://apt.sw.be/redhat/el5/en/x86_64/RPMS.dag/rpmforge-release-0.3.6-1.el5.rf.x86_64.rpm

安装

     rpm -i rpmforge-release-0.3.6-1.el5.rf.*.rpm

更改 /etc/yum.repos.d/rpmforge.repo 配置文件,添加
priority=1(或者2.3.4….)

现在就可以使用rpmforge这个软件仓库了。比如yum update rsync,嘿嘿,成功升级到3.0.5了。

 

 

dpkg用法详解

 

(http://man.linuxde.net/dpkg)

gdebi 可以自动计算依赖关系并安装GDebi也命令行模式运行(sudo gdebi package.deb),功能和GUI模式下完全一样。试下这个命令你就不想用 dpkg –i 了。

sudo apt-get update
sudo apt-get install gdebi
例如:安装搜狗输入法,我们在终端先进入到相应deb的文件夹后
sudo gdebi sogoupinyin.deb

dpkg 在安装手动下载的 deb包时,没法自动解决包的依赖关系,需要手动安装包需要的依赖。

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 #配置包
dpkg是一个Debian的一个命令行工具,它可以用来安装、删除、构建和管理Debian的软件包。
下面是它的一些命令解释:
1)安装软件命令行:dpkg -i <.deb file name>示例:dpkg -i avg71flm_r28-1_i386.deb示例: dpkg -i  ~/Download/mozybackup_i386.deb
2)安装一个目录下面所有的软件包命令行:dpkg -R示例:dpkg -R /usr/local/src
3)释放软件包,但是不进行配置,解开 deb 包的内容。命令行:dpkg –unpack package_file 如果和-R一起使用,参数可以是一个目录示例:dpkg –unpack avg71flm_r28-1_i386.deb
4)重新配置和释放软件包。配置包 命令行:dpkg –configure package_file如果和-a一起使用,将配置所有没有配置的软件包示例:dpkg –configure avg71flm_r28-1_i386.deb
5)删除软件包(保留其配置信息)命令行:dpkg -r 示例:dpkg -r avg71flm.deb示例:dpkg -r mozybackup.deb
6)替代软件包的信息命令行:dpkg –update-avail <Packages-file>
7)合并软件包信息dpkg –merge-avail <Packages-file>
8)从软件包里面读取软件的信息命令行:dpkg -A package_file
9)删除一个包(包括配置信息)命令行:dpkg -P示例:dpkg -P mozybackup
10)丢失所有的Uninstall的软件包信息命令行:dpkg –forget-old-unavail
11)删除软件包的Avaliable信息命令行:dpkg –clear-avail
12)查找只有部分安装的软件包信息命令行:dpkg -C
13)比较同一个包的不同版本之间的差别命令行:dpkg –compare-versions ver1 op ver2
14)显示帮助信息命令行:dpkg –help
15)显示dpkg的Licence命令行:dpkg –licence (or) dpkg –license
16)显示dpkg的版本号命令行:dpkg –version
17)建立一个deb文件命令行:dpkg -b direc×y [filename]
18)显示一个Deb文件的内容命令行:dpkg -c filename列出 deb 包的内容
19)显示一个Deb的说明命令行:dpkg -I filename [control-file]
20)搜索Deb包命令行:dpkg -l package-name-pattern示例:dpkg -I vim
21) 显示所有已经安装的Deb包,同时显示版本号以及简短说明。即显示包的版本命令行:dpkg -l示例:dpkg -l mozybackup
22)查找指定包的状态信息命令行:dpkg -s package-name示例:dpkg -s ssh示例: dpkg -s mozybackup
23)安装完包后,可以用此命令查看软件安装到什么地方,命令行:dpkg -L package-Name示例:dpkg -L apache2示例: dpkg -L mozybackup
24)搜索指定包里面的文件(模糊查询)命令行:dpkg -S filename-search-pattern
25)显示包的具体信息命令行:dpkg -p package-name示例:dpkg -p cactidpkg -S keyword     搜索所属的包内容

 

 

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/496808.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

下一版Win10,微软人工智能平台Windows ML要和你见面了

原作 Kam VedBratRoot 编译自 Windows blog量子位 出品 | 公众号 QbitAI今日&#xff0c;微软在开发者日上发布了AI开发者平台。微软还提到&#xff0c;旗下产品都可以本地直接处理AI任务。另外Win10系统将会Visual Studio 15.7 预览版上增加了ONNX文档到UWP应用里&#xff0c;…

为什么我们要使用HTTP Strict Transport Security?

HTTP Strict Transport Security (通常简称为HSTS) 是一个安全功能&#xff0c;它告诉浏览器只能通过HTTPS访问当前资源, 禁止HTTP方式。 001. Freebuf百科&#xff1a;什么是Strict-Transport-Security 我摘自owasp上的一段定义&#xff1a; HTTP Strict Transport Securit…

Python爬虫四(正则表达式)

菜鸟教程 之 python 正则表达式&#xff1a;http://www.runoob.com/python/python-reg-expressions.html python 官网正则文档&#xff1a;https://docs.python.org/2/library/re.html 1、正则表达式 简介 正则表达式 是对字符串操作的一种逻辑公式&#xff0c;就是用事先定义好…

量子霸权是个模糊的里程碑

来源&#xff1a;新华网就在人们纷纷猜测谷歌是否会在这场全球科技竞赛中夺魁时&#xff0c;美国斯坦福大学量子物理学家帕特里克海登&#xff18;日对新华社记者提出了一个新颖观点&#xff1a;“量子霸权是个模糊的里程碑。”美国谷歌公司日前发布&#xff17;&#xff12;量…

酸甜八宝粥

用javascript设置和读取cookie的简单例子请看下面用javascript设置和读取cookie的简单例子,现在的问题是,如果要设置的是一个cookie集,比如在cookie1集中有uname,uid两组信息,应该如何写呢? cookie("cookie1")("uname")"testuser"; cookie(&quo…

KMS的几个开源实现汇总

搜索关键词 open source key management server “key management server” ranger kms rotate keys decrypting KMIP 集中密钥工作流程 Centralized Encryption Key Management Server (KMS) | Townsend Security Keywhiz Keywhiz Gitee 极速下载/keywhiz - Gitee.co…

Python 爬虫学习 系列教程

Python爬虫 --- 中高级爬虫学习路线 &#xff1a;https://www.cnblogs.com/Eeyhan/p/14148832.html 看不清图时&#xff0c;可以把图片保存到本地在打开查看。。。 Python爬虫学习系列教程 From&#xff1a;https://cuiqingcai.com/1052.html 一、爬虫入门 1. Python爬虫入门一…

友盟分享小程序_在线学习应用“小打卡”小程序分享

目前疫情导致只能线上开学&#xff0c;多采用微信群或QQ群发布作业、打卡&#xff0c;结合直播平台在线授课。各科老师加入群&#xff0c;打卡及发布的作业、教师辅导信息容易覆盖同时不能记录下来。在以上应用不变的情况下&#xff0c;应用“小打卡”微信小程序可以很好的解决…

LeCun:现在还没有真正的AI系统,机器与生物系统差远了

安妮 编译自 NYU量子位 出品 | 公众号 QbitAI可能我们现在提到的AI都是假AI。近日&#xff0c;Facebook首席人工智能科学家Yann LeCun在纽约大学坦登工程学院的AI研讨会上谈了谈AI的历史和方向。研讨会上&#xff0c;LeCun提出人工神经网络的学习能力仍十分有限&#xff0c;还不…

Java并发编程实战~不安全的单例

不安全的单例 /*** 不安全的单例.<br>* author gqltt<br>* version 1.0.0 2020年4月7日<br>* see * since JDK 1.5.0*/ public class Singleton {// volatile 修饰保证安全.private static Singleton instance null;public static Singleton getInstance()…

于.net开发平台项目案例集锦

订阅 | 上一篇 | 下一篇 五味笔记 于.net开发平台项目案例集锦 作者:henq 日期:2007-09-14字体大小: 小 中 大基于.net开发平台项目案例集锦 经过微软.net Framework 2.0的革新&#xff0c;.net平台的开发越来越精彩。笔者收集基于.net开发的n个项目&#xff0c;一方面为新手提…

增大表名最大长度_风电叶片材料的发展变迁史,及风力发电机叶片长度发展历程...

2020年&#xff0c;能源领域最火的行业是风电&#xff0c;由于中国出台相关文件&#xff0c;截止12月31日为止&#xff0c;之后装机并网的风电机组将不能够获得电价补贴。这个政策直接推动了国内风电市场的短期井喷。当然宏观因素背景是中国对于环保型电力能源的改革步伐在加快…

重磅,Intel考虑收购博通

来源&#xff1a;腾讯科技概要&#xff1a;3月10日消息&#xff0c;据外媒报道&#xff0c;《华尔街日报》援引知情人士的话报道称&#xff0c;英特尔&#xff08;Intel&#xff09;正在考虑一系列收购方案&#xff0c;包括收购芯片制造商博通&#xff08;Broadcom&#xff09;…

Java并发编程实战~volatile

禁用CPU 缓存 告诉编译器&#xff0c;对这个变量的读写&#xff0c;不能使用 CPU 缓存&#xff0c;必须从内存中读取或者写入 /*** TODO 在此写上类的相关说明.<br>* author gqltt<br>* version 1.0.0 2020年4月8日<br>* see * since JDK 1.5.0*/ public c…

如何在SQL Server 2005中还原数据库

还原数据库的方式 有几种数据库备份的方式就将会有几种还原数据库的 方式&#xff1a; l 完整备份的还原&#xff1a;无论是完整备份、差异备份还是事务日志备份的还原&#xff0c;在第一步都要先做完整备份的还原。完整备份的还原只需要还原完整备份文件即可。 l 差异备份的还…

amd cpu不能在cmd环境下运行java代码_如何在Windows10中配置java的JDK环境

今天给大家分享一下如何配置java的JDK环境。操作步骤如下&#xff1a;1.下载好 jdk 的安装文件&#xff0c;我下载的是 jdk-10.0.1_windows-x64_bin.exe 这个版本的安装文件&#xff1b;2.使用鼠标双击该exe文件&#xff0c;该exe文件会运行安装界面&#xff0c;截图如下&#…

我国医疗机器人产业发展特征分析

来源&#xff1a;雷克世界导语&#xff1a;2016年4月&#xff0c;我国发布了《机器人产业发展规划&#xff08;2016-2020年&#xff09;》&#xff0c;该规划引导我国机器人产业快速健康可持续发展&#xff0c;增强技术创新能力和国际竞争能力&#xff0c;医疗机器人政策长期利…

位枚举(Bit Flags)

场景&#xff1a;如字体&#xff0c;一个字体可以同时拥有枚举里面所列举的一种或者多种风格&#xff0c;这时就需要位枚举 定义&#xff1a; [Flags] publicenumFontStyle { Bold 0x0001, Italic 0x0002, Regular 0x0004, …

华为鸿蒙麒麟玉兔_华为P50除了麒麟9000,还预装鸿蒙系统,比iPhone12值得买

2020年已经临近尾声&#xff0c;各大手机厂商的旗舰机均悉数亮相&#xff0c;消费者的目光也开始逐渐转向2021年的开年旗舰上。而在各大手机厂商的第一批开年旗舰中&#xff0c;华为P系列的新品无疑是最受关注的一款。这主要是因为华为目前仍处于美方制裁下&#xff0c;芯片危机…

2018年智能化发展趋势:语音交互全球开战、AI终端趋势显现

来源&#xff1a;雪球网 作者&#xff1a;西木财经美国知名研究机构CB Insights近日发布重磅报告《2018年必看的人工智能热门趋势》&#xff08;Top AI Trends To Watch In 2018&#xff09;&#xff0c;报告对AI行业发展现状进行了深入研究剖析&#xff0c;并给出了2018年AI…