liunx学习 ---此为总结

liunx安装软件 1、rpm 2、yum(dnf) 3、编译安装
我用的是centos7系统系统必转rpm工具
首先有两个操作
关闭防火墙 :systemctl disable firewalld
和关闭seliunx :sed -i 's/SELINUX=disabled/SELINUX=disabled=enforcing/'
 
 

1、rpm

包安装
rpm {-i|--install} [install-options] PACKAGE_FILE…
-v: verbose -vv:(更详细)
-h: 以#显示程序包管理执行进度
[install-options]
--test: 测试安装,但不真正执行安装,即dry run模式
--nodeps:忽略依赖关系
--replacepkgs | replacefiles
--nosignature: 不检查来源合法性
--nodigest:不检查包完整性
--noscripts:不执行程序包脚本
%pre: 安装前脚本 --nopre
%post: 安装后脚本 --nopost
%preun: 卸载前脚本 --nopreun
%postun: 卸载后脚本 --nopostun
rpm {-U|--upgrade} [install-options] PACKAGE_FILE...
rpm {-F|--freshen} [install-options] PACKAGE_FILE...
upgrade:安装有旧版程序包,则“升级”
如果不存在旧版程序包,则“安装”
freshen:安装有旧版程序包,则“升级”
如果不存在旧版程序包,则不执行升级操作
rpm -Uvh PACKAGE_FILE ...
rpm -Fvh PACKAGE_FILE ...
--oldpackage:降级
--force: 强制安装
 
 
包查询
rpm {-q|--query} [select-options] [query-options]
[select-options]
-a:所有包
-f:查看指定的文件由哪个程序包安装生成
-p rpmfile:针对尚未安装的程序包文件做查询操作
--whatprovides CAPABILITY:查询指定的CAPABILITY由哪个包所提供
--whatrequires CAPABILITY:查询指定的CAPABILITY被哪个包所依赖
rpm2cpio 包文件|cpio –itv 预览包内文件
rpm2cpio 包文件|cpio –id “*.conf” 释放包内文件
[query-options]
--changelog:查询rpm包的changelog
-c:查询程序的配置文件
-d:查询程序的文档
-i:information
-l:查看指定的程序包安装后生成的所有文件
--scripts:程序包自带的脚本
--provides:列出指定程序包所提供的CAPABILITY
-R:查询指定的程序包所依赖的CAPABILITY
 
 
包卸载:
rpm {-e|--erase} [--allmatches] [--nodeps] [--noscripts] [--notriggers] [--test] PACKAGE_NAME ...
当包卸载时,对应的配置文件不会删除, 以FILENAME.rpmsave形式保留
 
 
包校验
rpm {-V|--verify} [select-options] [verify-options]
S file Size differs-大小被改变
M Mode differs (includes permissions and file type)-模式不同(包括权限和文件类型)
5 digest (formerly MD5 sum) differs-加密模式不同
D Device major/minor number mismatch-设备主/副号码不匹配
L readLink(2) path mismatch-指向(2)路径不匹配
U User ownership differs-用户拥有不同
G Group ownership differs-组用户不同
T mTime differs-内容被改变
P capabilities differ-能力不同
rpm -V packagename 可以看到如上对应的每一个被修改的参数。
 
 
实验:假设系统没有装一款工具
首先准备号工具的编译好的包
rpm -ivh 对应包在系统内位置 (即完成包的安装)
假设最小化安装系统,之际预装了rpm工具,需要准备所有需要的包执行对应的:
rpm -ivh packagename
...
总结:对多款工具软件,和有依赖的包,安装过于麻烦
 
 


2、yum

