如何运用性原理解决实际问题——记一次问题排查
如果已经安装,会显示yum的参数如果你想做一些真正的创新,你必须应用一种性原理的分析,不要用类比来推理。类比是指对过去的参考。性原理意味着,你看一下事物最基本的原理在一个特定的领域,从那些几乎无可争议的真理中推理出一个结论。如果你看到这个结论是与人们普遍相信的东西不一致的,那么你就有机会了
yum删除已经安装的包 删除yum安装的软件
yum删除已经安装的包 删除yum安装的软件
I f you want to do soming really innovative, you he to apply a sort of first principles ysis, not and don't don't reason by ogy. Analogies are referencing the past. So first principles means you look at the most fundamental truths in a particular area and the things that really are almost indisputably correct and yoeason up from there to a conclusion.And if you see that conclusion is at odds with what people generally beli then you he an opportunity.
这是埃隆马斯克在某次采访中所说的原话,这里面讲了他对性原理的理解。很多人可能会误以为性原理是马斯克提出的,其实不是,只是他在近几年重新带火了这个概念。
通俗地理解来说,性原理就是倡导探究事物本质,回归那些几乎不可动摇的基本原则,以此来得出新的结论或者完整地理解一个事物的原理或解决某个问题。
把它与”比较思维“对比会更好理解,我们大多数人当遇到一个问题时,往往下意识会去想有没有过类似的案例可供参考,而此时这种思维会大大局限住我们解决问题的思路,从而可能错失很多创新的机会。
接下来我将围绕近期遇到的一个技术问题展开,讲述我的一次性原理实践,也就是如何在实际生活中运用性原理进行思考。
背景是朋友给我发了这两张截图,问我这个14.6.1的包怎么删掉,因为已经安装了12.10.1的包,担心14.6.1这个安装包会额外占用的空间。
也尝试过上图这样的作 ,但根据提示可以发现删除并没有生效,因为提示命令参数错误。
于是我开始在谷歌搜索yum delete remove,经过几个结果的查看,找到一个相对靠谱的解决方案。如下图
这里面给了一个很重要的提示,就是如果你想删除指定版本的包,在使用yum uninstall命令指定包名时,CPU架构参数要放在,但依照这种方式尝试后结果如下图
那么问题又回到原点,究竟要怎么删掉14.6.1这个包呢。
我又使用谷歌对问题的各种排列组合进行搜索,包括”yum remove pkg version“等等。翻了几个搜索结果后,感觉产生帮助的信息并不多。于是我开始重新观察朋友发给我的截图
remove和erase没什么问题,看上去是同样功能的两个命令,可能是alias关系。然后是autoremove,这个看上去好像是个很智能的高级命令,在删除包时,yum貌似会自行分析该包的关联包一并删除。但随即想了一下,好像也不太符合我的场景,因为我们的gitlab-ce就是一个单纯的安装包,并无其他关联包。
问题至此仍没有什么进展,我决定把问题降一个纬度去研究,先去了解一下yum,
在查询这个条目前我也大概知道yum是做什么的,只不过经过这次搜索,有了更清晰的认识。yum是Red Hat(linux的一种发行版)的包管理器,仅此而已。
参考链接:
然后我在yum文档中看到了这样一节内容,它解释了命令输出信息中每列所表示的含义。从而得知x86_64表示包所适合的CPU架构,而包版本号由点号(.)分割为两部分,前面的数字表示包的版本号,后面的数字则表示发布标识,二者联合起来可以表示一个包的某个发行版。而展示信息的一列表示包所在的位置,这个信息对我有所启发,我立刻回去重看朋友提供给我的图。
我随即在谷歌中搜索yum ailable packages
搜索结果中有些是我刚才访问过的链接,同时我重新翻看刚才找到的一些文档,包括下图
aiable这个词我在前面的各个截图和搜索结果里都有一闪而过地看到过,但没留意,现在我开始把焦点指向它,我开始思考它究竟是什么含义。然后我又重新看了一开始的那个图
这里面的@System很明显是表示12.10.1这个包已经安装到当前机器,那14.6.1所在的gitlab-ce呢,很明显不是机器上的一个路径标识,而且它在Avaiable Packages下。于是我同一时刻串联起前面查找的所有有效信息,从而得出以下结论:
Avaiable Packag看起来包管理机制在各个领域的用法似乎都是相通的,于是我瞬间豁然开朗,真相就是我们一直在苦苦追寻想删除的14.16.1,它根本就不存在于我们的机器,那还谈何删除呢。es表示可用包,而这个可用并不意味着这个包在当前机器上,它可能是在远程仓库,只是它可用而已。这就像前端使用的npm包也会分为项目的node_modules、当前机器的node_modules和远程仓库;Ja的包管理器Men的配置文件pom.xml的解析规则也是先从本机仓库查找依赖包,如果找不到会去Men远程的公共源中查找包。
至此,整个问题得到了满意的,我也通过这个问题的研究过程实践了性原理,通过将问题降维至元问题,比如这个问题中想要使用yum删除某个特定的包,先去了解yum到底是什么,yum的相关命令又都是什么作用,怎么工作的。也许不需要对每个知识点都深入了解,但要在整个分析过程中对所涉-e及的概念保持清晰的理解,而不是盲人摸象。
有时候有些问题放到具体场景里,就会很难找到问题的真实原因,因为问题会被千万别的场景所包裹。如果你直接拿着带有场景描述的去搜索,可能会导致你离正确越来越远。比如你不应该直接搜索”如何使用yum remove删除指定版本的包“,这样的描述会把搜索结果圈定在一个很小的范围,因为你给了太多了场景描述,这可能会将真正对你有帮助的信息拒之门外。
另外,别担心对于搜索问题中所涉及到的一些元概念学习所花费的时间,比如这里我单独去搜索yum和yum list。这些都是问题最基本的元素,我在这个问题中学习了这些概念,可能日后遇到其他有关yum安装包的问题时,我可以很快的找到原因而无需进行太多的搜索,这是因为我对yum这个事物有了很深的了解。
这也是运用性原理的魅力所在,因为它将所有的问题打回原形,追本溯源,通过将问题拆解成一个一个元素,以此来理解整个问题,因此达到以一敌百的效果。也就是因为解决一个问题,从而大大节省了日后解决同类问题的时间,从而大大提高学习知识的速度。因为我们每次遇到的问题都是由一些基本问题或基本元素所组成的,而这些元素大多数都会存在交集。
举个例子,你在解决一个计算机问题时,由于这个问题牵扯到一个物理知识,你为了理解这个问题而去了解了这个物理知识点,这样日后你在遇到某个和该知识点有关的问题出现时,就会更加容易理解。比如某个生物问题,其核心也关联到了这个物理知识,这样你便会逐渐形成属于自己的知识网络,从而建立起对这个世界更完整的认知。
比如这里,问题是“如何删除指定版本的包“吗?不是。如果沿着这个思路去查解决办法,一定是越走越远。时间花了很多,但对问题的解决没有任何帮助,或者说帮助很小。因为这里你根本就在试图解决一个不存在的问题。
因此就需要我们运用性原理去拆解这个问题,问题看似是要删除某个指定版本的包,但首先我们需要了解yum是什么,yum list列出的是什么,yum list展示出的内容包含哪些信息以及gitlab-ce是什么。
yum是Red Hat(linux的一种发行版)的包管理器,可用于查询可用包信息、从仓库获取包、安装/卸载、更新包等功能。yum list是用于列举 已安装包 和 可用包 的yum命令选项。但这些还仅是针对于特定问题的性原理运用方式,如果要应对更多更通用的问题该怎么解决呢。我这里列举一些适用于研究各种问题的性原理技巧。
1)使用搜索引擎
搜索引擎大家都会用,不就百度吗,但每个人使用搜索引擎真正解决问题的效率可谓天地别。这里我们直接说结论,怎样才算是符合性原理地使用搜索引擎呢。首先就是搜索引擎的搜索范围要足够”大“,也就是使用谷歌。因为不同的搜索引擎在查找内容时,搜索范围其实是不一样的,你可以理解为不同的池子,比如abcd...。如你想要的在z池子里,而百度的搜索范围却只包含abcde,那你可能永远都找不到想要的。
而我们常用的搜索引擎有哪些呢,在国内环境下,不同的浏览器厂商可能会默认绑定自家的搜索引擎,比如搜狗、360。如果你用Window自带的IE或Edge,默认的搜索引擎会是Bing(必应)。百度就不用多说了,大家都知道”百度一下,你就知道“,但是使用百度,你真的就能知道你想知道的吗?
对于学术或技术类的东西,很多时候放眼整个世界范围内各个圈子的讨论,谷歌肯定是比百度搜索到的范围要大很多,这就导致了一种”真知在海外“的怪象。所以如果你秉承性原理去研究一个东西时,如果可以,还是尽量使用谷歌来扩大你的搜索范围。
2)想好你搜索的
搜索引擎是很强大的工具,但是能不能用好它也很关键,工具本身并不产生价值,而是使用者赋予了它价值。比如你在查一个问题时,不应该把问题的解决完全寄托于搜索引擎而失去自己对于问题的思考,否则工具能发挥的作用可能微乎其微。
比如当搜索一个问题时,如果你对这个问题中所涉及到的一些 基本概念 很清晰,那你可以在此基础上去搜索相对具体的描述内容或场景。而如果你对问题中所涉及的基本概念不是很了解,盲目地输入具体问题描述,搜索出的结果很可能把你圈定在一个很小的范围,有时甚至会把”正确“过滤在外。
如何让 linux yum 安装已有的软件包?
我开始好奇这幅图里能传我随即去谷歌查找yum list,在结果中发现了redhat的cheat sheet,先了解了一下yum可用命令的全貌,然后着重看了下list、、search、install、update、reinstall、erase、remove和autoremove这几个命令。达给我什么信息。首先是展示出这些信息的命令yum list。如需编辑回答或插入,请点击标题到问题详情页这个命令 yum list|grep installed
passwd :为用户设置密码yum 安装已有的软件包
yum update -y mysql --downloadonly --downloaddir=/var/cache/yum/
yum 安装已有的软件包
yum update -y mysql --downloadonly --downloaddir=/var/cache/yum/
如何创建yum源,如何使用yum命令
2.确定了要卸载的软件的名称,就可以开始实际卸载该软件了。键入如下命令即可卸载软件:大家都知道使用rpm命令安装软件的时候,有时候为了安装一个软件往往需要安装好几个软件来解决依赖关系,所以此时你就需要使用yum命令来解决软件安装的依赖关系。
-e要想使用yum安装软件,就需要配置好yum源。(我们以光盘yum源为例,以红帽5.4光盘为例)
接着我把焦点放在了erase、remove和autoremove这三个命令上(其实这时候由于忽略了list命令中关键的信息——aiable和installed,从而错过一次发现真相的机会)# mount /dev/d /media
1.建立yum配置文件
在/etc/yum.re.d/目录下,建立以.repo结尾的任意文件名的文件,例test.repo
#vim /etc/yum.re.d/test.repo [base] name= base=file:///media/ gpgcheck=0 enabled=1 [VT] name=VT base=file:///media/VT gpgcheck=0 enabled=1 [Cluster] name=Cluster base=file:///media/Cluster gpgcheck=0 enabled=1 [ClusterStorage] name=ClusterStorage base=file:///media/ClusterStorage gpgcheck=0 enabled=1
备注:如果使用ftp或指向为yum源的话,就直接把每一段”base=file:///media/“改成ft p:/ /172.16.100.168/yum/或htt p:/ /172.16.100.168/yum/就OK了。
2.此时yum源就已经配置好了,就可以使用yum命令来安装软件或软件包组了。
那yum命令是如何使用的呢?
3.对安装软件包以及包组而言
#yum 常用选项
list {all,installed,ailable,updates} 列出所有的,已安装的,可安装的,更新的软件包
install 安装软件包
remove/erase 卸载软件包
update 升级软件包
check-update 检测可更新的软件包
provides 检测软件由哪个软件包安装的
downgrade 降级软件包
reinstall 重装软件包
groupinstall 安装软件包组
groupremove 卸载软件包组
例:#yum groupremove ”Dlopment Tools“ 移除Dlopment Tools软件包组
Linux查看所有用户用什么命令
name]1、Linux里查看所有用户
如果是以.bin结尾的二进制软件,可以用以下方法安装(以so-6_0-beta-bin-linux-zh-Tw1.bin为例):(1)在终端里.其实只需要查看 /etc/passwd文件就行了.
(2)看第三个参数:500以上的,就是后面建的用户了.其它则为系统的用户.
2、用户管理命令
useradd :添加用户
adduser :添加用户如果没有安装,会提示yum未安装或无效命令……
usermod :修改用户命令,可以通过usermod 来修改登录名、用户的家目录等等;
pwck :pwck是校验用户配置文件/etc/passwd 和/etc/shadow 文件内容是否合法或完整;
pwunconv :是pwcov 的立逆向作,是从/etc/shadow和 /etc/passwd 创建/etc/passwd ,然后会删除 /etc/shadow 文件;
finger :查看用户信息工具
id :查看用户的UID、GID及所归属的用户组
chfn :更改用户信息工具
su :用户切换工具
sudo :sudo 是通过另一个用户来执行命令(execute a command as another user),su 是用来切换用户,然后通过切换到的用户来完成相应的任务,但sudo 能后面直接执行命令,比如sudo 不需要root 密码就可以执行root 赋与的执行只有root才能执行相应的命令;但得通过visudo 来编辑/etc/sudoers来实现;
visudo :visodo 是编辑 /etc/sudoers 的命令;也可以不用这个命令,直接用vi 来编辑 /etc/sudoers 的效果是一样的;
sudoedit :和sudo 功能不多;
3、管理用户组(group)的工具或命令;
groupadd :添加用户组;
groupdel :删除用户组;
grpck
grpconv :通过/etc/group和/etc/gshadow 的文件内容来同步或创建/etc/gshadow ,如果/etc/gshadow 不存在则创建;
grpunconv :通过/etc/group 和/etc/gshadow 文件内容来同步或创建/etc/group ,然后删除gshadow文件
扩展资料:Shell是系统的用户界面,提供了用户与内核进行交互作的一种接口。它接收用户输入的命令并把它送入内核去执行。
实际上Shell是一个命令解释器,它解释由用户输入的命令并且把它们送到内核。不仅如此,Shell有自己的编程语言用于对命令的编辑,它允许用户编写由shell命令组成的程序。Shell编程语言具有普通编程语言的很多特点,比如它也有循环结构和分支控制结构等,用这种编程语言编写的Shell程序与其他应用程序具有同样的效果。
扩展资料:
Linux中查看所有用户只需要查看/etc/passwd这个文件就可以了,命令是:cat /etc/passwd。这个文件里面一行内容就是一个帐号,除去一些系统帐号如bin、daemon、adm、nobody之外(系统帐号不能直接登录)
你好
在terminal(终端)里用who可以查看当前在线的用户
last查看最近用户的登录记录
查看所有用户列表是cat /etc/passwd
或者看group cat /etc/group
可登录用户:cat /etc/passwd |grep bash
linux下如何查看yum是否安装
或者用cat /etc/passwd |cut -f 1 -d :1、首先,打开xshel软件,点击连接到linux:
#rpm2、连接到主机以后就可以查看已经yum工具有没有安装了,这里在xshell的终端输入“rpm -qa | grep yum”回车,此时如果已经安装yum,会查询到相应的安装包:
3、,在输入命令yum进行查看验证刚才的结论,输入yum以后,会弹出yun的相关参数说明,这就说明yum一切#rpm运行正常:
在终端中输入yum即可……
linux中用yum命令安装linux的yum安装
因为本来就没有zabbix.confyum如何强制安装?
我的:加上-y参数,不需要确认直接安装软件包。也可以加上--nodeps忽略掉软件包相互间的依赖关系而强制安装。clean 清除缓存
linux下yum安装zabbix的数据库在哪?
只有zabbix_server.conf和zabbix_agentd.conf
在/etc/zabbix下面
l[packageinux下的yum怎么读?
Linux下yum音标:(丫木)。
yum(全称为YellowdogUpdater,Modified)是一个在Fedora和RedHat以及SUSE中的Shell前端软件包管理器。提供软件查找、安装、删除某一个或一组甚至全部软件包的命令,而且命令简洁而又好记。
Linux下如何卸载软件
当然也可以输入:首先是没必要删除
group 包组信息其次,是建议用yum或者apt来解决软件安装、卸载的依赖关系
,rhel4支持用--aid参数,但rhel5取消了。还是建议yum吧,比较方便。
Linux软件的安装和卸载一直是困扰许多新用户的难题。在Windows中,我们可以使用软件自带的安装卸载程序或在控制面板中的“添加/删除程序”来实现。与其相类似,在Linux下有一个groupmod :修改用户组信息功能强大的软件安装卸载工具,名为RPM。它可以用来建立、安装、查询、更新、卸载软件。该工具是在命令行下使用的。在Shell的提示符后输入rpm,就可获得该命令的帮助信息。
软件的卸载
1.软件的卸载主要是使用rpm来进行的。卸载软件首先要知道软件包在系统中注册的名称。键入命令:
-q
-a
即可查询到当前系统中安装的所有的软件包。
参数e的作用是使rpm进入卸载模式。对名为[package
name]的软件包进行卸载。由于系统中各个软件包之间相互有依赖关系。如果因存在依赖关系而不能卸载,rpm将给予提示并停止卸载。你可以使用如下的命令来忽略依赖关系,直接开始卸载:
-nodeps
忽略依赖关系的卸载可能会导致系统中其它的一些软件无法使用。
补充:
在so-6_0-beta-bin-linux-zh-Tw1.bin所在文件夹下运行模拟终端
输入:
./so-6_0-beta-bin-linux-zh-Tw1.bin
并按回车!
./so
再用[Tab]键补全
(./表示当前目录,如果终端不在该软件所在目录下打开,则在软件名前尚需输入相应的路径。)
如果在图形界面,也可直接单击(或双击,视具体的鼠标设置而定)运行反安装程序就可以了!
LINUX下安装应用软件,要指令
这里面为什么一个是@System,一个是gitlab-ce,此时我感觉发现了新线索。同时我还通过对比,开始好奇为什么上面的包在Installed Packag两种方式皆无果es下,而14.6.1在Available Packages,这两种类型是什么意思。rpm:rpm -ivh packagedeb:dpkg源码包:tar -zxvf .tar.gz ./configure makyum localinstall xxxx.rpm 指定本地rpm包。e && make installyum:yum install packageapt:apt-get install package
yum如何列出未安装的包?yum list 和 yum list installed有什么区别
yum是Redhat、Centos、Fedora 等系统的包管理工具,yum list是列出所有可安装的软件包列表,包含已安装和未安装的。yum list installed则显示已安装软件包列表。至于看未安装的,通过这两个来命令可以分辨,单独的参数好像没有。
yum list 包名查看已安装的包。如果想看所有的不要他已经尝试过了上图这种解决方式,但根据提示可以看出这会将已经安装的gitlab-cepwcov :同步用户从/etc/passwd 到/etc/shadow包进行删除,这不是他想要的。这么用,用yum list | grep 包名,可以看到所有想看的包,好像看不了未安装的吧,无解
yum lis例:#yum install bind 安ind软件包t ailable
centos7怎样用命令卸载
面对问题,先停下来,冷静思考,问题究竟是什么。yum update 升级系统
groups :显示用户所属的用户组yum install ~ 安装指定软件包
grouplist 显示所有软件包组的信息yum update ~ 升级指定软件包
yum remove ~ 卸载指定软件
yum grouplist 查看系统中已经安装的和可用的软件组,可用的可以安装
yum grooupinstall ~安装上一个命令显示的可用的软件组中的一个
yum grooupupdate ~更新指定软件组的软件包
yum grooupremove ~ 卸载指定软件组中的软件包
yum deplist ~ 查询指定软件包的依赖关系
yum list yum 列出所有以yum开头的软件包
yum localinstall ~ 从硬盘安装rpm包并使用yum解决依赖
《linux就该这么学》里边有详细的介绍