软件管理程序

Linux的软件安装分为源代码编译安装和打包安装。RPM是一种打包安装方式,是由 Red Hat 这家公司开发出来的,后来实在很好用,因此很多 distributions 就使用这个机制来作为软件安装的管理方式。包括 Fedora, CentOS, SuSE 等等知名的开发商都是用这咚咚

什么是 i386, i586, i686, noarch, x86_64

这是个很好玩的地方,由於 RPM 可以适用在不同的操作平台上,但是不同的平台配置的参数还是有所差异性! 并且,我们可以针对比较高阶的 CPU 来进行最佳化参数的配置,这样才能够使用高阶 CPU 所带来的硬件加速功能。 所以就有所谓的 i386, i586, i686, x86_64 与 noarch 等的文件名称出现了!

平台名称 适合平台说明
i386 几乎适用於所有的 x86 平台,不论是旧的 pentum 或者是新的 Intel Core 2 与 K8 系列的 CPU 等等,都可以正常的工作!那个 i 指的是 Intel 兼容的 CPU 的意思,至於 386 不用说,就是 CPU 的等级啦!
i586 就是针对 586 等级的计算机进行最佳化编译。那是哪些 CPU 呢?包括 pentum 第一代 MMX CPU, AMD 的 K5, K6 系列 CPU (socket 7 插脚) 等等的 CPU 都算是这个等级;
i686 在 pentun II 以后的 Intel 系列 CPU ,及 K7 以后等级的 CPU 都属於这个 686 等级! 由於目前市面上几乎仅剩 P-II 以后等级的硬件平台,因此很多 distributions 都直接释出这种等级的 RPM 文件。
x86_64 针对 64 位的 CPU 进行最佳化编译配置,包括 Intel 的 Core 2 以上等级 CPU ,以及 AMD 的 Athlon64 以后等级的 CPU ,都属於这一类型的硬件平台。
noarch 就是没有任何硬件等级上的限制。一般来说,这种类型的 RPM 文件,里面应该没有 binary program 存在, 较常出现的就是属於 shell script 方面的软件。

根据上面的说明,其实我们只要选择 i386 版本来安装在你的 x86 硬件上面就肯定没问题。但是如果强调效能的话, 还是选择搭配你的硬件的 RPM 文件吧!毕竟该软件才有针对你的 CPU 硬件平台进行过参数最佳化的编译嘛!

x86_64版本不仅需要硬件cpu是64位,Linux也要是64位的才行。

RPM 默认安装的路径

/etc 一些配置档放置的目录,例如 /etc/crontab
/usr/bin 一些可运行文件
/usr/lib 些程序使用的动态函式库
/usr/share/doc 一些基本的软件使用手册与说明档
/usr/share/man 一些 man page 文件

RPM 安装 (install)

因为安装软件是 root 的工作,因此你得要是 root 的身份才能够操作 rpm 这命令的。 用 rpm 来安装很简单啦!假设我要安装一个档名为 rp-pppoe-3.5-32.1.i386.rpm 的文件,那么我可以这样:

  1. [root@www ~]# rpm -i rp-pppoe-3.5-32.1.i386.rpm

不过,这样的参数其实无法显示安装的进度,所以,通常我们会这样下达安装命令:

  1. [root@www ~]# rpm -ivh package_name
  2. 选项与参数:
  3. -i install 的意思
  4. -v :察看更细部的安装资讯画面
  5. -h :以安装资讯列显示安装进度
  6.  
  7. 范例一:安装 rp-pppoe-3.5-32.1.i386.rpm
  8. [root@www ~]# rpm -ivh rp-pppoe-3.5-32.1.i386.rpm
  9. Preparing... ####################################### [100%]
  10. 1:rp-pppoe ####################################### [100%]
  11.  
  12. 范例二、一口气安装两个以上的软件时:
  13. [root@www ~]# rpm -ivh a.i386.rpm b.i386.rpm *.rpm
  14. # 后面直接接上许多的软件文件!
  15.  
  16. 范例三、直接由网络上面的某个文件安装,以网址来安装:
  17. [root@www ~]# rpm -ivh http://website.name/path/pkgname.rpm

另外,如果我们在安装的过程当中发现问题,或者已经知道会发生的问题, 而还是『执意』要安装这个软件时,可以使用如下的参数『强制』安装上去:

