+ -
当前位置:首页 → 问答吧 → 关于Linux的软件包管理

关于Linux的软件包管理

时间:2009-03-03

来源:互联网

用Linux已两年有余。感觉LInux的软件包管理还不够完善。

比如,我装了Arch装了Xorg装了KDE装了E17,用了两年之后,发现Linux占了9G的空间(Pacman -Scc过了)。按理说Arch+Xorg不会超过1G,KDE完整安装才700多M,E17更是只有100多M。再看日志也没超过1G,Home目录是2点多G。应该是使用期间或编译安装软件期间装了很多运行时依赖的包或是缓存文件越来越多,久而久之就超过了9G。

于是我想删掉那些使用次数很少的软件包,但整个系统的包那么多(1000多),我应删除哪些呢,我真的是不知道。大家是否也有过我这样的经历呢。

所以虽然Linux是一个开放的平台,总感觉自己对Linux的软件包老是一无所知的。而后观Windows,虽然它是一个不开放的,系统安装完全后,我们不知道它的内部组成,而只知道怎么用。可一但安装自己想要的应用软件后,它都会在“控制面板”里添加一个条目,对应单个人来说,他所安装的应用软件的数目是很有限的,只要我们一进“添加/删除”我们就能知道我们装了什么东西。而Linux的所有的东西都是有着N个数目的一个一个的软件包,包与包之间还有错综复杂的依赖关系。

能不能有这样一个方法,建立一个软件包使用次数的数据库,内核记录执行文件对应的软件包的使用频率,使我们对所安装的软件包有一个直观明了的认识,为软件包的删除或保留提供依据。用得少的就删掉算了。

作者: 月魄孤魂   发布时间: 2009-03-03

arch下的卸载pacman -Rscn pkg,会自动删除依赖安装的包,查看不需要的包的命令行是pacman -Qdt
至于debian系的apt-get autoremove,大家应该都很熟悉吧。
建议楼主以后发感想之前,先搞清楚是系统的问题呢,还是你的问题

作者: ashunter   发布时间: 2009-03-03

windows占用空间总是增长的莫名其妙……

作者: levn   发布时间: 2009-03-03

引用:
pacman -Rscn pkg
并不知道每个包是干嘛的,所以列不出这个“pkg”
引用:
查看不需要的包
有时候我装了些软件,但只用了很少,而且这是一系列的包,“pacman -Qdt”就会列出来吗?

我的意思是,过了很久之后,我并不知道我之前装了什么东西。请不要误解。

引用:
windows占用空间总是增长的莫名其妙……
我只是针对软件包来说。

作者: 月魄孤魂   发布时间: 2009-03-03

引用:
作者: 月魄孤魂
并不知道每个包是干嘛的,所以列不出这个“pkg”
怪不得你的系统能有1000多个包.....

你应该运行 pacman -R --help 看看各个参数的作用

作者: zhong   发布时间: 2009-03-03

pacman -R 再加个什么的选项就会帮我删除我很入以前手动安装的基本没怎么用过的而且是我还不怎么记得了的软件的么?

完全没有依赖关系的包只有十多个.

就算有些包是有依赖关系的,但这些包是某个主包的功能的扩展,但我可能只用了一两次这个扩展就不用了,你说我想删掉无用的东西,但其实很久之后我根本就忘了已经装这个扩展,我应该怎么做?

看来只有我一个人遇到这种问题.

作者: 月魄孤魂   发布时间: 2009-03-03

我觉得还是用Baobab啊fsview啊Gdmap啊,看看什么文件占空间太多比较实在些……
http://www.coagul.org/article.php3?id_article=546

作者: levn   发布时间: 2009-03-03

引用:
作者: levn
我觉得还是用Baobab啊fsview啊Gdmap啊,看看什么文件占空间太多比较实在些……
http://www.coagul.org/article.php3?id_article=546
这个我在用Sun的Solaris时用了下,拿她来扫描整个系统,扫几个钟都没描完.

"Baobab (gtk)"那个就是Solaris系统自带的.

作者: 月魄孤魂   发布时间: 2009-03-03

支持一下Baobab
还提醒一下楼主,包管理的问题,说Arch或者什么发行版就好,不要说Linux

作者: cheeselee   发布时间: 2009-03-03

包管理其实就起一个辅助作用,安装软件还是要做到安装的时候心理有数才行,否则,无论你用什么包管理系统最后都会给系统留下一堆无法处理的垃圾。

作者: seenxu   发布时间: 2009-03-03

这也有一定的道理,但现在的机械工程 软件工程的目的就是解放劳动力.Linux系统软件包没一千也有几百,要做到心中有数谈何容易;确实不好的就应该改进.

By the way,Windows 就是因为易用性而占领了超过88%(08年)的桌面市场.

作者: 月魄孤魂   发布时间: 2009-03-03

引用:
作者: 月魄孤魂
这也有一定的道理,但现在的机械工程 软件工程的目的就是解放劳动力.Linux系统软件包没一千也有几百,要做到心中有数谈何容易;确实不好的就应该改进.
你应该安装个shaman ....

