在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
4、man文件路径:安装在--prefix指定的目录下的man目录;/usr/share/man
1、man -M /PATH/TO/MAN_DIR COMMAND
2、在/etc/man.config中添加一条MANPATH
最后说一个与网络有关的命令:
netstat命令:
-r: 显示路由表
-n: 以数字方式显示
-t: 建立的tcp连接
-u: 显示udp连接
-l: 显示监听状态的连接
-p: 显示监听指定的套接字的进程的进程号及进程名
以上就是关于软件包管理的命令和配置,说的比较简略,如果有更多需要,就man一下命令自己找一下吧,希望你有所收获,谢谢你的参与!