curl命令具有与wget相同的基本功能,同时还具有设置代理、设置cookie以及FTP上传等高级功能。tar命令可以压缩或者解压缩文件,如图2-8所示。
图2-8
wget是一个非常好用的工具,它的功能就是直接下载链接,但是要注意它在安全性上没有保证。相较于wget,curl是一个更安全的选择。想要下载一个文件,我们可以输入:
$ curl -OSL https://pypi.python.org/packages/source/R/RPi.GPIO/ RPi.GPIO-0.6.5.tar.gz
curl默认是输出到标准输出流的,-O会把下载内容保存到文件,-S会打印遇到的错误,-L会在遇到错误时尝试重新下载。
刚才我们下载的GPIO文件是通过gzip压缩的,可以通过gunzip解压缩,也可以通过以下命令来实现解压缩:
$ tar zxvf RPi.GPIO-0.6.5.tar.gz
注意,这里不需要加“-”符号。在zxvf中,z表示使用gzip去解压缩,x表示提取文件,v表示verbose,也就是输出处理时的信息,最后的f表示不使用标准输入流,而是通过文件输入。
解压完成后,你会得到一个新的文件夹,然后就可以安装了:
$ cd RPi.GPIO-0.6.5 $ sudo python setup.py install
如果你遇到的是一个zip文件,直接使用unzip命令就可以了:
$ unzip 2018-11-13-raspbian-stretch-lite.zip
在包管理器出现以前,必须学会自己手动编译下载好的软件包。当时的软件包大多数以C或者C++进行开发,用户往往需要自行使用gcc进行编译,并且处理好链接的问题。
在configure以及make脚本被广泛运用之后,这些麻烦不再出现了。这两个脚本可以自动检查软件的依赖情况,设置好正确的编译选项,同时甚至可以把文档安装在正确的位置。
大多数的软件都会提供.deb格式的软件包,这样我们就可以简单地使用apt或者dpkg来解决问题了。有时一些项目确实没有提供这样的便利条件,比如从GitHub上下载的软件包,或者手动下载的源码,就不得不自行手动编译了。
在下载完成后,一般的步骤显示解压缩tar包:
$ tar xvf latest-software.tgz
然后cd进入源文件夹,找到README以及INSTALL这两个文件;大致阅读一下README文件,它一般会告诉你安装的相关事宜。接下来就可以安装了,安装的步骤在大部分情况下是一样的,就是这几条命令:
$ ./configure $ make $ sudo make install
提示
具体以软件的README、INSTALL等安装文件为准。
Git是被Linus开发用作Linux内核代码的版本控制系统的,在开发时的目标是让这个软件简单易上手,如图2-9所示。
图2-9
在树莓派上直接使用./configure命令可能会把软件安装到我们不希望它安装到的位置,比如/usr/local/lib。在以后的使用过程中,可能会因为软件库的搜索路径中不包含这些安装路径而出现问题。
解决这个问题非常简单,只需要自己设置新的安装路径即可:
$ ./configure --prefix=/usr --libdir=/usr/lib/arm-linux- gnueabihf
有时贴心的开发者会提供一键安装的脚本,比如edublocks(一个编程教学软件),通过以下命令即可安装:
$ curl -sSL get.edublocks.org | bash
这条命令会下载对应的脚本,然后直接运行安装。这里curl的-s选项表明不要显示进度条,-S表明打印错误信息,-L表示自动跳转。如果你不想把这么多的权限直接交给脚本,那么可以折中地先把它下载到本地再安装。比如下载脚本并把它重命名为install.sh:
$ curl -o install.sh -L get.edublocks.org
你可以通过sh install.sh来安装软件。观察它的输出,就会发现它自动安装了很多必需的依赖环境。在运行脚本前,你最好搞清楚它做了什么事,否则会有巨大的潜在安全隐患。
通过把所有安装步骤写成一个脚本,直接运行这个脚本可以节省你配置环境的时间,如图2-10所示。
图2-10
另外,Python是现在非常流行的语言,它本身设计了一些机制使得python库非常易于安装。
虽然Debian系的系统已经有强大的APT以及dpkg了,但是一些语言以及工具还是自带了内置的软件包安装系统,包括大名鼎鼎的emacs。在日后的开发过程中,你最常使用的将会是Javascript的npm以及Python的pip。pip的使用与apt类似:
$ sudo pip3 install numpy
像这里安装numpy库的过程是非常简单的。
烧入系统映像这一类文件的时候,一般的cp命令达不到所期望的效果。你需要一个命令能够更改SD卡的文件系统,这个命令就是dd。
使用dd命令的时候,要确认好命令的操作符是否是正确的磁盘。dd的功能是转换文件格式以及复制文件,它的特点是会一字节一字节原封不动地复制数据。要烧入系统的映像,我们首先要弹出第二张MicroSD卡。再插入和拔出之前,使用sudo fdisk -l确认设备名。如果你看到了一个/dev/sdb,大小与SD卡相同,那么先弹出sdb1,umount /dev/sdb1,然后烧入映像:
sudo dd if=~/Downloads/ 2018-11-13-raspbian-stretch- lite.img of=/dev/sdb bs=1M
这里的dd与if这两个单词缩写都有悠久的历史了,可以追溯到20世纪60年代。在以后使用dd命令的时候,一定要检查烧入的是不是正确的磁盘,否则可能会丢失重要的数据!最后,bs=1M也可以设定为bs=4M。烧入完成后,就可以用这张SD卡来启动另一个系统了。