提到windows...用过的都知道windows积累垃圾的功能是最强大的.......
你所说的易用和软件包积累没多少关系

作者: zhong   发布时间: 2009-03-03

引用:
作者: 月魄孤魂
这也有一定的道理,但现在的机械工程 软件工程的目的就是解放劳动力.Linux系统软件包没一千也有几百,要做到心中有数谈何容易;确实不好的就应该改进.

By the way,Windows 就是因为易用性而占领了超过88%(08年)的桌面市场.
* 东西做复杂了,根本没有办法去彻底解决这个问题,至少现在任何桌面操作系统都避免这个问题,相对有效的办法就是心中有数,如果不想有数,那就保留/home,重做系统。
* 包管理和易用性根本就没有关系,更没必要和windows比,因为不同的系统针对的用户群不同,如果觉得一个系统不爽,不用就是了,何必强求自己呢?
* 不好的东西确实需要改进,如果你有时间你可以帮助改进包系统,开源社区没有义务去满足所有人的需求,何况我没觉得现在的包管理有什么问题,用的很好,很舒服,有问题的,只能自己想办法了。

作者: seenxu   发布时间: 2009-03-03

1、建议装个shaman或者gtkpacman:这样还直观。软件的描述也有,可以直接看看自己装了那些包,那些是自己不需要的。还可以根据任务分类,快速地把系统恢复成初装状态
2、楼主说的那个直观了解软件的使用频率,用kde的人都会心的笑了,因为kde的主菜单就有这功能
3、如果更多的是桌面应用,不要充高手,少用命令行,用GUI界面的软件更适合你

作者: jobinson99   发布时间: 2009-03-03

我在Arch装的第一个桌面是KDE,之后装的第一个软件是Shaman.

看来我是被别人笑话的,不再讨论了.

好不容易发了一贴,想到一个Idea,却被N个人围攻……(还以为会有人讨论这个Idea的可行性、如何实现等等)……

作者: 月魄孤魂   发布时间: 2009-03-03

我在家目录下一直有个文本文件,每次装东西时就在这个文件里记录一下,删时就加个#

很直观,笨人的做法

作者: newlycc   发布时间: 2009-03-03

Gentoo的Portage就很干净

作者: cheeselee   发布时间: 2009-03-03

我的windows开机就12个进程占用80M内存。系统分区不超过1.5G,软件都安装在D盘,装了差不多有5G的程序,大部分是绿色软件,当然有些不是绝对绿色,注册表上的垃圾还是有的。这样的方式基本不会有垃圾文件出现在系统分区,要删除某个软件直接删除它的文件夹和快捷方式就OK了,整理起来的确很方便,系统的备份和还原都省心。有人说windows臃肿,越用越慢,我倒不觉得,用不好windows的人大部分是因为软件的原因,并不是windows系统的问题,windows上许多软件都喜欢在系统启动时自动启动,增加了系统负担,类似这样的流 氓软件和恶意程序特别多。
如果linux上也出现许多这样的软件会怎么样呢?会不会越用越慢?安装程序不规范的还能干净卸载吗?

作者: chenzhen   发布时间: 2009-03-03

引用:
作者: 月魄孤魂
我在Arch装的第一个桌面是KDE,之后装的第一个软件是Shaman.

看来我是被别人笑话的,不再讨论了.

好不容易发了一贴,想到一个Idea,却被N个人围攻……(还以为会有人讨论这个Idea的可行性、如何实现等等)……
这是有没有一个好用的可视化软件包管理软件的问题,可以像win下的“添加与删除程序”之类的界面,而不是默认把所有的软件包都罗列出来。其实这个问题很好解决的,只要有个写个人性化的包管理软件,如可以选择不显示装机时默认安装的base包,显示手动安装的包安装后的大小,使用频率,之类的。这样在想清理硬盘时,可能会方便些。

一般X下的软件都会显示在对应菜单里,可以了解系统安装了哪些软件。平时安装软件包时,是依赖包的注意加下--asdeps 参数,这也可以用在一些临时安装的软件上,灵活使用。有一些常用的pacman参数组合,可以从arch wiki上查看。如:

pacman -Qdt 查看孤立的依赖包
pacman -Rns 删除软件包、其依赖包及不保存配置文件
pacman -S --asdeps 当作依赖包安装
还可以联合着使用:
pacman -Rns `pacman -Qdtq`

再配合GUI的管理软件如,shaman\gtkpacman之类的

作者: maxint   发布时间: 2009-03-03

引用:
作者: 月魄孤魂
我在Arch装的第一个桌面是KDE,之后装的第一个软件是Shaman.

看来我是被别人笑话的,不再讨论了.

好不容易发了一贴,想到一个Idea,却被N个人围攻……(还以为会有人讨论这个Idea的可行性、如何实现等等)……
只要不是绕过包管理工具的安装,一般应该不会产生楼主说的问题吧?如果还采用shaman等GUI辅助,应该很容易管理的,shaman本身有两种分类法,一种是按仓库来的(core,extra……),一种是按软件大类(gnome,compiz,kde……),哪些安装了,哪些没安装都很直观显示在那里。
你用kde竟然还会提软件使用频率没有显示这个问题,这个在主菜单就显示的啊(最常用5软件)!不能不说是粗心了

