|
| 1 | +--- |
| 2 | +title: Linux 软件管理 |
| 3 | +date: 2018/02/26 |
| 4 | +categories: |
| 5 | + - linux |
| 6 | +tags: |
| 7 | + - linux |
| 8 | +--- |
| 9 | + |
| 10 | +# Linux 软件管理 |
| 11 | + |
| 12 | +> 关键词:`rpm`, `yum`, `apt-get` |
| 13 | +
|
| 14 | +<!-- TOC depthFrom:2 depthTo:3 --> |
| 15 | + |
| 16 | +- [rpm](#rpm) |
| 17 | +- [yum](#yum) |
| 18 | + - [yum 源](#yum-源) |
| 19 | +- [apt-get](#apt-get) |
| 20 | +- [参考资料](#参考资料) |
| 21 | + |
| 22 | +<!-- /TOC --> |
| 23 | + |
| 24 | +## rpm |
| 25 | + |
| 26 | +> rpm 命令是 RPM 软件包的管理工具。rpm 原本是 Red Hat Linux 发行版专门用来管理 Linux 各项套件的程序,由于它遵循 GPL 规则且功能强大方便,因而广受欢迎。逐渐受到其他发行版的采用。RPM 套件管理方式的出现,让 Linux 易于安装,升级,间接提升了 Linux 的适用度。 |
| 27 | +> |
| 28 | +> 参考:http://man.linuxde.net/rpm |
| 29 | +
|
| 30 | +示例: |
| 31 | + |
| 32 | +(1)安装 rpm 包 |
| 33 | + |
| 34 | +``` |
| 35 | +rpm -ivh xxx.rpm |
| 36 | +``` |
| 37 | + |
| 38 | +(2)安装.src.rpm 软件包 |
| 39 | + |
| 40 | +这类软件包是包含了源代码的 rpm 包,在安装时需要进行编译 |
| 41 | + |
| 42 | +```sh |
| 43 | +rpm -i xxx.src.rpm |
| 44 | +cd /usr/src/redhat/SPECS |
| 45 | +rpmbuild -bp xxx.specs #一个和你的软件包同名的specs文件 |
| 46 | +cd /usr/src/redhat/BUILD/xxx/ #一个和你的软件包同名的目录 |
| 47 | +./configure #这一步和编译普通的源码软件一样,可以加上参数 |
| 48 | +make |
| 49 | +make install |
| 50 | +``` |
| 51 | + |
| 52 | +(3)卸载 rpm 软件包 |
| 53 | + |
| 54 | +使用命令 `rpm -e 包名`,包名可以包含版本号等信息,但是不可以有后缀.rpm,比如卸载软件包 proftpd-1.2.8-1,可以使用下列格式: |
| 55 | + |
| 56 | +```sh |
| 57 | +rpm -e proftpd-1.2.8-1 |
| 58 | +rpm -e proftpd-1.2.8 |
| 59 | +rpm -e proftpd- |
| 60 | +rpm -e proftpd |
| 61 | +``` |
| 62 | + |
| 63 | +不可以是下列格式: |
| 64 | + |
| 65 | +```sh |
| 66 | +rpm -e proftpd-1.2.8-1.i386.rpm |
| 67 | +rpm -e proftpd-1.2.8-1.i386 |
| 68 | +rpm -e proftpd-1.2 |
| 69 | +rpm -e proftpd-1 |
| 70 | +``` |
| 71 | + |
| 72 | +有时会出现一些错误或者警告: |
| 73 | + |
| 74 | +``` |
| 75 | +... is needed by ... |
| 76 | +``` |
| 77 | + |
| 78 | +这说明这个软件被其他软件需要,不能随便卸载,可以用 rpm -e --nodeps 强制卸载 |
| 79 | + |
| 80 | +(4)查看与 rpm 包相关的文件和其他信息 |
| 81 | + |
| 82 | +```sh |
| 83 | +rpm -qa # 列出所有安装过的包 |
| 84 | +``` |
| 85 | + |
| 86 | +## yum |
| 87 | + |
| 88 | +> yum 命令是在 Fedora 和 RedHat 以及 SUSE 中基于 rpm 的软件包管理器,它可以使系统管理人员交互和自动化地更细与管理 RPM 软件包,能够从指定的服务器自动下载 RPM 包并且安装,可以自动处理依赖性关系,并且一次安装所有依赖的软体包,无须繁琐地一次次下载、安装。 |
| 89 | +> |
| 90 | +> 参考:http://man.linuxde.net/yum |
| 91 | +
|
| 92 | +示例: |
| 93 | + |
| 94 | +部分常用的命令包括: |
| 95 | + |
| 96 | +- 自动搜索最快镜像插件:`yum install yum-fastestmirror` |
| 97 | +- 安装 yum 图形窗口插件:`yum install yumex` |
| 98 | +- 查看可能批量安装的列表:`yum grouplist` |
| 99 | + |
| 100 | +**安装** |
| 101 | + |
| 102 | +``` |
| 103 | +yum install #全部安装 |
| 104 | +yum install package1 #安装指定的安装包package1 |
| 105 | +yum groupinsall group1 #安装程序组group1 |
| 106 | +``` |
| 107 | + |
| 108 | +**更新和升级** |
| 109 | + |
| 110 | +``` |
| 111 | +yum update #全部更新 |
| 112 | +yum update package1 #更新指定程序包package1 |
| 113 | +yum check-update #检查可更新的程序 |
| 114 | +yum upgrade package1 #升级指定程序包package1 |
| 115 | +yum groupupdate group1 #升级程序组group1 |
| 116 | +``` |
| 117 | + |
| 118 | +**查找和显示** |
| 119 | + |
| 120 | +``` |
| 121 | +yum info package1 #显示安装包信息package1 |
| 122 | +yum list #显示所有已经安装和可以安装的程序包 |
| 123 | +yum list package1 #显示指定程序包安装情况package1 |
| 124 | +yum groupinfo group1 #显示程序组group1信息yum search string 根据关键字string查找安装包 |
| 125 | +yum search <keyword> #查找软件包 |
| 126 | +``` |
| 127 | + |
| 128 | +**删除程序** |
| 129 | + |
| 130 | +``` |
| 131 | +yum remove <package_name> #删除程序包package_name |
| 132 | +yum groupremove group1 #删除程序组group1 |
| 133 | +yum deplist package1 #查看程序package1依赖情况 |
| 134 | +``` |
| 135 | + |
| 136 | +**清除缓存** |
| 137 | + |
| 138 | +``` |
| 139 | +yum clean packages #清除缓存目录下的软件包 |
| 140 | +yum clean headers #清除缓存目录下的 headers |
| 141 | +yum clean oldheaders #清除缓存目录下旧的 headers |
| 142 | +``` |
| 143 | + |
| 144 | +### yum 源 |
| 145 | + |
| 146 | +yum 的默认源是国外的,下载速度比较慢,所以最好替换为一个国内的 yum 源。 |
| 147 | + |
| 148 | +| 推荐 yum 国内源 | 源地址 | |
| 149 | +| ---------------------------- | -------------------------------------------------------------------------------------------------------------------------- | |
| 150 | +| <http://mirrors.163.com/> | Centos6:http://mirrors.aliyun.com/repo/Centos-6.repo<br>Centos7:http://mirrors.aliyun.com/repo/Centos-7.repo | |
| 151 | +| <http://mirrors.aliyun.com/> | Centos6:http://mirrors.163.com/.help/CentOS6-Base-163.repo<br>Centos7:http://mirrors.163.com/.help/CentOS7-Base-163.repo | |
| 152 | + |
| 153 | +> 注意:Cento5 已废弃,只能使用 http://vault.centos.org/ 替换,但由于是国外镜像,速度较慢。 |
| 154 | +
|
| 155 | +替换方法,以 aliyun CentOS7 为例: |
| 156 | + |
| 157 | +``` |
| 158 | +cp /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.bak |
| 159 | +wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo |
| 160 | +yum clean all |
| 161 | +yum makecache |
| 162 | +``` |
| 163 | + |
| 164 | +## apt-get |
| 165 | + |
| 166 | +> apt-get 命令是 Debian Linux 发行版中的 APT 软件包管理工具。所有基于 Debian 的发行都使用这个包管理系统。deb 包可以把一个应用的文件包在一起,大体就如同 Windows 上的安装文件。 |
| 167 | +> |
| 168 | +> 参考:http://man.linuxde.net/apt-get |
| 169 | +
|
| 170 | +示例: |
| 171 | + |
| 172 | +使用 apt-get 命令的第一步就是引入必需的软件库,Debian 的软件库也就是所有 Debian 软件包的集合,它们存在互联网上的一些公共站点上。把它们的地址加入,apt-get 就能搜索到我们想要的软件。/etc/apt/sources.list 是存放这些地址列表的配置文件,其格式如下: |
| 173 | + |
| 174 | +deb [web 或 ftp 地址][发行版名字] [main/contrib/non-free] |
| 175 | +我们常用的 Ubuntu 就是一个基于 Debian 的发行,我们使用 apt-get 命令获取这个列表,以下是我整理的常用命令: |
| 176 | + |
| 177 | +在修改 /etc/apt/sources.list 或者 /etc/apt/preferences 之后运行该命令。 |
| 178 | + |
| 179 | +```sh |
| 180 | +# 更新 apt-get |
| 181 | +apt-get update |
| 182 | + |
| 183 | +# 安装一个软件包 |
| 184 | +apt-get install packagename |
| 185 | + |
| 186 | +# 卸载一个已安装的软件包(保留配置文件) |
| 187 | +apt-get remove packagename |
| 188 | + |
| 189 | +# 卸载一个已安装的软件包(删除配置文件) |
| 190 | +apt-get –purge remove packagename |
| 191 | + |
| 192 | +# 如果需要空间的话,可以让这个命令来删除你已经删掉的软件 |
| 193 | +apt-get autoclean apt |
| 194 | + |
| 195 | +# 把安装的软件的备份也删除,不过这样不会影响软件的使用的 |
| 196 | +apt-get clean |
| 197 | + |
| 198 | +# 更新所有已安装的软件包 |
| 199 | +apt-get upgrade |
| 200 | + |
| 201 | +# 将系统升级到新版本 |
| 202 | +apt-get dist-upgrade |
| 203 | +``` |
| 204 | + |
| 205 | +## 参考资料 |
| 206 | + |
| 207 | +- http://man.linuxde.net/rpm |
| 208 | +- http://man.linuxde.net/yum |
| 209 | +- http://man.linuxde.net/apt-get |
| 210 | +- http://www.runoob.com/linux/linux-yum.html |
0 commit comments