linux在离线状态下安装配置各种应用和包的几种方法(搭建本地YUM源仓库源、python-django项目依赖包迁移方法)
linux-centos中安装相关知识
一、源代码形式
1. 绝大多数开源软件都是直接以原码形式发布的 2. 源代码一般会被打成.tar.gz的归档压缩文件 3. 源代码需要编译成为二进制形式之后才能够运行使用 4. 源代码基本编译流程: 1).configure 检查编译环境; 2)make对源代码进行编译; 3)make insall 将生成的可执行文件安装到当前计算机中
二、RPM
RMP 是 LINUX 下的一种软件的可执行程序,你只要安装它就可以了。这种软件安装包通常是一个RPM包(Redhat Linux Packet Manager,就是Redhat的包管理器),后缀是.rpm。 RPM是Red Hat公司随Redhat Linux推出了一个软件包管理器,通过它能够更加轻松容易地实现软件的安装。 1.安装软件:执行rpm -ivh rpm包名,如: #rpm -ivh apache-1.3.6.i386.rpm 2.升级软件:执行rpm -Uvh rpm包名。 3.反安装:执行rpm -e rpm包名。 4.查询软件包的详细信息:执行rpm -qpi rpm包名 5.查询某个文件是属于那个rpm包的:执行rpm -qf rpm包名 6.查该软件包会向系统里面写入哪些文件:执行 rpm -qpl rpm包名
1.源代码形式的特点:操作复杂、编译时间长、极易出现问题、依赖关系复杂 2.为了方便,RPM(redhat package manager) 3.RPM通过将代码基于特定平台系统编译为可执行文件,并保存依赖关系,来简化开源软件的安装管理。针对不同的系统设定不同的包 4.常用命令规范:linuxcast-1.2.0-30.el6.1686.rpm 包名-版本号-适用平台-32/64-rpm 5.使用rpm –i software.rpm(安装); rpm -e software.rpm(卸载); rpm –U software.rpm(升级形式安装); rpm –ivh http://www.linuxcast.net/software.rpm(支持通过http\ftp协议形式安装) -v 显示详细信息;-h显示进度条 查询功能:rpm –qa 列出全部已经安装的.rpm软件 rpm –qa |grep ***
三:YUM
1. rpm软件包形式的管理虽然方便,但是需要手工解决软件包的依赖关系。很多时候安装一个软件安装一个软件需要安装1个或者多个其他软件,手动解决时,很复杂,yum解决这些问题。Yum是rpm的前端程序,主要目的是设计用来自动解决rpm的依赖关系,其特点: 1) 自动解决依赖关系 2) 可以对rpm进行分组,基于组进行安装操作 3) 引入仓库概念,支持多个仓库 4) 配置简单 2. yum仓库用来存放所有的现有的.rpm包,当使用yum安装一个rpm包时,需要依赖关系,会自动在仓库中查找依赖软件并安装。仓库可以是本地的,也可以是HTTP、FTP、nfs形式使用的集中地、统一的网络仓库。 3. 仓库的配置文件/etc/yum.repos.d目录下 4. 使用: 1) yum install 安装; 2) yum remove卸载; 3) yum update 升级制定软件 5. 安装的时候,会下载软件包.Rpm在安装,所以用国内仓库 改变镜像源 1) 访问地址http://mirrors.163.com/ 2) 点centos使用帮助 3) 按步骤来 6. 查询软件:可以使用yumsearch **
四:PIP
pip 是 Python 包管理工具,该工具提供了对Python 包的查找、下载、安装、卸载的功能。 目前如果你在 python.org 下载最新版本的安装包,则是已经自带了该工具。 Python 2.7.9 + 或 Python 3.4+ 以上版本都自带 pip 工具。 pip在安装完python后,可以使用软连接进行配置。
如果对服务器连接外网有严格要求,就必须在离线环境下进行安装配置。根据不同的情况,离线安装有以下几种方法:
安装少量无依赖的应用和包
1.使用能上网的设备,在提供包下载的网站上下载需要的内容,用U盘或FTP等方法拷贝到内网服务器安装。
包下载网站: https://pypi.org/project 、http://rpmfind.net/ 等
通过ftp拷贝:
a)把包文件上传到ftp b)从服务器把需要的包文件下载 ftp 192.168.1.2 # 输入用户名,密码 登录 ftp> prompt #关闭下载提示 ftp> get | mget filename # get单文件下载;mget多文件下载
2.安装
直接安装:
yum -y install xxx.rpm pip install -y xxx.whl
编译安装:
tar -xvzf python3.8.3.tar.gz cd python3.8.3 ./configure --prefix=/opt/python383 make && make install
python-django项目迁移依赖包离线安装
可以从已经安装好环境的设备上批量下载离线安装包,然后安装到断网环境的设备上。
pip freeze > requirements.txt 导出环境中用到的依赖包记录文本 pip download -d /tmp/packages -r requirements.txt
要保存下载的包的目录 -r requirements.txt 通过txt文件中的内容,下载相应的依赖包到指定目录
pip install --no-index --find-links=packages -r requirements.txt 也可以下载一个包后,通过pip install **.whl或者python setup.py install **.tar.gz 安装
指定安装目录
pip38 install --no-index --find-links=packages -r requirements.txt --target=/opt/envs/django2.1.8/lib/python3.8/site-packages #未测试
使用yum downloadonly下载RPM包及依赖包
1.下载yumdownloadonly插件
yum install yum-plugin-downloadonly
2.下载到指定目录(依赖包会一起下载)
# --downloadonly 只下载 # --downloaddir=temp rpm的下载保存地址 yum install --downloadonly --downloaddir=/root/httpd httpd
再例如:
#yum -y groupinstall "Developmenttools" --downloadonly --downloaddir=/download/111
#yum -y install zlib-devel bzip2-devel openssl-devel ncurses-devel sqlite-deve xz gcc --downloadonly --downloaddir=/download/111
#yum -y install zlib-devel bzip2-devel openssl-devel ncurses-develsqlite-devel readline-devel tk-devel gdbm-devel
db4-devel libpcap-develxz-devel man --downloadonly --downloaddir=/download/111
3. 通过上面的方法,把包拷贝到内网服务器
rpm -Uvh --force --nodeps *.rpm
利用缓存下载离线包(不推荐)
默认情况下,yum在安装软件包后会自动清理软件包,修改配置,使yum不再清理软件包
im /etc/yum.conf中修改keepcache = 0改为keepcache = 1 /etc/init.d/yum-updatesd restart yum -y install httpd 这时软件包已经安装下载,目录为/var/cache/yum
使用yum downloader下载RPM包及依赖包
1.下载安装downloader
yum install yum-utils -y
2.downloader使用
sudo yum downloader 软件名 sudo yumdownloader nano
默认情况下,下载的包会被保存在当前目录中,我们需要使用root权限,因为yumdownloader会在下载过程中更新包索引文件。与yum命令不同的是,任何依赖包不会被下载。我们可以通过加参数,使得下载包的过程中同时下载依赖以及自定义下载位置,格式为:yumdownloader 软件名 –resolve –destdir=保存目录
例如:
#--resolve 下载依赖包 #--destdir= 下载保存目录 sudo yum downloader httpd --resolve --destdir=/root/package/httpd
3. 通过上面的方法,把包拷贝到内网服务器
rpm -Uvh --force --nodeps *.rpm
通过搭建本地yum仓库源实现离线安装包和相关依赖(使用镜像ISO文件)
1.YUM本地仓库源配置文件介绍
CentOS使用的yum源是在/etc/yum.repos.d/目录下的两个文件中进行配置的CentOS-Base.repo和CentOS-Media.repo。
其中,CentOS-Base.repo是配置网络yum源,CentOS-Media.repo是配置本地yum源。
2.配置ISO挂载
#下载地址: http://mirrors.sohu.com/centos/7.6.1810/isos/x86_64/CentOS-7-x86_64-Minimal-1810.iso 将镜像文件centos7.iso拷贝至Linux文件目录,如/usr/local/src # 创建挂载路径 sudo mkdir /mnt/iso # 挂载ISO镜像到目录 mount -o loop /usr/local/src/centos7.iso /mnt/iso # 验证挂载 df -h
3.配置本地YUM源
cd /etc/yum.repos.d #yum源配置文件放置目录 mv CentOS-Base.repo CentOS-Base.repo.bak #先将网络yum源配置文件更名(让其失效) vi CentOS-Media.repo #编辑本地yum源文件 (sudo touch /etc/yum.repos.d/local.repo) # 也可以创建一个新的源文件,把centos-media.repo改名 name=CentOS-$releasever - Media #本地yum源名称(可随意修改) baseurl=file:///mnt/iso/ #光盘挂载目录 gpgcheck=0 enabled=1 #使用此yum源(等于0为不启用) gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7 本地yum源密钥 其中,baseurl是本地yum源的位置,当然,根据我们iso的配置位置,这里是可以进行修改的。
不过,我只是将iso文件挂载到/mnt/iso/目录,所以,我也没有做修改。将enabled改为1,启用本地yum源,其他配置保持不变。
4.更新yum源,查看是否有yum列表产生
yum clean all yum makecache yum repolist yum list
5.安装rpm包
yum install package_name
6.在虚拟环境中用DVD挂载ISO,配置YUM源
https://cloud.tencent.com/developer/article/1336558
7.说明:使用mount命令挂载后,当系统重新启动后这些挂载的配置就不再生效(需检验),所以我们需要修改配置文件/etc/fstab来让挂载的配置永久生效
vim /etc/fstab # 在文件的末尾添加如下内容(这是用DVD进行的挂载) /dev/sr0 /mnt/cdrom1 iso9660 defaults 0 0 /dev/sr1 /mnt/cdrom2 iso9660 defaults 0 0
搭建本地离线yum仓库(非ISO)
大致需要如下几个步骤。
1.把rpm包及其相关依赖全部都下载到本地目录
mkdir /opt/localrepo #通过downloadonly、downloader、在rmp网站直接下载等方法把包文件下载到本地目录
2.在/etc/yum.repos.d/目录下配置本地仓库源信息
# vim /etc/yum.repos.d/localrepo.repo [localrepo] name=localrepo baseurl=file:///localrepo gpgcheck=0 enabled=1 # 说明 .repo配置文件: localrepo是本地仓库名,可任意起名,但是注意不能与已有的仓库名重复。 name后面是注释信息,随意书写。 baseurl这后面就是填写本地仓库路径了,file://表示使用本地文件协议,后面的/localrepo本地rpm包存放路径。 gpgcheck=0这是和验证包的安全信息的,最好设置成0,表示关闭安全验证,否则还需要准备安全验证文件,麻烦一堆一堆的。 enabled=0,表示启用本仓库,0启用,1关闭。 更多详细配置信息,请参考man yum.conf
3.使用createrepo命令生成repodata信息
如果我们现在就直接使用本地仓库安装一个包,会报如下错误: couldn't open file /localrepo/repodata/repomd.xml 告诉我们找不到/localrepo/repodata/repomd.xml这个文件,应为到目前位置我们的本地仓库里除了rpm包之外什么都没有,
repomd.xml这个文件简单来说就是存放本地仓库rpm包的索引信息,具体用法不是我们关心的重点,可以使用createrepo直接生成。 假如我们本地仓库没有配置好,不仅本地仓库无法使用,整个yum安装工具都会一直报错,此时我们把本地yum配置文件改名或暂时删除即可 # createrepo命令默认系统没有,需要我们额外安装: yum install createrepo -y 安装完毕之后,直接使用: createrepo /localrepo/ 这时会发现本地仓库repodata相关信息已经生成完毕。
4.使用yum repoinfo检查确认
使用下述命令可以检查看到本地仓库基本信息:
yum repoinfo as4k Repo-id : localrepo Repo-name : localrepo Repo-status : enabled Repo-pkgs : 48 Repo-size : 514 M Repo-baseurl : file:///localrepo/ Repo-expire : Filter : read-only:present Repo-filename: /etc/yum.repos.d/localrepo.repo repolist: 48
5.安装rpm包测试
yum install vim
6.使用说明
可以看到使用起来,与线上仓库区别不大。创建好的本地仓库可直接scp复制到其它机器使用,yum配置文件及rpm仓库直接复制过去即可,无需再创建一遍repodata信息。
7.对本地仓库进行更新
下载一个新的rpm软件包到本地仓库,此时我们使用yum repoinfo localrepo查看会发现软件包的数量并没有增加,
我们安装新增的软件包也会提示,找不到次软件包的现象,可以按照下述步骤,更新仓库信息。 查看旧的软件包总数 yum repoinfo localrepo | grep pkgs 更新本地仓库 createrepo --update /localrepo/ 清除所有缓存 yum clean all 查看新的软件包总数 yum repoinfo localrepo | grep pkgs 如果软件包的数量增加,说明仓库更新成功。