可下达的选项 代表意义
--nodeps

使用时机:当发生软件属性相依问题而无法安装,但你执意安装时

危险性: 软件会有相依性的原因是因为彼此会使用到对方的机制或功能,如果强制安装而不考虑软件的属性相依, 则可能会造成该软件的无法正常使用!

--replacefiles

使用时机: 如果在安装的过程当中出现了『某个文件已经被安装在你的系统上面』的资讯,又或许出现版本不合的信息 (confilcting files) 时,可以使用这个参数来直接覆盖文件。

危险性: 覆盖的动作是无法复原的!所以,你必须要很清楚的知道被覆盖的文件是真的可以被覆盖喔!否则会欲哭无泪!

--replacepkgs 使用时机: 重新安装某个已经安装过的软件!如果你要安装一堆 RPM 软件文件时,可以使用 rpm -ivh *.rpm ,但若某些软件已经安装过了, 此时系统会出现『某软件已安装』的资讯,导致无法继续安装。此时可使用这个选项来重复安装喔!
--force

使用时机:这个参数其实就是 --replacefiles 与 --replacepkgs 的综合体!

--test

使用时机: 想要测试一下该软件是否可以被安装到使用者的 Linux 环境当中,可找出是否有属性相依的问题。范例为:

rpm -ivh pkgname.i386.rpm --test

--justdb 使用时机: 由於 RPM 数据库破损或者是某些缘故产生错误时,可使用这个选项来升级软件在数据库内的相关资讯。
--nosignature 使用时机: 想要略过数码签章的检查时,可以使用这个选项。
--prefix 新路径 使用时机: 要将软件安装到其他非正规目录时。举例来说,你想要将某软件安装到 /usr/local 而非正规的 /bin, /etc 等目录, 就可以使用『 --prefix /usr/local 』来处理了。
--noscripts

使用时机:不想让该软件在安装过程中自行运行某些系统命令。

说明: RPM 的优点除了可以将文件放置到定位之外,还可以自动运行一些前置作业的命令,例如数据库的初始化。 如果你不想要让 RPM 帮你自动运行这一类型的命令,就加上他吧!

RPM 升级与升级 (upgrade/freshen)

使用 RPM 来升级真是太简单了!就以 -Uvh 或 -Fvh 来升级即可,而 -Uvh 与 -Fvh 可以用的选项与参数,跟 install 是一样的。不过, -U 与 -F 的意义还是不太一样的,基本的差别是这样的:

-Uvh 后面接的软件即使没有安装过,则系统将予以直接安装; 若后面接的软件有安装过旧版,则系统自动升级至新版;
-Fvh 如果后面接的软件并未安装到你的 Linux 系统上,则该软件不会被安装;亦即只有已安装至你 Linux 系统内的软件会被『升级』!

RPM 查询 (query)

RPM 在查询的时候,其实查询的地方是在 /var/lib/rpm/ 这个目录下的数据库文件啦!另外, RPM 也可以查询未安装的 RPM 文件内的资讯喔!那如何去查询呢? 我们先来谈谈可用的选项有哪些?

  1. [root@www ~]# rpm -qa <==已安装软件
  2. [root@www ~]# rpm -q[licdR] 已安装的软件名称 <==已安装软件
  3. [root@www ~]# rpm -qf 存在於系统上面的某个档名 <==已安装软件
  4. [root@www ~]# rpm -qp[licdR] 未安装的某个文件名称 <==查阅RPM文件
  5. 选项与参数:
  6. 查询已安装软件的资讯:
  7. -q :仅查询,后面接的软件名称是否有安装;
  8. -qa :列出所有的,已经安装在本机 Linux 系统上面的所有软件名称;
  9. -qi :列出该软件的详细资讯 (information),包含开发商、版本与说明等;
  10. -ql :列出该软件所有的文件与目录所在完整档名 (list);
  11. -qc :列出该软件的所有配置档 (找出在 /etc/ 底下的档名而已)
  12. -qd :列出该软件的所有说明档 (找出与 man 有关的文件而已)
  13. -qR :列出与该软件有关的相依软件所含的文件 (Required 的意思)
  14. -qf :由后面接的文件名称,找出该文件属於哪一个已安装的软件;
  15. 查询某个 RPM 文件内含有的资讯:
  16. -qp[icdlR]:注意 -qp 后面接的所有参数以上面的说明一致。但用途仅在於找出
  17. 某个 RPM 文件内的资讯,而非已安装的软件资讯!注意!

