热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

Linux下面程序安装的基本知识

Linux下面程序安装的基本知识--Linux通用技术-Linux技术与应用信息,下面是详情阅读。
A.程序安装包的分类

平时大家在Windows下面安装程序,一般都是直接运行安装程序,然后安装程序会把编译好的二进制文件拷贝到系统里面,最终完成安装过程。
Linux下面,安装程序的自由度比Windows要大。因为Linux下面大部分东西都是开源的,所以程序的提供方式一般是二进制包或者源代码包。
二进制包,同样会有不同的打包和管理方式(类似于zip、rar,但更加先进)。最常见的两种软件包为rpm(redhat、suse等系统采用的包)和 deb(debian、ubuntu)。机器上面安装的软件包多了,自然需要一个软件来进行管理、更新。所以就有了yum(rpm)、apt(deb)这样的软件包管理、升级软件。
源代码包,这样的包比较简单,一般都是直接把源代码打包成一个压缩文件,后缀一般是tar.gz或者tar.bz2
通过包管理软件安装软件比较简单,设置好软件的安装源后,可以使用下面的命令安装软件:
yum install php (yum)
apt-get install php5(apt)
如果不知道需要安装的软件包确切名字,可以使用下面的方法搜索:
yum search php(yum)
apt-cache search php(apt)
本文章主要探讨源代码包的安装。

B.通过源代码包安装程序
一般情况下,程序从源代码到能正常使用,需要经过三个步骤:1.根据系统环境对源代码进行配置(configure);2.编译程序(make);3.安装程序(make install)。
a.源代码配置
通过运行configure脚本,可以对所需要编译的程序的一些基本环境、所使用到的命令、库等文件进行自动查找,并且生成用于编译文件所需要的 Makefile文件。因为Linux有太多的发行版本了,每个版本的环境都不一样,所以需要用到这个脚本。通过configure脚本还可以对程序的模块进行自定义,可以禁用或者激活某个功能。
b.编译程序
根据configure脚本生成的Makefile文件,对源代码进行编译、链接,生成二进制文件。但这个时候的二进制文件一般来说还不能使用。
c.安装程序
通过make install命令,把编译好的二进制文件安装到相应的路径,这个时候程序才真正可以使用。

C.程序安装到哪里?

一般编译安装的程序都会安装到/usr/local下面。比如php就会被安装到/usr/local/bin/php,php.ini会被安装到 /usr/local/lib/php.ini,等等。如果需要指定安装目录,在configure的时候指定?prefix参数,会把所有文件都安装到 prefix目录中。比如./configure ?prefix=/usr/local/php。那么会把所有文件都安装到这个目录,最后看起来会是/usr/local/php/bin/php和 /usr/local/php/lib/php.ini

D.如何得到configure的参数?

常用的configure参数有?prefix,可以通过./configure ?help得到更多的参数。一般带有?enable-、?with-开头的参数都是启用某个功能,?disable-、?without-开头的都是禁用某个功能。

E.如何删除安装好的程序?
Linux删除程序跟Windows不太一样。Windows建议使用卸载功能卸载程序,Linux下通过包管理软件安装的程序也可以直接用命令删除,例如:
yum remove php(yum)
apt-get remove php5(apt)

如果通过源代码包安装的程序,一般会带有make uninstall,通过这个命令可以删除所安装的文件。如果不带有make uninstall,那么可以直接把程序安装目录删除。
注意:如果是依赖库(比如php如果要使用到mysql的功能,必须要先安装mysql,然后在配置php的时候指定mysql库的路径,那么php就是依赖了mysql),删除被依赖的程序,那么用到依赖库的程序都将会无法使用(比如删除mysql后,php将无法正常使用mysql部分的功能)。

F.还有个make clean是干什么用的?

make clean用来打扫战场。把所有编译时留下的临时文件、编译后的二进制文件等都清理掉。一般建议在make install后make clean,方便下次重新编译和节省空间。

