Ubuntu18.04.6 LTS安装vnc(xfce桌面或GNOME原生桌面),及实现离线Ubuntu服务器安装软件


VNC(Virtual Network Computing,虚拟网络计算机)是一个跨平台远程连接工具,由AT&T实验室于2002年开发的,是一个远程操控计算机的软件,它能够将远程计算机完整的窗口画面通过网络传输到另一台计算机的屏幕上.它和SSH最大的区别是:ssh使用的是字符界面进行远程管理而vnc使用的是图形化界面操作。
VNC的特点:
(1).客户端活动如果断线等不会影响到服务器,再次连接即可正常使用 。
(2).客户端无需安装,甚至能够使用浏览器进行控制(浏览器需要支持java) 。
(3).该软件是跨平台的。
VNC远程管理软件包括服务器VNC Server和客户端VNC Viewer,用户需要先将服务器VNC Server安装到要被控制的计算机上,才能在主控端的计算机执行VNC Viewer控制被控端。

参考

https://blog.csdn.net/dakey2008/article/details/107462813
https://www.jianshu.com/p/8dd11e9f5852
https://www.lategege.com/?p=691
https://blog.csdn.net/baidu_34971492/article/details/116956761
https://blog.csdn.net/chenguang_work/article/details/86241361

最好在与服务器相同的纯净的ubuntu系统下进行软件安装和打包。因此旧的系统会将无用的deb软件安装包清理调,而这些安装包可能在离线服务器上缺少。

一、前提

1.1 dpkg和apt-get的区别dpkg

dpkg:用来安装.deb文件时,不会解决模块的依赖关系,且不会关心ubuntu的软件仓库内的软件,可以用于安装本地的deb文件。
apt-get:会解决和安装模块的依赖问题,并会咨询软件仓库,但不会安装本地的deb文件,apt-get是建立在dpkg之上的软件管理工具。

1.2 apt install与apt-get install的区别

  1. apt 命令是对之前的apt-get apt-cache 等的封装,提供更加统一,更加适合终端用户使用的接口。
  2. apt 具有更精减但足够的命令选项,而且参数选项的组织方式更为有效。
  3. apt是为交互使用而设计的。最好在shell脚本中使用apt-get和apt-cache,因为它们在不同版本之间向后兼容,并且有更多选项和功能。对于基本命令,apt和apt-get两个工具的语法是相同的。
  4. 另外补充一个区别,在默认配置的情况下,apt-get 安装的 deb 软件包,会在本地目录缓存;而apt 不会。

1.3 apt-get的update和upgrade的区别

apt-get作为包管理器,其实类似于咱们在windows上使用的软件管家类的软件。

当运行apt-get update命令的时候,实际上相当于软件管家的“查找更新”操作。它会同步 /etc/apt/sources.list 和 /etc/apt/sources.list.d 中列出的源的索引信息(软件包的版本信息、系统要求、翻译、依赖关系等等)。

当运行apt-get upgrade命令的时候,实际上相当于软件管家的“一键更新”操作。它会对已经安装有更新的软件进行自动升级。由于确定要更新的软件包需要对本地安装的版本和列表的版本进行比较,所以要在update以后运行这一条。

1.4 apt autoremove purge clean

一般来说使用apt安装软件,必须要有root权限,因为apt安装时需要写/usr/bin /usr/lib /usr/share等目录,而这些目录只有root用户(或有sudo权限)才有写入权限的,所以没有sudo权限的普通要用apt安装软件的话,就只能以 源码安装方式 来安装了

参考https://blog.csdn.net/qq_24406903/article/details/88376829

apt 清除命令 待删除的软件

如:apt purge python
  1. 在桌面版的Ubuntu系统下尽量不要使用:
apt autoremove

删除已安装的软件包(保留配置文件),不会删除依赖软件包,且保留配置文件。(这个命令容易导致系统无法进入系统桌面)。
高能警告:慎用本命令!!!
它会在你不知情的情况下,一股脑删除很多“它认为”你不再使用的软件;
2. apt remove 删除已安装的软件包(保留配置文件),不会删除依赖软件包,保留配置文件;
3. apt purge 删除已安装包(不保留配置文件),删除软件包,同时删除相应依赖软件包。
4. apt clean 此命令会将 /var/cache/apt/archives/ 下的 所有 deb 删掉,相当于清理下载的软件安装包。
5. apt autoclean 删除为了满足某些依赖安装的,但现在不再需要的软件包。
以上最推荐使用 apt purge 最简单 如果提示权限不够 命令前加上sudo即可。