作者: jobinson99   发布时间: 2009-03-03

引用:
作者: 月魄孤魂
我在Arch装的第一个桌面是KDE,之后装的第一个软件是Shaman.

看来我是被别人笑话的,不再讨论了.

好不容易发了一贴,想到一个Idea,却被N个人围攻……(还以为会有人讨论这个Idea的可行性、如何实现等等)……
不是围攻你..而是你的想法太不符合实际了.

安装一个软件包.如果它的依赖包没安装.那么 pacman 会要你把依赖包也一起安装了..

但删除的时候.pacman 不会帮你把依赖包删除.它也不会自作的聪明的帮你把依赖包删除掉(这也是没可能的事).久了就会出现你所说的积累了很多软件包..所以删除软件包时.一般都要多加些参数.

最常用的是 pacman -Rscn

明白?

作者: zhong   发布时间: 2009-03-03

继续继续,偶可以多积累点经验。。。

作者: suifengcnn   发布时间: 2010-06-02

引用:
作者: newlycc
我在家目录下一直有个文本文件,每次装东西时就在这个文件里记录一下,删时就加个#

很直观,笨人的做法
/var/log/pacman.log

作者: vimtex   发布时间: 2010-06-02

引用:
作者: zhong
怪不得你的系统能有1000多个包.....

你应该运行 pacman -R --help 看看各个参数的作用
我才350个包~~~

代码:
Console ~ $ pQ | wc -l
350

作者: qiang_liu8183   发布时间: 2010-06-02

发现lz对别人的好意提醒完全无视
卸载软件用pacman -Rscn xxx或者pacman -Rsscn xxx
pacman -Qh 看选项
pacman -Qt 查看你pacman的所有包
pacman -Qtd 查看不被依赖的包
上述几个命令就能完全100%的解决lz的所有问题……
另外推荐个命令:
cd /
du --max-depth=1 -h
结果自己分析

作者: yafeng   发布时间: 2010-06-02

lz的问题,解决办法就是慢慢对各种包的名称功能熟悉起来
而不是抱怨linux包管理如何,也许还是用回win更适合你

作者: sanitizer84   发布时间: 2010-06-02

引用:
作者: qiang_liu8183
我才350个包~~~

代码:
Console ~ $ pQ | wc -l
350
我414,谐音“死一次”

作者: naturennn   发布时间: 2010-06-02

idea本身就是不成熟的,还是多点包容好。
用回windows这类话怕是重了点,长此以往我辈菜鸟都不敢说话了。

作者: santi   发布时间: 2010-06-02

高手们,都是说教的口吻,我等菜鸟还真是怕怕呢!
在此,给楼主些鼓励,一个想法的形成,说明你在思考,不管这个想法是幼稚,是天真,还是可笑,都说明楼主在用linux的时候在思考所遇到的问题,这难道不应该鼓励吗?难道高手们就非得用说教的口吻,高高在上的姿态告诉楼主你错了,你错大发了。。你根本就不理解,了解linux。。。请问高手们?有意思吗?

作者: vicwjb   发布时间: 2010-06-02

能理解楼主。很多回复实际上都偏离了楼主的意思(个人理解,我怕拍砖。。。)
但我水平太低,无能为力。

Work around吧!我只能无奈的这么说。

------------------------------------------
关于你的Idea。

我觉得由于linux的哲学,包与包之间的耦合度太高了。即使想删掉某个包,往往做不到的。
记录包的使用次数,不但无法改变这个事实,而且费资源,再者,理论上讲应该是只能记录某个程序/库被调用的次数,而要逆向查找这个程序/库属于那个包又非常困难。何况,一个包里面可能同时包含调用次数非常程序/库,和调用次数非常少的程序/库,且两者完全有可能是不可分的。(毕竟你不能期待一个发行版的包打包的有多么好)

作者: twando   发布时间: 2010-06-02

引用:
作者: vicwjb
高手们,都是说教的口吻,我等菜鸟还真是怕怕呢!
在此,给楼主些鼓励,一个想法的形成,说明你在思考,不管这个想法是幼稚,是天真,还是可笑,都说明楼主在用linux的时候在思考所遇到的问题,这难道不应该鼓励吗?难道高手们就非得用说教的口吻,高高在上的姿态告诉楼主你错了,你错大发了。。你根本就不理解,了解linux。。。请问高手们?有意思吗?
这么旧的贴了。既已被你翻出,还是表示感激一下。虽已不用Linux N多月,或正中了某兄的预言,然而原因绝不在于包管理。

作者: 月魄孤魂   发布时间: 2010-06-02

别人翻出来的,我就是感慨一下,讨厌高手们那种嘴脸!!

作者: vicwjb   发布时间: 2010-06-02

嗯,同意,以前养成了一个坏习惯,一旦忘记自己装了哪些包,就重装系统,反正home还在,重装快
不过现在改过来了,把自己装过的软件都记住了

作者: ulosggs   发布时间: 2010-06-02