Linux学习笔记(6)

软件安装:源码、RPM、tarball、yum

Linux二进制包:

RPM:功能强大,方便,适用于Centos,SuSe等

Linux学习笔记(6)_第1张图片

i386 386 以上的计算机都可以安装
i586 686 以上的计算机都可以安装
i686 奔腾 II 以上的计算机都可以安装,目前所有的 CPU 是奔腾 II 以上的,所以这个软件版本居多
x86_64 64 位 CPU 可以安装
noarch 没有硬件限制
rpm -ivh 包全名
-i:安装(install);
-v:显示更详细的信息(verbose);
-h:打印 #,显示安装进度(hash);

RPM的优点:

  1. RPM 内含已经编译过的程序与配置文件等数据,可以让使用者免除重新编译的困扰;
  2. RPM 在被安装之前,会先检查系统的硬盘容量、操作系统版本等,可避免文件被错误安

装;

        3.RPM 文件本身提供软件版本信息、相依属性软件名称、软件用途说明、软件所含文件等

信息,便于了解软件;

        4.RPM 管理的方式使用数据库记录 RPM 文件的相关参数,便于升级、移除、查询与验

证。

 rpm默认安装在/usr/lib/rpm,软件内的文件存放位置如下:

Linux学习笔记(6)_第2张图片

 

安装
rpm -ivh 包全包
-i :install 的意思 -v :察看更细部的安装信息画面 -h :以安装信息列显示安装进度
rpm -ivh a.i386.rpm b.i386.rpm *.rpm  安装多个软件
rpm -ivh http://website.name/path/pkgname.rpm  通过网址上的某个文件安装,以网址来安装
升级
rpm -Uvh 即使没有安装软件,则系统将予以直接安装; 若后面接的软件有安装 过旧版,则系统自动更新至新版;
rpm -Fvh 如果后面接的软件并未安装到你的 Linux 系统上,则该软件不会被安装;亦即只 有已安装至你 Linux 系统内的软件会被“升级”!
查询
[root@study ~]# rpm -qa <==已安装软件 
[root@study ~]# rpm -q[licdR] 已安装的软件名称 <==已安装软件
[root@study ~]# rpm -qf 存在于系统上面的某个文件名 <==已安装软件
[root@study ~]# rpm -qp[licdR] 未安装的某个文件名称 <==查阅RPM文件
查询已安装软件的信息: 
-q :仅查询,后面接的软件名称是否有安装;
-qa :列出所有的,已经安装在本机 Linux 系统上面的所有软件名称;
-qi :列出该软件的详细信息 (information),包含开发商、版本与说明等;
-ql :列出该软件所有的文件与目录所在完整文件名 (list); 
-qc :列出该软件的所有配置文件 (找出在 /etc/ 下面的文件名而已) 
-qd :列出该软件的所有说明文档 (找出与 man 有关的文件而已) 
-qR :列出与该软件有关的相依软件所含的文件 (Required 的意思) 
-qf :由后面接的文件名称,找出该文件属于哪一个已安装的软件;
-q --scripts:列出是否含有安装后需要执行的脚本档,
验证及数码签章
rpm -Va 列出目前系统上面所有可能被更动过的文件
rpm -V 后面加的是软件名称,若该软件所含的文件被更动过,才会列出来
rpm -Vp 后面加的是文件名称,列出该软件内可能被更动过的文件
rpm -Vf 列出某个文件是否被更动过

 DPKG:与上面类似,但适用于Debian和Ubuntu中

源码包和RMP包区别:

源码包可以根据自己需求修改代码完成软件安装等,RMP包是现成,缺少灵活性,但花费时间短。各有利弊根据需要求选。

Linux系统识别的二进制程序码,因此需要编译器将程序转译成二进制文件,Linux系统再进行执行操作。

Tarball文件

该文件其实就是将软件的所有源代码以tar打包,然后再以压缩技术来压缩,一般拓展名为.tar.gz/.tgz,但近年由于bzip2与xz压缩率较好,出现了.tar.bz2、.tar.xz之类,总之它就是一个软件包。

目前一般

软件安装目录统一是安装在/usr/local

源代码一般统一放置在/usr/local/src

Linux学习笔记(6)_第3张图片

 流程:首先产生目标文件(.o),再以链接制作称为Binary可可执行文件,进行执行,若是修改了.c文件重新编译即可。

调用外部函数库:加入链接的函数库

-l是加入某个函数库(lib)

m是指具体某个库如libm.so,-L是指需要程序到指定某个库进行搜素的 

几种常用的gcc
-c 只编译不链接 -o输出的目标文件 无-c表示链接
gcc -c demon1.c 编译并自动产生.o
gcc -o demon1.c -c 编译且自动产生.o并进行最优化
gcc -o demon demon1.c 将demon1.c编译并连接成可执行的二进制文件demon
gcc -o hello hello.c -Wall 详细信息输出
gcc –o test test1.o test2.o,将test1.o和test2.o连接为可执行的二进制文件test
gcc demon1.c -o demon

make简化gcc编译(简单的自动化编译)其中还有很多语法自行百度

Linux学习笔记(6)_第4张图片

 


  函数库管理

1.静态函数库,其扩展名以.a(libxxx.a),会在程序编译的时候直接整合到执行程序当中,因此程序较大一些,且静态函数库就是程序编译成功的可可执行文件可以独立执行,不需要再向外部要求读取函数库的内容,若静态函数库升级后,整个程序需要重新编译才能再次进行执行。

2.动态函数库,其扩展名以.so(libxxx.so),是在可执行文件要使用到函数库的机制时,程序才会去读取函数库来使用,因此整个程序是较小的。函数库升级,程序不需要重新编译,因此程序是在执行过程中,去使用对应的动态函数库。

函数库通常是在目录/lib64,/lib,/lib/modules

动态函数库载入内存中,提高编译速度流程:

Linux学习笔记(6)_第5张图片

ldd [选项参数][filename]
-v:列出所有的内容信息
-d:重新将数据有丢失的link点输出
-r: 将ELF有关的错误内容输出

ldd /usr/bin/passwd 找出这个文件的函数库数据。


yum命令

yum换软件源教程直接百度
yum [选项][查询工作项目][相关参数]

[选项]:包括有: -y :当 yum 要等待使用者输入时,这个选项可以自动提供 yes 的回应; --installroot=/some/path :将该软件安装在 /some/path 而不使用默认路径 这个可以根据自己的需求进行更改
[查询工作项目] [相关参数]:
这方面的参数有: search :搜寻某个软件名称或者是描述 (description) 的重要关键字;
list :列出目前 yum 所管理的所有的软件名称与版本,有点类似 rpm -qa; 
info :同上,不过有点类似 rpm -qai 的执行结果; 
provides:从文件去搜寻软件!类似 rpm -qf 的功能!

yum -y install [包名] 安装软件包
install 安装
-y 自动回答yes
yum -y update [包名] 升级软件包
yum -y remove 包名 卸载包 yum卸载命令尽量不要使用
yum grouplist 列出所有可用的软件组列表
yum groupinstall “软件组名” 安装指定软件组,组名可以由grouplist查询出来,如果组名之间有空格,用双引号扩起来
yum groupmove 软件组名 卸载指定软件组

你可能感兴趣的:(Linux学习笔记,linux,debian,服务器)