Ubuntu 的apt install 和卸载正确姿势
先说下使用apt installl 安装的包的卸载:
apt-get remove: 卸载软件
apt-get purge: 卸载软件和配置文件
apt-get autoremove: 移除没有使用的依赖
apt-get clean: 删除/var/cache/apt/archives/下的所有deb包
apt-get autoclean: 删除/var/cache/apt/archives/下的过期deb包

1.5 ubuntu远程桌面连接方式(vnc、xrdp、vino、xorg等概念)

如果你需要通过远程连接到ubuntu桌面,有很多种方式,但归根到底其实就两种VNC和RDP。

1.5.1 VNC方式连接

首先VNC方式连接ubuntu,ubuntu桌面版系统自带了一个vnc服务端,叫vino,设置开关中的共享屏幕其实就是这个vnc服务端,如果你是最小安装版,那就没有共享屏幕这个选项,你需要手动安装,安装方式

sudo apt install vino

如果是server端,默认是没有ubuntu图形化界面的,需要安装好才能使用远程桌面。

ubuntu的图形化界面主要有几种:unity、gnome、xfce、kde。 其中unity在ubuntu早期版本中常用,新版本ubuntu默认桌面是gnome,而如果安装的是ubuntu server系统,需要在图形化操作,一般安装xfce,它非常轻量,kde在ubuntu中不常用。

所以如果要远程连接ubuntu桌面,前提你得有一个桌面,在gnome桌面环境下,默认有一个vnc服务端叫vino,这个vnc服务端很坑爹,必须要ubuntu物理机登录上一个账户并且把安全认证关闭才能通过vnc客户端连接,比如vnc-viewer。

关闭安全认证方式有两种,一种直接通过命令:

sudo gsettings set org.gnome.Vino require-encryption false

另一种方式通过安装工具,使用工具来关闭,这个工具就是dconf-editor

 sudo apt-get install dconf-editor 

选择: org->gnome->desktop->remote access->require encrytion 关闭

系统自带的vino很鸡肋,所以如果你想用vnc,就安装一个第三方的吧,vnc4server,使用这个需要关闭系统默认的共享桌面,你可以在图像化菜单中关闭屏幕共享,或者直接卸载 sudo apt remove vino ,为什么要关闭,因为你打开的话就占用了5900端口,只要是vnc服务,默认端口都是5900,如果不关闭,会造成其他vnc服务端开启失败。

然后安装vnc4Server

sudo apt install vnc4server 

具体配置请查看章节二。

1.5.2 RDP方式连接

rdp是windows系统专用的远程连接方式,但是ubuntu等linux系统下可以通过移花接木的方式,也就是xrdp, xrdp本身不具备桌面服务功能,需要和图形化桌面配合,这个提供桌面能力的其实就是xorg,xorg在ubuntu中默认存在,所以通过xrdp连接远程桌面默认会选择xorg,xorg为xrdp提供桌面服务,xrdp本身提供远程连接能力。如果你安装了GNOME, 那xorg就将GNOME桌面远程提供给你,如果你安装了xfce,xorg就将xfce桌面提供给你。可以说xorg是远程桌面服务的中间件,但是xorg和gnome配合不是很好,往往会有问题,但是网上也有解决方案,最佳的配合还是xfce+xorg+xrdp,由于xorg是ubuntu默认存在的图形化能力,所以只要在ubuntu中安装上xrdp,如果你的桌面系统是xfce就能直接使用远程桌面。

#如果没有xfce桌面,需要安装

sudo apt update
sudo apt install xubuntu-desktop
#安装xrdp 
sudo apt install xrdp
#Xrdp 使用/etc/ssl/private/ssl-cert-snakeoil.key,它仅仅对“ssl-cert” 用户组成语可读。运行下面的命令,将xrdp用户添加到这个用户组:
sudo adduser xrdp ssl-cert  
#重启就能使用
sudo systemctl restart xrdp

windows可以通过远程桌面客户端连接了,xrdp的端口和rdp一样都是3389,所以可以直接使用windows自带的远程桌面连接工具,连接口弹出窗口,默认选中了xorg,输入ubuntu用户名密码就可以登录,这个和ubuntu下面的屏幕共享没有半毛钱关系,当然,xrdp不仅可以选择xorg,还能选择vnc-any,也就是选择了这个,你可以连接vnc服务端,也就是 xrdp不仅可以和xorg配合,也能和vnc4server、vino、tightvncserver等vnc服务端配置使用。

二、vnc4server和xfce4安装

2.1 xfce4安装

sudo apt install xfce4*  #xfce4桌面已经安装的可忽略

2.2 vnc4server安装

sudo apt install vnc4server   #安装VNC4,注意不是TIGERVNC或者其他

2.2.1 第一次启动vnc4server

