Linux 学习笔记(5-6)

五、 目录结构
目录结构及主要内容" / "根目录部分有以下子目录:
◆ /usr 目录包含所有的命令、程序库、文档和其它文件。这些文件在正常操作中不会被改变的。这个
目录也包含你的 Linux 发行版本的主要的应用程序,譬如, Netscape 。
◆ /var 目录包含在正常操作中被改变的文件:假脱机文件、记录文件、加锁文件、临时文件和页格式
化文件等。这个目录中存放着那些不断在扩充着的东西,为了保持 /usr 的相对稳定,那些经常被修改的
目录可以放在这个目录下,实际上许多系统管理员都是这样干的。顺带说一下系统的日志文件就在
/var/log 目录中。 ◆ /home 目录包含用户的文件:参数设置文件、个性化文件、文档、数据、 EMAIL 、缓存数据等。这个
目录在系统省级时应该保留。
◆ /proc 目录整个包含虚幻的文件。它们实际上并不存在磁盘上,也不占用任何空间。(用 ls -- l 可以
显示它们的大小)当查看这些文件时,实际上是在访问存在内存中的信息,这些信息用于访问系统
◆ /bin 系统启动时需要的执行文件(二进制),这些文件可以被普通用户使用。
◆ /sbin 系统执行文件(二进制),这些文件不打算被普通用户使用。(普通用户仍然可以使用它们,但
要指定目录。)
◆ /etc 操作系统的配置文件目录。
◆ /root 系统管理员(也叫超级用户或根用户)的 Home 目录。
◆ /dev 设备文件目录。 LINUX 下设备被当成文件,这样一来硬件被抽象化,便于读写、网络共享以及
需要临时装载到文件系统中。正常情况下,设备会有一个独立的子目 录。这些设备的内容会出现在独
立的子目录下。 LINUX 没有所谓的驱动符。
◆ /lib 根文件系统目录下程序和核心模块的共享库。
◆ /boot 用于自举加载程序( LILO 或 GRUB )的文件。当计算机启动时(如果有多个操作系统,有可能
允许你选择启动哪一个操作系统),这些文件首先被装载。这个目录也会包含 LINUX 核(压缩文件 vmlinuz ),
但 LINUX 核也可以存在别处,只要配置 LILO 并且 LILO 知道 LINUX 核在哪儿。
◆ /opt 可选的应用程序,譬如, REDHAT 5.2 下的 KDE ( REDHAT 6.0 下, KDE 放在其它的 XWINDOWS 应
用程序中,主执行程序在 /usr/bin 目录下)
◆ /tmp 临时文件。该目录会被自动清理干净。
◆ /lost+found 在文件系统修复时恢复的文件
◆ /usr 目录下比较重要的部分有:
◆ /usr/X11R6 X-WINDOWS 系统( version 11, release 6)
◆ /usr/X11 同 /usr/X11R6 ( /usr/X11R6 的符号连接)
◆ /usr/X11R6/bin 大量的小 X-WINDOWS 应用程序(也可能是一些在其它子目录下大执行文件的符号连
接)。
◆ /usr/doc LINUX 的文档资料(在更新的系统中,这个目录移到 /usr/share/doc )。
◆ /usr/share 独立与你计算机结构的数据,譬如,字典中的词。
◆ /usr/bin 和 /usr/sbin 类似与" / "根目录下对应的目录( /bin 和 /sbin ),但不用于基本的启动(譬如,
在紧急维护中)。大多数命令在这个目录下。
◆ /usr/local 本地管理员安装的应用程序(也可能每个应用程序有单独的子目录)。在" main "安装后,
这个目录可能是空的。这个目录下的内容在重安装或升级操作系统后应该存在。
◆ /usr/local/bin 可能是用户安装的小的应用程序,和一些在 /usr/local 目录下大应用程序的符号连接。
◆ /proc 目录的内容:
◆ /proc/cpuinfo 关于处理器的信息,如类型、厂家、型号和性能等。
◆ /proc/devices 当前运行内核所配置的所有设备清单。
◆ /proc/dma 当前正在使用的 DMA 通道。 /proc/filesystems 当前运行内核所配置的文件系统。
◆ /proc/interrupts 正在使用的中断,和曾经有多少个中断。
◆ /proc/ioports 当前正在使用的 I/O 端口。
举例,使用下面的命令能读出系统的 CPU 信息。
cat /proc/cpuinfo
/bin
bin 是 binary 的缩写。这个目录沿袭了 UNIX 系统的结构,存放着使用者最经常使
用的命令。例如 cp 、 ls 、 cat ,等等。
/boot
这里存放的是启动 Linux 时使用的一些核心文件。 /dev
dev 是 device (设备)的缩写。这个目录下是所有 Linux 的外部设备,其功能类似
DOS 下的 .sys 和 Win 下的 .vxd 。在 Linux 中设备和文件是用同种方法访问的。例如:
/dev/hda 代表第一个物理 IDE 硬盘。
/etc
这个目录用来存放系统管理所需要的配置文件和子目录。
/home
用户的主目录,比如说有个用户叫 wang ,那他的主目录就是 /home/wang 也可以
用 ~wang 表示。
/lib
这个目录里存放着系统最基本的动态链接共享库,其作用类似于 Windows 里的 .dll
文件。几乎所有的应用程序都须要用到这些共享库。
/lost+found
这个目录平时是空的,当系统不正常关机后,这里就成了一些无家可归的文件的
避难所。对了,有点类似于 DOS 下的 .chk 文件。
/mnt
这个目录是空的,系统提供这个目录是让用户临时挂载别的文件系统。
/proc
这个目录是一个虚拟的目录,它是系统内存的映射,我们可以通过直接访问这个
目录来获取系统信息。也就是说,这个目录的内容不在硬盘上而是在内存里。
/root
系统管理员(也叫超级用户)的主目录。作为系统的拥有者,总要有些特权啊!
比如单独拥有一个目录。
/sbin
s 就是 Super User 的意思,也就是说这里存放的是系统管理员使用的管理程序。
/tmp
这个目录不用说,一定是用来存放一些临时文件的地方了。
/usr
这是最庞大的目录,我们要用到的应用程序和文件几乎都存放在这个目录下。其
中包含以下子目录;
/usr/X11R6
存放 X-Window 的目录;
/usr/bin
存放着许多应用程序;
/usr/sbin
给超级用户使用的一些管理程序就放在这里;
/usr/doc
这是 Linux 文档的大本营;
/usr/include
Linux 下开发和编译应用程序需要的头文件,在这里查找;
/usr/lib
存放一些常用的动态链接共享库和静态档案库;
/usr/local
这是提供给一般用户的 /usr 目录,在这里安装软件最适合;
/usr/man
man 在 Linux 中是帮助的同义词,这里就是帮助文档的存放目录;
/usr/src
Linux 开放的源代码就存在这个目录,爱好者们别放过哦!
/var
这个目录中存放着那些不断在扩充着的东西,为了保持 /usr 的相对稳定,那些经
常被修改的目录可以放在这个目录下,实际上许多系统管理员都是这样干的。顺
带说一下系统的日志文件就在 /var/log 目录中。
总结来说:
◆用户应该将文件存在 /home/user_login_name 目录下 ( 及其子目录下 ) 。
◆本地管理员大多数情况下将额外的软件安装在 /usr/local 目录下并符号连接在 /usr/local/bin 下的主执
行程序。
◆系统的所有设置在 /etc 目录下。
◆不要修改根目录(" / ")或 /usr 目录下的任何内容,除非真的清楚要做什么。这些目录最好和 LINUX
发布时保持一致。 ◆大多数工具和应用程序安装在目录: /bin, /usr/sbin, /sbin, /usr/x11/bin,/usr/local/bin 。
◆所有的文件在单一的目录树下。没有所谓的"驱动符"。
六、 软件安装
RPM
RPM 软件的安装、删除、更新只有 root 权限才能使用;对于查询功能任何用户都可以操作;如果普通
用户拥有安装目录的权限,也可以进行安装。
初始化 rpm 数据库
通过 rpm 命令查询一个 rpm 包是否安装了,也是要通过 rpm 数据库来完成的;所以我们要经常用下面
的两个命令来初始化 rpm 数据库;
root@localhost beinan# rpm --initdb
root@localhost beinan# rpm --rebuilddb 注:这个要花好长时间;
注:这两个参数是极为有用,有时 rpm 系统出了问题,不能安装和查询,大多是这里出了问题;
/var/lib/rpm 目录下的数据库记录所有软件的升级需求,记录已经安装的所有软件,数字证书记录等,这
个目录下的文件非常重要。
RPM 软件包管理的查询功能:
命令格式
rpm {-q|--query} select-options query-options
RPM 的查询功能是极为强大,是极为重要的功能之一;举几个常用的例子,更为详细的具体的,请参考
#man rpm
1 、查询系统已安装的软件;
语法:rpm -q 软件名
举例:
root@localhost beinan# rpm --q gaim
gaim-1.3.0-1.fc4
-q 就是 --query ,中文意思是"问",此命令表示的是,是不是系统安装了 gaim ;如果已安装会有
信息输出;如果没有安装,会输出 gaim 没有安装的信息;查看系统中所有已经安装的包,要加 -a 参
数;
root@localhost RPMS# rpm -qa
如果分页查看,再加一个管道 |和 more 命令;
root@localhost RPMS# rpm -qa |more
在所有已经安装的软件包中查找某个软件,比如说 gaim ;可以用 grep 抽取出来;
root@localhost RPMS# rpm -qa |grep gaim
上面这条的功能和 rpm -q gaim 输出的结果是一样的;
等 37448
2 、查询一个已经安装的文件属于哪个软件包;
语法 rpm -qf 文件名 注:文件名所在的绝对路径要指出举例:
root@localhost RPMS# rpm -qf /usr/lib/libacl.la
libacl-devel-2.2.23-8
3 、查询已安装软件包都安装到何处;
语法:rpm -ql 软件名 或 rpm rpmquery -ql 软件名 举例:
root@localhost RPMS# rpm -ql lynx
root@localhost RPMS# rpmquery -ql lynx
4 、查询一个已安装软件包的信息
语法格式: rpm -qi 软件名
举例:
root@localhost RPMS# rpm -qi lynx
5 、查看一下已安装软件的配置文件;
语法格式:rpm -qc 软件名
举例:
root@localhost RPMS# rpm -qc lynx
6 、查看一个已经安装软件的文档安装位置:
语法格式: rpm -qd 软件名
举例:
root@localhost RPMS# rpm -qd lynx
7 、查看一下已安装软件所依赖的软件包及文件;
语法格式: rpm -qR 软件名
举例:
root@localhost beinan# rpm -qR rpm-python
查询已安装软件的总结:对于一个软件包已经安装,我们可以把一系列的参数组合起来用;比如 rpm
-qil ;比如:
root@localhost RPMS# rpm -qil lynx
对已安装软件包查询的一点补充;
root@localhost RPMS# updatedb
root@localhost RPMS# locate 软件名或文件名
通过 updatedb,我们可以用 locate 来查询一些软件安装到哪里了;系统初次安装时要执行 updatedb ,
每隔一段时间也要执行一次;以保持已安装软件库最新;updatedb 是 slocate 软件包所有;如果您没
有这个命令,就得安装 slocate ;举例:
root@localhost RPMS# locate gaim
对于未安装的软件包的查看:
查看的前提是您有一个.rpm 的文件,也就是说对既有软件 file.rpm 的查看等;
1 、查看一个软件包的用途、版本等信息;
语法: rpm -qpi file.rpm
举例:
root@localhost RPMS# rpm -qpi lynx-2.8.5-23.i386.rpm
2 、查看一件软件包所包含的文件;
语法: rpm -qpl file.rpm
举例:
root@localhost RPMS# rpm -qpl lynx-2.8.5-23.i386.rpm 3 、查看软件包的文档所在的位置;
语法: rpm -qpd file.rpm
举例:
root@localhost RPMS# rpm -qpd lynx-2.8.5-23.i386.rpm
4 、查看一个软件包的配置文件;
语法: rpm -qpc file.rpm
举例:
root@localhost RPMS# rpm -qpc lynx-2.8.5-23.i386.rpm
5 、查看一个软件包的依赖关系
语法: rpm -qpR file.rpm
举例:
root@localhost archives# rpm -qpR yumex_0.42-3.0.fc4_noarch.rpm
/bin/bash
/usr/bin/python
config(yumex) = 0.42-3.0.fc4
pygtk2
pygtk2-libglade
rpmlib(CompressedFileNames) <= 3.0.4-1
rpmlib(PayloadFilesHavePrefix) <= 4.0-1
usermode
yum >= 2.3.2
软件包的安装、升级、删除等;
1 、安装和升级一个 rpm 包;
root@localhost beinan#rpm -vih file.rpm 注:这个是用来安装一个新的 rpm 包;
root@localhost beinan#rpm -Uvh file.rpm 注:这是用来升级一个 rpm 包;
如果有依赖关系的,请解决依赖关系,其实软件包管理器能很好的解决依赖关系,请看前面的软件包管理器
的介绍;如果您在软件包管理器中也找不到依赖关系的包;那只能通过编译他所依赖的包来解决依赖关系,
或者强制安装;语法结构:
root@localhost beinan# rpm -ivh file.rpm --nodeps --force
root@localhost beinan# rpm -Uvh file.rpm --nodeps --force
更多的参数,请查看 man rpm 举例应用:
root@localhost RPMS# rpm -ivh lynx-2.8.5-23.i386.rpm
Preparing... ########################################### 100%
1:lynx ########################################### 100%
root@localhost RPMS# rpm -ivh --replacepkgs lynx-2.8.5-23.i386.rpm
Preparing... ########################################### 100%
1:lynx ########################################### 100%
注: --replacepkgs 参数是以已安装的软件再安装一次;有时没有太大的必要;测试安装参数 --test ,
用来检查依赖关系;并不是真正的安装;
root@localhost RPMS# rpm -ivh --test gaim-1.3.0-1.fc4.i386.rpm
Preparing... ########################################### 100% 由新版本降级为旧版本,要加 --oldpackage 参数;
root@localhost RPMS# rpm -qa gaim
gaim-1.5.0-1.fc4
root@localhost RPMS# rpm -Uvh --oldpackage gaim-1.3.0-1.fc4.i386.rpm
Preparing... ########################################### 100%
1:gaim ########################################### 100%
root@localhost RPMS# rpm -qa gaim
gaim-1.3.0-1.fc4
为软件包指定安装目录:要加 -relocate 参数;下面的举例是把 gaim-1.3.0-1.fc4.i386.rpm 指定安装在
/opt/gaim 目录中;
root@localhost RPMS# rpm -ivh --relocate /=/opt/gaim gaim-1.3.0-1.fc4.i386.rpm
Preparing... ########################################### 100%
1:gaim ########################################### 100%
root@localhost RPMS# ls /opt/
gaim
为软件包指定安装目录:要加 -relocate 参数;下面的举例是把 lynx-2.8.5-23.i386.rpm 指定安装在
/opt/lynx 目录中;
root@localhost RPMS# rpm -ivh --relocate /=/opt/lynx --badreloc lynx-2.8.5-23.i386.rpm
Preparing... ########################################### 100%
1:lynx ########################################### 100%
我们安装在指定目录中的程序如何调用呢?一般执行程序,都放在安装目录的 bin 或者 sbin 目录中;看下
面的例子;如果有错误输出,就做相应的链接,用 ln -s ;
root@localhost RPMS# /opt/lynx/usr/bin/lynx
Configuration file /etc/lynx.cfg is not available.
root@localhost RPMS# ln -s /opt/lynx/etc/lynx.cfg /etc/lynx.cfg
root@localhost RPMS# /opt/lynx/usr/bin/lynx www.linuxsir.org
RPM 管理包管理器支持网络安装和查询;
比如我们想通过 Fedora Core 4.0 的一个镜像查询、安装软件包;地址:
http://mirrors.kernel.org/fedora/core/4/i386/os/Fedora/RPMS/ 举例:命令格式:
rpm 参数 rpm 包文件的 http 或者 ftp 的地址

