linux中,有许许多多功能不是系统自带的,如果我们要使用它们,我们就需要安装不同的软件包,那么我们该如何管理这么多软件包呢?这就是内核的功能了。本次我们来探讨软件包管理的相关内容,主要说明rpm命令和yum命令和软件包编译。

Rpm命令

所有以.rpm结尾的文件都是软件包形式的,它们都是二进制格式,是rpm包作者下载源程序后编译配置完成并制成的rpm包。

1、安装

Rpm  –i 软件包路径

-h: #显示进度;每个#表示2%;

         -v: 显示详细过程

         -vv: 更详细的过程

 rpm  -ivh 软件包路径

--nodeps: 忽略依赖关系;

         --replacepkgs: 重新安装,替换原有安装;

         --force: 强行安装,可以实现重装或降级;

2、查询

rpm  -q 包名: 查询指定的包是否已经安装

rpm  -qa : 查询已经安装的所有包

rpm  -qi 包名: 查询指定包的说明信息;

rpm  -ql包名: 查询指定包安装后生成的文件列表;

rpm  -qc包名:查询指定包安装的配置文件;

rpm  -qd包名: 查询指定包安装的帮助文件;

rpm  -q --scripts包名: 查询指定包中包含的脚本

rpm  -qf 包路径: 查询指定的文件是由哪个rpm包安装生成的;     

如果某rpm包尚未安装,我们需查询其说明信息、安装以后会生成的文件;

Rpm  -qpi 包路径

rpm  –qpl

3、升级

rpm  -Uvh 要升级的软件包路径: 如果装有老版本的,则升级;否则,则安装;

rpm  -Fvh要升级的软件包路径:如果装有老版本的,则升级;否则,退出;

rpm      --oldpackage 软件包路径: 降级

4、卸载

Rpm  -e 包名

rpm       --nodeps 包名:强制卸载软件,忽略依赖关系,可能删除多个软件

5、校验

rpm  -V 包名

      

6、重建数据库

rpm

--rebuilddb: 重建数据库,一定会重新建立;

--initdb:初始化数据库,没有才建立,有就不用建立;

7、检验来源合法性,及软件包完整性;

首先要检查软件包

rpm -K 未安装包路径

       dsa, gpg: 验正来源合法性,也即验正签名;可以使用--nosignature,略过此项

       sha1, md5: 验正软件包完整性;可以使用--nodigest,略过此项

然后导入密匙文件

rpm --import /etc/pki/rpm-gpg/RPM-GPG-KEY-redhat-release: 导入密钥文件

yum命令

首先我们要明白yum其实也是一个软件,它是处理软件之间依赖关系的软件,能帮助我们自动解决软件之间的相互依赖管理,如果一个软件安装过程中需要另一个软件本地没有会自动到yum库中下载并安装。

yum

-y: 自动回答为yes

--nogpgcheck

  list: 列表

       支持glob

       All:全部

       available:可用的,仓库中有但尚未安装的

       installed: 已经安装的

       updates: 可用的升级

   clean:
清理缓存

       [ packages | headers | metadata | dbcache | all ]

   repolist: 显示repo列表及其简要信息

       all

       enabled 默认

 

install: 安装

  yum install 包名

 

  update: 升级

    update_to: 升级为指定版本

 

  remove|erase:卸载

 

  provides| whatprovides: 查看指定的文件或特性是由哪个包安装生成的;

yum库中元数据文件:

primary.xml.gz

       所有RPM包的列表;

       依赖关系;

       每个RPM安装生成的文件列表;

filelists.xml.gz

       当前仓库中所有RPM包的所有文件列表;

other.xml.gz

       额外信息,RPM包的修改日志;

 

repomd.xml

       记录的是上面三个文件的时间戳和校验和;

那么怎么知道yum库的位置呢,这就我们自己手动给出路径,这就需要以.Repo结尾文件定义。如何为yum定义repo文件,格式如下:

[Repo_ID]

name=Description

baseurl=

       ftp://

       http://

       file:///

enabled={1|0}

gpgcheck={1|0}

gpgkey=

如何创建yum仓库:

Createrepo 目录名

可以为挂在设备和云端

软件编译

编译安装的三步骤:

前提:准备开发环境(编译环境)

安装"Development Tools""Development Libraries"

 

# tar

# cd

# ./configure 

       --help

       --prefix=/path/to/somewhere

       --sysconfdir=/PATH/TO/CONFFILE_PATH

       功能:1、让用户选定编译特性;2、检查编译环境;

# make

# make install

 

# tar xf tengine-1.4.2.tar.gz

# cd tegnine-1.4.2

# ./configure --prefix=/usr/local/tengine --conf-path=/etc/tengine/tengine.conf

# make

# make install

# /usr/local/tengine/sbin/nginx

注意:

1、修改PATH环境变量,以能够识别此程序的二进制文件路径;

       修改/etc/profile文件

       /etc/profile.d/目录建立一个以.sh为名称后缀的文件,在里面定义export PATH=$PATH:/path/to/somewhere

2、默认情况下,系统搜索库文件的路径/lib, /usr/lib; 要增添额外搜寻路径:

       /etc/ld.so.conf.d/中创建以.conf为后缀名的文件,而后把要增添的路径直接写至此文件中;

       # ldconfig 通知系统重新搜寻库文件

              -v: 显示重新搜寻库的过程

3、头文件:输出给系统

       默认:/usr/include

       增添头文件搜寻路径,使用链接进行:

              /usr/local/tengine/include/   /usr/include/

              两种方式:

              ln -s /usr/local/tengine/include/* /usr/include/

              ln -s /usr/local/tengine/include  /usr/include/tengine

4man文件路径:安装在--prefix指定的目录下的man目录;/usr/share/man     

              1man -M /PATH/TO/MAN_DIR COMMAND

              2、在/etc/man.config中添加一条MANPATH

最后说一个与网络有关的命令:

netstat命令:

       -r: 显示路由表

       -n: 以数字方式显示

       -t: 建立的tcp连接

       -u: 显示udp连接

       -l: 显示监听状态的连接

       -p: 显示监听指定的套接字的进程的进程号及进程名

 

以上就是关于软件包管理的命令和配置,说的比较简略,如果有更多需要,就man一下命令自己找一下吧,希望你有所收获,谢谢你的参与!