Guo Qiang

一些疑难问题

Frequently Asked Questions
image
当遇到困难时,一定要勇敢的去面对

我们总是被各种各样的问题困扰,有时为了解决这一个问题,可能需要话费几小时甚至几天的时间,有的问题确实复杂,而有的问题真得好简单,只是我们当时没有找对方向。

FreeBSD 执行 portsnap fetch update 出现错误

曾经遇到过几次更新 ports 时出现如下的错误信息


# portsnap fetch update

Fetching 4 metadata patches... done.
Applying metadata patches... done.
Fetching 5 metadata files... gunzip: (stdin): unexpected end of file
metadata is corrupt.


这种情况只要清理一下 ports 缓存就能解决


# rm /var/db/portsnap/tag


FreeBSD 安装 git 出现 pw: user _tss disappeared during update

说来也是奇怪,今天在一台 FreeBSD 服务器上安装 git 时,出现了一个错误:


# pkg install git

...
Checking integrity... done (0 conflicting)
[1/48] Installing tpm-emulator-0.7.4_2...
===> Creating groups.
Using existing group '_tss'.
===> Creating users
Creating user '_tss' with uid '601'.
pw: user '_tss' disappeared during update
pkg: PRE-INSTALL script failed


最后解决的办法却是出奇的简单,输入命令 vipw,然后直接 :wq 保存退出,最后再重新安装 git 就可以了。


# vipw
# pkg install git


FreeBSD 无线网卡配置

一台老的笔记本电脑一直闲置着,打算装上 FreeBSD ,但 Thinkpad 内置无线网卡博通 BCM43142 无法被 FreeBSD 识别,最后索性换个网卡,本来要换块高通的,可受 Thinkpad BIOS 白名单的限制,只能买了块 Intel 3320 的网卡,好在一些正常,顺利连上网。

  • 首先确定网卡名称

# dmesg | grep Wireless
iwn0: <Intel Centrino Wireless-N 2230> mem 0xf2d00000-0xf2d01fff irq 17 at device 0.0 on pci2


  • 编辑 /boot/loader.conf 文件,载入所需模块

if_iwn_load="YES"
iwn2000fw_load="YES"
iwn2030fw_load="YES"
iwn2230fw_load="YES"


  • 编辑 /etc/wpa_supplicant.conf 文件,设置 Wi-Fi 名称和密码

ctrl_interface=/var/run/wpa_supplicant
eapol_version=2
ap_scan=1
fast_reauth=1
network={
	ssid="无线网名称"
	psk="无线网密码"
}


  • 编辑 /etc/rc.conf 文件,绑定网卡

wlans_iwn0="wlan0"
#如果使用固定 IP 地址:
ifconfig_wlan0="WPA inet 192.168.1.10/24";
# 如果使用 dhcp 分配:
ifconfig_wlan0="WAP dhcp"
defaultrouter="192.168.1.1"


  • 重启网络

# service netif restart
# /etc/netstart


GitHub 常用命令

  • 设置 user.name 和 user.email

git config --global user.name "输入你的用户名"
git config --global user.email "输入你的邮箱"

#查看结果
git config --list


  • 将文件添加到暂存区中

#仅添加 README.md 文件
git add README.md
#添加所有 c 文件
git add *.c
#添加当前目录下的所有文件
git add .


  • 将暂存区中的内容提交到当前分支

#仅提交filename文件
git commit -m "msg of commit" filename
#提交 stage 中所有内容
git commit -m "msg of commit"

#提交所有修改的内容(无需 git add)
git commit -a -m "msg of commit"


  • 比较版本区别

#比较文件在暂存区和工作区的差异
git diff
#查看工作区和本地仓库的差别
git diff HEAD
#查看这一版本的代码和上一版本的代码区别
git diff HEAD^
#查看这一版本的代码和上 n 版本的代码区别
git diff HEAD~n


  • git 分支

#新建分支
git branch <newbranch>
#切换到分支
#注意:在切换分支前,先进行一次 commit,否则修改的文件会被带过来
git checkout <branch>
#新建分支并切到新分支
git checkout -b <newbranch>


如何修改 FreeBSD 字符控制台屏幕分辨率

在物理机上安装 FreeBSD 后,屏幕分辨率变得很低,我的一台笔记本安装了 FreeBSD 后分辨率默认的是 640x320,字体太大了,我打算将分辨率提高到 1366x768,可能屏幕利用率会高一些,具体操作如下:


# 编辑 /boot/loader.conf ,并添加下列代码
kern.vt.fb.default_mode="1366x768"

# 编辑 /etc/rc.conf ,并添加下列代码
kld_list="i915kms"

# 重启系统即可
reboot


Linux/FreeBSD 下文件的编码转换

在 Linux 或者 FreeBSD 下可以很方便的进行文本文件的编码转换,比方说有一个 original.php 文件,需要将其从 utf8 转换成 gb2312,并保存成 output.php:


iconv -f utf8 -t gb2312 -o output.php original.php


也可以使用下列参数,列出已知的编码字符集合:


iconv -l