十二月
21
2016

笔记007 rsync 命令比较文件但不同步

Linux 中同步文件经常用到 rsync 命令,用来保证两个地方的文件的一致性。系统会自动进行对比,保证两边的文件是一样的。 在使用这个命令的时候,还有的一个情况,就是想要先了解哪些文件将会被同步,避免多人进行这类操作时,导致了错误的文件也被同步过去。 Hy369 又是数次折腾过这个问题,这次终于痛定思痛,要把他记录下来了!! 只对比需要同步的文件,而不进行实质性的同步,只需要对 rsync 命令添加额外的参数就可以了: rsync -avzn -P 源地址 目标地址 rsync -avz -P --list-only 源地址 目标地址 额外的参数可以是 -n 也可以是 --list-only,效果相同,只是后者显示的信息更加详尽。
九月
08
2015

笔记006 CentOS编译安装mysql报error: No curses/termcap library found错误

系统信息 CentOS 6.3 Mysql 5.1.51 错误信息 error: No curses/termcap library found 详细描述 CentOS下编译安装mysql时,在执行configure的时候报出了上面的错误信息。网上查询资料以后,发现是缺少ncurses安装包。 解决方案 下载安装相应软件包即可 一、如果你的系统是RedHat系列 这也就是我的CentOS解决的办法。 yum list|grep ncurses yum -y install ncurses-devel yum install ncurses-devel 二、如果你的系统是Ubuntu或Debian: apt-cache search ncurses apt-get install libncurses5-dev
九月
06
2015

笔记005 RRM软件管理程序

