解决 FreeBSD12.1 XFCE4 锁屏无效问题

最近在使用FreeBSD12.1,并安装了 XFCE4,一切都调试的不错,但发现点击屏幕右上角的锁屏按钮没有反应,这个时候点切换用户,就进入了锁屏状态,但无论你输入正确的密码都无法解锁进入桌面,只能重启系统。

解决方法其实很简单,就是少安装了一个xfce4组件 xfce4-screensaver,使用pkg安装过程记录如下:

pkg install xfce4-screensaver
Updating FreeBSD repository catalogue...
FreeBSD repository is up to date.
All repositories are up to date.
The following 2 package(s) will be affected (of 0 checked):

New packages to be INSTALLED:
	pam_helper: 1.1
	xfce4-screensaver: 0.1.10

Number of packages to be installed: 2

The process will require 1 MiB more space.
226 KiB to be downloaded.

Proceed with this action? [y/N]: y
[1/2] Fetching xfce4-screensaver-0.1.10.txz: 100%  222 KiB 227.1kB/s    00:01    
[2/2] Fetching pam_helper-1.1.txz: 100%    4 KiB   3.8kB/s    00:01    
Checking integrity... done (0 conflicting)
[1/2] Installing pam_helper-1.1...
[1/2] Extracting pam_helper-1.1: 100%
[2/2] Installing xfce4-screensaver-0.1.10...
[2/2] Extracting xfce4-screensaver-0.1.10: 100%

安装完成后需要注销重新登录一下XFCE4桌面才会生效。发现还存在的一个问题就上面说过切换用户时会卡住的问题,可使用 CRTL + ALT + F10 快捷键 解决 锁屏时点了切换用户导致解锁不了的问题。

其它后面安装的组件有:

# 强大的图片处理工具,代替photoshop
pkg install gimp
# 系统任务管理器
pkg install xfce4-taskmanager
# 音量调节工具
pkg install xfce4-pulseaudio-plugin
# 截图工具
pkg install xfce4-screenshooter-plugin
# Ristretto 是 Xfce 桌面环境下的图片查看器。
pkg install ristretto
# 简单PDF查询工具,需要在命令行运行
pkg install mupdf
mupdf redme.pdf
# xfce4 安装GUI解压缩软件
pkg install thunar-archive-plugin xarchiver zip unzip p7zip arj lzop gcpio unrar

挂载U盘相关

FreeBSD 13 之后变为了 fusefs.ko,/boot/loader.conf 文件中需要修改为 fusefs_load="YES"
手动加载命令:
kldload fusefs
查看内存模块:
kldstat |grep fuse

fdisk /dev/da0
gpart show /dev/da0
gpart list da0

# FAT32
mount -v -t msdosfs /dev/da0 /mnt/u/
# 解决中文乱码
ntfs-3g /dev/ad0s1 /mnt/u -o silent,umask=0,locale=zh_CN.utf8

# NTFS
ntfs-3g /dev/ada1s1 /mnt/a -o silent,umask=0,locale=zh_CN.utf8

GPG 相关

# gpg GUI 管理
pkg install kleopatra

FreeBSD ports 使用proxychains解决下载慢问题

proxychains

每次新安装FreeBSD后我都会手动使用port安装vim及tmux等常用工具,时常下载依赖包源代码的时候卡很久或者龟速,FreeBSD又没有一个镜像源,那些依赖包的源代码的下载地址默认使用的是源代码软件提供的下载地址。
遇到下载慢的,我通常是把下载地址复制到浏览器手动下载,然后上传到FreeBSD 里的 /usr/port/distfile目录,所以想使用代理。
说到代理,传统上面都使用http https ftp之类的类型,还要配置一大堆,比如:

FETCH_ENV=http_proxy=http://proxy.123.com:3128 \http代理
FETCH_ENV=ftp_proxy=http://proxy.123.com:3128 \ftp代理

我一直使用socks5作为浏览器的代理首选,找了一圈发现 proxychains 就是我想找的工具。下面说说怎么安装和配置吧。

1、安装 proxychains
cd /usr/ports/net/proxychains/ && make install clean

安装后的配置文件路径
/usr/local/etc/proxychains.conf
打开后你需要在末尾添加你使用的代理。例如:

