linux 版本控制 centos看版本信息
各位老铁们,大家好,今天由我来为大家分享linux 版本控制,以及centos看版本信息的相关问题知识,希望对大家有所帮助。如果可以帮助到大家,还望关注收藏下本站,您的支持是我们最大的动力,谢谢大家了哈,下面我们开始吧!
git是什么
git有多种意思,可以是:分布式版本控制系统、高伟达软件股份有限公司、佐治亚理工学院、全球教练小组。
1、分布式版本控制系统
Git(读音为/gɪt/)是一个开源的分布式版本控制系统,可以有效、高速地处理从很小到非常大的项目版本管理。也是Linus Torvalds为了帮助管理Linux内核开发而开发的一个开放源码的版本控制软件。
2、高伟达软件股份有限公司
全称高伟达软件股份有限公司,简称“高伟达”,英文名“Global InfoTech company”,英文简称“GIT”。高伟达软件股份有限公司,总部设在北京,下设江苏、上海2个子公司,深圳、武汉、成都3个分公司,并设有华北、华南、上海、南京、西南、华中6个软件中心。
3、佐治亚理工学院
佐治亚理工学院(Georgia Institute of Technology,又称乔治亚理工学院,简称Georgia Tech,Gatech,GIT,GT),1885年建校,坐落于佐治亚州首府亚特兰大,是世界顶尖的研究型大学,美国大学协会成员,公立常春藤之一,世界顶尖大学埃默里大学的姐妹校。
4、全球教练小组
GIT是全球教练小组国际马伽术联盟以色列总部的格斗教被称为GIT(Global Instructor Team,全球教练小组),这些成员均是以色列本土顶尖的马伽术格斗高手。
git分布式版本控制软件介绍
最初由林纳斯·托瓦兹创作,于2005年以GPL发布。最初目的是为更好地管理Linux内核开发而设计。应注意的是,这与GNU Interactive Tools有所不同。git最初的开发动力来自BitKeeper和Monotone。
git最初的开发动力来自于BitKeeper和Monotone。git最初只是作为一个可以被其他前端(比如Cogito或Stgit)包装的后端而开发的,但后来git内核已经成熟到可以独立地用作版本控制。很多著名的软件都使用git进行版本控制。
以上内容参考:百度百科-佐治亚理工学院
Linux如何解决动态库的版本控制
3.共享库,小版本升级,即接口不变.
当升级小版本时,共享库的soname是不变的,所以需要重新把soname的那个连接文件指定新版本就可以。调用ldconfig命令,系统会帮你做修改那个soname link文件,并把它指向新的版本呢。这时候你的应用程序就自动升级了。
4.共享库,主版本升级,即接口发生变化。
当升级主版本时,共享库的soname就会加1.比如libhello.so.0.0.0变为 libhello.so.1.0.0.这时候再运行ldconfig文件,就会发现生成两个连接文件。
ln-s libhello.so.0----libhello.so.0.0.0
ln-s libhello.so.1-----libhello.so.1.0.0
尽管共享库升级,但是你的程序依旧用的是旧的共享库,并且两个之间不会相互影响。
问题是如果更新的共享库只是增加一些接口,并没有修改已有的接口,也就是向前兼容。但是这时候它的主版本号却增加1.如果你的应用程序想调用新的共享库,该怎么办?简单,只要手工把soname文件修改,使其指向新的版本就可以。(这时候ldconfig文件不会帮你做这样的事,因为这时候soname和real name的版本号主板本号不一致,只能手动修改)。
比如: ln-s libhello.so.0--- libhello.so.1.0.0
但是有时候,主版本号增加,接口发生变化,可能向前不兼容。这时候再这样子修改,就会报错,“xx”方法找不到之类的错误。
总结一下,Linux系统是通过共享库的三个不同名字,来管理共享库的多个版本。 real name就是共享库的实际文件名字,soname就是共享库加载时的用的文件名。在生成共享库的时候,编译器将soname绑定到共享库的文件头里,二者关联起来。在应用程序引用共享库时,其通过link name来完成,link时将按照系统指定的目录去搜索link名字找到共享库,并将共享库的soname写在应用程序的头文件里。当应用程序加载共享库时,就会通过soname在系统指定的目录(path or LD_LIBRARY)去寻找共享库。
当共享库升级时,分为两种。一种是主板本不变,升级小版本和build号。在这种情况下,系统会通过更新soname( ldconfig来维护),来使用新的版本号。这中情况下,旧版本就没有用,可以删掉。
另外一种是主版本升级,其意味着库的接口发生变化,当然,这时候不能覆盖已有的soname。系统通过增加一个soname(ldconfig-p里面增加一项),使得新旧版本同时存在。原有的应用程序在加载时,还是根据自己头文件的旧soname去寻找老的库文件。
这是一个trick的地方。第一系统将会在生成库的时候,就没有soname放到库的头里面。从而应用程序连接时候,就把linkname放到应用程序依赖库里面。或者换句话说就是,soname这时候不带版本号。有时候有人直接利用这点来升级应用程序,比如,新版本的库,直接拷贝到系统目录下,就会覆盖掉已经存在的旧的库文件,直接升级。这个给程序员很大程度的便利性,如果一步小心,就会调到类似windows的Dll hell陷阱里面。建议不要这样做。
【Note】
1.指定共享库加载的路径。LD_LIBRARY_PATH优先于 path环境变量。
2. ldd可以查看程序,或者共享库依赖的库的路径
3. nm查看共享库暴露的接口
4. ldconfig可以自动生成soname的连接文件。并提供catch加速查找。
5.readelf可以查看动态库的信息,比如依赖的库,本身的soname。
6. objdump与readelf类似。
7 ld The GUN linker
8. ld.so dynamic linker or loader
9. as the portable GNU assembley
linux下用那个版本控制工具比较好,怎么用
如果是在命令行下使用的话,git与svn是大家使用最多的,基本90%以上的开源项目都在使用这两种版本控制工具。(从目前来看,cvs,hg等基本算是小众了)
其中GIT主要用于分布式开发,所以对开源项目非常重要。但是,目前商业项目(私有软件)绝大多数还都是使用SVN。可能是使用习惯的问题。
GIT在分支管理上,要比SVN优秀。但是其版本控制,我实在有些接受不了。我更喜欢SVN那种版本号递增的操作方法,及其集中式的管理哲学(虽然开发人员在实际工作中会比使用GIT稍微辛苦一些)。
不管怎样,借助开源项目的推进,目前GIT是网上使用最广的。所以这两种工具都要非常熟悉才行。
至于图形界面前端,Linux目前还没有像Windows中TortoiseSVN这么好的工具。不过,对于刚从Windows转到Linux的用户来说,rapidsvn等图形工具,应该算是一个比较好的折衷了。(不过还是强烈建议,直接使用命令;一是比较强大,二是实际开发时没有人像Windows那样使用图形工具。)
至于你说的怎么使用的问题,真的不是几句话能说清楚的。
svn co能够帮助你检出SVN代码
git clone能够帮你检出GIT代码
再往后的,就需要看命令帮助以及网上的使用教程了。一句两句真的讲不太清楚。
如果对版本控制不太清楚的话,还是建议补充一些软件工程、软件配置管理的基础知识。
有问题,继续沟通哈~