在查询的部分,所有的参数之前都需要加上 -q 才是所谓的查询!查询主要分为两部分, 一个是查已安装到系统上面的的软件资讯,这部份的资讯都是由 /var/lib/rpm/ 所提供。另一个则是查某个 rpm 文件内容, 等於是由 RPM 文件内找出一些要写入数据库内的资讯就是了,这部份就得要使用 -qp (p 是 package 的意思)。 那就来看看几个简单的范例吧!

  1. 范例一:找出你的 Linux 是否有安装 logrotate 这个软件?
  2. [root@www ~]# rpm -q logrotate
  3. logrotate-3.7.4-8
  4. [root@www ~]# rpm -q logrotating
  5. package logrotating is not installed
  6. # 注意到,系统会去找是否有安装后面接的软件名称。注意,
  7. # 不必要加上版本喔!至於显示的结果,一看就知道有没有安装啦!
  8.  
  9. 范例二:列出上题当中,属於该软件所提供的所有目录与文件:
  10. [root@www ~]# rpm -ql logrotate
  11. /etc/cron.daily/logrotate
  12. /etc/logrotate.conf
  13. ....(以下省略)....
  14. # 可以看出该软件到底提供了多少的文件与目录,也可以追踪软件的数据。
  15.  
  16. 范例三:列出 logrotate 这个软件的相关说明数据:
  17. [root@www ~]# rpm -qi logrotate
  18. Name : logrotate Relocations: (not relocatable)
  19. Version : 3.7.4 Vendor: CentOS
  20. Release : 8 Build Date: Sun 02 Dec 2007 08:38:06 AM CST
  21. Install Date: Sat 09 May 2009 11:59:05 PM CST Build Host: builder6
  22. Group : System Environment/Base Source RPM: logrotate-3.7.4-8.src.rpm
  23. Size : 53618 License: GPL
  24. Signature : DSA/SHA1, Sun 02 Dec 2007 09:10:01 AM CST, Key ID a8a447dce8562897
  25. Summary : Rotates, compresses, removes and mails system log files.
  26. Description :
  27. The logrotate utility is designed to simplify the administration of
  28. log files on a system which generates a lot of log files. Logrotate
  29. allows for the automatic rotation compression, removal and mailing of
  30. log files. Logrotate can be set to handle a log file daily, weekly,
  31. monthly or when the log file gets to a certain size. Normally,
  32. logrotate runs as a daily cron job.
  33.  
  34. Install the logrotate package if you need a utility to deal with the
  35. log files on your system.
  36. # 列出该软件的 information (资讯),里面的资讯可多著呢,包括了软件名称、
  37. # 版本、开发商、SRPM文件名称、打包次数、简单说明资讯、软件打包者、
  38. # 安装日期等等!如果想要详细的知道该软件的数据,用这个参数来了解一下
  39.  
  40. 范例四:分别仅找出 logrotate 的配置档与说明档
  41. [root@www ~]# rpm -qc logrotate
  42. [root@www ~]# rpm -qd logrotate
  43.  
  44. 范例五:若要成功安装 logrotate ,他还需要什么文件的帮忙?
  45. [root@www ~]# rpm -qR logrotate
  46. /bin/sh
  47. config(logrotate) = 3.7.4-8
  48. libc.so.6
  49. ....(以下省略)....
  50. # 由这里看起来,呵呵~还需要很多文件的支持才行喔!
  51.  
  52. 范例六:由上面的范例五,找出 /bin/sh 是那个软件提供的?
  53. [root@www ~]# rpm -qf /bin/sh
  54. bash-3.2-21.el5
  55. # 这个参数后面接的可是『文件』呐!不像前面都是接软件喔!
  56. # 这个功能在查询系统的某个文件属於哪一个软件所有的。
  57.  
  58. 范例七:假设我有下载一个 RPM 文件,想要知道该文件的需求文件,该如何?
  59. [root@www ~]# rpm -qpR filename.i386.rpm
  60. # 加上 -qpR ,找出该文件需求的数据!