2.源代码编译时的优化
用Windows的朋友都知道,平时最头痛的事情就是程序占用CPU太高,而且消耗内存特别大。这是因为Windows的程序都是一些“通用”程序,并没有针对特定的平台和特定的CPU进行优化。在Linux下,通过源代码来编译二进制文件,这个问题将得到有效的改善。我们可以通过添加优化参数,让程序针对某个CPU型号和某个系统进行最大优化,减少文件大小、CPU使用率、内存使用率。
但是,通过指定优化参数来编译的程序,将不再具有跨系统跨平台的能力。就算两台机器系统版本一样,只要CPU不一样,程序都无法运行。程序只能在所编译的机器上运行。
一般情况下,优化参数都是通过export命令设定CFLAGS和CXXFLAGS,然后configure的时候会自动读入,make的时候会自动使用所选的优化参数。
例如,普通Pentium 4的CPU(显示的型号为Intel(R) Pentium(R) 4 CPU XXXXMHz,cpu family: 15,model: 0/1/2)就可以输入下面的命令
export CHOST="i686-pc-linux-gnu"
export CFLAGS="-march=pentium4 -O2 -pipe -fomit-frame-pointer"
export CXXFLAGS="${CFLAGS}"CPU型号等信息可以通过输入下面的命令得到
cat /proc/cpuinfo将会输出类似下面的信息
processor : 0
vendor_id : AuthenticAMD
cpu family : 15
model : 47
model name : AMD Athlon(tm) 64 Processor 3200+
stepping : 2
cpu MHz : 2000.336
cache size : 512 KB
fdiv_bug : no
hlt_bug : no
f00f_bug : no
coma_bug : no
fpu : yes
fpu_exception : yes
cpuid level : 1
wp : yes
flags : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush mmx fxsr sse sse2 syscall nx mmxext fxsr_opt lm 3dnowext 3dnow up pni lahf_lm ts fid vid ttp tm stc
bogomips : 4002.57上面的信息显示了这是一颗AMD Athlon 64 3200+的CPU。
CPU优化参数可以从下面地址获得(有些cpu family和model没有,可以用相同型号的代替)
http://gentoo-wiki.com/Safe_Cflags
3.编译Squid的前期准备
我们需要先了解一个叫做“文件描述符”的东西。我们知道,人能同时干的事情是有限的。文件描述符就是一个限制最大上限的东西。文件描述符用来限制一个程序能同时打开的文件数目,默认是1024。也就是说,如果不修改文件描述符,那么一个程序只能同时打开1024个文件。1024这个数字,一般程序已经够用了,但Squid不行。Squid会同时打开成千上万个文件,以保证最高的效率和响应速度。
想象一下下面两种情况:a.用户每次访问squid,squid会按照需要打开文件,然后读取文件内容再返回给用户。b.squid预先打开访问频率高的文件,用户访问squid,squid直接把内容返回给用户。相对来说,后面的方法可以对用户的请求进行更加快的反应。
要更改文件描述符的大小,必须要修改两个文件。
/usr/include/bits/typesizes.h
/usr/include/linux/posix_types.h
用vi打开上面的文件(如果忘记如何使用,请参考前面章节),查找
#define __FD_SETSIZE 1024
把1024改为65536,然后保存。
为什么是65536,不是更加大?因为这是Linux能接受的最大数值。
刚才编辑的这两个文件是C/C++程序里面的头文件,编译squid的时候会被自动引用。除了这两个文件以外,我们还需要对当前环境进行设置。
环境,也就是你用ssh登录到系统时的一些设定。每个登录进程都可以进行单独的设置,在没有把设置写入环境配置文件(.profile,.bash_rc)的情况下,关闭登录进程后环境设置会丢失。
举个例子,你使用pietty开了两个窗口,使用同一个帐号密码,同时登录到同一台服务器上面,然后在其中一个登录进程中使用export命令,那么只会在这个登录进程中生效,对另外一个登录进程不起作用。
明白后,我们说一下ulimit命令。ulimit用来设置当前环境的一些资源限制。刚才所说的,这个命令是对环境进行设置,所以退出当前登录进程后命令将会失效。
我们输入下面的命令
ulimit -Hs 65536
ulimit -n 65536H参数是硬性限制,s是堆栈上限,n是文件描述符上限。
最后,我们使用wget把squid的源代码下载回来。
wget http://www.squid-cache.org/Versi ... 2.6.STABLE13.tar.gz
wget是unix下一个支持断点续传的下载工具。会有一些比较实用的功能,比如把别人整个网站都下载回来(像平时用的小偷吧?)。
推荐阅读
  • Linux一键安装web环境全攻略
    摘自阿里云服务器官网,此处一键安装包下载:点此下载安装须知1、此安装包可在阿里云所有Linux系统上部署安装,此安装包包含的软件及版本为& ... [详细]
  • 如何查看电脑系统版本_腾讯云服务器系统版本怎么看?Windows和Centos版本怎么选?...
    腾讯云服务器系统版本怎么看?想要知道自己的腾讯云服务器系统版本是哪个,可以登录云服务器后台管理系统查看,或者使用命令行查询,如果不会操作& ... [详细]
  • 本文介绍了在Hibernate配置lazy=false时无法加载数据的问题,通过采用OpenSessionInView模式和修改数据库服务器版本解决了该问题。详细描述了问题的出现和解决过程,包括运行环境和数据库的配置信息。 ... [详细]
  • Ubuntu 9.04中安装谷歌Chromium浏览器及使用体验[图文]
    nsitionalENhttp:www.w3.orgTRxhtml1DTDxhtml1-transitional.dtd ... [详细]
  • 如何在服务器主机上实现文件共享的方法和工具
    本文介绍了在服务器主机上实现文件共享的方法和工具,包括Linux主机和Windows主机的文件传输方式,Web运维和FTP/SFTP客户端运维两种方式,以及使用WinSCP工具将文件上传至Linux云服务器的操作方法。此外,还介绍了在迁移过程中需要安装迁移Agent并输入目的端服务器所在华为云的AK/SK,以及主机迁移服务会收集的源端服务器信息。 ... [详细]
  • 31.项目部署
    目录1一些概念1.1项目部署1.2WSGI1.3uWSGI1.4Nginx2安装环境与迁移项目2.1项目内容2.2项目配置2.2.1DEBUG2.2.2STAT ... [详细]
  • 2016 linux发行版排行_灵越7590 安装 linux (manjarognome)
    RT之前做了一次灵越7590黑苹果炒作业的文章,希望能够分享给更多不想折腾的人。kawauso:教你如何给灵越7590黑苹果抄作业​zhuanlan.z ... [详细]
  • 本文介绍了在Web应用系统中,数据库性能是导致系统性能瓶颈最主要的原因之一,尤其是在大规模系统中,数据库集群已经成为必备的配置之一。文章详细介绍了主从数据库架构的好处和实验环境的搭建方法,包括主数据库的配置文件修改和设置需要同步的数据库等内容。MySQL的主从复制功能在国内外大型网站架构体系中被广泛采用,本文总结了作者在实际的Web项目中的实践经验。 ... [详细]
  • 本文介绍了在Ubuntu 11.10 x64环境下安装Android开发环境的步骤,并提供了解决常见问题的方法。其中包括安装Eclipse的ADT插件、解决缺少GEF插件的问题以及解决无法找到'userdata.img'文件的问题。此外,还提供了相关插件和系统镜像的下载链接。 ... [详细]
  • 如何使用PLEX播放组播、抓取信号源以及设置路由器
    本文介绍了如何使用PLEX播放组播、抓取信号源以及设置路由器。通过使用xTeve软件和M3U源,用户可以在PLEX上实现直播功能,并且可以自动匹配EPG信息和定时录制节目。同时,本文还提供了从华为itv盒子提取组播地址的方法以及如何在ASUS固件路由器上设置IPTV。在使用PLEX之前,建议先使用VLC测试是否可以正常播放UDPXY转发的iptv流。最后,本文还介绍了docker版xTeve的设置方法。 ... [详细]
  • 在单位的一台4cpu的服务器上部署了esxserver,挂载了6个虚拟机,目前运行正常。在安装部署过程中,得到了cnvz.net论坛精华区 ... [详细]
  • 如何监控 Linux 服务器状态?,分享
    Linux服务器我们天天打交道,特别是Linux工程师更是如此。为了保证服务器的安全与性能,我们经常需要监控服务器的一些状态,以保证工作能顺利开展。本文介绍的几个命令,不仅仅适用于 ... [详细]
  • imx6ull开发板驱动MT7601U无线网卡的方法和步骤详解
    本文详细介绍了在imx6ull开发板上驱动MT7601U无线网卡的方法和步骤。首先介绍了开发环境和硬件平台,然后说明了MT7601U驱动已经集成在linux内核的linux-4.x.x/drivers/net/wireless/mediatek/mt7601u文件中。接着介绍了移植mt7601u驱动的过程,包括编译内核和配置设备驱动。最后,列举了关键词和相关信息供读者参考。 ... [详细]
  • MySQL语句大全:创建、授权、查询、修改等【MySQL】的使用方法详解
    本文详细介绍了MySQL语句的使用方法,包括创建用户、授权、查询、修改等操作。通过连接MySQL数据库,可以使用命令创建用户,并指定该用户在哪个主机上可以登录。同时,还可以设置用户的登录密码。通过本文,您可以全面了解MySQL语句的使用方法。 ... [详细]
  • 大坑|左上角_pycharm连接服务器同步写代码(图文详细过程)
    篇首语:本文由编程笔记#小编为大家整理,主要介绍了pycharm连接服务器同步写代码(图文详细过程)相关的知识,希望对你有一定的参考价值。pycharm连接服务 ... [详细]
author-avatar
cr罗详青
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有