FreeBSD Ports 之间的依存关系及其管理

FreeBSD Ports 之间的依存关系及其管理

用过 FreeBSD 的朋友对 FreeBSD 的 ports 管理认识颇深,它让我们从来不苦恼于“装软件”。FreeBSD 会自动地下载所需的 ports 并安装它们,这是为什么很多使用 GNU/Linux 的朋友在了解到 FreeBSD 后义无反顾地加入 FreeBSD 阵营,包括我。

本 wiki 还要说一说不仅如此,FreeBSD 让我们从来不纠结于“不干净的卸载”。

ports 间的复杂关系

各种各样的 ports 之间可以有复杂的依存关系,如果用有向图画出来,它一定是 DAG (有向无圈图)。拿随机模拟软件 mcmc-jags-3.2.0 为例,安装它必须安装它的子孙节点。

FreeBSD Ports 之间的依存关系-1

如何干干净净地删除一个 port?

如何删除 ports?通常的做法是去那个 port 执行 make deinstall clean。可是,如果那个 port 还关联着一些“不再有用的” ports。举个例子,卸载了 jags 后,如果你同时也想卸载 “孤零零的” lapack,该如何做呢?总不至于去搞清除所安装的 ports 之间的复杂关系吧?拿随机模拟软件 jags 和 fbm 为例,它们的依存关系是这样的。

FreeBSD Ports 之间的依存关系-2

两个 ports 及其关联 ports 的关系就可以如此复杂,何况你安装的如此众多的 ports!苍天啊,大地啊,哪位天使姐姐能帮我一把啊?

有一个 port 可以帮助你,它就是 pkg_cutleaves!这是一个小巧的工具,它能生成你所安装 ports 中所有的“终极节点”,只需命令

# pkg_cutleaves -lxg

有关这些节点的信息存放在文件 /usr/local/etc/pkg_leaves.exclude 之中。一旦你不喜欢其中某个节点,可以在文件 pkg_leaves.exclude 中将之删除,然后运行

# pkg_cutleaves -Rxg

你猜怎么着?系统删除了该节点及其所有与之关联的“孤零零”的 ports,而不影响其他“终极节点”及其关联的 ports。pkg_cutleaves 催马过去,把敌人及其孤立党羽杀了个干干净净!

我多么希望我的大脑里也有一个这样的工具,把不美好的记忆删除得干干净净,然后更新一下,重新开始生活。

如何重建 ports 间的依存关系?

用 portmaster 重建 ports 间的依存关系,只需

# portmaster –check-depends

见识某些 ports 的依存图

最后分别见识一下 zh_cn-freebsd-doc,emacs 和 maxima 的依存图,感受一下 FreeBSD ports 的复杂关系,顺便惊叹一下 FreeBSD 在这些复杂关系上纵横驰骋的强大。FreeBSD 是位有内涵的美女,处之愈久,就愈爱她,但愿她能陪我到老。我还不了解她的姊妹 OpenBSD 和 NetBSD,虽然传说中她们也很美。

FreeBSD Ports 之间的依存关系-3

 FreeBSD Ports 之间的依存关系-4

FreeBSD Ports 之间的依存关系-5

原文链接:http://wiki.freebsdchina.org/software/p/pkg_cutleaves

用PuTTY进行远程管理FreeBSD初学者笔记

用PuTTY进行远程管理FreeBSD初学者笔记

本人是一个FreeBSD系统的初学者,在学习当中遇到许多困难,因此想把安装及使用的过程做一个记录。因为学习及笔记当中参考了网上许多先辈的教程,在此表示感谢。本文是在FreeBSD实际环境使用后,进行记录的笔记,有不妥当之处还希望各位多多指正。

一 SSH简介

传统的网络服务程序,如:ftp、pop和telnet在本质上都是不安全的,因为它们在网络上用明文传送口令和数据,别有用心的人非常容易就可以截获这些口令和数据。而且,这些服务程序的安全验证方式也是有其弱点的,就是很容易受到“中间人”(man-in-the-middle)这种方式的攻击。所谓“中间人”的攻击方式,就是“中间人”冒充真正的服务器接收你的传给服务器的数据,然后再冒充你把数据传给真正的服务器。服务器和你之间的数据传送被“中间人”一转手做了手脚之后,就会出现很严重的问题。

SSH的英文全称是Secure Shell。通过使用SSH,你可以把所有传输的数据进行加密,这样“中间人”这种攻击方式就不可能实现了,而且也能够防止DNS和IP欺骗。还有一个额外的好处就是传输的数据是经过压缩的,所以可以加快传输的速度。SSH有很多功能,它既可以代替telnet,又可以为ftp、pop、甚至ppp提供一个安全的“通道”。

二 PuTTY简介

PuTTY 是一套免费的 SSH / Telnet 程序,它可以连接上支持 SSH Telnet 联机的站台,并且可自动取得对方的系统指纹码 (Fingerprint)。建立联机以后,所有的通讯内容都是以加密的方式传输,因此你再也不用害怕使用 Telnet 在 Internet 或公司的内部网络传输资料时被他人获知内容了!

三 PuTTY下载

1 下载putty.exe
[url]http://the.earth.li/~sgtatham/putty/0.60/x86/putty.exe[/url]

2 下载puttygen.exe
[url]http://the.earth.li/~sgtatham/putty/0.60/x86/puttygen.exe[/url]

四 生成密钥
运行puttygen.exe,点Generate按钮开始生成密钥(如图1),等待直至生成密钥。点下面的Save private key把私钥保存为扩展名是 .ppk 的文件(如图2)。此时不要关闭程序。

图1:生成密钥 图2:保存密钥文件

五 连接远程服务器,上传密钥

使用PuTTY登陆远程服务器,地址如192.168.0.1。在Session–>Host Name(or IP address)中输入192.168.0.1,如图3。

图3:连接远程服务器

在Connection–>Data–>Login details–>Auto-login username中输入初装系统时创建的wheel组用户,如admin,如果没有创建则新建一个用户,如图4。点Open按钮登陆远程服务器。图4:设置自动输入用户名

六 创建~/.ssh/authorized_keys

在远程服务器admin用户下创建~/.ssh/authorized_keys
$ mkdir ~/.ssh
$ cd ~/.ssh
$ ee authorized_keys
复制Puttygen.exe程序Public key for pasting into Open SSH authorized_keys file下面的内容,在服务器上的authorized_keys文件中按鼠标右键粘贴并保存退出。

七 使用Putty密钥方式验证自动登陆

打开Putty.exe,根据上述第五点,输入远程服务器IP地址及登陆用户名,并在Connection–>SSH–>Auth–>Private key file for authentication–>点Browser按钮选择上述第四点保存的.ppk文件,如图5。点Open按钮即可登陆远程服务器。

图5:设置密钥文件

原文链接:http://luhuayan.blog.51cto.com/261482/53636