RPM 反安装与重建数据库 (erase/rebuilddb)

反安装就是将软件卸载啦!要注意的是,『解安装的过程一定要由最上一级往下解除』,以 rp-pppoe 为例,这一个软件主要是依据 ppp 这个软件来安装的,所以当你要解除 ppp 的时候,就必须要先解除 rp-pppoe 才行!否则就会发生结构上的问题啦!这个可以由建筑物来说明, 如果你要拆除五、六楼,那么当然要由六楼拆起,否则先拆的是第五楼时,那么上面的楼层难道会悬空?

移除的选项很简单,就透过 -e 即可移除。不过,很常发生软件属性相依导致无法移除某些软件的问题! 我们以底下的例子来说明:

  1. # 1. 找出与 pam 有关的软件名称,并尝试移除 pam 这个软件:
  2. [root@www ~]# rpm -qa | grep pam
  3. pam-devel-0.99.6.2-3.27.el5
  4. pam_passwdqc-1.0.2-1.2.2
  5. pam_pkcs11-0.5.3-23
  6. pam_smb-1.1.7-7.2.1
  7. pam-0.99.6.2-3.27.el5
  8. pam_ccreds-3-5
  9. pam_krb5-2.2.14-1
  10. [root@www ~]# rpm -e pam
  11. error: Failed dependencies: <==这里提到的是相依性的问题
  12. libpam.so.0 is needed by (installed) coreutils-5.97-14.el5.i386
  13. libpam.so.0 is needed by (installed) libuser-0.54.7-2.el5.5.i386
  14. ....(以下省略)....
  15.  
  16. # 2. 若仅移除 pam-devel 这个之前范例安装上的软件呢?
  17. [root@www ~]# rpm -e pam-devel <==不会出现任何信息!
  18. [root@www ~]# rpm -q pam-devel
  19. package pam-devel is not installed

由於 RPM 文件常常会安装/移除/升级等,某些动作或许可能会导致 RPM 数据库 /var/lib/rpm/ 内的文件破损。果真如此的话,那你该如何是好?别担心,我们可以使用 --rebuilddb 这个选项来重建一下数据库喔! 作法如下:

  1. [root@www ~]# rpm --rebuilddb <==重建数据库

CentOS强烈建议使用yum来管理软件,且只使用CentOS推荐的软件,如果没有太大的需要,建议使用yum来安装软件,这样的安装可以最大的保证系统的稳定性。

YUM 线上升级机制

yum 是透过分析 RPM 的标头数据后, 根据各软件的相关性制作出属性相依时的解决方案,然后可以自动处理软件的相依属性问题,以解决软件安装或移除与升级的问题。

由於 distribution 必须要先释出软件,然后将软件放置於 yum 服务器上面,以提供用户端来要求安装与升级之用的。 因此我们想要使用 yum 的功能时,必须要先找到适合的 yum server 才行啊!

