您尚未登录。

#1 2012-01-11 15:58:53

caizhengzhu
管理员

Linux知识文档

/bin/
给所有使用者必须要的执行命令程式 (ex: cat, ls, cp)
(特别是 开机 或者 修复系统需要用到)

/boot/
开机档案 Boot loader, kernels and initrd files.

/dev/
设备档案 devices files, ex :/dev/null

/etc/
系统、程式主要的设定档 (from et cetera)

/home/
使用者的 Home 目录

/lib/
给 /bin/ 和 /sbin/ 必要的 Library.
(开机或修复系统必须的 Library)

/lost+found/
在系统(fsck)修复("recovered")期间找到的 一些档案和碎片(Not part of FHS)

/mnt/
暂时/临时 挂载的档案系统

/media/
移除性媒体 (ex: CD-ROMs) 的挂载点 (appeared in FHS-2.3)

/opt/
附加 软件应用程式 Packages
未经编译的, 不是 ".deb" 的二进制档 (是 tar ... 等等的档案) 会放在此目录.

/opt/bin/ : 同 最上层(top-level) 的 /bin (Same as for top-level hierarchy)
/opt/include/ : Same as for top-level hierarchy
/opt/lib/ : Same as for top-level hierarchy
/opt/sbin/ : Same as for top-level hierarchy
/opt/share/ : Same as for top-level hierarchy

/proc/
将 Kernel 文件化的 虚拟作业系统 和 行程状态(process status), 一般都是文字档案 (ex: uptime, network)

/root/
root 帐号的 Home 目录

/sbin/
系统管理者的应用程式 (ex: init, route, ifup) (系统应用程式)
(开机 或者 修复系统 需要用到的档案)

/tmp/
暂存盘案

/selinux/
SE-Linux 执行运作的设定 (Not part of FHS).

/srv/
Site-specific data which is served by the system (Not part of FHS).

/sys/
解开(exporting) Kernel objects 的档案系统.
(很多 /proc/* 的档案必须取自此处...)

/usr/
可以公开分享的第二层级(Secondary hierarchy), 唯读的资料 (从前 UNIX source 的档案库(repository), 现在是 UNIX 系统 resources)
(这些不会是 开机 或 修复系统必须的档案)

/usr/bin/ : Same as for top-level hierarchy
/usr/include/ : 标准加载档案
/usr/lib/ : Same as for top-level hierarchy
/usr/sbin/ : Same as for top-level hierarchy
/usr/share/ : 独立系统架构 (可被分享的) 的资料
/usr/src/ : Source code (产生 Debian Packages 的 Source code, 参照同: /usr/local/src/)
/usr/X11R6/ : X Window System, Version 11 Release 6
/usr/local/ : 系统管理者 于 本机安装程式、资料 用的, 属于 第三层级(Tertiary hierarchy).
/usr/local/bin : 于本机使用 编译过的二进制档、 Shell script .. 等等.
/usr/local/src : Source code (这边放的是不属于 Debian 内含的程式, 而是外部程式 解开 和 编译完成会放于此处.)

/var/
变动性的资料, 像是 Logs, 数据库, 网站, 和 暂存过水(ex: Email) 的 资料.

离线

#2 2012-03-29 11:01:57

caizhengzhu
管理员

回复: Linux知识文档

apt-get remove 与 apt-get autoremove、aptitude remove的不同
原文地址:http://www.igigo.net/archives/88

apt-get remove 与 apt-get autoremove、aptitude remove的不同

apt-get remove的行为我们很好理解,就是删除某个包的同时,删除依赖于它的包
例如: A 依赖于 B, B 依赖于 C
apt-get remove 删除B的同时,将删除A(很好理解,A依赖于B,B被删了,A也就无法正常运行了)

先说明下apt-get autoremove与aptitude remove是一样的效果的, 我们先了解下这两者的瓜葛

apt-get一开始并没有记录auto-install的信息,在apt(0.6.44.2exp1)此版本时(06年),apt-get增加了类似于aptitude的auto-install记录(/var/lib/apt/extended_states)。此后,aptitude在版本0.4.5.1(07年)转向使用apt-get的auto-install记录,而抛弃了自己原先的记录方式,再随后apt-get在版本0.7.7(07年)增加了autoremove的选项。

依赖关系是一个复杂而交错的链条,我们把举几个例子来看看它们的行为

1 以下图中, 绿色圆是为了满足依赖关系而apt-get或aptitude自动安装上的包
2 蓝色圆是管理员使用apt-get install 或 aptitude install
3 指定安装的包,简称为手动安装的包

例子1:
1. C 依赖于或推荐B软件包(apt-get和aptitude在安装软件时除了安装必要的依赖包,默认也会安装Recommends关系的包)
2. B 依赖于或推荐A, A被其他手动安装的包依赖
abc1.jpg

1 apt-get remove C             将删除C, 同时提示你用apt-get autoremove去清除B
2 apt-get autoremove C     将删除B, C
3 aptitude remove C           将删除B, C

我的理解: 删除C, 那么B这个包既是自动安装的,且没有其他手动安装的包依赖于它,
则可以判定B也是没必要的

例子2:
1. 在例子1的基础上, D 依赖于或者推荐B, 且D没有被其他手动安装的包依赖
这样的情况一般出现在用apt-get remove 某个手动安装的包之后.

abcd.jpg

apt-get remove C 将删除C, 同时提示你用apt-get autoremove去清除B,D apt-get autoremove C 将删除B, C, D aptitude remove C 将删除B, C, D
我的理解: 删除C, 那么B,D 这两个包既是自动安装的,且没有其他手动安装的包依赖于它们,
则可以判定B,D也是没必要的

例子3:
1. 在例子2的基础上, 有个手动安装的包E推荐D(既E Recommends D,手动安装E时,也会把D装上)

abcd4.jpg

1 apt-get remove C            将删除C, 同时提示你用apt-get autoremove去清除B,D
2 apt-get autoremove C     将删除B, C, D
3 aptitude remove C           将删除B, C, D

我的理解: 删除C, 那么B,D 这两个包既是自动安装的,且没有其他手动安装的包依赖于它们,
则可以判定B,D也是没必要的
虽然D被E Recommend, 但为啥是这么设计的, 我也没猜出开发人员的想法

例子4:
1. 在例子3的基础上, D变成依赖于B, E变成依赖于D

abcd1.jpg

1 apt-get remove C            将删除C
2 apt-get autoremove C     将删除C
3 aptitude remove C           将删除C

我的理解: 只删除C, 因为B被D依赖, D被E依赖, 间接来说,E不能没有B,D而正常运行,所以B,D被保留

例子5:
1. 在例子4的基础上, D变成推荐B, E依然依赖于D

abcd2.jpg

1 apt-get remove C            将删除C, 同时提示你用apt-get autoremove去清除B
2 apt-get autoremove C     将删除B, C
3 aptitude remove C           将删除B, C

我的理解: 删除C, 而B没有被其他手动安装的包直接依赖或者间接依赖(我指那些一层层depend on的关系), D被E依赖
所以B不是必要的,可以删除, 而D不能删除

离线

在此主题中在线的注册用户:0, 访客:1
[Bot] ClaudeBot

论坛底部