安装后的配置文件路径
/usr/local/etc/proxychains.conf
打开后你需要在末尾添加你使用的代理。例如:
[ProxyList]  

socks5  127.0.0.1 8080

使用:
使用方法就是在你使用的命令工具之前加上 proxychains,比如:

proxychains wget
proxychains curl

配置 port,让port下载软件的时候自动使用代理,因我使用axel替换了默认的下载工具。

vim /etc/make.conf
FETCH_CMD = proxychains axel
FETCH_BEFORE_ARGS = -n 8 -a
FETCH_AFTER_ARGS =
DISABLE_SIZE = yes

经过以上配置之后,使用port安装软件现也不担心下载慢的问题了。

Freebsd mount extFAT 格式U盘

之前因为传个东西给用 MAC 的同事,所以U盘格式化成了 extFAT 格式,然后我的FreeBSD 系统 mount 不了。还好有直接开源的方案支持,那就是 fusefs-exfat

1 安装:

cd /usr/ports
portmaster sysutils/fusefs-exfat

2 开机启动:

echo 'fuse_enable="YES"' >> /etc/rc.conf

3

vim /boot/loader.conf
fuse_load="YES"

4 Finally to mount exFAT partitions as a user, did you enable this option

sysctl vfs.usermount=1

5 重启系统。
6

mkdir /mnt/usb
mount.exfat /dev/da0s1 /mnt/usb

解决 FreeBSD10.0 Fctix 无法调出五笔输入法问题

困扰我大半年的输入法问题今天终于解决了。

至从安装了FreeBSD10,心中最不快的事情就是只能使用Fcitx的拼音输入法(安装了五笔,但是调不出来),因为本人从小就使用五笔输入法。

期间不下三次在虚拟机中试验安装Fctix,但一直没有找到解决方法,这次花了两天多的时间从安装系统、安装 xfce4 桌面、到安装 Fctix 输入法。希望满满,但装好后还是调不出五笔输入法。

无意间打开着 Treminal 在调试 Fctix,发现 Treminal 中出现下面的语句。

(ERROR-59066 /usr/ports/chinese/fcitx/work/fcitx-4.2.6.1/src/lib/fcitx/ime.c:280) 输入法: 打开/usr/local/lib/fcitx/fcitx-table.so 失败 /usr/local/lib/fcitx/fcitx-table.so: Undefined symbol “TableMetaDataRemove”

明显是有关table,也就是和调不出五笔等其它输入法有关。

在论坛里只有一位老兄发贴讨论了这个问题,地址如下:
https://www.freebsdchina.org/forum/topic_63954.html
他在里面说到最后的解决方法是

从 FTP 上下了 zh-fcitx 包,解出fcitx-table.so替代了系统中的,就可以了!

Gehaowu 说 “据说。。。用gcc编译的是没这个问题的”,但是他只打拼音,没深究。

试着在Google中打 zh-fcitx 的包,找了几个替换 /usr/local/lib/fcitx/fcitx-table.so 这个都不行,最后想到 FreeBSD 10.0 开始才不使用 gcc 编译,那可以找 FreeBSD 9.0的包来试试。

在这个地址下载到了 FreeBSD 9.0 的 zh-fcitx-4.2.6.1_4.txz
http://pkg.dicrurus.com/info?arch=freebsd:9:x86:64&pkg=zh-fcitx
http://pkg.freebsd.org/freebsd:9:x86:64/latest/All/zh-fcitx-4.2.6.1_4.txz

鉴于现在这个包已经在网上很难找着了,我把这个包放上传放在博客里,下载地址如下:

https://www.liurongxing.com/wp-content/uploads/src/zh-fcitx-4.2.6.1_4.txz

解压、单独替换系统中的 /usr/local/lib/fcitx/fcitx-table.so 这个库文件,重启 Fcitx,没有出现 /usr/local/lib/fcitx/fcitx-table.so: Undefined symbol “TableMetaDataRemove” 这样的问题了。
查看右上角的输入法,现在已经出现其它安装的输入法了。如图:

FreeBSD Fcitx 五笔输入法
FreeBSD Fcitx 五笔输入法

=================================================================

cd /usr/ports/chinese/fcitx
make install clean

Installing zh-fcitx-4.2.8.6_1...
************************************************************************