实际上当你第一次使用yum时,CentOS6以上版本优先安装了 fastestmirror,用以选择最快的yum服务器。

  • 查询功能:yum [list|info|search|provides|whatprovides] 参数

    1. [root@www ~]# yum [option] [查询工作项目] [相关参数]
    2. 选项与参数:
    3. [option]:主要的选项,包括有:
    4. -y :当 yum 要等待使用者输入时,这个选项可以自动提供 yes 的回应;
    5. --installroot=/some/path :将该软件安装在 /some/path 而不使用默认路径
    6. [查询工作项目] [相关参数]:这方面的参数有:
    7. search :搜寻某个软件名称或者是描述 (description) 的重要关键字;
    8. list :列出目前 yum 所管理的所有的软件名称与版本,有点类似 rpm -qa
    9. info :同上,不过有点类似 rpm -qai 的运行结果;
    10. provides:从文件去搜寻软件!类似 rpm -qf 的功能!
    11.  
    12. 范例一:搜寻磁盘阵列 (raid) 相关的软件有哪些?
    13. [root@www ~]# yum search raid
    14. ....(前面省略)....
    15. mdadm.i386 : mdadm controls Linux md devices (software RAID arrays)
    16. lvm2.i386 : Userland logical volume management tools
    17. ....(后面省略)....
    18. # 在冒号 (:) 左边的是软件名称,右边的则是在 RPM 内的 name 配置 (软件名)
    19. # 瞧!上面的结果,这不就是与 RAID 有关的软件吗?如果想了解 mdadm 的软件内容呢?
    20.  
    21. 范例二:找出 mdadm 这个软件的功能为何
    22. [root@www ~]# yum info mdadm
    23. Installed Packages <==这说明该软件是已经安装的了
    24. Name : mdadm <==这个软件的名称
    25. Arch : i386 <==这个软件的编译架构
    26. Version: 2.6.4 <==此软件的版本
    27. Release: 1.el5 <==释出的版本
    28. Size : 1.7 M <==此软件的文件总容量
    29. Repo : installed <==容器回报说已安装的
    30. Summary: mdadm controls Linux md devices (software RAID arrays)
    31. Description: <==看到否?这就是 rpm -qi 嘛!
    32. mdadm is used to create, manage, and monitor Linux MD (software RAID)
    33. devices. As such, it provides similar functionality to the raidtools
    34. package. However, mdadm is a single program, and it can perform
    35. almost all functions without a configuration file, though a configuration
    36. file can be used to help with some common tasks.
    37. # 不要跟我说,上面说些啥?自己找字典翻一翻吧!拜托拜托!
    38.  
    39. 范例三:列出 yum 服务器上面提供的所有软件名称
    40. [root@www ~]# yum list
    41. Installed Packages <==已安装软件
    42. Deployment_Guide-en-US.noarch 5.2-9.el5.centos installed
    43. Deployment_Guide-zh-CN.noarch 5.2-9.el5.centos installed
    44. Deployment_Guide-zh-TW.noarch 5.2-9.el5.centos installed
    45. ....(中间省略)....
    46. Available Packages <==还可以安装的其他软件
    47. Cluster_Administration-as-IN.noarch 5.2-1.el5.centos base
    48. Cluster_Administration-bn-IN.noarch 5.2-1.el5.centos base
    49. ....(底下省略)....
    50. # 上面提供的意义为:『 软件名称 版本 在那个容器内 』
    51.  
    52. 范例四:列出目前服务器上可供本机进行升级的软件有哪些?
    53. [root@www ~]# yum list updates <==一定要是 updates 喔!
    54. Updated Packages
    55. Deployment_Guide-en-US.noarch 5.2-11.el5.centos base
    56. Deployment_Guide-zh-CN.noarch 5.2-11.el5.centos base
    57. Deployment_Guide-zh-TW.noarch 5.2-11.el5.centos base
    58. ....(底下省略)....
    59. # 上面就列出在那个容器内可以提供升级的软件与版本!
    60.  
    61. 范例五:列出提供 passwd 这个文件的软件有哪些
    62. [root@www ~]# yum provides passwd
    63. passwd.i386 : The passwd utility for setting/changing passwords using PAM
    64. passwd.i386 : The passwd utility for setting/changing passwords using PAM
    65. # 找到啦!就是上面的这个软件提供了 passwd 这个程序!

  • 安装/升级功能:yum [install|update] 软件
    1. [root@www ~]# yum [option] [查询工作项目] [相关参数]
    2. 选项与参数:
    3. install :后面接要安装的软件!
    4. update :后面接要升级的软件,若要整个系统都升级,就直接 update 即可
    5.  
    6. 范例一:将前一个练习找到的未安装的 pam-devel 安装起来
    7. [root@www ~]# yum install pam-devel
    8. Setting up Install Process
    9. Parsing package install arguments
    10. Resolving Dependencies <==先检查软件的属性相依问题
    11. --> Running transaction check
    12. ---> Package pam-devel.i386 0:0.99.6.2-4.el5 set to be updated
    13. --> Processing Dependency: pam = 0.99.6.2-4.el5 for package: pam-devel
    14. --> Running transaction check
    15. ---> Package pam.i386 0:0.99.6.2-4.el5 set to be updated
    16. filelists.xml.gz 100% |=========================| 1.6 MB 00:05
    17. filelists.xml.gz 100% |=========================| 138 kB 00:00
    18. -> Finished Dependency Resolution
    19.  
    20. Dependencies Resolved
    21.  
    22. =============================================================================
    23. Package Arch Version Repository Size
    24. =============================================================================
    25. Installing:
    26. pam-devel i386 0.99.6.2-4.el5 base 186 k
    27. Updating:
    28. pam i386 0.99.6.2-4.el5 base 965 k
    29.  
    30. Transaction Summary
    31. =============================================================================
    32. Install 1 Package(s) <==结果发现要安装此软件需要升级另一个相依的软件
    33. Update 1 Package(s)
    34. Remove 0 Package(s)
    35.  
    36. Total download size: 1.1 M
    37. Is this ok [y/N]: y <==确定要安装!
    38. Downloading Packages: <==先下载!
    39. (1/2): pam-0.99.6.2-4.el5 100% |=========================| 965 kB 00:05
    40. (2/2): pam-devel-0.99.6.2 100% |=========================| 186 kB 00:01
    41. Running rpm_check_debug
    42. Running Transaction Test
    43. Finished Transaction Test
    44. Transaction Test Succeeded
    45. Running Transaction <==开始安装!
    46. Updating : pam ######################### [1/3]
    47. Installing: pam-devel ######################### [2/3]
    48. Cleanup : pam ######################### [3/3]
    49.  
    50. Installed: pam-devel.i386 0:0.99.6.2-4.el5
    51. Updated: pam.i386 0:0.99.6.2-4.el5
    52. Complete!

  • 移除功能:yum [remove] 软件
    1. [root@www ~]# yum remove pam-devel
    2. Setting up Remove Process
    3. Resolving Dependencies <==同样的,先解决属性相依的问题
    4. --> Running transaction check
    5. ---> Package pam-devel.i386 0:0.99.6.2-4.el5 set to be erased
    6. --> Finished Dependency Resolution
    7.  
    8. Dependencies Resolved
    9.  
    10. =============================================================================
    11. Package Arch Version Repository Size
    12. =============================================================================
    13. Removing:
    14. pam-devel i386 0.99.6.2-4.el5 installed 495 k
    15.  
    16. Transaction Summary
    17. =============================================================================
    18. Install 0 Package(s)
    19. Update 0 Package(s)
    20. Remove 1 Package(s) <==还好,并没有属性相依的问题,单纯移除一个软件
    21.  
    22. Is this ok [y/N]: y
    23. Downloading Packages:
    24. Running rpm_check_debug
    25. Running Transaction Test
    26. Finished Transaction Test
    27. Transaction Test Succeeded
    28. Running Transaction
    29. Erasing : pam-devel ######################### [1/1]
    30.  
    31. Removed: pam-devel.i386 0:0.99.6.2-4.el5
    32. Complete!