rpm -qpi http://mirrors.kernel.org/fedora/core/4/i386/os/

Fedora/RPMS/gaim-1.3.0-1.fc4.i386.rpm

rpm -ivh http://mirrors.kernel.org/fedora/core/4/i386/os/

Fedora/RPMS/gaim-1.3.0-1.fc4.i386.rpm
2 、删除一个 rpm 包;
首先您要学会查询 rpm 包 ;请看前面的说明; root@localhost beinan#rpm -e 软件包名 举例:我想
移除 lynx 包,完整的操作应该是:
root@localhost RPMS# rpm -e lynx
如果有依赖关系,您也可以用--nodeps 忽略依赖的检查来删除。但尽可能不要这么做,最好用软件包管理
器 systerm-config-packages 来删除或者添加软件;
root@localhost beinan# rpm -e lynx --nodeps
RPM 验证与数字证书:
导入签名: root@localhost RPMS# rpm --import 签名文件 举例:
root@localhost fc40# rpm --import RPM-GPG-KEY
root@localhost fc40# rpm --import RPM-GPG-KEY-fedora
RPM 验证作用是使用/var/lib/rpm 下面的数据库内容来比较目前 linux 系统的环境下的所有软件文件,也就
是说当你有数据不小心丢失,或者不小心修改到某个软件的文件内容,就用这个简单的方法验证一下原本的
文件系统
#rpm --Va
列出目前系统上面所有可能被改动过的文件
rpm 软件包抽取文件;
命令格式: rpm2cpio file.rpm |cpio -div
举例:
root@localhost RPMS# rpm2cpio gaim-1.3.0-1.fc4.i386.rpm |cpio -div
抽取出来的文件就在当用操作目录中的 usr 和 etc 中;其实这样抽到文件不如指定安装目录来安装软件来
的方便;也一样可以抽出文件;为软件包指定安装目录:要加 -relocate 参数;下面的举例是把
gaim-1.3.0-1.fc4.i386.rpm 指定安装在 /opt/gaim 目录中;
root@localhost RPMS# rpm -ivh --relocate /=/opt/gaim gaim-1.3.0-1.fc4.i386.rpm
Preparing... ########################################### 100%
1:gaim ########################################### 100%
root@localhost RPMS# ls /opt/
gaim
这样也能一目了然;gaim 的所有文件都是安装在 /opt/gaim 中,我们只是把 gaim 目录备份一下,然后卸
掉 gaim;这样其实也算提取文件的一点用法;
RPM 的配置文件;
RPM 包管理,的配置文件是 rpmrc ,我们可以在自己的系统中找到;比如 Fedora Core 4.0 中的 rpmrc 文
件位于;
root@localhost RPMS# locate rpmrc
/usr/lib/rpm/rpmrc
/usr/lib/rpm/redhat/rpmrc
我们可以通过 rpm --showrc 查看;具体的还得我们自己来学习。呵。。。不要问我,我也不懂;只要您
看了这篇文章,认为对您有用,您的水平就和我差不多;咱们水平是一样的,所以我不能帮助您了;请
理解。

相关推荐
ClouGence5 小时前
Oracle CDC 架构优化:从主库直连到 DataGuard 备库同步
数据库·后端·oracle
用户9718356334666 小时前
银河麒麟 KY10 申威(SW64) 安装 nginx-1.16.1-2.p01.ky10.sw_64.rpm 详细步骤
linux
猪脚踏浪7 小时前
linux 拷贝文件或目录到指定的位置
linux
无响应de神7 小时前
三、用户与权限管理
数据库·mysql
大树881 天前
金刚石散热越强,管路越先见顶
大数据·运维·服务器·人工智能·ai
摇滚侠1 天前
Linux CentOS7 rpm 安装 MySQL 5.7
linux·运维·mysql
bush41 天前
嵌入式linux学习记录十四、术语
linux·嵌入式
载数而行5201 天前
Linux 11 动态监控指令top
linux
小宇宙Zz1 天前
Maven依赖冲突
java·服务器·maven
麦聪聊数据1 天前
数据服务化时代:企业数据能力输出的核心路径
数据库