Remember to set the environment variable XMODIFIERS:

        csh/tcsh:       setenv XMODIFIERS @im=fcitx
        sh/bash:        export XMODIFIERS='@im=fcitx'

For GTK+ programs, you may want to set:

                        export GTK3_IM_MODULE=fcitx

For Qt4 programs, we recommend you to use

        qtconfig-qt4: /usr/ports/misc/qt4-qtconfig

instead of to manually set QT4_IM_MODULE.

To start fcitx with your desktop, just

        cp /usr/local/share/applications/fcitx.desktop \
            ~/.config/autostart/

************************************************************************

===> SECURITY REPORT: 
      This port has installed the following files which may act as network
      servers and may therefore pose a remote security risk to the system.
/usr/local/lib/fcitx/fcitx-remote-module.so

      If there are vulnerabilities in these programs there may be a security
      risk to the system. FreeBSD makes no guarantee about the security of
      ports included in the Ports Collection. Please type 'make deinstall'
      to deinstall the port if this is a concern.

      For more information, and contact details about the security
      status of this software, see the following webpage: 
https://fcitx-im.org/wiki/Fcitx
===>  Cleaning for zh-fcitx-4.2.8.6_1

cd /usr/ports/chinese/fcitx-configtool
make install clean
cd /usr/ports/chinese/fcitx-table-extra
make install clean

cd /usr/ports/chinese/fcitx-ui-light
make install clean

Installing zh-fcitx-ui-light-0.1.3_1...
************************************************************************

Replace your `fcitx` command with
	fcitx -u fcitx-light-ui
to start Fcitx with this lightweight UI.

************************************************************************

fcitx 进入桌面自动启动 我是在 ~/.profile 这个文件里加上 fcitx& 就实现了启动。

cat .profile 
setenv XMODIFIERS @im=fcitx
setenv XIM fcitx
setenv XIM_PROGRAM fcitx
setenv GTK_IM_MODULE fcitx
setenv QT_IM_MODULE fcitx

fcitx&
cat .profile

Fcitx输入法

本来是写X的,但是fcitx和X还是有点关系的,使用startx和使用gdm登录的fcitx的配置方法是不一样的,这里对使用gdm的配置方法做一下说明。

  • 首先,你要安装:
# cd /usr/ports/chinese/fcitx/
# make install clean
  • 然后,你需要配置环境变量:

配置环境变量的方法并不唯一,在这里通过profile来实现,把下述内容下如.profile,

LC_CTYPE=zh_CN.UTF-8; export LC_CTYPE
XMODIFIERS=@im=fcitx; export XMODIFIERS
fcitx&

前面两行是配置fcitx运行时需要的环境变量,最后一行是告诉系统开机自动运行fcitx。按照上述配置完以后,fcitx会在进入gnome桌面环境以后自动运行,激活的命令是Ctrl+Space,如果你觉得fcitx默认的外观比较难看的话,你可以修改你home下面的.fcitx/config中的参数文件来调整fcitx的外观。

配置fcitx的关键是环境变量,使用gdm和使用startx对环境变量的处理是不一样的。使用其他的XDM时,主要注意的问题也是环境变量,就是说你所使用的XDM如何处理对待环境变量。在上面的配置中我使用UFT-8编码方案,其具体含义可参考locale环境变量的资料,此处不做详细介绍。

另一种方法: 在~/.xinitrc加入

export XMODIFIERS=@im=fcitx
fcitx -d &

FreeBSD下的无线网络连接

一、网卡的驱动

首先要搞清楚机器的无线网卡类型,我的无线网卡 网件(Netgear)WNA1000M 150M迷你USB无线网卡。
插入系统,自动识别到,可在 /var/log/messages 里看到如下信息:

Mar 29 22:29:16 rzsing kernel: ugen2.2:  at usbus2
Mar 29 22:29:16 rzsing kernel: urtwn0:  on usbus2

系统版本如下:

root@rzsing:~ # uname -a
FreeBSD rzsing 10.0-RELEASE FreeBSD 10.0-RELEASE #0 r260789: Thu Jan 16 22:34:59 UTC 2014    root@snap.freebsd.org:/usr/obj/usr/src/sys/GENERIC  amd64

二、加载模块

修改/boot/loader.conf,加入

