树莓派的软件安装与系统更新

本期我们来介绍树莓派的软件安装与系统更新。与我们常见windows不同,Linux的发行版本众多,经常提到的Linux实质上指的是运行Linux内核的系统,内核本质上也是一个软件。所以平时用的Linux系统都是采用了Linux的内核,并将一系列的软件程序打包成一个发行版系统,同时由于Linux的开源特性,谁都可以来自己编译一套可运行的Linux系统,这也算是多一个发行版吧。各种各样的发行版中,自然就带来了不同的软件包管理方式,也就产生了不同的软件安装方式、软件包打包形式。想认识不同的发行版,可以登录https://distrowatch.com查看。

树莓派的Raspiberry PI OS是基于Debian系统(Ubuntu也是),采用的是apt(Advancd Packaging Tool)软件包管理器。此外,最常用的还有红帽系统中的yum( Yellow dog Updater, Modified)软件包管理器。

1.更新软件源

对于Linux系统,在安装软件前,我们首先要更新软件源,一般会替换为国内镜像源,不同的系统版本对应的镜像软件源也不同。对于树莓派,官方的软件源地址是http://archive.raspbian.org/,位于欧洲,国内访问速度很是感人,能达到几KB/s的下载速度吧。这也是替换国内镜像源的原因。

树莓派所有的镜像源地址可以在官网查看到,https://www.raspbian.org/RaspbianMirrors。(注:列表里主要是清华、中科大等高校的镜像地址,明明有阿里云镜像,这里没有收录)

树莓派的软件安装与系统更新

我们可以通过sudo nano /etc/apt/sources.list编辑树莓派的软件源。其中被#注释掉的就是原本的官方软件源。

deb https://mirrors.aliyun.com/raspbian/raspbian/ buster main contrib non-free rpi
deb-src https://mirrors.aliyun.com/raspbian/raspbian/ buster main contrib non-free rpi
#deb http://raspbian.raspberrypi.org/raspbian/ buster main contrib non-free rpi
# Uncomment line below then 'apt-get update' to enable 'apt-get source'
#deb-src http://raspbian.raspberrypi.org/raspbian/ buster main contrib non-free rpi

树莓派更新软件源只需要运行sudo apt update,就完成更新软件源更新,通过运行apt list --upgradable来查看有哪些软件可以更新了,如果要升级所有软件只需运行sudo apt upgrade

pi@raspberrypi4:~ $ sudo apt update
获取:1 https://mirrors.aliyun.com/raspbian/raspbian buster InRelease [15.0 kB]
获取:2 https://mirrors.aliyun.com/raspbian/raspbian buster/main Sources [11.3 MB]
命中:3 http://pipplware.pplware.pt/pipplware/dists/buster/main/binary  InRelease
获取:4 https://mirrors.aliyun.com/raspbian/raspbian buster/main armhf Packages [13.0 MB]
已下载 24.4 MB,耗时 17秒 (1,428 kB/s)
正在读取软件包列表... 完成
正在分析软件包的依赖关系树
正在读取状态信息... 完成
有 43 个软件包可以升级。请执行 ‘apt list --upgradable’ 来查看它们。

2.apt软件安装

更换软件源后,对于常用的软件,我们可以通过sudo apt-get install 软件名的形式安装软件即可。

比如,htop软件的安装,htop相当于任务管理器,是top的高级版本,可以查看系统运行资源及进程情况。

pi@raspberrypi4:~ $ sudo apt-get install  htop
正在读取软件包列表... 完成
正在分析软件包的依赖关系树
正在读取状态信息... 完成
下列【新】软件包将被安装:
  htop