YUM: Yellowdog Update Modifier,rpm的前端程序,可解决软件包相关依赖性,可在多个库之间定位软件包,up2date的替代工具
yum repository: yum repo,存储了众多rpm包,以及包的相关的元数据文件(放置于特定目录repodata下)
支持文件服务器:
1、http://2、https://3、ftp://4、file://
yum客户端配置文件:
/etc/yum.conf:为所有仓库提供公共配置
/etc/yum.repos.d/*.repo:为仓库的指向提供配置
  yum为所有仓库提供公共配置
vim /etc/yum.config
[main] cpu架构 版本号
cachedir=/var/cache/yum/$basearch/$releasever 缓存目录
keepcache=0 是否保存缓存 0不保存
debuglevel=2 调试用的
logfile=/var/log/yum.log 日志目录
exactarch=1 精确匹配yum
obsoletes=1 过时包
gpgcheck=1 检查合法性完整性
plugins=1 插件
installonly_limit=5 最多并同时执行5个 同时只能一个人用
bugftrackel_url=htt ://
distroverpkg=centos-release
 
 
  yum仓库 配置文件/etc/yum.repos.d
仓库指向的定义:
[repositoryID] 仓库名
name=Some name for this repository
baseurl=url://path/to/repository/ 仓库真实路径
enabled={1|0}
gpgcheck={1|0} 检查包的完整性和签名
gpgkey=URL 导gpgkey
enablegroups={1|0} 启用组
failovermethod={roundrobin|priority}
---roundrobin:意为随机挑选,默认值--priority:按顺序访问
cost= 默认为1000
 
 
yum的repo配置文件中可用的变量:
$releasever: 当前OS的发行版的主版本号
$arch: 平台,i386,i486,i586,x86_64等
$basearch:基础平台;i386, x86_64
$YUM0-$YUM9:自定义变量
 
 
yum命令的用法:
yum [options] [command] [package ...]
yum repolist [all|enabled|disabled]--显示仓库列表:
yum list-显示程序包:
yum list [all | glob_exp1] [glob_exp2] [...]
yum list {available|installed|updates} [glob_exp1] [...]有效|以装|可更
yum install package1 [package2] [...]--安装程序包:
yum reinstall package1 [package2] [...] (重新安装)
yum update [package1] [package2] [...]--升级程序包:
yum downgrade package1 [package2] [...] (降级)
yum check-update--检查可用升级:
yum remove | erase package1 [package2] [...]--卸载程序包:
yum info [...]--查看程序包information:
查看指定的特性(可以是某文件)是由哪个程序包所提供:
yum provides | whatprovides feature1 [feature2] [...]
清理本地缓存:清除/var/cache/yum/$basearch/$releasever缓存
yum clean [ packages | metadata | expire-cache | rpmdb | plugins | all ]
yum makecache --构建缓存:
yum search string1 [string2] [...]--搜索:
yum deplist package1 [package2] [...]--查看指定包所依赖的capabilities:
查看yum事务历史:
yum history [info|list|packages-list|packages-info|summary|addon-info|redo|undo|rollback|new|sync|stats]
yum history
yum history info 6
yum history undo 6
 
 
yum命令--安装及升级本地程序包:
yum localinstall rpmfile1 [rpmfile2] [...]--(用install替代)
yum localupdate rpmfile1 [rpmfile2] [...]--(用update替代)
包组管理的相关命令:
yum groupinstall group1 [group2] [...]
yum groupupdate group1 [group2] [...]
yum grouplist [hidden] [groupwildcard] [...]
yum groupremove group1 [group2] [...]
yum groupinfo group1 [...]
 
 
yum的命令行选项:
--nogpgcheck:禁止进行gpg check
-y: 自动回答为“yes”
-q:静默模式
--disablerepo=repoidglob:临时禁用此处指定的repo
--enablerepo=repoidglob:临时启用此处指定的repo
--noplugins:禁用所有插件
 
 
yum-config-manager 自动生成源
生成172.16.0.1_cobbler_ks_mirror_CentOS-X-x8664.repo
yum-config-manager --add-repo= http://172.16.0.1/cobbler/ks_mirror/7/
yum-config-manager --disable “仓库名" 禁用仓库
yum-config-manager --enable “仓库名” 启用仓
/etc/
yum.conf(这里我选择了系统自带的配置文件展示)
[main]
cachedir=/var/cache/yum/$basearch/$releasever
keepcache=0
debuglevel=2
logfile=/var/log/yum.log
exactarch=1
obsoletes=1
gpgcheck=1
plugins=1
installonly_limit=5
bugtracker_url=http://bugs.centos.org/ set_project.php?project_id=19&ref=http://bugs.centos.org/bug_report_page.php?category=yum
distroverpkg=centos-release
--(这是备注)
-- This is the default, if you make this bigger yum won't see if the metadata
-- is newer on the remote and so you'll "gain" the bandwidth of not having to
-- download the new metadata and "pay" for it by yum not having correct
-- information.
-- It is esp. important, to have correct metadata, for distributions like
-- Fedora which don't keep old packages around. If you don't like this checking
-- interupting your command line usage, it's much better to have something
-- manually check the metadata once an hour (yum-updatesd will do this)
-- metadata_expire=90m
-- PUT YOUR REPOS HERE OR IN separate files named file.repo
--in /etc/yum.repos.d
/etc/yum.repos.d/
base.repo(这是我自己用阿里云简单配置的yum源)
[base]
name=aliyun base
baseurl=https://mirrors.aliyun.com/centos/$releasever/os/$basearch/
gpgcheck=1
gpgkey=https://mirrors.aliyun.com/centos/$releasever/os/$basearch/RPM-GPG-KEY-CentOS-$releasever
enbaled=1
接下里就可以使用yum安装软件了
yum install httpd -y (自动回答yes安装)
 
 
DNF (DaNdiFied)
配置文件:/etc/dnf/dnf.conf
仓库文件:/etc/yum.repos.d/ *.repo
日志: /var/log/dnf.rpm.log
 
 
dnf 用法:与yum一致 man dnf
dnf [options] [...]
dnf --version
dnf repolist
dnf clean all
dnf makecache
dnf list installed
dnf list available
dnf search nano
dnf history
dnf history undo 1
(不做赘述,自我理解)


 
 

3、编译安装

源代码-->预处理-->编译-->汇编-->链接-->执行
例:对单个c文件编译
拿到c源代码,使用gcc编译成二进制文件,最后运行
gcc file.c -o file
实验:实验开始前我用yum装了yum install gcc ncuress-devel
准备cmatrix-1.2a.tar.gz源码包放入/data下(在一个分区一个路径下操作)
1、tar xvf cmatrix-1.2a.tar.gz 解包
cd cmatrix-1.2a
--这时里面会有 README(软件说明) INSTALL(安装教程)
(这里软件内部有开发人员提供的configure工具直接对源码包的所有c文件编译
--configuer --help 可以看到软件多个特性和怎么设置特性
2、.configure --prefix=/apps/cmatrix (我只定义了安装位置方便卸载)
(这里会出提示你有未安装的包-我前面安装过了)
安装包过后
3、make --这里可以针对cpu情况使用 make -j cpu核数 加快编译
(如果出错安装包过后执行不了make删除包从头来过这时并没有生成一些其他文件)
--make工作原理: 用 Makefile 部署需要在内部定义安装路径和多个特性
configure脚本定义特性借助模板文件Makefile.in生成Makefile
4、make install
5、bash cmatrix --运行
--也可以加入PATH变量直接使用:
echo 'PATH=/apps/cmatrix/bin:$PATH' >> /etc/profile.d/cmatrix.sh
. /etc/profile.d/cmatrix.sh
卸载(因为只指定了一个安装位置,所以卸载方便)
rm -rf /apps/cmatrix
rm -rf /data/cmatrix-1.2a