2019独角兽企业重金招聘Python工程师标准>>>
Linux软件包安装和卸载
一、rpm工具
rpm,全称是red hat package manager, 是Red Hat公司提出了软件安装管理程序。rpm 包是预先在linux系统上编译打包的文件,就在我们之前的安装centos7 的光盘镜像里。
1.1 加载光盘
将光驱挂载到 /mnt 目录
[root@ying01 ~]# mount /dev/cdrom /mnt/
mount: /dev/sr0 写保护,将以只读方式挂载
[root@ying01 ~]# df -h
文件系统 容量 已用 可用 已用% 挂载点
/dev/sda3 27G 1.7G 25G 7% /
devtmpfs 907M 0 907M 0% /dev
tmpfs 916M 0 916M 0% /dev/shm
tmpfs 916M 8.6M 908M 1% /run
tmpfs 916M 0 916M 0% /sys/fs/cgroup
/dev/sda1 197M 113M 84M 58% /boot
tmpfs 184M 0 184M 0% /run/user/0
/dev/sr0 4.3G 4.3G 0 100% /mnt
查看rpm包
[root@ying01 ~]# cd /mnt/
[root@ying01 mnt]# ls
CentOS_BuildTag EULA images LiveOS repodata RPM-GPG-KEY-CentOS-Testing-7
EFI GPL isolinux Packages RPM-GPG-KEY-CentOS-7 TRANS.TBL
[root@ying01 mnt]# cd Packages/
[root@ying01 Packages]# ls
此时我们看到后缀名为 “.rpm”的包,颜色都为红色;
1.2 rpm命名格式
rpm包有主包和支包(主包的子包)之分,支包作为主包的功能性补充。
1.2.1. 其中rpm主包的命名格式为:name-VERSION-release.arch.rpm。各个部分解释如下:
- name:程序名
- VERSION:版本 VERSION由三部分组成:
- major:程序的主版本号;
- minor:程序的次版本号 ;
- release:程序的修订号;
- release[.os].arch:代表rpm包的发行号
- release[.os]:rpm版本+操作系统
- arch:archetecture,支持的硬件架构。
1.2.2. 对于支包来说,其命名格式为:
- name-function-VERSION-release.arch.rpm
- 常见的function有:devel, utils(工具程序), libs, ...
1.3 rpm包工具用法
常见参数 | 用法 |
---|---|
-i | 安装 |
-v | 可视化 |
-h | 显示安装进度 |
-U | 升级rpm包 |
-e | 卸载一个包 |
-q | 查询一个包是否已经安装 |
-qi | 查询指定包信息 |
-ql | 查询指定包信息 |
-qf | 查询文件绝对路径 |
–force | 特殊用法,强制安装,即使覆盖其他包也会安装 |
–nodeps | 即使依赖包没有安装,也要强制安装 |
安装rpm包文件 -ivh
- 安装检测:--test 用来检查依赖关系,并不是真正的安装;
[root@ying01 Packages]# rpm -ivh --test zlib-devel-1.2.7-17.el7.x86_64.rpm
准备中... ################################# [100%]
- 安装:rpm -ivh [rpm包名称]
[root@ying01 Packages]# rpm -ivh zlib-devel-1.2.7-17.el7.x86_64.rpm
准备中... ################################# [100%]
正在升级/安装...
1:zlib-devel-1.2.7-17.el7 ################################# [100%]
- 为软件包指定安装目录: rpm -ivh --relocate [rpm包名称]
[root@ying01 Packages]# rpm -ivh --relocate /=/root/NBA/zlib-devel/ zlib-devel-1.2.7-17.el7.x86_64.rpm
准备中... ################################# [100%]
软件包 zlib-devel-1.2.7-17.el7.x86_64 已经安装
path / in package zlib-devel-1.2.7-17.el7.x86_64 is not relocatable //不可重新定位
注:通常情况下,centos执行文件都放在 /bin 或者 /sbin目录下,指定目录可能会导致找不到命令,解决方法:在 /bin 或者 /sbin 目录下建立一个软链接文件,然后设置软链接:ln -s [源文件] [目标文件]
- 升级RPM包 : rpm -Uvh [rpm包名称]
[root@ying01 Packages]# rpm -Uvh zlib-devel-1.2.7-17.el7.x86_64.rpm
准备中... ################################# [100%]
软件包 zlib-devel-1.2.7-17.el7.x86_64 已经安装
- 由新版本降级为旧版本: rpm -Uvh --oldpackage [rpm包名称]
[root@ying01 Packages]# rpm -Uvh --oldpackage zlib-devel-1.2.7-17.el7.x86_64.rpm
准备中... ################################# [100%]
软件包 zlib-devel-1.2.7-17.el7.x86_64 已经安装
- rpm 包卸载:rpm -e [软件包名];** 注意**:这里的 软件包名是不包括平台信息和后缀名的;只是包的name;
[root@ying01 Packages]# rpm -e zlib-devel
rpm 包的查询: rpm [参数] [rpm包名]
分以下几种用法:
- 查询系统已安装的软件: rpm -q [软件名]
[root@ying01 Packages]# rpm -q zlib-devel
zlib-devel-1.2.7-17.el7.x86_64
- 查看系统中所有已经安装的包:rpm -qa [软件名]
[root@ying01 Packages]# rpm -qa
- 查询已安装的文件属于哪个软件包:rpm -qf [文件名]
[root@ying01 Packages]# rpm -qf /usr/bin/zip //注:此处的文件需要使用绝对路径
zip-3.0-11.el7.x86_64
此处如果不用绝对路径,那么就要用:rpm -qf which [程序名] 注意:这里不是引号,而是`,就是键盘左上角的那个键。
[root@ying01 ~]# rpm -qf `which zip`
zip-3.0-11.el7.x86_64
- 查询已安装软件包信息:rpm -qi [软件名]
[root@ying01 Packages]# rpm -qi zip
Name : zip
Version : 3.0
Release : 11.el7
Architecture: x86_64
Install Date: 2018年05月26日 星期六 15时35分55秒
Group : Applications/Archiving
Size : 815173
License : BSD
Signature : RSA/SHA256, 2016年11月21日 星期一 05时04分58秒, Key ID 24c6a8a7f4a80eb5
Source RPM : zip-3.0-11.el7.src.rpm
Build Date : 2016年11月06日 星期日 00时49分55秒
Build Host : worker1.bsys.centos.org
Relocations : (not relocatable)
Packager : CentOS BuildSystem
Vendor : CentOS
URL : http://www.info-zip.org/Zip.html
Summary : A file compression and packaging utility compatible with PKZIP
Description :
The zip program is a compression and file packaging utility. Zip is
analogous to a combination of the UNIX tar and compress commands and
is compatible with PKZIP (a compression and file packaging utility for
MS-DOS systems).
Install the zip package if you need to compress files using the zip
program.
- 查询已安装软件位置:rpm -ql [软件名]
[root@ying01 Packages]# rpm -ql zip
/usr/bin/zip
/usr/bin/zipcloak
/usr/bin/zipnote
/usr/bin/zipsplit
/usr/share/doc/zip-3.0
/usr/share/doc/zip-3.0/CHANGES
/usr/share/doc/zip-3.0/LICENSE
/usr/share/doc/zip-3.0/README
/usr/share/doc/zip-3.0/README.CR
/usr/share/doc/zip-3.0/TODO
/usr/share/doc/zip-3.0/WHATSNEW
/usr/share/doc/zip-3.0/WHERE
/usr/share/doc/zip-3.0/algorith.txt
/usr/share/man/man1/zip.1.gz
/usr/share/man/man1/zipcloak.1.gz
/usr/share/man/man1/zipnote.1.gz
/usr/share/man/man1/zipsplit.1.gz
- 查看已安装软件所依赖的软件包: rpm -qR [软件名] 或者rpm -qpR [rpm包]
[root@ying01 Packages]# rpm -qR zlib-devel
/usr/bin/pkg-config
libz.so.1()(64bit)
rpmlib(CompressedFileNames) <= 3.0.4-1
rpmlib(FileDigests) <= 4.6.0-1
rpmlib(PayloadFilesHavePrefix) <= 4.0-1
zlib = 1.2.7-17.el7
rpmlib(PayloadIsXz) <= 5.2-1
二、yum工具
yum( Yellow dog Updater, Modified)是一个在Fedora和RedHat以及SUSE中的Shell前端软件包管理器。 基於RPM包管理,能够从指定的服务器自动下载RPM包并且安装,可以自动处理依赖性关系,并且一次安装所有依赖的软体包,无须繁琐地一次次下载、安装。 yum提供了查找、安装、删除某一个、一组甚至全部软件包的命令,而且命令简洁而又好记。
- 列出可用rpm包:yum list
[root@ying01 Packages]# yum list |head -10 ; yum list |tail -3
已加载插件:fastestmirror
Loading mirror speeds from cached hostfile
* base: mirrors.cn99.com
* extras: ftp.sjtu.edu.cn
* updates: mirrors.cn99.com
已安装的软件包
GeoIP.x86_64 1.5.0-11.el7 @anaconda
NetworkManager.x86_64 1:1.8.0-9.el7 @anaconda
NetworkManager-libnm.x86_64 1:1.8.0-9.el7 @anaconda
NetworkManager-team.x86_64 1:1.8.0-9.el7 @anaconda
由于管道被破坏而退出
zziplib-devel.i686 0.13.62-5.el7 base
zziplib-devel.x86_64 0.13.62-5.el7 base
zziplib-utils.x86_64 0.13.62-5.el7 base
上述信息中,mirrors.cn99.com,ftp.sjtu.edu.cn是获取包资源的下载路径;清单有3列,第一列是RPM包名,中间是版本信息,最右侧是安装信息(仓库名)。@anaconda 是已安装的包; base 是未安装的包;
- 找到这些存放rpm包的仓库信息:ls /etc/yum.repos.d/
[root@ying01 Packages]# ls /etc/yum.repos.d/
CentOS-Base.repo CentOS-Debuginfo.repo CentOS-Media.repo CentOS-Vault.repo
CentOS-CR.repo CentOS-fasttrack.repo CentOS-Sources.repo
[root@ying01 Packages]# ls /etc/yum.repos.d/CentOS-Base.repo
/etc/yum.repos.d/CentOS-Base.repo
[root@ying01 Packages]# cat /etc/yum.repos.d/CentOS-Base.repo
以下为执行结果节选;
[base] //仓库名
name=CentOS-$releasever - Base
mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=os&infra=$infra
#baseurl=http://mirror.centos.org/centos/$releasever/os/$basearch/
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7
#released updates
[updates] //仓库名
name=CentOS-$releasever - Updates
mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=updates&infra=$infra
#baseurl=http://mirror.centos.org/centos/$releasever/updates/$basearch/
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7
#additional packages that may be useful
[extras] //仓库名
name=CentOS-$releasever - Extras
mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=extras&infra=$infra
#baseurl=http://mirror.centos.org/centos/$releasever/extras/$basearch/
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7
- 搜索RPM包:yum search vim
[root@ying01 Packages]# yum search vim
- 用grep过滤,找到相应的RPM包,|是管道符,传递结果给下一个命令.
[root@ying01 Packages]# yum list |grep 'vim'
vim-common.x86_64 2:7.4.160-4.el7 @base
vim-enhanced.x86_64 2:7.4.160-4.el7 @base
vim-filesystem.x86_64 2:7.4.160-4.el7 @base
vim-minimal.x86_64 2:7.4.160-2.el7 @anaconda
protobuf-vim.x86_64 2.5.0-8.el7 base
vim-X11.x86_64 2:7.4.160-4.el7 base
vim-minimal.x86_64 2:7.4.160-4.el7 base
- 有些命令不知道安装包在哪,通过以下指令:yum provides “/*/vim” 不指定具体路径(通配)来查找,然后安装
[root@ying01 Packages]# yum provides “/*/vim”
- 安装:yum install -y [rpm 名]
[root@ying01 Packages]# yum install -y vim-X11.x86_64
- 升级 rpm 包:yum update [-y] [rpm 名]
[root@ying01 Packages]# yum update -y vim-X11.x86_64
- 卸载:yum remove [rpm 名]
[root@ying01 Packages]# yum remove vim-X11.x86_64
注:卸载跟安装类似,卸载也可以加上-y参数,省略交互环节;不过稳妥起见,还是不加-y比较好。
安装软件也可以一组一组安装,yum还支持一堆一堆的安装,就是按照功能把软件分组,一次安装一组软件。
- 先查询组:yum grouplist
[root@ying01 Packages]# yum grouplist
已加载插件:fastestmirror
没有安装组信息文件
Maybe run: yum groups mark convert (see man yum)
Loading mirror speeds from cached hostfile
* base: mirrors.cn99.com
* extras: ftp.sjtu.edu.cn
* updates: mirrors.cn99.com
可用的环境分组:
最小安装 //安置系统的时候,我们就只选了这个组
基础设施服务器
计算节点
文件及打印服务器
基本网页服务器
虚拟化主机
带 GUI 的服务器
GNOME 桌面
KDE Plasma Workspaces
开发及生成工作站
可用组:
传统 UNIX 兼容性
兼容性程序库
图形管理工具
安全性工具
开发工具 //Development Tools 注意:下面我要安装
控制台互联网工具
智能卡支持
科学记数法支持
系统管理
系统管理工具
完成
- yum groupinstall [组名] 安装,注意此处的组名要用单引号括起来,由于我们是中文版的,写组名的时候,要写英文;
[root@ying01 Packages]# yum groupinstall 'Development Tools' //安装"开发工具"组
2.2 yum搭建本地仓库
相较于rpm,使用yum安装要方便很多,但是当系统无法联网,就不能使用yum安装软件了。这里的变通的方法,是搭建本地仓库。
- 首先,挂在光驱镜像 //前面已做过
[root@ying01 ~]# mount /dev/cdrom /mnt/
mount: /dev/sr0 写保护,将以只读方式挂载
[root@ying01 ~]# df -h
文件系统 容量 已用 可用 已用% 挂载点
/dev/sda3 27G 1.7G 25G 7% /
devtmpfs 907M 0 907M 0% /dev
tmpfs 916M 0 916M 0% /dev/shm
tmpfs 916M 8.6M 908M 1% /run
tmpfs 916M 0 916M 0% /sys/fs/cgroup
/dev/sda1 197M 113M 84M 58% /boot
tmpfs 184M 0 184M 0% /run/user/0
/dev/sr0 4.3G 4.3G 0 100% /mnt
- 接着,备份一个文件 方便恢复
[root@ying01 ~]# cp -r /etc/yum.repos.d/ /etc/yum.repos.d.bak
- 然后:删除 /etc/yum.repos.d 目录下所有repos文件
[root@ying01 ~]# cd /etc/yum.repos.d/
[root@ying01 yum.repos.d]# ls
CentOS-Base.repo CentOS-Debuginfo.repo CentOS-Media.repo CentOS-Vault.repo
CentOS-CR.repo CentOS-fasttrack.repo CentOS-Sources.repo
[root@ying01 yum.repos.d]# rm -rf ./*
- 再,创建dvd.repo
[root@ying01 yum.repos.d]# vim /etc/yum.repos.d/dvd.repo
[dvd]
name=install dvd
baseurl=file:///mnt
enabled=1
gpgcheck=0
- 刷新repos生成缓存
- yum clean all //先清楚之前到缓存
- yum makecache //生成缓存
- yum list //保险起见,可以查看一下,列表中最后一列标识为dvd的都是本地repos
2.3 yum更换国内源
- 删除自己创建的DVD本地yum库,恢复之前的备份;
[root@ying01 ~]# cd /etc/yum.repos.d
[root@ying01 yum.repos.d]# ls
dvd.repo
[root@ying01 yum.repos.d]# rm -f dvd.repo
[root@ying01 yum.repos.d]# cp /etc/yum.repos.d.bak/* /etc/yum.repos.d //cp拷贝的文件下所有的配置文件,到本目录下。
- 更换yum源,把源码包删除掉
[root@ying01 yum.repos.d]# ls
CentOS-Base.repo CentOS-Debuginfo.repo CentOS-Media.repo CentOS-Vault.repo
CentOS-CR.repo CentOS-fasttrack.repo CentOS-Sources.repo
[root@ying01 yum.repos.d]# rm -f CentOS-Base.repo
- 下载一个国内源码包
[root@ying01 yum.repos.d]# wget http://mirrors.163.com/.help/CentOS7-Base-163.repo //由于源码包被删除,wget用不了
-bash: wget: 未找到命令
[root@ying01 yum.repos.d]# curl -O http://mirrors.163.com/.help/CentOS7-Base-163.repo //利用 curl -O 命令
root@ying01 yum.repos.d]# ls
CentOS7-Base-163.repo CentOS-Debuginfo.repo CentOS-Media.repo CentOS-Vault.repo
CentOS-CR.repo CentOS-fasttrack.repo CentOS-Sources.repo
[root@ying01 yum.repos.d]# yum install -y vim-minimal.x86_64
- 最后还需要 清除缓存
[root@ying01 yum.repos.d]# yum clean all
这一步是必须要执行的,这样可以生成缓存,方便下次使用
[root@ying01 yum.repos.d]# yum list
2.3 安装扩展源
只安装一个CentOS7-Base-163.repo基础源是不够用的,有时候安装RPM包的时候没有一些扩展的东西。
- 安装扩展源epel
[root@ying01 yum.repos.d]# yum install -y epel-release
- 刷新
[root@ying01 yum.repos.d]# yum list
- 查看到的文件太多,可以用grep过滤
[root@ying01 yum.repos.d]# yum list |grep epel
- 安装一个rpm包:yum install -y [包名]
[root@ying01 yum.repos.d]# yum install -y zsh --downloadonly
- 查看rpm默认下载路径:ls /var/cache/yum/x86_64/7/updates/
[root@ying01 yum.repos.d]# ls /var/cache/yum/x86_64/7/updates/
cachecookie mirrorlist.txt
d94a7500ce5b2da5a87ec4a88472b7d4668293b0aea3704dbbe23ef9819dbef0-primary.sqlite.bz2 packages
gen repomd.xml
- 如果指定下载的rpm路径
[root@ying01 yum.repos.d]# yum install -y znc --downloadonly --downloaddir=/tmp/
已加载插件:fastestmirror
Loading mirror speeds from cached hostfile
* base: mirrors.zju.edu.cn
* epel: mirror01.idc.hinet.net
* extras: mirrors.zju.edu.cn
* updates: mirrors.aliyun.com
正在解决依赖关系
--> 正在检查事务
---> 软件包 znc.x86_64.0.1.6.6-1.el7 将被 安装
- 打开/tmp/目录,发现znc-1.6.6-1.el7.x86_64.rpm 已经被安装到此目录下;
[root@ying01 yum.repos.d]# ls /tmp/
newdisk
passwd
systemd-private-b921614b1c7747c08af71e52c079206b-chronyd.service-HTv3N4
systemd-private-b921614b1c7747c08af71e52c079206b-vgauthd.service-BuqRTr
systemd-private-b921614b1c7747c08af71e52c079206b-vmtoolsd.service-RKxskg
yum_save_tx.2018-05-30.10-10.RuvKi7.yumtx
yum_save_tx.2018-05-30.10-28.pmEM9D.yumtx
znc-1.6.6-1.el7.x86_64.rpm
[root@ying01 yum.repos.d]#
三、源码包安装
安装源码包通常需要以下3个步骤:
- ./configyre。这一步可以定制功能,加上相应的选项即可; 具体有什么选项可以通过命令 ./configure --help查看。 这一步会自动检测你的Linux系统于相关的套件是否有编译该源码包时所需要的库, 因为一但缺少某个库,就能完成编译。
- make。使用这个命令,会进行预设参数编译。
- make install,用于安装,用于创建相关软件的存放目录和配置文件
注意:采用源码包安装的方式,需要用编译器进行。linux下的c语言编译器是gcc,centos下运行 yum install -y gcc 进行安装。
[root@ying01 httpd-2.4.33]# yum install -y gcc
- 统一的源码包地址 /usr/local/src ;定义到其目录下;
[root@ying01 yum.repos.d]# cd
[root@ying01 ~]# cd /usr/local/src
- 先下载一个apache的包;
[root@ying01 src]# wget http://mirrors.cnnic.cn/apache/httpd/httpd-2.4.33.tar.gz
--2018-05-29 10:53:55-- http://mirrors.cnnic.cn/apache/httpd/httpd-2.4.33.tar.gz
正在解析主机 mirrors.cnnic.cn (mirrors.cnnic.cn)... 101.6.8.193, 2402:f000:1:408:8100::1
正在连接 mirrors.cnnic.cn (mirrors.cnnic.cn)|101.6.8.193|:80... 已连接。
已发出 HTTP 请求,正在等待回应... 200 OK
长度:9076901 (8.7M) [application/octet-stream]
正在保存至: “httpd-2.4.33.tar.gz”
100%[===========================================================>] 9,076,901 638KB/s 用时 14s
2018-05-29 10:54:09 (656 KB/s) - 已保存 “httpd-2.4.33.tar.gz” [9076901/9076901])
- 解压这个包: tar-zxvf httpd-2.4.33.tar.gz
[root@ying01 src]# ls
httpd-2.4.33.tar.gz mysql-5.5.55.tar.gz
[root@ying01 src]# tar -zxvf httpd-2.4.33.tar.gz
- 用ls命令查看解压后的文件;
[root@ying01 src]# ls
httpd-2.4.33 httpd-2.4.33.tar.gz
[root@ying01 src]# ls httpd-2.4.33
ABOUT_APACHE BuildBin.dsp emacs-style LAYOUT NOTICE srclib
acinclude.m4 buildconf httpd.dep libhttpd.dep NWGNUmakefile support
Apache-apr2.dsw CHANGES httpd.dsp libhttpd.dsp os test
Apache.dsw CMakeLists.txt httpd.mak libhttpd.mak README VERSIONING
apache_probes.d config.layout httpd.spec LICENSE README.cmake
ap.d configure include Makefile.in README.platforms
build configure.in INSTALL Makefile.win ROADMAP
BuildAll.dsp docs InstallBin.dsp modules server
./configuer --prefix=/usr/local/apache2,prefix指定安装路径,apache2表示版本
[root@ying01 src]# cd httpd-2.4.33
[root@ying01 httpd-2.4.33]# ./configure --prefix=/usr/local/apache2
checking for chosen layout... Apache
checking for working mkdir -p... yes
checking for grep that handles long lines and -e... /usr/bin/grep
checking for egrep... /usr/bin/grep -E
checking build system type... x86_64-pc-linux-gnu
checking host system type... x86_64-pc-linux-gnu
checking target system type... x86_64-pc-linux-gnu
configure:
configure: Configuring Apache Portable Runtime library...
configure:
checking for APR... no
configure: error: APR not found. Please read the documentation. //有问题
- 用命令检测 echo $? 如果生成为非0,那么久是有问题;
[root@ying01 httpd-2.4.33]# echo $?
1
帮助命令:./configure --help
[root@ying01 httpd-2.4.33]# ./configure --help
`configure' configures this package to adapt to many kinds of systems.
Usage: ./configure [OPTION]... [VAR=VALUE]...
To assign environment variables (e.g., CC, CFLAGS...), specify them as
VAR=VALUE. See below for descriptions of some of the useful variables.
Defaults for the options are specified in brackets.
Configuration:
-h, --help display this help and exit
--help=short display options specific to this package
--help=recursive display the short help of all the included packages
-V, --version display version information and exit
-q, --quiet, --silent do not print `checking ...' messages
--cache-file=FILE cache test results in FILE [disabled]
-C, --config-cache alias for `--cache-file=config.cache'
-n, --no-create do not create output files
--srcdir=DIR find the sources in DIR [configure dir or `..']
//篇幅原因,下面省略
- 再用echo $? 检测上条命令;
[root@ying01 httpd-2.4.33]# echo $?
0
由于源码包网址有问题,试验先暂停,查询下资料,再续上;