vncserver #启动,如有密码设置,则设置后记下
vncserver -kill :1  #停止默认的vncsever

2.2.2 修改vnc配置文件xstartup

2.2.2.1 使用xfce远程桌面配置
vim ~/.vnc/xstartup  #编辑已有的vncserver xstartup配置,如果打开是空的,则未正确找对该配置文件位置。

使用以下配置,该配置虽然简单,但是和其他配置相比,能解决以下报错:

xfce4-session: Another session manager is already running 

····

#!/bin/sh
unset SESSION_MANAGER
unset DBUS_SESSION_BUS_ADDRESS
startxfce4 &
2.2.2.2 使用GNOME原生桌面配置
#!/bin/sh                                                                       
 
unset SESSION_MANAGER
unset DBUS_SESSION_BUS_ADDRESS
export XKL_XMODMAP_DISABLE=1
export XDG_CURRENT_DESKTOP="GNOME-Flashback:GNOME"
export XDG_MENU_PREFIX="gnome-flashback-"
[ -x /etc/vnc/xstartup ] && exec /etc/vnc/xstartup
[ -r $HOME/.Xresources ] && xrdb $HOME/.Xresources
xsetroot -solid grey
vncconfig -iconic &
#gnome-terminal &    
#nautilus &   
gnome-session --session=gnome-flashback-metacity --disable-acceleration-check &

如果vnc后的画面是纯灰色,则安装gnome-panel

sudo apt install gnome-panel

遇到的一个问题:在vnc桌面中无法打开系统设置。待解决!

2.2.3 新建连接端口

$ vncserver -geometry 1920x1080 -depth 24 :4

参数说明:
-geometry 用于设置想打开的界面的分辨率,与自己的显示器分辨率匹配。如2560x1440、1920x1080、1024x768等。
-depth 用于设置显示颜色深度。最大24。
:4 显示号,自行指定。

删除虚拟桌面: vncserver -kill :桌面编号 (注意空格),如下面的命令是删除像素编号为2的虚拟桌面

vncserver -kill :2

2.2.4 查看已经打开的vnc端口

netstat -lnpt |grep Xvnc

最好使用root用户来查看当前打开的所有端口。而使用普通用户只能看到普通用户下打开的端口。

2.2.5 使用vncviewer连接

输入IP和端口号,如xxx.xxx.xxx.xxx:5901
密码:123456
可以在Properties选项中调节终端显示的画质(High)和缩放比(100%或Scale to fit windows),之后全屏显示即可完全显示屏幕。

2.2.6 配置vnc开机自启动(ubuntu18.04亲测有效)

开机启动脚本如下

sudo gedit /etc/init.d/vncserver_start

写入以下内容:

#!/bin/sh

### Customize this entry
# Set the USER variable to the name of the user to start tightvncserver under
export USER='Andy'  #修改成自己的userid
### End customization required
 
eval cd ~$USER
 
case "$1" in
  start)
    # 启动命令行。此处自定义分辨率、控制台号码或其它参数。
    su $USER -c '/usr/bin/vncserver -depth 24 -geometry 1280x720 :1'
    echo "Starting vncserver server for $USER "
    ;;
  stop)
    # 终止命令行。此处控制台号码与启动一致。
    su $USER -c '/usr/bin/vncserver -kill :1'
    echo "vncserver stopped"
    ;;
  *)
    echo "Usage: /etc/init.d/vncserver_start {start|stop}"
    exit 1
    ;;
esac
exit 0

注:用户名要修改成自己的修改USER变量。
给vncserver_start文件加执行权限,并更新开机启动列表。

sudo chmod 755 /etc/init.d/vncserver_start
sudo update-rc.d vncserver_start defaults

然后再reboot一下,就不需要到板子上面开启vncserver了,直接打开VNC Viewer登录。

三、ubuntu离线安装软件

3.1 离线安装包的制作

  1. 在线电脑上通过如下指令下载XXXX软件所需要的deb包
sudo apt-get install XXXXX

如果在线电脑上已经安装过这些软件,可以使用--reinstall 命令强制重新安然软件。

sudo apt-get --reinstall install XXXXX

执行完上述指令后,XXXX软件的安装包就下载到了/var/cache/apt/archives目录下

  1. 生成依赖关系

根目录下新建一个offlinePackage文件夹

 sudo mkdir /offlinePackage
  1. 将下载的deb包拷贝到上述新建的文件夹下

注意:deb包在/offlinePackage/archives目录下,因为apt-get install XXX软件时会自动到archives目录下寻找安装包

 sudo cp -r /var/cache/apt/archives  /offlinePackage

3.修改文件夹的权限,可读可写可执行

 sudo chmod 777 -R /offlinePackage/