################
### Wireless ###
################
legal.realtek.license_ack=1    # 许可
firmware_load="YES"    # 不加载这个会提示缺少firmware模块
if_urtwn_load="YES"    # 这个就是这款USB无线网卡的内核驱动

wlan_scan_ap_load="YES"
wlan_scan_sta_load="YES"
wlan_wep_load="YES"
wlan_ccmp_load="YES"
wlan_tkip_load="YES"

以便自动启动 urtwn。 除了 wlan 模块,必须手动指明驱动 wlan_wep、wlan_ccmp 和 wlan_tkip。

wlan_ccmp 和 wlan_tkip 这两个驱动只是针对 WPA 和 802.11i 安全协议。

三、无线网络连接

无线路由的设置选择使用 WPA-PSK 安全类型。

1、建立 /etc/wpa_supplicant.conf 内容如下:

network={
ssid="freebsdap"
psk="xxxxxxxx"
}

其中 freebsdap 是我的无线路由器的 SSID,psk(即 pre-shared key )由用户设定,与无线路由的 psk 密钥一致。不管是用 WEP 还是 WPA,如果不想自己的机器被黑,设定密码是十分必要的。

2、在 /etc/rc.conf  中加入

# wifi
wlans_urtwn0="wlan0"    # 这里一定要跟 ifconfig 列出来的无线网卡名称一致
ifconfig_wlan0="WPA DHCP"

这样在启动的时候就能从路由器自动分配到 IP 地址。
首先,我们确认网卡被识别。

# dmesg | grep Wireless
root@rzsing:~ # dmesg | grep Wireless
# 这块是笔记本自带的,没搞定,所以就买了下面这个 USB 无线网卡
iwn0:  mem 0xf7f00000-0xf7f01fff irq 17 at device 0.0 on pci3

# dmesg | grep urtwn0
urtwn0:  on usbus2
urtwn0: MAC/BB RTL8188CUS, RF 6052 1T1R    # 原来是 RTL8188CUS 芯片

然后

ifconfig wlan0 create wlandev urtwn0
ifconfig wlan0 up scan
service netif start     # 这个能自动帮你连接无线获取 IP 地址,当然如果配置正确的话,开机就可以自动连接无线。

# ifconfig urtwn0

其中 “status: associated” 表示无线网络已经连接。

四、固定你的 resolv.conf

# cat /etc/resolv.conf
nameserver 8.8.8.8
nameserver 8.8.4.4

如果你用 DHCP,有一个问题可能会不断地搔扰你,
就是 /etc/resolv.conf 里所记录的 DNS 会时不时地被修改。

当然除了暴力地让/etc/resolv.conf不能被修改外。

# 增加
chflags schg /etc/resolv.conf
# 去掉
chflags noschg /etc/resolv.conf

还可以很简单地解决此问题,往 /etc/dhclient.conf 里添加

prepend domain-name-servers 8.8.8.8, 8.8.4.4;
# See ``man 5 dhclient.conf'' for details.

详细配置 WIFI 可查看 FreeBSD 官方文档:
http://www.freebsd.org/doc/en_US.ISO8859-1/books/handbook/network-wireless.html

可参考这篇 http://www.freebsd.org/doc/en_US.ISO8859-1/books/handbook/network-aggregation.html#networking-lagg-wired-and-wireless

五、待机后的恢复

ifconfig lagg0 up laggproto failover laggport em0 laggport wlan0     # 待机后 wifi 会不在 lagg0 接口上,重新运行下这条命令添加上去。

ifconfig lagg0 up laggproto failover laggport em0 laggport wlan0 192.168.1.120 netmask 255.255.255.0 defaultrouter 192.168.1.1      # 待机后 wifi 会不在 lagg0 接口上,重新运行下这条命令添加上去。

ifconfig lagg0 inet 192.168.1.120 netmask 255.255.255.0
route add default 192.168.1.1  # 添加默认路由,查看路由信息命令: netstat -r 或者 route get default

FreeBSD 10.0-RELEASE on Lenovo ThinkPad X61s

前段时间在 58 同城上淘了一台 ThinkPad X61s,他跟 X61 唯一的区别就是 X61s 的 CPU 是低电压版的。然后又从京东上买了个 120G SSD 硬盘,从此靠着一个容量为 4G 的U盘前后装了 Debian7.3、Win7_64。

