Linux离线环境的环境搭建

来源:互联网 发布:spps统计软件 编辑:程序博客网 时间:2024/04/28 05:20

虽然工作两年多了,但是这是第一次认真的自己动手写一些东西,希望能给看这篇文章的各位带来些帮助。好了,进入正题。

为什么标题中强调Linux离线环境呢?首先在在线环境中Ubuntu中有apt-get,Redhat系linux系统中有yum,Fedora系linux系统中有dnf(可不是地下城与勇士...),总之在线环境中我们有各种方法去安装需要的软件包,网络上有各种相应的镜像,为我们提供服务,带来方便。

    可当我们处于与网络脱离的环境时,我们也许会长叹一声“世界上最远的距离就是没网”。这个时候网络上那些为我们带来方便的镜像不再为我们服务,我们需要准备一些东西,这些东西在在线环境下显得鸡肋,但是当我们带着他们到离线环境,我们可以开心的说一声,“呵呵 不就是没网么”。下面我们来了解一下:

    首先说下RPM安装,对于一个linux新手来说,寻找RPM并下载也许不是难事,但是下载下来后安装的时候,对于各种依赖,各种冲突也许才是最头疼的,其实说起RPM可以先想想Windows下的DLL文件,我们经常会在玩游戏的时候由于缺少DLL而不能运行,然后我们开开心心问问度娘,度娘一般会给我们个DLL的下载地址,然后我们把DLL放在度娘指定的目录下,然后就能玩游戏了。那么Linux作为一个基于文件的操作系统,我们平时用的各种东西在linux系统中都以文件形式存在,OH,扯远了,回到RPM,我们说到RPM安装linux环境,我们首先要知道RPM包的来源,当然,你可能会说各种linux或者rpm的镜像网站,但是我必须要告诉你,大部分的RPM包不需要去那些各类镜像网站去寻找和下载,你只要找到一个对应版本的Linux系统的ISO镜像就好了,说起Linux系统的ISO镜像,Linux系统镜像下载时候大部分时候有很多个,其中有两个一个是以DVD1.ISO结尾还有一个以DVD2.ISO结尾,这两个几乎可以说覆盖了所有的Linux需要的环境安装所需的RPM包,DVD1是我们用来制作系统光盘的镜像,而DVD2中则包含一些不是很常用的Linux系统软件的扩展RPM包。所以如果你要在Linux离线环境中搭建相关环境,一般只需要带两张光盘。或者说只需要把两个ISO解压出来在,解压后的文件夹下的Packages文件夹中就可以找到需要的RPM包。还有一点需要注意的RPM安装过程中常常会出现你依赖我,我依赖你的情况,打个比方,你需要安装A.rpm,然后提示告诉你说需要依赖B.rpm,然后你去装B.rpm,B.rpm又告诉你说,我需要依赖A.rpm,作为一个旁观者,你觉得他们已经陷进了永远走不出去的死循环,这个时候不要慌,你只要把他们写在一句话里面就好了,比如对于A.rpm和B.rpm你就可以写

rpm -ivh A.rpm B.rpm
    然后你就可以继续,接着安装环境并部署程序了。当然有些时候要找到版本完全一样的Linux系统镜像,并下载下来,在国内这种恶劣的网络环境下,也许会很困难,这个时候也不要慌,你只要保证你手头有一个系统镜像就好了,我们可以做一些Linux系统不喜欢我们做的事情,但是这个事情并不是违法,也不会造成恶劣的结果,相反,在某些非常着急的时候,这是相当好的解决方案,我们可以在像之前那样rpm -ivh A.rpm ,然后找到我们手头的镜像的A.rpm所需要的所有依赖,因为我们不是和系统版本完全相同,所以在找全依赖后安装的时候,会提示和某某版本冲突,那么这个时候我们可以给rpm加个--force,强制塔以目前的安装包安装,也许看上去有点暴力,但实际上,我们的暴力只是看上去暴力,因为我们--force的前提是我们找全了A.rpm所需的所有依赖,也就是说Linux系统想要找你麻烦的时候,他发现,咦找不到不合理的地方,所以你的环境是没问题的。具体执行语句是

rpm -ivh A.rpm B.rpm C.rpm --froce
此处一定要注意确认需要的所有依赖都被找到了,只剩下版本冲突导致的报错,否则,Linux会找你麻烦的。

    接下来说下源码安装,我初次接触源码包安装是在刚入职的时候,那个时候使用源码包安装Mysql,当时最深刻的感受是,比RPM安装简单多了,根本不用管版本的问题,反正都要自己去编译,自己去生成可执行文件。不得不说,在RPM安装用的不是很熟,以及遇到某些特殊软件包,找不到对应的RPM包的时候,源码安装是最简单的办法了。只要简单的

tar -zxvf A.tar.gz cd A./configuremake;make install
相应的软件包就安装上了,看起来真是太简单了,但是不得不说安装完后,进行的各类配置时候和开发代码过程中寻找.h和.so库,时候可是尝尽了苦头,主要原因是默认安装路径不停地变,而且安装完后常常还会出现error while loading shared libraries:,说什么.so不可用,虽然后来找到了很简单的解决办法,但是当时对源码安装的好感顿失,尤其在rpm安装不在必须要求版本适应的时候,简直是不想再看源码安装,但是不得不说,源码安装还是很神的,至少不管什么版本,只要软件包没有特殊要求,直接就可以上了。

说说error while loading shared libraries:的解决办法,记得当时去问度娘,但是得到的答案不尽如人意,一般都说找不到对应的.so,当然这是国内大部分博客的答案,也许一开始有个人把Linux报错翻译了一下发了上去,然后很多人跟着转载,结果,我们这些真正遇到问题的人,去度娘的时候,就要头疼了,因为他说.so不存在,我们用各种办法在我们的系统里面去找.so,不管是locate还是 find / -name ,总之当我们用这些命令找到对应的.so的时候,我们就会发现,这都什么答案,你们互相抄的吧,下面我把解决方法贴出来,很简单就三句话,抛开寻找.so路径的这句的话就两句话

locate A.so 或者 find / -name "A.so"#然后假设找到的路径是/usr/share/A/lib/A.sovi /etc/ld.so.conf#加入一行/usr/share/A/lib/#保存退出#然后执行ldconfig#然后这个问题就消失了

是不是很简单,说明一下这个问题的答案是在stackoverflow上面找到的,不得不说,国内博客等的答案不尽如人意的时候,我们可以在google或者stackoverflow等,有国外开发人员参与的地方找到,解决方案,说起来还有点悲哀。

好了,关于离线环境搭建的说完了。

接下来说点工作的感受,其实很多时候我们为了方便别人却给自己带来了麻烦,而有些时候我们经常回去重复做类似的东西而使得我们尝尽了工作的无聊,你有没有在闲暇的时候想想将来软件会向着哪个方向发展,我们在开发了软件解放了大量的劳动力后,未来计算机会不会解放我们,可如果解放了我们,未来程序员的路会在何方?我们应该去向着什么方向前进才能更好的适应这个过程?好吧,我承认我还也没想明白。我只是觉得计算机是一个工具,一个逐步解放人的工具。





0 0