4.建立deb包的依赖关系

 sudo dpkg-scanpackages /offlinePackage/archives/ /dev/null |gzip      >/offlinePackage/Packages.gz

如果出现错误:sudo: dpkg-scanpackages: command not found
则需要安装dpkg-dev工具:

sudo apt-get install dpkg-dev

5.将生成的Packages.gz包复制到和deb同目录下

sudo cp /offlinePackage/Packages.gz /offlinePackage/archives/Packages.gz

2.3.打包成压缩包,以备后用

tar cvzf offlinePackage.tar.gz offlinePackage/

保存offlinePackage.tar.gz文件到U盘或服务器

注1:如果提示E: 无法获得锁 /var/lib/dpkg/lock-frontend - open (11: 资源暂时不可用) ,E:
无法获取 dpkg 前端锁
(/var/lib/dpkg/lock-frontend),是否有其他进程正占用它?,则可能原因有两种,①apt-get前忘记加sudo,则需重新加上。
②此外,如果你使用的是克隆虚拟机,也可能会出此问题,需要重新启动电脑。。 ③如果还不行,ps -e | grep apt
查看进程编号,利用sudo kill 进程编号杀掉相应进程。(见网站) ④如果还是不行,则需要在安装输入sudo apt-get
update更新源,再重新输入安装指令。 注2:关于为什么本人包只有12mb,而部分人的离线包在170mb的原因:
(1)有时候安装不需要sudo apt-get update,这样就不会下载额外的deb包。
(2)建议在线机器先右上角的系统设置/软件安全与更新,更新频率设置为从不。否则有时候文件夹/计算机/var/archives会额外缓存很多版本更新的deb包(100+MB)比较占空间。

3.1 在另外一台Ubuntu上离线安装

1.插入U盘或光盘,将offlinePackage.tar.gz复制到根目录下,解压

sudo tar -xvf offlinePackage.tar.gz

2.将安装包所在和源路径添加到系统源source.list

注意:我们在添加之前可以先将原来的源备份

sudo cp /etc/apt/sources.list /etc/apt/sources.list.back

以备以后使用

sudo vi /etc/apt/sources.list
deb [trusted=true]  file:/// offlinePackage/

然后将所有的其他deb全部注销掉(#),注:deb file:// /offlinePackage/后无需加archives/

  1. 更新系统源
sudo apt-get update

可能会提示执行apt --fix-broken install 。执行即可。这是因为一般是使用dpkg安装软件出现依赖或者源找不到的情况,会提示使用这个命令来解决依赖,删除半安装的软件,因为不使用这个软件,使用 apt update或者apt upgrade将不能成功。

4.离线安装
此时,在没有网络的情况下,我们就可以安装我们之间下载的XXXX软件了

sudo apt-get  install -y XXXXX --allow-unauthenticated #--allow-unauthenticated相当于增加私人下载权限

注意:
兼容性问题,如果我们制作安装包时,用的是64位的ubuntu,那么该离线包只能在其他64位系统上安装。
有些软件对ubuntu server和ubuntu desktop版也不兼容。总之,在什么系统下制作的离线包,就在什么系统下安装。

四、vnc突然连接不上-防火墙未打开

在之后的使用中,安装了vcs eda仿真工具,并安装了iptables这个防火墙工具来打开270000端口,不过好像把其他的端口都关闭了,导致vncviewer连接不上。
解决方法就是使用iptables打开指定的端口,或者打开所有的端口、之后就可以连接到服务器了。

# 打开指定的端口5901
sudo /sbin/iptables -I INPUT 1 -p TCP --dport 5901 -j ACCEPT

# 或打开一段端口
sudo /sbin/iptables -I INPUT 1 -p TCP --dport 5900:5999 -j ACCEPT

# 或Linux之iptables打开所有进/出端口:
iptables -P INPUT ACCEPT
iptables -P OUTPUT ACCEPT
iptables -P FORWARD ACCEPT

完成上述命令我们就完成了开放指定的端口,但是如果此时ubutnu服务器重启,上述规则就没有了(centos系统重启后规则不会消失),所以我们需要对规则进行一下持续化操作

持续化规则

这里我们需要在安装一下工具来帮我们实现,这里我们使用 iptables-persistent

安装iptables-persistent

sudo apt-get install iptables-persistent

持久化规则

sudo netfilter-persistent save
sudo netfilter-persistent reload

完成上述操作就可以永久打开我们需要的端口了。

以上为本人的简单总结,参考的博客已经在开头说明。
其中可能会存在一些不正确的地方,希望大佬们多多指正!

  • 2
    点赞
  • 35
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值