RPM 默认的安装路径 一般来说,RPM 类型的文件在安装的时候,会先去读取文件内记载的配置参数内容,然后将该数据用来比对 Linux 系统的环境,以找出是否有属性相依的软件尚未安装的问题。 例如 Openssh 依赖于 Openssl 这个加密软件,所以得先安装 openssl 才能装 openssh。如果环境中没有 openssl , 你就无法安装 openssh。 若环境检查合格,则 RPM 文件就会开始安装到 Linux 系统上,安装完毕以后,软件相关的资讯信息会写入到/var/lib/rpm/目录下的数据库文件中。/var/lib/rpm/这个目录很重要,未来任何软件的升级需求、版本比较都是来自于这个数据库,如果想要查询已经安装的软件,也是从这里进行相应的查询。 软件内相应文件的安装位置如下: /etc                        一些配置档放置的目录,例如 /etc/crontab /usr/bin                  一些可运行文件 /usr/lib                   一些程序使用的动态函式库 /usr/share/doc       一些基本的软件使用手册与说明档 /usr/share/man      一些 man page 文件 RPM 安装 注意,安装需要root权限。 如果要安装一个文档名为rp-pppoe-3.5-32.1.i386.rpm的文件,最简单的命令可以是: [root@www ~]# rpm -i rp-pppoe-3.5-32.1.i386.rpm 不过这样的安装并不会显示相应的进度信息,为了方便查看安装状态,可以这样写: [root@www ~]# rpm -ivh package_name 选项与参数: -i :install 的意思 -v :察看更细部的安装资讯画面 -h :以安装资讯列显示安装进度 范例一:安装 rp-pppoe-3.5-32.1.i386.rpm [root@www ~]# rpm -ivh rp-pppoe-3.5-32.1.i386.rpm Preparing... ####################################### [100%] 1:rp-pppoe ####################################### [100%] 范例二、一口气安装两个以上的软件时: [root@www ~]# rpm -ivh a.i386.rpm b.i386.rpm *.rpm # 后面直接接上许多的软件文件! 范例三、直接由网络上面的某个文件安装,以网址来安装: [root@www ~]# rpm -ivh http://website.name/path/pkgname.rpm 其它的安装参数如下: RPM 升级 使用 RPM 来升级真是太简单了!就以 -Uvh 或 -Fvh 来升级即可,而 -Uvh 与 -Fvh 可以用的选项与参数,跟 install 是一样的。不过, -U 与 -F 的意义还是不太一样的,基本的差别是这样的: -Uvh 后面接的软件即使没有安装过,则系统将予以直接安装; 若后面接的软件有安装过旧版,则系统自动升级至新版; -Fvh 如果后面接的软件并未安装到你的 Linux 系统上,则该软件不会被安装;亦即只有已安装至你 Linux 系统内的软件会被『升级』! 由上面的说明来看,如果你想要大量的升级系统旧版本的软件时,使用 -Fvh 则是比较好的作法,因为没有安装的软件才不会被不小心安装进系统中。但是需要注意的是,如果你使用的是 -Fvh ,偏偏你的机器上尚无这一个软件,那么很抱歉,该软件并不会被安装在你的 Linux 主机上面,所以请重新以 ivh 来安装吧! RPM 查询 RPM 在查询的时候,其实查询的地方是在 /var/lib/rpm/ 这个目录下的数据库文件啦!另外, RPM 也可以查询未安装的 RPM 文件内的资讯喔!那如何去查询呢? 我们先来谈谈可用的选项有哪些? [root@www ~]# rpm -qa <==已安装软件 [root@www ~]# rpm -q[licdR] 已安装的软件名称 <==已安装软件 [root@www ~]# rpm -qf 存在於系统上面的某个档名 <==已安装软件 [root@www ~]# rpm -qp[licdR] 未安装的某个文件名称 <==查阅RPM文件 选项与参数: 查询已安装软件的资讯: -q :仅查询,后面接的软件名称是否有安装; -qa :列出所有的,已经安装在本机 Linux 系统上面的所有软件名称; -qi :列出该软件的详细资讯 (information),包含开发商、版本与说明等; -ql :列出该软件所有的文件与目录所在完整档名 (list); -qc :列出该软件的所有配置档 (找出在 /etc/ 底下的档名而已) -qd :列出该软件的所有说明档 (找出与 man 有关的文件而已) -qR :列出与该软件有关的相依软件所含的文件 (Required 的意思) -qf :由后面接的文件名称,找出该文件属於哪一个已安装的软件; 查询某个 RPM 文件内含有的资讯: -qp[icdlR]:注意 -qp 后面接的所有参数以上面的说明一致。但用途仅在於找出 某个 RPM 文件内的资讯,而非已安装的软件资讯!注意! 在查询的部分,所有的参数之前都需要加上 -q 才是所谓的查询!查询主要分为两部分, 一个是查已安装到系统上面的的软件资讯,这部份的资讯都是由 /var/lib/rpm/ 所提供。另一个则是查某个 rpm 文件内容, 等於是由 RPM 文件内找出一些要写入数据库内的资讯就是了,这部份就得要使用 -qp (p 是 package 的意思)。 那就来看看几个简单的范例吧! 范例一:找出你的 Linux 是否有安装 logrotate 这个软件? [root@www ~]# rpm -q logrotate logrotate-3.7.4-8 [root@www ~]# rpm -q logrotating package logrotating is not installed # 注意到,系统会去找是否有安装后面接的软件名称。注意, # 不必要加上版本喔!至於显示的结果,一看就知道有没有安装啦! 范例二:列出上题当中,属於该软件所提供的所有目录与文件: [root@www ~]# rpm -ql logrotate /etc/cron.daily/logrotate /etc/logrotate.conf ....(以下省略).... # 可以看出该软件到底提供了多少的文件与目录,也可以追踪软件的数据。 范例三:列出 logrotate 这个软件的相关说明数据: [root@www ~]# rpm -qi logrotate Name : logrotate Relocations: (not relocatable) Version : 3.7.4 Vendor: CentOS Release : 8 Build Date: Sun 02 Dec 2007 08:38:06 AM CST Install Date: Sat 09 May 2009 11:59:05 PM CST Build Host: builder6 Group : System Environment/Base Source RPM: logrotate-3.7.4-8.src.rpm Size : 53618 License: GPL Signature : DSA/SHA1, Sun 02 Dec 2007 09:10:01 AM CST, Key ID a8a447dce8562897 Summary : Rotates, compresses, removes and mails system log files. Description : The logrotate utility is designed to simplify the administration of log files on a system which generates a lot of log files. Logrotate allows for the automatic rotation compression, removal and mailing of log files. Logrotate can be set to handle a log file daily, weekly, monthly or when the log file gets to a certain size. Normally, logrotate runs as a daily cron job. Install the logrotate package if you need a utility to deal with the log files on your system. # 列出该软件的 information (资讯),里面的资讯可多著呢,包括了软件名称、 # 版本、开发商、SRPM文件名称、打包次数、简单说明资讯、软件打包者、 # 安装日期等等!如果想要详细的知道该软件的数据,用这个参数来了解一下 范例四:分别仅找出 logrotate 的配置档与说明档 [root@www ~]# rpm -qc logrotate [root@www ~]# rpm -qd logrotate 范例五:若要成功安装 logrotate ,他还需要什么文件的帮忙? [root@www ~]# rpm -qR logrotate /bin/sh config(logrotate) = 3.7.4-8 libc.so.6 ....(以下省略).... # 由这里看起来,呵呵~还需要很多文件的支持才行喔! 范例六:由上面的范例五,找出 /bin/sh 是那个软件提供的? [root@www ~]# rpm -qf /bin/sh bash-3.2-21.el5 # 这个参数后面接的可是『文件』呐!不像前面都是接软件喔! # 这个功能在查询系统的某个文件属於哪一个软件所有的。 范例七:假设我有下载一个 RPM 文件,想要知道该文件的需求文件,该如何? [root@www ~]# rpm -qpR filename.i386.rpm # 加上 -qpR ,找出该文件需求的数据! 要特别说明的是,在查询本机上面的 RPM 软件相关资讯时, 不需要加上版本的名称,只要加上软件名称即可!因为他会由 /var/lib/rpm 这个数据库里面去查询, 所以我们可以不需要加上版本名称。但是查询某个 RPM 文件就不同了,我们必须要列出整个文件的完整档名才行~ 这一点朋友们常常会搞错。底下我们就来做几个简单的练习吧! RPM 卸载 解安装的过程一定要由最上一级往下解除以 rp-pppoe 为例,这一个软件主要是依据 ppp 这个软件来安装的,所以当你要解除 ppp 的时候,就必须要先解除 rp-pppoe 才行!否则就会发生结构上的问题啦!这个可以由建筑物来说明, 如果你要拆除五、六楼,那么当然要由六楼拆起,否则先拆的是第五楼时,那么上面的楼层难道会悬空? 移除的选项很简单,就透过 -e 即可移除。不过,很常发生软件属性相依导致无法移除某些软件的问题! 我们以底下的例子来说明: # 1. 找出与 pam 有关的软件名称,并尝试移除 pam 这个软件: [root@www ~]# rpm -qa | grep pam pam-devel-0.99.6.2-3.27.el5 pam_passwdqc-1.0.2-1.2.2 pam_pkcs11-0.5.3-23 pam_smb-1.1.7-7.2.1 pam-0.99.6.2-3.27.el5 pam_ccreds-3-5 pam_krb5-2.2.14-1 [root@www ~]# rpm -e pam error: Failed dependencies: <==这里提到的是相依性的问题 libpam.so.0 is needed by (installed) coreutils-5.97-14.el5.i386 libpam.so.0 is needed by (installed) libuser-0.54.7-2.el5.5.i386 ....(以下省略).... # 2. 若仅移除 pam-devel 这个之前范例安装上的软件呢? [root@www ~]# rpm -e pam-devel <==不会出现任何信息! [root@www ~]# rpm -q pam-devel package pam-devel is not installed 从范例一我们知道 pam 所提供的函式库是让非常多其他软件使用的,因此你不能移除 pam ,除非将其他相依软件一口气也全部移除!你当然也能加 --nodeps 来强制移除, 不过,如此一来所有会用到 pam 函式库的软件,都将成为无法运行的程序,我想,你的主机也只好准备停机休假了吧! 至於范例二中,由於 pam-devel 是依附於 pam 的开发工具,你可以单独安装与单独移除。 由於 RPM 文件常常会安装/移除/升级等,某些动作或许可能会导致 RPM 数据库 /var/lib/rpm/ 内的文件破损。果真如此的话,那你该如何是好?别担心,我们可以使用 --rebuilddb 这个选项来重建一下数据库喔! 作法如下: [root@www ~]# rpm --rebuilddb <==重建数据库 资料来源 http://vbird.dic.ksu.edu.tw/linux_basic/0520rpm_and_srpm_2.php
八月
25
2015