全系统自动升级

我们可以手动选择是否需要升级,那能不能让系统自动升级,让我们的系统随时保持在最新的状态呢? 当然可以啊!透过『 yum -y update 』来自动升级,那个 -y 很重要,因为可以自动回答 yes 来开始下载与安装! 然后再透过 crontab 的功能来处理即可!假设我每天在台湾时间 3:00am 网络频宽比较轻松的时候进行升级, 你可以这样做的:

  1. [root@www ~]# vim /etc/crontab
  2. ....(前面省略并保留配置值)....
  3. 0 3 * * * root /usr/bin/yum -y update

从此你的系统就会自动升级啦!很棒吧!此外,你还是得要分析登录档与收集 root 的信件的, 因为如果升级的是核心软件 (kernel),那么你还是得要重新启动才会让安装的软件顺利运行的! 所以还是得分析登录档,若有新核心安装,就重新启动,否则就让系统自动维持在最新较安全的环境吧! 真是轻松愉快的管理啊!

CentOS学习笔记—软件管理程序RPM、YUM的更多相关文章

  1. CentOS学习笔记--Tomcat安装

    Tomcat安装 通常情况下我们要配置Tomcat是很容易的一件事情,但是如果您要架设多用户多服务的Java虚拟主机就不那么容易了.其中最大的一个问题就是Tomcat执行权限.普通方式配置的Tomca ...

  2. CentOS学习笔记--SCSI 设备热插拔

    CentOS学习笔记--SCSI 设备热插拔 处于运行中的服务器,因业务要求也许不允许重启机器,而新添加的SCSI设备(主要是硬盘)如何实现热插拔呢? 首先需要查看一下设备: #cat /proc/s ...

  3. CentOS学习笔记--MySQL安装

    MySQL安装 Linux中使用最广泛的数据库就是MySQL,使用在线yum的方式安装的版本落后MySQL网站好几个小版本,本节亲自测试安装新版的MySQL. 测试机器环境: VMware Works ...

  4. Linux学习-RPM 软件管理程序: rpm

    RPM 默认安装的路径 一般来说,RPM 类型的文件在安装的时候,会先去读取文件内记载的设定参数内容,然后将该数据用来比对 Linux 系统的环境,以找出是否有属性相依的软件尚未安装的问题. 若环境检 ...

  5. Linux基础管理篇,软件管理程序,yum与rpm

    一.RPM 一般来说,rpm类型的文件在安装的时候,会检测当前的系统是否满足当前软件需要的环境.若符合,则该软件就会被安装,并且会把软件的相关信息写入/var/lib/rpm/目录下的数据库文件中. ...

  6. 【9-6】Centos学习笔记

    linux文件系统结构 常用技巧 快捷键启动终端 su命令,使用超级用户登陆 visudo :编辑用户权限 tar xf 文件名:解压文件 Vim编辑器 Tips yum包管理:Yum(全称为 Yel ...

  7. CentOS 学习笔记

    整理基础的CentOS常用命令 http://os.51cto.com/art/201003/190801.htm 在Hyper-V中的CentOS虚拟机中使用网络 http://blog.earth ...

  8. CentOS学习笔记--目录配置

      Linux目录配置 类Linux的目录看上去差不多,为什么? 以下内容节选自l 鸟哥的 Linux 私房菜 -- 基础学习篇目录  第六章.Linux 的文件权限与目录配置 3. Linux目录配 ...

  9. CentOS学习笔记--系统服务 (daemons)

    系统服务 (daemons) 系统为了某些功能必须要提供一些服务 (不论是系统本身还是网络方面),这个服务就称为 service . 但是 service 的提供总是需要程序的运行吧!否则如何运行呢? ...

随机推荐

  1. android之location02

    package com.example.mars_3300_location02; import java.net.ContentHandler; import java.util.List; imp ...

  2. (Delphi) Windows 32 API程序设计目录

    这里所有程序均使用Delphi调用Windows 32 API方式实现,并不是使用VCL已经封装好的类实现的! (一)第一个窗口程序 01 创建第一个窗口.

  3. python抓取百度百科点赞数等动态数据

    利用selenium 模拟浏览器打开页面,加载后抓取数据 #!/usr/bin/env python # coding=utf-8 import urllib2 import re from bs4 ...

  4. Android应用框架浅析

    http://blog.csdn.net/yanbober/article/category/3206943 Android应用层View绘制流程与源码分析   http://blog.csdn.ne ...

  5. vmware虚拟机挂起后无法再恢复(转)

    之前一直使用vmware调试程序,但有一天它被挂起后,就一直无法恢复. 提示: 无法获取该配置文件上的排他锁 另一个VMware进程可能正在使用此配置文件. 后来在google里查了一下,发现其实是一 ...

  6. TestNG:org.openqa.selenium.firefox.NotConnectedException: Unable to connect

    http://blog.sina.com.cn/s/blog_68f262210102vgzj.html 今天在尝试着用TestNG写一下自动化测试用例,以前也写过,不过用的是经常封装的代码,现在完全 ...

  7. 微信红包签名算法 C#代码实现

    string stringA = "appid=wxd930ea5d5a258f4f&body=test&device_info=1000&mch_id=100001 ...

  8. FreeMarker页面中获得contextPath

    要在ftl页面中使用contextPath,需要在viewResolver中做如下配置(红色部分): <bean id="viewResolver" class=" ...

  9. 范式(Oracle)

    三范式 ------------数据库的三范式-------------- (1).要有主键,列不可分 (2).不能存在部分依赖:当有多个字段联合起来作为主键的时候,不是主键的字段不能部分依赖于主键中 ...

  10. python3 AttributeError: 'NoneType' object has no attribute 'split'

    from wsgiref.simple_server import make_server def RunServer(environ, start_response): start_response ...