[TOC]
0x00 Linux中软件安装的几种方式 Q:Linux中的如何进行安装、卸载、升级软件和管理? 答:回答这个问题前需要了解Linux的多个发行版本,不同版本之间安装软件方式和命令不一样,且同一个版本之间安装软件也有不同的方法;
但是大体来说Linux有两大派系:
红帽派系,包含Redhat、Centos、Fedora等
Debian派系,包含Kali、Ubuntu等。
基本采用rpm/deb包管理、yum/apt-get在线管理、源码包编译安装管理和二进制安装包(解压就可用-类似于绿色安装)等等;
线下的安装方式 : 也就是说你要把软件下载到本地去安装。一般我们下载的文件后缀名都是zip、tar.gz等压缩包,解压后会看到rpm、bin、deb、run之类扩展名文件,你可以根据自己的系统下载不同扩展名的软件。 1、rpm安装包:这时一款老牌的安装格式,是红帽创建的安装格式,现在已成为一种标准,常用在opensuse/turbo/redhat版本),安装方法rpm -ivh 软件名.rpm (如果只是安装一个i参数就够了,如果还要看安装进度和软件信息就加个vh) 2、deb安装包:DEB是Debian软件包格式的文件扩展名,常用在centos/ubuntu,在苹果系统里也常见此安装方式。安装方法:dpkg -i 软件名.deb 3、run安装包:以QT(一种编程工具)的安装文件为例,
1)授权: chmod x qt-unified-linux-x64-2.0.2-2-online.run
2)执行:./qt-unified-linux-x64-2.0.2-2-online.run即可安装。 4、bin安装包:bin包是一个自解压格式的安装包,要想执行它,需要先赋予它可执行的权限。 (以安装jdk为例)# chmod x jdk-6u21-linux-i586.bin# ./jdk-6u21-linux-i586.bin
对比源码包编译安装的优缺点 : 优点:
开源对于业务需要更改源代码
编译安装时可选择所需要的功能,进行最优化安装以便更加稳定和高效
卸载方便
缺点:
安装过程较多,安装较大的软件组合时候容易出错
编译过程时间较长,安装比二进制安装时间长
0x01 源码包安装过程及make命令 安装注意事项:
源代码标准保存位置 /usr/local/src/
软件标准安装位置 /usr/local/
源码包编译安装需要下载安装编译工具:
[TOC]
0x00 Linux中软件安装的几种方式 Q:Linux中的如何进行安装、卸载、升级软件和管理? 答:回答这个问题前需要了解Linux的多个发行版本,不同版本之间安装软件方式和命令不一样,且同一个版本之间安装软件也有不同的方法;
但是大体来说Linux有两大派系:
红帽派系,包含Redhat、Centos、Fedora等
Debian派系,包含Kali、Ubuntu等。
基本采用rpm/deb包管理、yum/apt-get在线管理、源码包编译安装管理和二进制安装包(解压就可用-类似于绿色安装)等等;
线下的安装方式 : 也就是说你要把软件下载到本地去安装。一般我们下载的文件后缀名都是zip、tar.gz等压缩包,解压后会看到rpm、bin、deb、run之类扩展名文件,你可以根据自己的系统下载不同扩展名的软件。 1、rpm安装包:这时一款老牌的安装格式,是红帽创建的安装格式,现在已成为一种标准,常用在opensuse/turbo/redhat版本),安装方法rpm -ivh 软件名.rpm (如果只是安装一个i参数就够了,如果还要看安装进度和软件信息就加个vh) 2、deb安装包:DEB是Debian软件包格式的文件扩展名,常用在centos/ubuntu,在苹果系统里也常见此安装方式。安装方法:dpkg -i 软件名.deb 3、run安装包:以QT(一种编程工具)的安装文件为例,
1)授权: chmod x qt-unified-linux-x64-2.0.2-2-online.run
2)执行:./qt-unified-linux-x64-2.0.2-2-online.run即可安装。 4、bin安装包:bin包是一个自解压格式的安装包,要想执行它,需要先赋予它可执行的权限。 (以安装jdk为例)# chmod x jdk-6u21-linux-i586.bin# ./jdk-6u21-linux-i586.bin
对比源码包编译安装的优缺点 : 优点:
开源对于业务需要更改源代码
编译安装时可选择所需要的功能,进行最优化安装以便更加稳定和高效
卸载方便
缺点:
安装过程较多,安装较大的软件组合时候容易出错
编译过程时间较长,安装比二进制安装时间长
0x01 源码包安装过程及make命令 安装注意事项:
源代码标准保存位置 /usr/local/src/
软件标准安装位置 /usr/local/
源码包编译安装需要下载安装编译工具:
1 2 3 4 5 6 7 8 9 10 11 $yum -y install gcc gcc-c++ make./configure --prefix=<dir> -定义需要的功能选项 -监测系统环境是否符合安装要求 -把定义好的功能选项和监测系统环境的信息都写入Makefile文件,用于后续的编辑 make make install make clean make uninstall
编译原理:
weiyigeek.top-编译原理
编译过程:
weiyigeek.top-编译过程
以Redhat下安装apache为例:
先网站下载源代码包 http://mirror.bit.edu.cn/apache/httpd/httpd-2.2.15.tar.gz
tar -xvf httpd-2.2.15.tar.gz -C /usr/src将其解压到 /usr/src/ 目录下
到其解压目录 /usr/src/httpd-2.2.15/ 下, ./configure 运行configure配置文件,设置安装目录,安装模块等,不设置的话,软件默认安装在 /usr/local/apache2/目录下。 如果 ./configure –prefix=/usr/local/https/ 则是将其安装在/usr/local/https/目录下。此时还并未安装只是配置安装路径
make 编译,生成可执行的二进制文件Makefile
make install 安装。此时,软件安装在 /usr/local/https/ 目录下
最后在目录中启动httpd:/usr/local/apache2/bin/apachectl start
安装完成之后对安装包的清理:
进入其解压目录 /usr/src/httpd-2.2.15/下make uninstall 者make clean 用于清除上一次的编译
然后返回到上一级目录,把 httpd-2.2.15 删除
如果要卸载软件的话,把 /usr/local/apache2 这个软件删除就可以
安装HTTPD服务使用rmp与源码包区别 :
源码包卸载软件简单,rpm删除卸载软件较为麻烦(文件分散到各个目录)
源码包安装的服务默认是不能被服务管理命令管理,只能由绝对路径进行服务的管理除非手动添加
通过源码安装的目录在安装路径中存放网页的在htdocs/www中,而通过rpm安装的则在系统默认的/var/html/www中
0x02 yum介绍与命令 yum(全称为Yellowdog Updater Modified)是一个在CentOS、RedHat和Fedora操作系统中使用的Shell前端软件包管理器。 yum主要管理基于rpm的软件包,它可以自动升级、安装、删除rpm软件包,同时它还能够自动查找并解决rpm包之间的依赖关系,并且无需管理员逐个、手工的去安装每一个rpm包,使管理员在维护Linux主机时更加轻松自如。
yum可以从一个或多个repo文件中配置的repo仓库,通过http或ftp协议从repo仓库获得必要的信息,然后下载相关的软件包。
yum 安装不仅可以在连通网络中适用, 可以使用光盘进行yum安装
yum 在redhat 中,将其视为售后服务, 定位收费才可使用 (缺点),所以我们常常需要安装第三方源epel装上了它之后,就相当于添加了一个第三方源。
优势:
1.不替换本身的yum源,安装后会产生新的repo
2.epel有很多源地址,如果一个下不到,会自动去另外一个下
3.如果更新的包不全,就不会进行安装,依赖关系可以保全
repo仓库可以通过createrepo或yum-arch命令进行创建,也能够用别人已经创建好的repo仓库作为yum源
YUM 安装
优点:简单,便捷,解决源码包安装依赖问题,全自动化安装
缺点:没有办法定制,需要网络,网络环境差的情况话,下载速度慢
1.yum 命令 yumdownloader 子命令 常用命令:1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 命令说明: list search [关键字] clean all makecache yum -y install [包名] yum -y remove [包名] yum -y update [包名] yum -y upgrade yum --enablerepo=localyum --disablerepo=base,extras,updates,epel list yum --downloadonly install tftp yumdownloader pcre-devel openssl-devel yum grouplist yum group install 软件组名 yum group remove 软件组名 yum whatprovides 动态链接库.so
补充示例:1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 yum check-update yum whatprovides libgcc_s.so.1 yum load-transaction /tmp/yum_save_tx.2016-09-09.22-26.wxYVRg.yumtx yum --enablerepo=remi-php73 install -y php php-mysqli yum load-transaction /tmp/yum_save_tx.2020-04-30.15-11.S54r3n.yumtx yum install docker-ce-19.03.3-3.el7 kubelet-1.17.4-0 kubeadm-1.17.4-0 kubectl-1.17.4-0 --disableexcludes=kubernetes
2.createrepo 命令 createrepo用以创建yum源(软件仓库),即为存放于本地特定位置的众多rpm包建立索引,描述各包所需依赖信息,并形成元数据。 参考网站:http://linux.51yip.com/search/createrepo 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 基本语法:createrepo [option] <directory> -u --baseurl <url> -o --outputdir <url> -x --excludes <packages> -i --pkglist <filename> -n --includepkg -q --quiet -g --groupfile <groupfile> createrepo -g comps.xml /path/to/rpms -v --verbose -c --cachedir <path> --update -p --pretty -d --database $ mkdir -p /yum/centos/6/ $ createrepo -pdo /yum/centos/6/ix86_64 /yum/centos/6/ix86_64 $ createrepo --update /yum_source/ //更新域名仓库
3.yum仓库配置 我们知道repo文件是CentOS、RedHat和Fedora操作系统中yum源(软件仓库)的配置文件,通常一个repo文件定义了一个或者多个软件源。 其作用:我们将从哪里下载需要安装或者升级的软件包,repo文件中都进行了相关的配置,而这些配置将会被yum读取和应用。
repo文件内容详解 目录:/etc/yum.repo.d/1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 vi /etc/yum.repos.d/CentOS-Base.repo [base] name=CentOS-$releasever –Base mirrorlist=http://mirrorlist.centos.org/?release=$releasever &arch=$basearch &repo=os baseurl= http://mirrors.aliyun.com/centos/6.6/os/x86_64/ baseurl= ftp://ftp.sjtu.edu.cn/centos/6.6/os/x86_64/ baseurl= rsync://mirror.zol.co.zw/centos/ baseurl= file:///ilanni/yum/ enabled=1 gpgcheck=1 gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-6
weiyigeek.top-
文件:/etc/yum.conf1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 cat /etc/yum.conf [main] cachedir=/var/cache/yum/$basearch /$releasever keepcache=0 debuglevel=2 logfile=/var/log /yum.log exactarch=1 obsoletes=1 gpgcheck=1 plugins=1 installonly_limit=5 bugtracker_url=http://bugs.centos.org/set_project.php?project_id=23&ref=http://bugs.centos.org/bug_report_page.php?category=yum distroverpkg=centos-release
4.yum仓库实战 (1)yum企业内部光盘源搭建 项目需求:该yum源需要配置两个源:一个是centos的光盘镜像源,一个是特殊rpm软件的镜像源并且该yum源是通过http进行访问。 实验环境:yum服务器192.168.1.247 centos,客户端192.168.1.248 centos
服务端操作流程与步骤 :1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 Q:createrepo是什么? A:createrepo是linux下创建仓库的软件包。create是创建的意思,repo是repository的缩写是仓库的意思。 yum -y install createrepo yum -y install httpd /etc/init.d/httpd start wget http://192.168.1.247 mkdir -p /var/www/html/yum ll /var/www/html/yum/ mkdir /iso mount -o loop CentOS-6.6-x86_64-minimal.iso /iso/ cp -rv /iso/* /var/www/html/yum/ wget http://192.168.1.247/yum ll /var/www/html/yum/Packages |grep curl
weiyigeek.top-repodata
特殊软件镜像配置,在前面我们还要求一个特殊的yum源用来存放特殊软件的,在此我们以lrzsz这个软件为例。1 2 3 4 5 6 7 8 9 10 11 mkdir -p /var/www/html/ilanni cp /var/cache/yum/x86_64/6/base/packages/lrzsz-0.12.20-27.1.el6.x86_64.rpm /var/www/html/ilanni/ ll /var/www/html/ilanni/ createrepo ./ tree repodata/ wget http://192.168.1.247/ilanni
weiyigeek.top-
客户端的配置 : yum客户端的操作就简单了很多,我们只需要修改客户端的repo文件即可。1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 rename .repo .repo.bak *.repo [centos6] name=centos6 baseurl=http://192.168.1.247/yum/ enabled=1 gpgcheck=0 [ilanni] name=ilanni baseurl=http://192.168.1.247/ilanni/ enabled=1 gpgcheck=0 yum clean all yum makecache yum -y install curl yum -y install lrzsz 注意:如果客户端yum安装软件包时,提示找不到该软件。强烈建议在客户端上执行 yum clean all yum list
以上就是我们在内网搭建yum源的步骤。
补充:更新rpm包1 2 3 4 5 6 7 8 9 10 11 cp /var/cache/yum/x86_64/6/base/packages/lftp-4.0.9-1.el6_5.1.x86_64.rpm /var/www/html/ilanni/ ll /var/www/html/ilanni/ rm -fr /var/www/html/ilanni/repodata/ createrepo /var/www/html/ilanni/ yum clean all yum list |grep lftp yum -y install lftp
(2)企业内部yum源搭建
yum仓库服务端配置如下: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 mkdir -p /data/yum_data/ cd /data/yum_data/ createrepo -pdo /data/yum_data/ /data/yum_data/ [root@yum conf]$vi httpd.conf DocumentRoot "/data/yum_data/" <Directory "/data/yum_data/" > [root@yum httpd]$ mv conf.d/welcome.conf /tmp [root@yum conf] [root@yum conf] drwxr-xr-x. 3 apache apache 4096 11月 19 16:49 centos drwxr-xr-x. 3 apache apache 4096 11月 19 16:50 epel drwxr-xr-x. 2 apache apache 4096 11月 19 17:50 repodata [root@yum yum_data]$echo "192.168.30.130 yum.weiyigeek.com" >>/etc/hosts [root@yum yum_data]$tail -1 /etc/hosts 192.168.30.130 yum.weiyigeek.com service httpd restart sed -i "s#keepcache=0#keepcache=1#g" /etc/yum.conf cachedir=/var/cache/yum/$basearch /$releasever ll /var/cache/yum/x86_64/6/base/packages yum --downloadonly install tftp [root@yum x86_64] [root@yum packages] createrepo -pdo /data/yum_data/ /data/yum_data/ createrepo --update /data/yum_data/
客户端配置: 备注:注意更改为自己的域名地址1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 [root@B yum.repos.d]$ vi localyum.repo [localyum] name=centos7 baseurl=http://yum.weiyigeek.com/centos/7/os/x86_64/ enable =1gpgcheck=0 [localepel] name=epel baseurl=http://yum.weiyigeek.com/epel/7/x86_64/ enable =1gpgcheck=0 [localextra] name=extra baseurl=http://yum.weiyigeek.com/centos/7/extras/x86_64/ enable =1gpgcheck=0 yum --enablerepo=localyum --disablerepo=base,extras,updates,epel list
(3) 同步镜公网镜像yum源配置方法 在我们自己搭建的yum镜像站由于yum软件的数据库文件repodata不一致就会导致问题,因此我想到的解决方法就是直接使用公网yum源的repodata。 在公司里搭建一个内网yum服务器进行实时同步公网镜像流程步骤如下:
镜像同步公网yum源:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 mkdir -p /data/yum_data/centos/6/os/x86_64/ mkdir -p /data/yum_data/centos/6/extras/x86_64/ mkdir -p /data/yum_data/centos/6/updates/x86_64/ mkdir -p /data/yum_data/epel/6/x86_64/ /usr/bin/rsync -av rsync://mirrors.ustc.edu.cn/centos/6/os/x86_64/ /data/yum_data/centos/6/os/x86_64/ /usr/bin/rsync -av rsync://mirrors.ustc.edu.cn/centos/6/extras/x86_64/ /data/yum_data/centos/6/extras/x86_64/ /usr/bin/rsync -av rsync://mirrors.ustc.edu.cn/centos/6/updates/x86_64/ /data/yum_data/centos/6/updates/x86_64/ /usr/bin/rsync -av --exclude=debug rsync://mirrors.ustc.edu.cn/epel/6/x86_64/ /data/yum_data/epel/6/x86_64/ $du -sh yum_data12G yum_data $tree -L 3 yum_data/yum_data/
weiyigeek.top-公网镜像repo
补充常见的错误处理 :1 2 3 4 5 6 7 8 9 10 11 12 13 14 #问题1 Error1: @ERROR: max connections (20) reached -- try again later rsync error: error starting client-server protocol (code 5) at main.c(1503) [receiver=3.0.6] 解决方法: yum源服务器超过最大连接数,请过会再试。(多试几次,就成功啦) #问题2:Error: rsync: getaddrinfo: mirrors.ustc.edu.cn 873: Name or service not known 解决方法: DNS无法解析,添加移动DNS [root@node5 ~]#echo "nameserver 120.196.165.7" >> /etc/resolv.conf [root@node5 ~]# cat /etc/resolv.conf nameserver 120.196.165.7
0x03 附录脚本 (1) RHEL7系列快速配置本地yum源光盘 vim rhel7.repo.sh1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 #!/bin/bash mkdir -p /media/cdrom mount /dev/cdrom /media/cdrom echo "/dev/cdrom /media/cdrom iso9660 defaults 0 0" >> /etc/fstabcd /etc/yum.repos.dcat > rhel7.repo <<END [rhel7] name=rhel7 baseurl=file:///media/cdrom enabled=1 gpgcheck=0 END yum clean all yum makecach
测试安装:
(2) RHEL7系列快速配置本地yum源之文件
vim fileyum.sh
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 mkdir /mnt/media /root/123 mount /dev/cdrom /mnt/media cd /mnt/media && cd Packagesrpm -ivh deltarpm-3.6-3.el7.x86_64.rpm rpm -ivh python-deltarpm-3.6-3.el7.x86_64.rpm rpm -ivh createrepo-0.9.9-28.el7.noarch.rpm cd .. && cp -r * /root/123cat > /etc/yum.repos.d/123.repo <<END [REPO123] name=123 baseurl=file:///root/123 enabled=1 gpgcheck=0 END createrepo /root/123
0x04 补充扩展 1.CentOS下yum配置Proxy方法 在 /etc/yum.conf
文件中通常增加一行 proxy=http://xxx.xxx.xxx:xxxx
即可。1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 proxy=http://xxx.xxx.xxx:xxxx proxy_username=用户名 proxy_password=密码 echo "proxy=http://192.168.12.215:3218/" >> /etc/yum.confexport proxy="http://192.168.12.215:3218" export http_proxy=$proxy export https_proxy=$proxy export ftp_proxy=$proxy export no_proxy="localhost, 127.0.0.1, ::1"
0x05 入坑出坑 问题1.yum -y install 时出现This system is not registered with an entitlement server. You can use subscription-manager to register.
问题;1 2 3 已加载插件:fastestmirror, product-id, search-disabled-repos, subscription-manager
问题原因: 由于yum没有 -y 这个命令该命令是install的子命令所以会报错,还有一种情况是Redhat的操作系统默认yum是需要收费的我们需要切换到免费的CentOS yum上即可 解决办法:1 2 3 4 5 6 7 8 9 yum install -y cat /etc/yum/pluginconf.d/subscription-manager.conf [main] enabled=0