上个星期六把 WIN7 全盘格式化装了 FreeBSD10.0,下面就记录下折腾的点点滴滴,方便日后查看和其他朋友们查找方便。

1、桌面环境是 Xfce4.10

2、浏览器是 firefox27.0.1 蛮老的了,我是直接 pkg install firefox 安装。编译实在是太慢了。
2、浏览器是 Firefox41.0.2

cd /usr/ports/www/firefox
make install clean

3、办公软件是 LibreOffice

4、输入法 fcitx。 目前只能用拼音,五笔还没找到安装方法,google 发现 FreeBSD10 貌似用 clan编译有问题,GCC 编译正常。这下可苦了我这个打五笔的。(现在写这篇 blog 就是用拼音打的,太累了)

5、字体。从同事的 MacbookPro 系统里拷贝了全部字体以及 WIN 下面的部分常用字体。方法是把肢体放到 /usr/local/lib/X11/fonts/ 目录下,自己新建几个目录。我的 xorg.conf 是这样的。

Section "Files"
        ModulePath   "/usr/local/lib/xorg/modules"
        FontPath     "/usr/local/lib/X11/fonts/misc/"
        FontPath     "/usr/local/lib/X11/fonts/TTF/"
        FontPath     "/usr/local/lib/X11/fonts/OTF"
        FontPath     "/usr/local/lib/X11/fonts/Type1/"
        FontPath     "/usr/local/lib/X11/fonts/100dpi/"
        FontPath     "/usr/local/lib/X11/fonts/75dpi/"
        FontPath     "/usr/local/lib/X11/fonts/LinLibertineG/"
        FontPath     "/usr/local/lib/X11/fonts/Liberation/"
        FontPath     "/usr/local/lib/X11/fonts/GentiumBasic/"
        FontPath     "/usr/local/lib/X11/fonts/winfonts"
        FontPath     "/usr/local/lib/X11/fonts/macfonts"
        FontPath     "/usr/local/lib/X11/fonts/Microsoft"
EndSection

6、有线网络 正常

7、无线。今天配置了下有可以链接上无线路由器了,问题是速率从 48Mbps 降到 1Mbps,巨慢无比,打开百度都要1分钟。

# loader 配置
vim /boot/loader.conf
################
### Wireless ###
################

# wireless
if_iwn_load="YES"
legal.intel_iwn.license_ack=1

# wlan_scan_ap_load="YES"   # Wireless
# wlan_scan_sta_load="YES"  # Wireless
# if_ath_load="YES"         # Internal LAN module
# if_ath_pci_load="YES"     # For Thinkpad X61
# wlan_wep_load="YES"
# wlan_ccmp_load="YES"
# wlan_tkip_load="YES"

#-------------------------------------------------#
在   /etc/rc.conf 加上
# wifi
wlans_ath0="wlan0"
ifconfig_wlan0="ssid XXX WPA DHCP"

#------------------------------------------------#
修改配置文件 /etc/wpa_supplicant.conf, 并在其中加入在您网络上使用的 SSID 和事先分发的密钥:
network={
    ssid="XXXX"
    psk="passwd"
}

#------------------------------------------------#
下面启用无线网络接口:
# /etc/rc.d/netif start

详细的配置请看 WIKI http://www.freebsd.org/doc/zh_CN.UTF-8/books/handbook/network-wireless.html

8、CPU 风扇失控,噪声很大。目前还没解决,可用通过 acpi_ibm 模块来控制。

9、键盘上的 Fn 控制音量,屏幕亮度,等无效,奇怪的是 Fn+F4 居然可应正常睡眠。

10、浏览器还没装 Flash,发现可以在 网易云音乐 music.163.com 听音乐,居然非常流畅。

11、屏幕截图 – xfce4-screenshooter。可以全屏、按窗口、按区域截图、支持命令行启动,截图迅速,非常推荐。
安装方法:

pkg install xfce4-screenshooter-plugin 

print 键绑定到 xfce4-screenshooter -f (桌面截取) — 但是我常用 Ctrl/Shift + print 组合键复制/粘贴终端的文字,会不会不小心截到图呢?
Ctrl+Alt+a  组合键绑定到 xfce4-screenshooter -r (区域截取,快捷键兼容企鹅默认) — 以后改成 MAC OS X 系统的组合键
从 Ports 中编译安装方法:

