huahero8 发表于 2012-9-25 12:38

Linux软连接和硬链接

1.Linux链接概念
Linux链接分两种,一种被称为硬链接(Hard Link),另一种被称为符号链接(Symbolic Link)。默认情况下,ln命令产生硬链接。

【硬连接】
硬连接指通过索引节点来进行连接。在Linux的文件系统中,保存在磁盘分区中的文件不管是什么类型都给它分配一个编号,称为索引节点号(Inode Index)。在Linux中,多个文件名指向同一索引节点是存在的。一般这种连接就是硬连接。硬连接的作用是允许一个文件拥有多个有效路径名,这样用户就可以建立硬连接到重要文件,以防止“误删”的功能。其原因如上所述,因为对应该目录的索引节点有一个以上的连接。只删除一个连接并不影响索引节点本身和其它的连接,只有当最后一个连接被删除后,文件的数据块及目录的连接才会被释放。也就是说,文件真正删除的条件是与之相关的所有硬连接文件均被删除。

【软连接】
另外一种连接称之为符号连接(Symbolic Link),也叫软连接。软链接文件有类似于Windows的快捷方式。它实际上是一个特殊的文件。在符号连接中,文件实际上是一个文本文件,其中包含的有另一文件的位置信息。

2.通过实验加深理解
$ touch f1          #创建一个测试文件f1
$ ln f1 f2          #创建f1的一个硬连接文件f2
$ ln -s f1 f3       #创建f1的一个符号连接文件f3
$ ls -li            # -i参数显示文件的inode节点信息
total 0
9797648 -rw-r--r--2 oracle oinstall 0 Apr 21 08:11 f1
9797648 -rw-r--r--2 oracle oinstall 0 Apr 21 08:11 f2
9797649 lrwxrwxrwx1 oracle oinstall 2 Apr 21 08:11 f3 -> f1

从上面的结果中可以看出,硬连接文件f2与原文件f1的inode节点相同,均为9797648,然而符号连接文件的inode节点不同。

$ echo "I am f1 file" >>f1
$ cat f1
I am f1 file
$ cat f2
I am f1 file
$ cat f3
I am f1 file
$ rm -f f1
$ cat f2
I am f1 file
$ cat f3
cat: f3: No such file or directory

通过上面的测试可以看出:当删除原始文件f1后,硬连接f2不受影响,但是符号连接f1文件无效

3.总结
依此您可以做一些相关的测试,可以得到以下全部结论:
1).删除符号连接f3,对f1,f2无影响;
2).删除硬连接f2,对f1,f3也无影响;
3).删除原文件f1,对硬连接f2没有影响,导致符号连接f3失效;
4).同时删除原文件f1,硬连接f2,整个文件会真正的被删除。

huahero8 发表于 2012-9-25 12:44

Ubuntu自动备份软件包和制作本地源Ubuntu之所以成为众多Linux发行版里面最受欢迎的版本之一,除了可以免费申请安装光盘以外,另外一个影响很大的原因在于:软件丰富、速度快。比如想要安装媒体播放器mplayer,确保联网以后只要一个命令:apt-get install mplayer以后,所有的工作(解决依赖关系,下载和安装软件等等)计算机都会自动进行;系统有了更新以后,只要输入:apt-get dist-upgrade就可以全面更新系统。这种“类傻瓜(真正傻瓜的是Window$,但它的“傻”和Linux的又有明显不同,不多讨论)似的”安装和升级方法给用户带来了极大的方便。但伴随这种方便的软件安装和升级而来的,是网络的速度和流量问题。比如,在用了很长一段时间以后,某人的机器因为个人操作不当而导致崩溃,那么重装以后想要执行系统更新,那么很可能会耗费几百兆的流量,即便有些宽带服务提供者并不按照流量计费,但是如果网速不快的话这些更新的下载所耗费的时间也会让人恼火。又比如,如果一个实验室或者一个局域网内,如果有多个Ubuntu(或者其他的Linux)用户,如果每个人都各自去从外网上安装或者更新软件,这对网络流量和时间来讲会有很大的浪费。
    解决这一问题的方法其实很简单,就是──备份安装或者更新时候下载的软件包,并添加本地源。这样可以节省很多的流量和时间,尤其是对于网速不高或者对网络流量有限制的人来讲,好处无疑是很大的。本文分为了两个部分,第一部分讲了如何手动制作和添加本地源;第二部分针对手动方法带来的几个不便进行了修正,给出了自动解决方案。
    一、手动制作和添加本地源
    每一次install时系统下载的软件包,包括各个软件所依赖的包都会保存在/var /cache/apt/archives/目录下,选定某一次通过网络安装完自己所常用到的所有软件之后,将该文件夹下的所有文件都复制到一个不常格式化的分区里面,即可作为以后重装系统时的本地源,具体步骤如下。
    1、在某个系统重装时候不会被格式化的磁盘分区下建立一个目录,用于放所有下载的软件包,另外建立一个目录用于存放Packages.gz包,比如我的:


mkdir -p /media/sda7/Backup/Ubuntu/Pakcagesmkdir -p /media/sda7/Backup/Ubuntu/dists/hardy/main/binary-amd64
    其中的binary-amd64根据自己的系统类型会有所变化,比如binary-i386等等,根据自己的机器酌情更改。
    2、复制文件到前面建立的文件夹下:


sudo cp /var/cache/apt/archives/* /media/sda7/Backup/Ubuntu/Pakcages
    3、将建立Packages.gz包,里面记录了packs文件夹下面的软件包信息,包括依赖信息。


dpkg-scanpackages Packages hardy | gzip > dists/hardy/main/binary-amd64/Packages.gz
    4、加本地源


sudo gedit /etc/apt/sources.list
    加入 deb file:///media/sda7/Backup/Ubuntu/ hardy main ,注意,这里只是我电脑上的路径,请依实际位置修改。如果出错,请按照系统的出错提示进行相应设置。
    5、设置完成
    完成以上设置和文件复制之后,就可以开始正常使用本地的源了和使用网络上的源一样操作。


sudo apt-get updatesudo apt-get dist-upgradesudo apt-get install XXX
    这样就完成了本地源的手动配置。

当我们安装好Ubuntu之后,一般要先apt-get update ,然后,apt-get upgrade,使自己的系统保持最新状态。
  所下载的软件包一般放在/var/cache/apt/archives/目录下,一次更新后,往往会产生几百MB的临时文件。
  但是,一旦因为某种原因,需要重装系统的时候,难道那么多的文件又要重新下载吗?要是在碰上蜗牛似的网速。刚才已经说过,/var/cache/apt/archives/ 目录存放的是Ubuntu更新下载的软件包,可以将此目录下所有的deb文件备份下,以后重新安装系统时就不需要重新下载了。

那么大家在Ubuntu重装系统之前,将/var/cache/apt/archives/目录复制到另一个非系统分区(win fat分区也可以),例如/media/hda5/archives,重装后,先删除/var/cache/apt/目录下的archives目录,再直接在/var/cache/apt/下新建一个软连接archives,指向刚才所作的备份,如/media/hda5/archives,就可以了!  下次重装完了在更新的时候,会直接从备份的目录里调用软件包,若备份的目录里没有才会从网上下载,这样就大大节省了时间。 
deb文件备份方法
sudo cp /var/cache/apt/archives/*.deb /backup/deb
/backup 是我电脑的一个分区
重新安装系统后,可以在终端输入以下命令:
cd /backup/deb/ 在终端进入备份的目录
sudo cp *.deb /var/cache/apt/archives/ 复制所有文件到/var/cache/apt/archives/ 目录
sudo apt-get update 更新


huahero8 发表于 2012-9-25 16:42

          debian设置本地数据源
一、创建本地源
1    apt-get install dpkg-dev (先把dpkg-scanpackages命令装上)


2    cd /usr/local/debian (此处和sources.list文件中地址相对应)
     mkdir pools (软件包存放的物理地址,要先把所有的软件包放进来)
     mkdir -p dists/sid/main/binary-i386


3    ls -1 pools | sed 's/_.*$/ extra BOGUS/' | uniq > override
     (把pools目录下所有的deb包包名写入文件override中)


4    dpkg-scanpackages pools override > dists/sid/main/binary-i386/Packages
     (把所有包的包名、版本号、依赖关系等信息写入文件Packages中)


5    vi dists/sid/main/Release (此处因人而异)
    输入:
        Archive: sid
        Version: lenny
        Component: main
        Origin: Local
        Label: Local
        Architecture: i386
6    echo "deb file:/usr/local/debian sid main" >> /etc/apt/sources.list

二、如何利用自己创作的源来安装系统
1、本地安装
如果上面的debian目录在第二个分区的根目录下,而刚安装上的debian基本系统在第三个分区,则:
mount /dev/hda2 /mnt/usb2
echo "deb file:/mnt/usb2/debian sid main" >> /etc/apt/sources.list
apt-get update
...
2、利用移动设备
如果上面的debian目录在移动设备的第一个分区的根目录下,且移动设备的设备号为/dev/sda1,则:
mount -o iocharset=utf8 /dev/sda1 /mnt/usb1
echo "deb file:/mnt/usb1/debian sid main" >> /etc/apt/sources.list
apt-get update
...
3、apache
如果上面的debian目录在局域网内的某台PC(IP:192.168.0.172)机上,把debian目录放到apache的默认家目录下(譬如:/var/www/html/debian),然后开启apache服务,最后:
echo "deb http:/192.168.0.172/debian sid main" >> /etc/apt/sources.list
apt-get update

三、按照软件
1、查找该软件的确切名称:
  apt-cache search ***
2、根据查找结果进行按照
      apt-get install ***

huahero8 发表于 2012-9-25 17:06

使用本地deb文件作为apt的源    这要用到一个命令dpkg-scanpackages,基本系统的debian没包含这个命令,这个是dpkg-dev包里面的,首先要安装dpkg-dev包。
dpkg-scanpackages命令格式如下
      # dpkg-scanpackages [<option> ...] <deb文件目录> <优先级控制文件> [<pathprefix>] > Packages
先建一个目录,将所有你想要安装的.deb文件放入其中。例如:
# mkdir /share/debs你可以使用一个override文件直接去修改软件包中控制文件中的定义,使之符合你的软件储藏库管理规则。在这个覆盖文件中,你可能希望定义一些选项来覆盖那些软件包的定义,如下所示:
package priority sectionpackage是软件包的名称,priority有三个级别low、medium或high,section是软件包所属的section,重载文件可任意命名,文件名将在接下来的步骤中做为参数传递给dpkg-scanpackages。如果你不想写重载文件,只需在调用dpkg-scanpackages时使用/dev/null就行了。
仍是在/share(即必须在deb文件存放的上一级)目录下执行:
# dpkg-scanpackages debs file | gzip > debs/Packages.gz在上述的命令行中,file为override文件,如果没有特殊优先级控制的话这里直接可以用/dev/null,命令生成一个Packages.gz文件,它包含了APT所需的各种软件包信息。最后,如果要使用这些软件包,在/etc/apt/source.list中加上:
deb file:/share debs/完成了上面的工作,就可以通常那样使用APT命令操作这些软件包了。你可以使用同样的方法生成一个源码库,但请记住你需要将.orig.tar.gz文件、.dsc文件和.diff.gz文件包含在目录中,同时必须生成Source.gz文件而不是Packages.gz文件。所使用的命令也不相同,要使用dpkg-scansources,命令如下所示:
# dpkg-scansources debs | gzip > debs/Sources.gzNotice that dpkg-scansources doesn't need an override file. The sources.list's line is:
deb-src file:/root debs/
   


2.1 /etc/apt/sources.list文件

作为操作的一部分,APT使用一个文件列出可获得软件包的镜像站点地址,这个文 件就是/etc/apt/sources.list。

文件中的各项信息通常按如下格式列出:

   deb http://host/debian distribution section1 section2 section3
   deb-src http://host/debian distribution section1 section2 section3

当然,上面所列的地址项都是假设的且不应该使用它们。每行的第一个单词deb 或deb-src描述了文件类型:目录中包含的是二进制软件包(deb), 即我们通常使用的已编译好的软件包;或包含的是源码包(deb-src),源码 包包含源程序编码、Debian控制文件(.dsc)和“Debian化”该程序所做更改的 记录文件diff.gz。

在Debian缺省的sources.list中通常是如下内容:

   # See sources.list(5) for more information, especially
   # Remember that you can only use http, ftp or file URIs
   # CDROMs are managed through the apt-cdrom tool.
   deb http://http.us.debian.org/debian stable main contrib non-free
   deb http://http.us.debian.org/debian stable main contrib non-free
   #deb-src http://non-us.debian.org/debian-non-US stable/non-US main contrib non-free

这些是Debian基本安装所需的软件包来源地址。第一个deb行指向官方正 式软件包来源,第二个行指向non-US软件包来源,第三行指向Debian安全补丁更新 包来源。

最后两行被注释掉了(在句首加“#”),所以apt-get将忽略它们。这些是deb-src行指向Debian源码包来源,如果你常下载程序源码来测试或重编译,可取消对 它们的注释。

/etc/apt/sources.list文件可包含多种类型的地址,APT知道如何处理这 些不同的地址类型:http、ftp、file(本地文件,例 如:一个加载了ISO9600文件系统的目录)和ssh。

别忘了在修改完/etc/apt/sources.list文件后运行apt-get使 更改生效。你必须完成这个步骤,以便让APT从你指定的地方获得新的软件包列表。
2.2 如何在本地使用APT

有时你硬盘上有许多.deb软件包,你会希望通过APT来安装它们,以便让它去处理软 件包间复杂的依赖关系。

想这么做,就建一个目录,将所有你想要安装的.deb文件放入其中。例如:

   # mkdir /root/debs

你可以使用一个override文件直接去修改软件包中控制文件中的定义,使 之符合你的软件储藏库管理规则。在这个覆盖文件中,你可能希望定义一些选项来覆 盖那些软件包的定义,如下所示:

   package priority section

package是软件包的名称,priority有三个级别low、medium或high,section是软件 包所属的section,重载文件可任意命名,文件名将在接下来的步骤中做为参数传递 给dpkg-scanpackages。如果你不想写重载文件,只需在调用dpkg-scanpackages时使用/dev/null就行了。

仍是在/root目录下执行:

   # dpkg-scanpackages debs file | gzip > debs/Packages.gz

在上述的命令行中,file为override文件,命令生成一个Packages.gz文件,它包含了APT所需的各种软件包信息。最后,如果要使用 这些软件包,加上:

   deb file:/root debs/

完成了上面的工作,就可以通常那样使用APT命令操作这些软件包了。你可以使用同 样的方法生成一个源码库,但请记住你需要将.orig.tar.gz文件、.dsc文件和.diff.gz文件包含在目录中,同时必须生成Source.gz文件而不是Packages.gz文件。所使用的命令也不相同, 要使用dpkg-scansources,命令如下所示:

   # dpkg-scansources debs | gzip > debs/Sources.gz

Notice that dpkg-scansources doesn't need an override file. The sources.list's line is:

   deb-src file:/root debs/

2.3 选择最佳镜像发布站点加入source.list文件:netselect,netselect-apt

一个新用户经常问到的问题:“该将哪个Debian镜像发布站点加入source.list文件?”。有很多方法来选择镜像发布站点,专家们可能会写一个脚本去测试 不同站点的ping时间。不过其实有一个程序可以帮你: netselect。

要安装netselect,通常使用:

   # apt-get install netselect

不带参数运行它时会显示它的帮助信息。运行它时加上以空格分隔的镜像主机列表, 它会返回一个分值和列表中的一个主机名。这个分值通过评估ping时间和hops数(一 个网络请求报文到达目标主机所经过的转发主机的个数)得出,它与镜像站点预计下 载速度成反比(数值越小越好)。返回的主机名是主机列表中得分最低的那个(查看列 表中所以主机的得分情况可使用-vv选项)。看出下的例子:

   # netselect ftp.debian.org http.us.debian.org ftp.at.debian.org download.unesp.br ftp.debian.org.br
       365 ftp.debian.org.br
   #

它表示,在netselect后列出的所有主机中,ftp.debian.org.br是下载速 度最快的主机,其得分为365。(注意!!这是在我电脑上的测试结果,不同的网络 节点网速会大不相同,所以这个分值不一定适用于其它电脑)

现在将netselect找到的连接速度最快的镜像站点加入/etc/apt/sources.list文件(参考/etc/apt/sources.list文件, 第 2.1 节)并按照软件包管理, 第 3 章中的技巧来做。

注意:镜像站点列表通常包含在文件 http://www.debian.org/mirror/mirrors_full中。

从0.3.ds1版开始,netselect源码包中包含了netselect-apt二 进制包,它使上述操作自动完成。只需将发布目录树做为参数(默认为stable)输入, sources.list文件就会生成速度最快的main和non-US镜像站点列表,并保 存在当前目录下。下面的例子生成一个包含stable发布镜像站点列表的sources.list:

   # ls sources.list
   ls: sources.list: File or directory not found
   # netselect-apt stable
   (...)
   # ls -l sources.list
   sources.list
   #

记住:sources.list生成在当前目录下,必须将其移 至/etc/apt目录。

接着,按照软件包管理, 第 3 章中的技巧来做。
2.4 将CD-ROM加入source.list文件

如果你用APT从CD-ROM上安装及升级软件包,你可以将它加入到sources.list文件中。完成该操作,可使用apt-cdrom程序:

   # apt-cdrom add

将Debian光盘放入光驱,它将加载光盘目录,并在光盘上查找软件包信息。如果你 的光驱需要额外设置,可使用以下选项:

   -h         - program help
   -d directory - CD-ROM mount point
   -r         - Rename a recognized CD-ROM
   -m         - No mounting
   -f         - Fast mode, don't check package files
   -a         - Thorough scan mode

例如:

   # apt-cdrom -d /home/kov/mycdrom add

你还可以扫描一张光盘,但不将其加入列表:

   # apt-cdrom ident

注意,只有当你在系统的/etc/fstab中正确设置了光驱后,该程序才会工作。

huahero8 发表于 2012-9-25 17:22

本帖最后由 huahero8 于 2012-9-25 17:35 编辑


Linux/本地源的制作
在ubuntu中,所有下载的软件包默认是保留的,它们放在/var/cache/apt/archives目录下。因此最简单的方法是把所有软件包全部复制出来,重装后复制回相同目录。这样系统就不会下载已经存在的软件包,安装的时间就短多了。另外每次安装完系统后,如果想从网上下软件包,要做的第一件事是更新网上的软件包信息,更新后它们全放在/var/lib/apt/lists目录里,如果想把这点时间也省了,可以用同样的方法。

在命令行下运行如下命令 sudo apt-get update

注意每当版本升级后原来的软件包就有一部分不能用了,如果强行安装就会造成意想不到的后果,这时最安全的方法是用方法一



huahero8 发表于 2012-9-26 07:36

U盘安装Opensuse 12.2RC

首先下载OPENSUSE12.2的DVD光盘,这个不用说了。然后下载一个U盘制作软件,我用的是universal-USB-installer1.8.这两个下载都不难百度就出来了,然后就是打开USB制作软件,我的软件没有12.2,因为还没发行么,当然没有了,不过也不是没有办法,把下载的12.2的RC文件修改成12.1的名字就行了,后缀还是ISO。然后制作安装,一路顺利。重启更新。这里需要注意一点。更新的时候不要拔出你的U盘,因为用u盘安装时候,会默认你的U盘作为软件源的一个。第一次更新好多文件是可以从U盘获取的。更新完毕重启。然后进入系统。进入YAST,输入密码。软件源管理,不启用你的U盘软件源就可以了,当然你也可以删除这个软件源

huahero8 发表于 2012-9-28 19:34

packagekit: 这是kde带的自动更新工具。
打开开始菜单--------》系统设置, 打开“Software Management” , 看到上面有搜索框,在这一行最右边有一个小的扳手按钮, 点开扳手按钮,有“历史”、“设置”两个,打开“设置”条目, 看到“常规设置” , 第一行就是“检查更新” ,默认是“每天” , 不要自动更新,就把这个设置为 “从不” , 设好点“应用” , 以后应该就没有packagekit update applet了。

openSUSE11.4 ibus wubi/五笔、拼音安装

在终端用命令输入以下:(提示,进入管理员权限)

zypper in ibus
zypper in ibus-gtk
zypper in ibus-table
zypper in ibus-pinyin
zypper in ibus-table-wubi

zhangshiyi 发表于 2024-3-20 06:18

有for Windows的最好?有吗{:5_297:}
页: 1 2 [3]
查看完整版本: How to Add Screensavers to Ubuntu 12.04 - How-To Geek