笔记004 Linux中常用的tar命令

将多个文件或目录包成一个大文件的命令功能,我们可以称呼他是一种『打包命令』啦! 那 Linux 有没有这种打包命令呢?是有的!那就是鼎鼎大名的 tar 这个玩意儿了! tar 可以将多个目录或文件打包成一个大文件,同时还可以透过 gzip/bzip2 的支持,将该文件同时进行压缩!

阅读全文>>

八月
20
2015

笔记003 Linux的文件类型与文件权限

这个地方最需要注意了!仔细看的话,你应该可以发现这一栏其实共有十个字符 第一个字符代表这个文件是『目录、文件或链接文件等等』: 当为[ d ]则是目录,例如上表档名为『.gconf』的那一行; 当为[ - ]则是文件,例如上表档名为『install.log』那一行; 若是[ l ]则表示为连结档(link file); 若是[ b ]则表示为装置文件里面的可供储存的接口设备(可随机存取装置); 若是[ c ]则表示为装置文件里面的串行端口设备,例如键盘、鼠标(一次性读取装置)。 接下来的字符中,以三个为一组,且均为『rwx』 的三个参数的组合。其中,[ r ]代表可读(read)、[ w ]代表可写(write)、[ x ]代表可执行(execute)。 要注意的是,这三个权限的位置不会改变,如果没有权限,就会出现减号[ - ]而已。 第一组为『文件拥有者的权限』,以『install.log』那个文件为例, 该文件的拥有者可以读写,但不可执行; 第二组为『同群组的权限』; 第三组为『其他非本群组的权限』。
八月
20
2015

笔记002 Linux正确的关机方法

在 Windows (非 NT 主机系统) 系统中,由于是单人假多任务的情况,所以即使你的计算机关机, 对于别人应该不会有影响才对!不过呢,在 Linux 底下,由于每个程序 (或者说是服务) 都是在在背景下运行的,因此,在你看不到的屏幕背后其实可能有相当多人同时在你的主机上面工作, 例如浏览网页啦、传送信件啦以 FTP 传送文件啦等等的,如果你直接按下电源开关来关机时, 则其他人的数据可能就此中断!那可就伤脑筋了!

阅读全文>>

八月
20
2015

笔记001 Linux命名基本概念

鸟哥的Linux私房菜是一本相当不错的书,推荐学习Linux的朋友使用这本书进行学习。 Hy369便是通过这本书进行相关的学习。 在编程的过程中,经常会因为使用到某个功能而去网络搜索相关的资料,而有些知识点又是比较常用的,翻来覆去进行重复的百度总还是显得有些浪费时间。 所以Hy369便在借助阅读这本书的时间,把一些细节性的要点进行一个归纳整理,并且记录一下,以备不时之需。 好了,废话不多说,贴上第一个要点。

阅读全文>>