cd /usr/ports/
make quicksearch name=xfce4-screenshooter-plugin	# 在 Ports 查找位置
cd /usr/ports/x11/xfce4-screenshooter-plugin && make install clean
touch ~/.config/xfce4/xfce4-screenshooter		# (没有他工作不了!)
# 运行方法:菜单-附件-截图
# 进入 keyboard 设置 shotcut	(PrtScreen) 或 从菜单栏点击程序

12、音乐播放器:
Rhythmbox
安装方法: pkg install rhythmbox

Mplayer

安装方法一:

pkg install mplayer

安装方法二:prots 编译安装,需要一两个小时编译

cd /usr/ports/multimedia/mplayer
make WITHOUT_GUI=yes install clean # 不安装 Mplayer GUI

cd /usr/ports/multimedia/smplayer # Mplayer 更漂亮的 GUI 界面
make install clean
mplayer -playlist <file or url>
-loop 0 无限循环

有用的快捷键

以下是 MPlayer 中一些有用的快捷键:

f-当播放视频时,在全屏和窗口模式之间切换。你也可以在命令行中使用 -fs 选项,以便让 MPlayer 开始在全屏模式中播放。
o-在播放视频时切换 OSD(OnScreen Display)模式。
p 或 Space-暂停/继续播放。
q 或 Esc-退出 MPlayer。在 GUI 模式时,Esc 不会退出,仅停止播放。
/ 和 * 或 9 和 0-减小或增大音量。
m-静音切换。
T(通常是 Shift + t)-播放窗口置顶切换。
b 和 j-在可用的字幕间循环。
x 和 z-调整字幕的延迟时间。
I(Shift + i)-显示播放电影的文件名称。
1 和 2-调整对比度。
3 和 4-调整亮度。
5 和 6-调整色度。
7 和 8-调整饱和度。

我发现使用mplayer在命令行下听歌很有一番意镜。

13、电子书类:

chm 格式的 使用 xchm 阅读,安装方法 cd /usr/ports/deskutils/xchm && make install clean

安装完成后没有启动图标,需要右击你要打开的.chm格式文件,自己填入打开程序的执行路径 /usr/local/bin/xchm

或者使用 运行程序 填入路径也可以启动。

推荐一篇文章 详细记录了 FreeBSD XFCE 桌面环境下的各种软件 http://blog.chinaunix.net/uid-25256412-id-2939430.html

FreeBSD查看带宽占用情况,CPU,硬盘IO 虚拟内存等命令

systat 能实时查看各种信息
systat -pigs 默认值CPU
systat -iostat 硬盘IO
systat -swap 交换分区
systat -mbufs 网络缓冲区
systat -vmstat 虚拟内存
systat -netstat 网络
systat -icmp ICMP协议
systat -ip IP协议
systat -tcp TCP协议
systat -ifstat 网卡

显示PCI总线设备信息
pciconf -lv
显示内核加载的模块
kldstat -v
显示指定模块
kldstat -m ipfilter
即插即用设备
pnpinfo

显示设备占用的IRQ和内存地址
devinfo -u
cpu
sysctl -a|grep cpu
sysctl -a|grep sched 查看使用的调度器,我编译的是ULE

查看真实内存
dmesg | grep memory
grep “^real memory” /var/run/dmesg.boot
虚拟内存
vmstat # 最好使用vmstat t [n]命令,例如 vmstat 5 5,表示在T(5)秒时间内进行N(5)次采样,或者干脆vmstat 1让系统每秒钟执行一次。

硬盘
gstat
systat -iostat
iostat

网卡
ifconfig
systat -ifstat
网络
netstat
netstat -m 查看网络资源使用情况
netstat -rn 查看路由表
1.不看unix domain socket
$ netstat -f inet
2. -an 可显示IP地址,一般使用方式,可配合grep,像linux中的netstart -anpt | grep :80
$ netstat -an -f inet
3. 查看listen port的program,FreeBSD的netstat沒有 -p 这个选项
$ sockstat -l
sockstat
tcpdump
trafshow
systat -mbufs
systat -icmp
systat -ip
systat -tcp

只是看流量的话,用systat -netstat

FreeBSD 8.1上安装Vim

1、安装 axel 优化 ports 速度