升级了 0 个软件包,新安装了 1 个软件包,要卸载 0 个软件包,有 43 个软件包未被升级。
需要下载 78.3 kB 的归档。
解压缩后会消耗 171 kB 的额外空间。
获取:1 https://mirrors.aliyun.com/raspbian/raspbian buster/main armhf htop armhf 2.2.0-1 [78.3 kB]
已下载 78.3 kB,耗时 1秒 (144 kB/s)
正在选中未选择的软件包 htop。
(正在读取数据库 ... 系统当前共安装有 99146 个文件和目录。)
准备解压 .../htop_2.2.0-1_armhf.deb  ...
正在解压 htop (2.2.0-1) ...
正在设置 htop (2.2.0-1) ...
正在处理用于 desktop-file-utils (0.23-4) 的触发器 ...
正在处理用于 mime-support (3.62) 的触发器 ...
正在处理用于 gnome-menus (3.31.4-3) 的触发器 ...
正在处理用于 man-db (2.8.5-2) 的触发器 ...

安装后在命令行中,输入htop回车运行即可查看。

树莓派的软件安装与系统更新

软件卸载也很方便,sudo apt remove 软件名即可。

pi@raspberrypi4:~ $ sudo apt remove htop
正在读取软件包列表... 完成
正在分析软件包的依赖关系树
正在读取状态信息... 完成
下列软件包将被【卸载】:
  htop
升级了 0 个软件包,新安装了 0 个软件包,要卸载 1 个软件包,有 43 个软件包未被升级。
解压缩后将会空出 171 kB 的空间。
您希望继续执行吗? [Y/n] y
(正在读取数据库 ... 系统当前共安装有 99156 个文件和目录。)
正在卸载 htop (2.2.0-1) ...
正在处理用于 mime-support (3.62) 的触发器 ...
正在处理用于 gnome-menus (3.31.4-3) 的触发器 ...
正在处理用于 man-db (2.8.5-2) 的触发器 ...
正在处理用于 desktop-file-utils (0.23-4) 的触发器 ...

等待代码跑完即完成卸载。

3.deb软件包安装

对于一些Linux软件,常常提供deb格式的软件包,可以下载后通过dpkg进行安装卸载。“dpkg ”是“ Debian Packager ”的简写。为“Debian” 专门开发的套件管理系统,方便软件的安装、更新及移除。所有源自“Debian”的“Linux ”发行版都会使用 “dpkg”,例如 “ Ubuntu ”等。

树莓派的软件安装与系统更新

可以通过dpkg -i XXX.deb形式安装XXX.deb软件包,更多的使用可以查看man dpkg

4.源码编译安装软件

Linux软件的开源特性可以让你很容易的获取到开源软件的源代码,就可以采用源码编译的方式进行安装。在Github上很多软件都会提供不同的平台编译程序以及打包的软件源码(.tar、tar.gz、tar.bz2、tar.Z等打包格式)。

首先解压缩源码压缩包然后通过tar命令来完成

a.解xx.tar.gz:tar zxf xx.tar.gz

b.解xx.tar.Z:tar zxf xx.tar.Z

c.解xx.tgz:tar zxf xx.tgz

d.解xx.bz2:bunzip2 xx.bz2

e.解xx.tar:tar xf xx.tar

然后进入到解压出的目录中,建议先读一下README之类的说明文件。

一般依次执行:

./configure  (检查编译环境)

make  (对源代码进行编译)

sudo make install  (将生成的可执行文件安装到当前计算机中)

make clean  (选择执行,主要是用来清除一些临时文件)

即可完成软件源码编译安装。

对于某些软件编译完成后,不用安装的情况,可通过sudo chmod a+x 源码编译软件名赋予软件运行权限,然后就可以通过./源码编译软件名来运行了。

由于获取了源码,你可以根据自己的需求对源码进行修改,来满足自己的需求,然后重新编译即可。然后你还可以将自己修改的代码重新分享出去。没有自己想要的功能,那就增加一个,当然理论上都是可行的,这也是开源软件*的意义所在

Enjoy!

5.小结

本期主要介绍了树莓派环境下常用的软件安装方式,至此基本的系统入门已经结束,后续我们将陆续介绍一些树莓派的实用应用。

欢迎关注我的公众号,持续更新中~~~

树莓派的软件安装与系统更新
上一篇:树梅派安装最新版go语言(go1.14.2, golang, Raspbian, 树霉派)


下一篇:Java各版本特性一览-从Java1.0到Java12