YUM
YUM可以解决安装包依赖关系。
Yellowdog Updater Modified 是一个rpm的前端程序,主要目的是设计用来自动解决rpm的依赖关系的问题。特点如下:
- 自动解决依赖关系
- 可以对rpm进行分组,并基于组进行安装操作
- 引入仓库概念,支持多个仓库
- 配置简单
但yum不是万能的,如果仓库里没有的话,他也是不能解决的。
repo
仓库概念,存放现有的rpm软件包,当使用yum安装了一个rpm软件时候,如果存在依赖关系,会自动在仓库中查找依赖软件并安装
仓库可以是本地的,也可以通过HTTP,FTP,NFS形式使用集中的,统一的网络仓库。
仓库配置文件在/etc/yum/repos.d/(centOS是/etc/yum.repos.d),格式如下:
[linuxRepoName]
name = this is yum repo (by your mind)
baseurl = http://...... (可以是存在互联网上的yum仓库,也可以是本地文件)
enabled = 1(1启用,0禁用)
gpgcheck = 1 (是否打开校验,1打开,0关闭)
- yum配置文件必须以.repo方式结尾
- 一个配置文件可以保存多个仓库的配置信息
## 常见命令
yum install software-name #安装指定软件
yum remove software-name
yum update software-name
查询
yum search keyword #查找含有关键字的软件包
yum list (all | installed | recent | update) #显示仓库里的软件
yum info packagename #显示指定软件的信息
yum whatprovides softname #查询文件属于哪个软件包
## 创建yum仓库
cd /etc/yum/ #随便在哪建个文件夹
mkdir yum-package
cp -rv (光盘里的rpm package)/* /etc/yum/repos.d/
创建索引文件
rpm -ivh creatrepo....
createrepo -v /etc/yum/yum-package/ #跟上yum仓库的路径就行了,就开始做索引了
索引完成后自动在当前目录下创建repodata目录,保存索引信息。
最后还要在/etc/yum/repos.d/下创建配置文件
[yumRepo]
name = yumRepo
baseurl = file://etc/yum/yum-package/ #跟yum仓库的绝对路径
enabled = 1
gpgcheck = 0 #自己的一般不用校验
## yum cache
yum为了提高速度会通过缓存,所以要经常清除
yum clean all
## 加入分组命令
createrepo -g 分组文件 仓库地址
# apt-get
yum更多地用在centOS上,ubuntu上apt
apt-get是一条linux命令,适用于deb包管理式的操作系统,主要用于自动从互联网的软件仓库中搜索、安装、升级、卸载软件或操作系统。
Advanced Package Tool,又名apt-get,是一款适用于Unix和Linux系统的应用程序管理器。最初于1998年发布,用于检索应用程序并将其加载到Debian Linux系统。Apt-get成
名的原因之一在于其出色的解决软件依赖关系的能力。其通常使用.deb-formatted文件,但经过修改后可以使用apt-rpm处理红帽的Package Manager(RPM)文件。
apt-get命令一般需要root权限执行,所以一般跟着sudo命令。
# 一、Ubuntu中软件安装方法
### 1、APT方式
(1)普通安装:apt-get install softname1 softname2 …;
(2)修复安装:apt-get -f install softname1 softname2... ;(-f Attempt to correct broken dependencies)
(3)重新安装:apt-get --reinstall install softname1 softname2...;
### 2、Dpkg方式
(1)普通安装:dpkg -i package_name.deb
3、源码安装(.tar、tar.gz、tar.bz2、tar.Z)
首先解压缩源码压缩包然后通过tar命令来完成
a.
> 解xx.tar.gz:tar zxf xx.tar.gzb.
> 解xx.tar.Z:tar zxf xx.tar.Zc.
> 解xx.tgz:tar zxf xx.tgzd.
> 解xx.bz2:bunzip2 xx.bz2e.
> 解xx.tar:tar xf xx.tar
然后进入到解压出的目录中,建议先读一下README之类的说明文件,因为此时不同源代码包或者预编译包可能存在差异,然后建议使用ls -F --color或者ls -F命令(实际上我的只需要 l 命令即可)查看一下可执行文件,可执行文件会以*号的尾部标志。
>一般依次执行./configure
make
sudo make install
即可完成安装。
# 二、Ubuntu中软件包的卸载方法
### 1、APT方式
(1)移除式卸载:apt-get remove softname1 softname2 …;(移除软件包,当包尾部有+时,意为安装)
(2)清除式卸载 :apt-get --purge remove softname1 softname2...;(同时清除配置)
清除式卸载:apt-get purge sofname1 softname2...;(同上,也清除配置文件)
### 2、Dpkg方式
(1)移除式卸载:dpkg -r pkg1 pkg2 ...;
(2)清除式卸载:dpkg -P pkg1 pkg2...;
# 三、Ubuntu中软件包的查询方法
Dpkg 使用文本文件来作为**数据库**.通称在/var/lib/dpkg目录下. 通称在 status 文件中存储软件状态,和控制信息. 在 info/ 目录下备份控制文件, 并在其下的 .list 文件中记录安装文件清单, 其下的 .mdasums 保存文件的 MD5 编码.
体验使用数据库的时刻到了:
$ dpkg -lDesired=Unknown/Install/Remove/Purge/Hold| Status=Not/Installed/Config-files/Unpacked/Failed-config/Half-installed|/ Err?=(none)/Hold/Reinst-required/X=both-problems (Status,Err: uppercase=bad)||/ Name Version Description+++-===========-================-========================================ii aalib1 1.4p5-28 ascii art library - transitional packageii adduser 3.85 Add and remove users and groupsii alien .63 install non-native packages with dpkg... ...每条记录对应一个软件包, 注意每条记录的第一, 二, 三个字符. 这就是软件包的状态标识, 后边依此是软件包名称, 版本号, 和简单描述.
第一字符为期望值,它包括:u 状态未知,这意味着软件包未安装,并且用户也未发出安装请求.i 用户请求安装软件包.r 用户请求卸载软件包.p 用户请求清除软件包.h 用户请求保持软件包版本锁定.第二列,是软件包的当前状态.此列包括软件包的六种状态.n 软件包未安装.i 软件包安装并完成配置.c 软件包以前安装过,现在删除了,但是它的配置文件还留在系统中.u 软件包被解包,但还未配置.f 试图配置软件包,但是失败了.h 软件包安装,但是但是没有成功.第三列标识错误状态,可以总结为四种状态. 第一种状态标识没有问题,为空. **其它**三种符号则标识相应问题.h 软件包被强制保持,因为有其它软件包依赖需求,无法升级.r 软件包被破坏,可能需要重新安装才能正常使用(包括删除).x 软包件被破坏,并且被强制保持.也可以以统配符模式进行模糊查询, 比如我要查找以nano字符开始的所有软件包:
$ dpkg -l nano*Desired=Unknown/Install/Remove/Purge/Hold| Status=Not/Installed/Config-files/Unpacked/Failed-config/Half-installed|/ Err?=(none)/Hold/Reinst-required/X=both-problems (Status,Err: uppercase=bad)||/ Name Version Description+++-==============-==============-============================================ii nano 1.3.10-2 free Pico clone with some new featurespn nano-tiny <none> (no description available)un nanoblogger <none> (no description available)以上状态说明: 系统中安装了nano版本为1.3.10-2;安装过nano-tiny, 后来又清除了; 从未安装过nanoblogger.
如果觉得 dpkg 的参数过多, 不利于记忆的话, 完全可以使用 dpkg-query 进行 dpkg 数据库查询.
应用范例:
查询系统中属于nano的文件:$ dpkg --listfiles nanoor$ dpkg-query -L nano查看软件nano的详细信息:$ dpkg -s nanoor$ dpkg-query -s nano查看系统中软件包状态, 支持模糊查询:$ dpkg -lor$dpkg-query -l查看某个文件的归属包:$ dpkg-query -S nanoor$ dpkg -S nano
#四、apt命令用法
以下摘自百度百科。
packagename指代为软件包的名称。
apt-get update
在修改/etc/apt/sources.list或/etc/apt/preferences之后运行该命令。此外您需要定期运行这一命令以确保您的软件包列表是最新的。
apt-get install packagename
安装一个新软件包(参见下文的aptitude)
apt-get remove packagename
卸载一个已安装的软件包(保留配置文档)
apt-get remove --purge packagename
卸载一个已安装的软件包(删除配置文档)
apt-get autoremove packagename
删除包及其依赖的软件包
apt-get autoremove --purge packagname
删除包及其依赖的软件包+配置文件,比上面的要删除的彻底一点
dpkg --force-all --purge packagename
有些软件很难卸载,而且还阻止了别的软件的应用,就能够用这个,但是有点冒险。
apt-get autoclean
apt会把已装或已卸的软件都备份在硬盘上,所以假如需要空间的话,能够让这个命令来删除您已卸载掉的软件的备份。
apt-get clean
这个命令会把安装的软件的备份也删除,但是这样不会影响软件的使用。
apt-get upgrade
可以使用这条命令更新软件包,apt-get upgrade不仅可以从相同版本号的发布版中更新软件包,也可以从新版本号的发布版中更新软件包,尽管实现后一种更新的推荐命令为apt-get dist-upgrade。
在运行apt-get upgrade命令时加上-u选项很有用(即:apt-get -u upgrade)。这个选项让APT显示完整的可更新软件包列表。不加这个选项,你就只能盲目地更新。APT会下载每个软件包的最新更新版本,然后以合理的次序安装它们。注意在运行该命令前应先运行 apt-get update更新数据库,更新任何已安装的软件包。[2]
apt-get dist-upgrade
将系统升级到新版本。
apt-cache search string
在软件包列表中搜索字符串。
dpkg -l package-name-pattern列出任何和模式相匹配的软件包。假如您不知道软件包的全名,您能够使用“package-name-pattern”。
aptitude
周详查看已安装或可用的软件包。和apt-get类似,aptitude能够通过命令行方式调用,但仅限于某些命令——最常见的有安装和卸载命令。
由于aptitude比apt-get了解更多信息,能够说他更适合用来进行安装和卸载。
apt-cache showpkg pkgs
显示软件包信息。
apt-cache dumpavail打印可用软件包列表。
apt-cache show pkgs
显示软件包记录,类似于dpkg –print-avail。
apt-cache pkgnames
打印软件包列表中任何软件包的名称。
dpkg -S file
这个文档属于哪个已安装软件包。
dpkg -L package
列出软件包中的任何文档。
dpkg -l
列出所有已安装的软件包。
apt-file search filename
查找包含特定文档的软件包(不一定是已安装的),这些文档的文档名中含有指定的字符串。apt-file是个单独的软件包。您必须先使用apt-get install来安装他,然后运行apt-file update。假如apt-file search filename输出的内容太多,您能够尝试使用apt-file search filename | grep -w filename(只显示指定字符串作为完整的单词出现在其中的那些文档名)或类似方法,例如:apt-file search filename | grep /bin/(只显示位于诸如/bin或/usr/bin这些文件夹中的文档,假如您要查找的是某个特定的执行文档的话,这样做是有帮助的)。
apt-get autoclean
定期运行这个命令来清除那些已卸载的软件包的.deb文档。通过这种方式,您能够释放大量的磁盘空间。假如您的需求十分迫切,能够使用apt-get clean以释放更多空间。这个命令会将已安装软件包裹的.deb文档一并删除。大多数情况下您不会再用到这些.debs文档,因此假如您为磁盘空间不足而感到焦头烂额,这个办法也许值得一试。
补充:
说明:由于图形化界面方法(如Add/Remove... 和Synaptic Package Manageer)比较简单,所以这里主要总结在终端通过命令行方式进行的软件包安装、卸载和删除的方
法。