FreeBSD 中的 ports 安装工具默认下载程序用的是 fetch,下载时经常会出现龟速现象,为了提高 ports 安装速度,推荐替换为 axel 或者 wget,当然具体还得配置下 make.conf 文件。

1.1 使用 ports 安装 axel

cd /usr/ports/ftp/axel
make install

1.2 编辑make.conf配置文件

vi /etc/make.conf # 系统缺省安装以后没有 /etc/make.conf,自己创建一个。####加入以下内容####

FETCH_CMD = axel
FETCH_BEFORE_ARGS = -n 10 -a
FETCH_AFTER_ARGS =
DISABLE_SIZE = yes

MASTER_SITE_BACKUP?=\
http://mirrors.ustc.edu.cn/freebsd-ports/distfiles/${DIST_SUBDIR}/ \
ftp://ftp.cn.freebsd.org/pub/FreeBSD/distfiles/${DIST_SUBDIR}/
MASTER_SITE_OVERRIDE?=${MASTER_SITE_BACKUP}

“?=” 表示如果没有赋值过,就赋值等号后面的值。

Assign the value to the variable if it is not already defined. 如果尚未定义该值,则将其分配给该变量。

参考 https://man.openbsd.org/make#VARIABLE_ASSIGNMENTS

Makefile一共提供了四个赋值运算符 (=、:=、?=、+=),它们的区别请看StackOverflow

1.3 portsnap 常用参数有以下三个

fetch 获取数据
extract 释放全部 ports
update 更新 ports

使用 portsnap 分成两个步骤:

下载压缩的 portsnap 快照,和更新现有系统。

下载或更新 portsnap 快照的方法是 portsnap fetch;首次安装,或希望将 ports tree 恢复到快照的样子,应使用 portsnap extract;之后更新系统中的 ports tree,则可以通过 portsnap update 来完成。

对于服务器而言,推荐在 crontab 中增加在每天3点执行 portsnap cron,以减少使用时所需要的下载时间。

首次下载 portsnap 快照时,需要下载一个大约50MB的快照基础文件。在中国大陆,由于网络状况的原因,这可能需要较长时间。可以考虑用 portsnap fetch -s portsnap.cn.freebsd.org 做首次下载。之后的下载,还是推荐使用正常的 portsnap fetch。

可以使用下面步骤完成上述情况

1.首先设置一个比较快的portsnap服务器,如果系统默认的地址你的访问速度也很快,可以不修改

vi /etc/portsnap.conf

设置SERVERNAME=portsnap.cn.freebsd.org ,你可以设置相对你速度快点的服务器的地址

2.执行下面命令

portsnap fetch extract

这样就完成了下载ports系统以及解压到/usr下面了,以后就不用 extract 了,用 update 更新。

portsnap fetch update

portsnap 第一次运行 extract 命令时,可能需要一段时间,以后更新使用 update 的时候,速度就快很多了。

如果写在 cron 可以用

portsnap cron update

这样定时更新就不用你要安装软件的时候更新了,节省时间。

2、安装 Vim

查找 vim 在 ports 的路径,这个好像在 Port 里边有个数据库树,存储各种软件的所在位置。

查找 vim 在 ports 的哪个目录位置

whereis vim
#或
cd /usr/ports/
make search name=vim
cd /usr/ports/editors/vim
make -DWITHOUT_X11 install clean
or
make WITHOUT_X11=yes install clean

-DWITHOUT_X11 选项作用是:不安装图形化界面的依赖包,只安装字符界面相关的包,这样子速度很快,我是用默认安装的 Ports 可能下载源也慢,肯能大概安装了4个小时很纳闷,后来终于发现添加 -DWINTOUT_X11 选项后 一会就安装好了。 PS:为啥我的还这么慢呢,都刷了20分钟了。

下载 vim patches 文件:
这里批量下载命令:从 北京理工大学开源软件镜像服务 当中下载:

rsync -vaHz --delete rsync://mirror.bit.edu.cn/pub/vim/patches/ ./

然后把这些文件 cp 到 /usr/ports/disfile/vim 目录中。

3、用 portmaster的方式安装

cd /usr/ports/
portmaster -GD --no-confirm editors/vim-console

-G //阻止make config,也就是使用默认选项
-D 升級或移除ports的時候不要將用不到的distfiles砍掉
--no-confirm //在将要执行升级或者安装之前,不询问用户,直接执行

