一,rpm包安装(现在基本都有网络,单机情况极少,该方式了解即可)
一般单机或者网络不好的时候,可以选择此安装方式
优点:rpm包管理系统简单,安装速度比源码包安装快很多
缺点:rpm包是本质其实是源码编译之后的二进制包,无法看到源码,软件功能在编译的时候已经确定无法灵活选择,且包依赖较多,解决麻烦
依赖:树状依赖;环状依赖;模块依赖,依赖某个lib文件,该文件存在于某个包中.
来源:系统光盘(mount挂载光盘即可)或者网站下载
格式:httpd-2.4.6-90.el7.centos.x86_64.rpm
{httpd包名}-{2.4.6版本}-{90发布次数}.{el7.centos适合的Linux平台}.{x86_64适合的硬件平台}.{rpm包扩展名}
包全名:即 httpd-2.4.6-90.el7.centos.x86_64.rpm,使用rpm命令操作的是未安装的包的时候(安装一个新的包),使用包全名
rpm -ivh 包全名 安装包
rpm -Uvh 包全名 升级包
包名:即上述的包名 httpd,使用rpm命令操作的是已安装的包的时候(如查询已安装包的信息,位置),使用包名
rpm -evh 包名 卸载指定包,一般要按照依赖关系卸载,危险操作(依赖包可能被其他包依赖,卸载可能导致系统崩溃)
[root@localhost Packages]# rpm -evh gcc Preparing... ################################# [100%] Cleaning up / removing... 1:gcc-4.8.5-39.el7 ################################# [100%]
rpm -q 包名 查询指定包是否安装
[root@localhost Packages]# rpm -q gcc package gcc is not installed [root@localhost Packages]# rpm -q libgcc libgcc-4.8.5-39.el7.x86_64
rpm -qa 查询所有已安装的包,一般配合grep使用
[root@localhost Packages]# rpm -qa|grep http httpd-tools-2.4.6-90.el7.centos.x86_64 httpd-manual-2.4.6-90.el7.centos.noarch httpd-2.4.6-90.el7.centos.x86_64
rpm -qi 包名,查询已安装rpm包的详细信息 rpm -ql 包名,查询已安装包的文件安装的位置,一般作者已经写好 rpm -qf 系统文件名,查询系统文件属于哪个rpm包 rpm -qR 包名,查询已安装软件包的依赖性 rpm -V 包名,rpm独有的包校验,需要有原始包光盘
--------------------------------------------------------------------------------------------------------------------------------
二,yum在线安装(常用,很多包都使用该方式安装)
都2020年了,一般都使用该方式安装一些常用的工具包,甚至部分生产环境也可以使用该方式
优点:自动解决各种依赖,yum是Redhat的付费服务
缺点:同rpm包,本质就是rpm包,只不过是在线,自动解决依赖,一般版本不是最高的,功能无法灵活选择
来源:yum源,一般都是在线rpm服务器
配置网络yum源:
[root@localhost ~]# vim /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
#additional packages that extend functionality of existing packages
[centosplus]
name=CentOS-$releasever - Plus
mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=centosplus&infra=$infra
#baseurl=http://mirror.centos.org/centos/$releasever/centosplus/$basearch/
gpgcheck=1
enabled=0
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7
相关字段说明:
[base] 容器名称,一定要放在[]中
name 容器说明,可以自己随便写
mirrorlist 镜像站点,可以注释掉
baseurl yum源服务器地址,默认CentOS官方,可以改成自己需要的
enabled 容器是否生效,不写或者enabled=1都是生效,enabled=0则失效
gpgcheck rpm数字证书是否生效,1生效,0不生效
gpgkey 数字证书的公钥保存位置,不用修改
配置本地yum源:
a,使网络yum源失效,将上述文件结尾重命名为非repo结尾即可
[root@localhost ~]# vim /etc/yum.repos.d/CentOS-Media.repo [c7-media] name=CentOS-$releasever - Media baseurl=file:///media/CentOS/ file:///media/cdrom/ file:///media/cdrecorder/ gpgcheck=1 enabled=0 gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7
b,使本地yum源生效
[root@localhost ~]# mkdir /mnt/cdrom //建立挂载点 [root@localhost ~]# mount /dev/cdrom/ /mnt/cdrom/ //挂载光盘
相关命令(常用)
yum list 查询当前yum源所有可用软件包列表
yum search xxx 搜索当前yum服务器上所有关键字相关的包
yum -y install 包名 安装指定包,只写包名即可,-y自动回答yes //这里包名就说rpm包中的包名,当然也可以写包全名指定版本
yum -y update 包名 升级指定安装包,一定要写包名,不然升级所有包的导致系统崩溃
yum -y remove 包名 卸载安装包
其他命令
yum -y autoremove 包名 卸载当前包已经其所有依赖包,由于可能存在其他包和卸载包依赖同一个包的情况,使用该命令会导致其他包无法使用甚至系统崩溃,谨慎使用
yum list updates,列出所有可更新的包
yum list installed,列出所有已安装的包
yum list extras,列出所有已安装但是不在yum服务器的包
yum info,查询所有软件包详细信息
yum info updates 查询所有可更新软件包的详情
yum info installed 列出所有已安装的软件包详情
yum info extras
yum clean packages 清除/var/cache/yum下的缓存软件包
yum grouplist 列出所有可用的软件组列表
yum groupinstall 软件组名 安装指定软件组,软件组名必须是英文
yum groupremove 软件组名 卸载指定软件组
只需要记住一点,yum安装本质就是rpm的安装,只不过在线帮你解决了相关依赖
--------------------------------------------------------------------------------------------------------------------------------
三,源码包安装(常用,一般大型软件或者要求性能高的,都选择该方式安装,如mysql, nginx, apache....)
一般用于服务器的相关软件,对性能有较高要求,有定制化需求的,都使用该方式安装,可以自己修改源码,达到自己的要求
有时候很多包在yum源中找不到对应的软件或者找不到需要的版本,也选择此方式安装
优点:定制化,性能高,安全可靠且稳定
缺点:不好升级,编译出现错误的时候难解决(有时候需要对源码有一定的了解,有能力修改源码才能解决)
来源:相关软件的官网下载压缩包即可
前提:需要安装c语言编译器,不然无法编译源码
通过源码安装nginx
[root@ubuntu2020 download]# tar -zxvf nginx-1.16.1.tar.gz nginx-1.16.1/ nginx-1.16.1/auto/ nginx-1.16.1/conf/ nginx-1.16.1/contrib/ nginx-1.16.1/src/ ....
将解压缩的源码包放入/usr/local/src/目录下或者/opt/目录下
/usr/local/软件包/ 相当于windows的C:/Progrem Files/,用户自己编译的软件默认会安装到这个目录下,其中/usr/local/src一般放源码。
/opt/软件包/ 相当于windows的D:/Software,opt有可选的意思,可以用于放置第三方大型软件(或games),当你不需要时直接rm -rf掉即可。在硬盘容量不够时,也可将/opt单独挂载到其他磁盘上使用
个人理解/usr/local/ 适合放经常需要使用到的软件,经常被其他程序相关联,一般都设置开启自启的;而/opt适合测试性质或者不是经常使用的软件,很独立,可以单独挂载
[root@ubuntu2020 download]# cp -R nginx-1.16.1 /usr/local/src/ [root@ubuntu2020 download]# cd /usr/local/src/nginx-1.16.1/ [root@ubuntu2020 nginx-1.16.1]#
配置需要的模块功能,一般源码包都会有configure脚本
在 nginx-1.12.0 版本之后就不需要去配置相关东西,默认就可以了。当然,如果你要自己配置目录也是可以的。
1.使用默认配置
./configure
./configure ---软件的配置与检查
a. 定义需要的功能选项
b. 检测系统环境是否符合安装要求
c. 把定义好的功能选项和检测环境信息写入Makefile文件,用于后续编译
2.自定义配置,通过./configure --help即可查询相关可选功能
./configure \
--prefix=/usr/local/nginx \
--conf-path=/usr/local/nginx/conf/nginx.conf \
--pid-path=/usr/local/nginx/conf/nginx.pid \
--lock-path=/var/lock/nginx.lock \
--error-log-path=/var/log/nginx/error.log \
--http-log-path=/var/log/nginx/access.log \
--with-http_gzip_static_module \
--http-client-body-temp-path=/var/temp/nginx/client \
--http-proxy-temp-path=/var/temp/nginx/proxy \
--http-fastcgi-temp-path=/var/temp/nginx/fastcgi \
--http-uwsgi-temp-path=/var/temp/nginx/uwsgi \
--http-scgi-temp-path=/var/temp/nginx/scgi
[root@ubuntu2020 nginx-1.16.1]# ./configure --prefix=/usr/local/nginx //其实这里默认prefix就是/usr/local/nginx,不写也行。其实rpm包安装也可以指定--prefix,但是不推荐
checking for OS
+ Linux 3.10.0-957.21.3.el7.x86_64 x86_64
checking for C compiler ... found
+ using GNU C compiler
+ gcc version: 4.8.5 20150623 (Red Hat 4.8.5-39) (GCC)
checking for gcc -pipe switch ... found
checking for -Wl,-E switch ... found
.....
Configuration summary
+ using system PCRE library
+ OpenSSL library is not used
+ using system zlib library
....
nginx http scgi temporary files: "scgi_temp"
3. 编译并安装
make && make install,出现任何问题可以使用make clean清除编译缓存,解决之后重新安装
安装报错--安装过程停止且最后出现error,warning或no的提示,否则不需要关心
[root@ubuntu2020 nginx-1.16.1]# make && make install //编译安装一般需要较长时间 .....
4. 卸载
源码包没有卸载命令,直接删除整个文件夹即可(删除前要停止服务和删除相关的软硬链接),不存在任何残留(这就是它的优势)
5. 启动
rpm安装包的一个优势就说可以直接使用服务管理命令管理:service httpd start 或 systemctl start httpd
源码包不能直接使用service或systemctl工具进行管理,可以使用软链接将相关控制脚本链接到/etc/init.d/即可实现(一般软件控制脚本官网都有,也可以自己编写)
--------------------------------------------------------------------------------------------------------------------------------
四,脚本安装
本质就是源码包和rpm包的混合使用,安装过程写成了脚本,便于初学者
简单快速方便,但是不能自定义软件版本,不能自定义所需功能,源码包优势丧失
例如一键lnmp安装:wget http://soft.vpser.net/lnmp/lnmp1.6.tar.gz -cO lnmp1.6.tar.gz && tar zxf lnmp1.6.tar.gz && cd lnmp1.6 && ./install.sh lnmp
例如宝塔面板安装:wget -O install.sh http://download.bt.cn/install/install_6.0.sh && sh install.sh
--------------------------------------------------------------------------------------------------------------------------------
总结:
yum安装其实就是rpm包,yum或rpm安装包,都会安装相关规定严格放置安装文件位置
例如可执行文件放在/usr/local/bin /usr/bin ...,数据放在/var/log /var/data...,运行文件放在/run/.... 手册放在/usr/share/doc/...
yum安装包的另一个优势就是多个软件使用到相同的库文件,没必要重复安装,节省了一定空间(没什么用),带来的后果是如果要对某个库文件的修改,会影响其他软件
yum安装包卸载也只是卸载本身,依赖包不一定会被卸载,所有删除不是很彻底,但问题不大
源码包所有需要的东西都在一个文件夹,删除的时候直接干掉即可,而且所需的库文件依赖基本都在文件夹内
两种方式可以按照自己的需要进行选择
原文:https://www.cnblogs.com/xzwwen/p/12861621.html