PS:不使用图形界面的建议安装 vim-console,而非 vim,用 ports 安装 vim 默认是带 X 支持的,会附带安装上很多的 X 支持包。

VIM 配置:

root@JavasBoy.pts/0 ~ # cat .vimrc
set encoding=utf-8
set fileencodings=ucs-bom,utf-8,cp936,gb18030,big5,euc-jp,euc-kr,latin1
set noswapfile                  " Don't use swapfile
set nobackup                    " Don't create annoying backup files
set number
set cindent

" TAB setting
set expandtab               " replace  with spaces
"set noexpandtab				" 不自动把table转换为空格
set tabstop=4
set softtabstop=4
set shiftwidth=4
autocmd FileType yaml set expandtab

set nocompatible            " 设定 gvim 运行在增强模式下
set backspace=indent,eol,start
                            " 不设定的话在插入状态无法用退格键和 Delete
                            " 键删除回车符

set autoindent
set ruler
" Colorscheme
syntax on
set t_Co=256

"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
 
" 设置命令行和状态栏
 
set cmdheight=1             " 设定命令行的行数为 1
set laststatus=2            " 显示状态栏 (默认值为 1, 无法显示状态栏)
set statusline=%F%m%r\ \|\ %{&ff},%{\"[\".(&fenc==\"\"?&enc:&fenc).((exists(\"+bomb\")\ &&\ &bomb)?\",B\":\"\").\"]\ \"},%Y\ \|%=\ %l/%L,%c\ \|\ %f
                            " 设置在状态行显示的信息如下:
                            " %f    当前的文件名
                            " %F    当前全路径文件名
                            " %m    当前文件修改状态
                            " %r    当前文件是否只读
                            " %Y    当前文件类型
                            " %{&fileformat}
                            "       当前文件编码
                            " %{&fileencoding}
                            "       中文编码
                            " %b    当前光标处字符的 ASCII 码值
                            " %B    当前光标处字符的十六进制值
                            " %l    当前光标行号
                            " %c    当前光标列号
                            " %V    当前光标虚拟列号 (根据字符所占字节数计算)
                            " %p    当前行占总行数的百分比
                            " %%    百分号
                            " %L    当前文件总行数
 
"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
 
" 显示空白字符
"set listchars=eol:¬,tab:>·,trail:~,extends:>,precedes:<,space:␣
set listchars=eol:¬,tab:»·,trail:~,extends:>,precedes:<,space:␣

FreeBSD下的Vim默认安装路径为

/usr/local/share/vim/vim7*

在 FreeBSD 10.0 中 VIM 全局配置文件是放在

/usr/local/share/vim/vimrc

vim 7.4.900 vimrc localtion is

/usr/local/etc/vim/vimrc

这个文件中,每个用户的配置文件就是在~/.vimrc,一般我喜欢设置全局的。

让你在 FreeBSD 下用的更顺手。
https://wiki.freebsdchina.org/howto/c/config_your_csh

"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
 
" 设置命令行和状态栏
 
set cmdheight=1             " 设定命令行的行数为 1
set laststatus=2            " 显示状态栏 (默认值为 1, 无法显示状态栏)
set statusline=%F%m%r\ \|\ %{&ff},%{\"[\".(&fenc==\"\"?&enc:&fenc).((exists(\"+bomb\")\ &&\ &bomb)?\",B\":\"\").\"]\ \"},%Y\ \|%=\ %l/%L,%c\ \|\ %f
                            " 设置在状态行显示的信息如下:
                            " %f    当前的文件名
                            " %F    当前全路径文件名
                            " %m    当前文件修改状态
                            " %r    当前文件是否只读
                            " %Y    当前文件类型
                            " %{&fileformat}
                            "       当前文件编码
                            " %{&fileencoding}
                            "       中文编码
                            " %b    当前光标处字符的 ASCII 码值
                            " %B    当前光标处字符的十六进制值
                            " %l    当前光标行号
                            " %c    当前光标列号
                            " %V    当前光标虚拟列号 (根据字符所占字节数计算)
                            " %p    当前行占总行数的百分比
                            " %%    百分号
                            " %L    当前文件总行数
 
"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
 
" 显示空白字符
set listchars=eol:¬,tab:>·,trail:~,extends:>,precedes:<,space:␣