如何从 Debian 10 (Buster) 升级到 Debian 11 (Bullseye)

先查看确认Debian的版本

cat /etc/os-release
cat /etc/debian_version
lsb_release -a

更新包存储库:

将 /etc/apt/sources.list 文件中的 buster 关键字替换为 bullseye

sudo sed -i 's/buster/bullseye/g' /etc/apt/sources.list

或者直接去这个地址生成一个sources.list文件,保存下来替换:

https://mirrors.ustc.edu.cn/repogen/

之后先更新下系统的软件包列表:

sudo apt update

再下一步,执行最小系统更新 upgrade --without-new-pkgs

执行完整的系统升级将删除系统中保留的大量软件包。因此,分两阶段的方法将 Debian 10 升级到 Debian 11。先进行最小升级,之后再进行完全升级。

在最小更新将只升级当前软件包,而不安装新软件包或删除现有软件包。执行以下命令:

sudo apt upgrade --without-new-pkgs

在此过程中,如果屏幕出现选择提示,要求重新启动系统服务或保留或删除配置选项。 一般都单击“是”,按回车键继续。

此步升级完成后,我们执行完整的系统升级(full-upgrade)将系统升级到 Debian 11。会安装 Debian 11 附带的最新软件包并解决依赖问题。

sudo apt full-upgrade

会再出现几次提示。比如Openssh提示做什么操作。选择了保留当前安装的选项,确定ok下一步。

等待完全升级完成,就可以重新启动系统了。

重启后,再查看系统发行版本信息。已经升级至Debian 11(bulleye)

cat /etc/os-release
cat /etc/debian_version
lsb_release -a

另外,wsl 下默认安装的debian执行“lsb_release -a”查看发行版本,会提示:“lsb_release: command not found”

需要执行安装 lsb_release

apt-get install -y lsb-release

解决wsl两个子系统同时登录ssh,以及ping,sftp权限的问题

重装了windows的linux子系统,从wsl到wsl2,安装了一个kali,一个debian(其实这两个装一个就行了)

试试能不能ssh,发现没ssh服务,先安装

sudo apt install openssh-server
sudo systemctl start ssh

之后ssh上去之后,想改ssh端口,发现sftp编辑sshd_config文件提示“Permission denied”。给sshd_config加上权限,还不行,发现原来是sftp-server没权限。。。加上权限,可以编辑文件了。

sudo chmod u+s /usr/lib/openssh/sftp-server

设置ssh自启动

sudo systemctl enable ssh

查看子系统IP地址,ping自己一下也是没权限。加上权限

sudo chmod u+s /usr/bin/ping

然后同时开了kali,debian两个子系统的CMD窗口。查看ip,竟然两个子系统ip地址是一样的?没搞明白,怎么选择登录另一个子系统?是不是不能同时登录两个子系统呢?

先测试一下,打开两个子系统(顺序是先kali,再Debian),ssh登录22端口,连到的是第一个打开的子系统kali。再修改子系统kali的ssh端口到2022,再连22端口,连接失败,sudo service ssh restart 重启子系统Debian的ssh服务,再连22端口,Debian就连上了。这样两台子系统就可以同时ssh登录。

———————————————————————-

#如果Debian 中service 命令不存在,先安装 sysvinit-utils 包.

sudo apt-get install sysvinit-utils

如果已经安装,先在~/.bashrc 中添加 $PATH

PATH=$PATH:/usr/sbin

重启bash,service命令就可用了。

 service --status-all

Openwrt 一次自动更新全部软件包

1.使用 opkg 命令更新

opkg update
opkg upgrade luci 
opkg list-upgradable | grep luci- | cut -f 1 -d ' ' | xargs opkg upgrade

在ssh下,先“opkg update”,获取更新。之后再更新“ luci-” 开头的包。如果 要全部无条件更新,就去掉过滤“ grep luci- |”

2 使用 opkg-upgrade.sh 更新(推荐)

https://github.com/tavinus/opkg-upgrade

使用sh脚本更新,需要 curl 或 wget,使用Https链接的话,还需要SSL支持。

注意:curl / wget 可能会因为缺少 SSL 证书而失败。
您可以使用以下命令选择忽略证书检查:

curl -k
wget --no-check-certificate

或者,您将需要修复您的安装。
请注意,SSL支持会占用相当多的存储空间。/etc/ssl/certs/ca-certificates.crt

#这应该足以使SSL工作:

opkg install ca-certificates openssl-util

#如果您仍有问题,这可能是一种解决方法:

mkdir -p -m0755 /etc/ssl/certs && curl -k -o /etc/ssl/certs/ca-certificates.crt -L http://curl.haxx.se/ca/cacert.pem
  • 安装到当前目录,使用./opkg-upgrade.sh 执行:
# 根据使用 wget curl ,是否SSL,选择对应命令执行。

# using wget with SSL
wget 'https://raw.githubusercontent.com/tavinus/opkg-upgrade/master/opkg-upgrade.sh' -O "opkg-upgrade.sh" && chmod 755 "opkg-upgrade.sh"

# using wget WITHOUT SSL
wget --no-check-certificate 'https://raw.githubusercontent.com/tavinus/opkg-upgrade/master/opkg-upgrade.sh' -O "opkg-upgrade.sh" && chmod 755 "opkg-upgrade.sh"

# using curl with SSL
curl -L 'https://raw.githubusercontent.com/tavinus/opkg-upgrade/master/opkg-upgrade.sh' -o "opkg-upgrade.sh" && chmod 755 "opkg-upgrade.sh"

# using curl WITHOUT SSL
curl -k -L 'https://raw.githubusercontent.com/tavinus/opkg-upgrade/master/opkg-upgrade.sh' -o "opkg-upgrade.sh" && chmod 755 "opkg-upgrade.sh"
# 执行更新
./opkg-upgrade.sh
  • (推荐)安装到系统(无需.sh扩展):/usr/sbin/opkg-upgrade
# 根据使用 wget curl ,是否SSL,选择对应命令执行。

# using wget with SSL
wget 'https://raw.githubusercontent.com/tavinus/opkg-upgrade/master/opkg-upgrade.sh' -O "/usr/sbin/opkg-upgrade" && chmod 755 "/usr/sbin/opkg-upgrade"

# using wget WITHOUT SSL
wget --no-check-certificate 'https://raw.githubusercontent.com/tavinus/opkg-upgrade/master/opkg-upgrade.sh' -O "/usr/sbin/opkg-upgrade" && chmod 755 "/usr/sbin/opkg-upgrade"

# using curl with SSL
curl -L 'https://raw.githubusercontent.com/tavinus/opkg-upgrade/master/opkg-upgrade.sh' -o "/usr/sbin/opkg-upgrade" && chmod 755 "/usr/sbin/opkg-upgrade"

# using curl WITHOUT SSL
curl -k -L 'https://raw.githubusercontent.com/tavinus/opkg-upgrade/master/opkg-upgrade.sh' -o "/usr/sbin/opkg-upgrade" && chmod 755 "/usr/sbin/opkg-upgrade"
# 执行更新
opkg-upgrade

将更新命令加入自定义菜单

可以先安装 luci-app-commands

opkg install luci-app-commands

安装后,就可在luci的系统菜单中

使用自定义命令进行更新,一键就直接执行,更方便!如下图

这样就可以在 luci 界面,使用opkg-upgrade一键更新所有软件包了!

解决 snap 更新依赖关系错误

yum update , snap 更新出错。就解决如下,注意修改版本号

正在解决依赖关系
–> 正在检查事务
—> 软件包 snap-confine.x86_64.0.2.45.3.1-1.el7 将被 升级
—> 软件包 snap-confine.x86_64.0.2.47.1-1.el7 将被 更新
—> 软件包 snapd.x86_64.0.2.45.3.1-1.el7 将被 升级
—> 软件包 snapd.x86_64.0.2.47.1-1.el7 将被 更新
—> 软件包 snapd-selinux.noarch.0.2.45.3.1-1.el7 将被 升级
—> 软件包 snapd-selinux.noarch.0.2.47.1-1.el7 将被 更新
–> 正在处理依赖关系 selinux-policy-base >= 3.13.1-268.el7,它被软件包 snapd-selinux-2.47.1-1.el7.noarch 需要
–> 解决依赖关系完成
错误:软件包:snapd-selinux-2.47.1-1.el7.noarch (epel)
需要:selinux-policy-base >= 3.13.1-268.el7
已安装: selinux-policy-targeted-3.13.1-266.el7_8.1.noarch (@updates)
selinux-policy-base = 3.13.1-266.el7_8.1
可用: selinux-policy-minimum-3.13.1-266.el7.noarch (base)
selinux-policy-base = 3.13.1-266.el7
可用: selinux-policy-minimum-3.13.1-266.el7_8.1.noarch (updates)
selinux-policy-base = 3.13.1-266.el7_8.1
可用: selinux-policy-mls-3.13.1-266.el7.noarch (base)
selinux-policy-base = 3.13.1-266.el7
可用: selinux-policy-mls-3.13.1-266.el7_8.1.noarch (updates)
selinux-policy-base = 3.13.1-266.el7_8.1
可用: selinux-policy-targeted-3.13.1-266.el7.noarch (base)
selinux-policy-base = 3.13.1-266.el7
您可以尝试添加 –skip-broken 选项来解决该问题
您可以尝试执行:rpm -Va –nofiles –nodigest


首先:

package-cleanup --cleandupes
yumdownloader snapd-selinux-2.47.1-1.el7.noarch

之后:

rpm --force --nodeps -ivh snapd-selinux-2.47.1-1.el7.noarch.rpm

准备中… ################################# [100%]
正在升级/安装…
1:snapd-selinux-2.47.1-1.el7 ################################# [100%]

再次 yum update 成功!

openEuler-20.03-LTS 配置repo更新源

openEuler-20.03-LTS 更新出错
修改配置repo更新源
openEuler 与 华为云中的 EulerOS 不是同一个发行版本??

今天下载了华为的openEuler。装在电脑虚拟机里。

yum update 发现没有配置repo,于是想把Repo源换成华为的,按照 华为云操作 https://mirrors.huaweicloud.com/

在/etc/yum.repos.d目录下,创建文件EulerOS.repo,设置为

[base]
name=EulerOS-2.0SP5 base
baseurl=http://mirrors.huaweicloud.com/euler/2.5/os/x86_64/
enabled=1
gpgcheck=1
gpgkey=http://mirrors.huaweicloud.com/euler/2.5/os/RPM-GPG-KEY-EulerOS

然后update。显示出错:

[root@Euler ~]# yum update
Last metadata expiration check: 0:18:26 ago on 2020年04月14日 星期二 22时18分26秒
Error:
 Problem 1: cannot install both perl-Compress-Raw-Zlib-1:2.061-4.x86_64 and perl
  - package perl-IO-Compress-2.081-6.oe1.noarch requires perl(Compress::Raw::Zli
  - cannot install the best update candidate for package perl-Compress-Raw-Zlib-
  - problem with installed package perl-IO-Compress-2.081-6.oe1.noarch
 Problem 2: package perl-Time-HiRes-4:1.9725-3.x86_64 requires perl(:MODULE_COMP
  - cannot install both perl-4:5.16.3-285.h2.x86_64 and perl-4:5.28.0-434.oe1.x8
  - cannot install both perl-4:5.16.3-285.h4.x86_64 and perl-4:5.28.0-434.oe1.x8
  - cannot install both perl-4:5.16.3-285.h3.x86_64 and perl-4:5.28.0-434.oe1.x8
  - cannot install the best update candidate for package perl-Time-HiRes-1.9760-
  - problem with installed package perl-4:5.28.0-434.oe1.x86_64
 Problem 3: package python-2.7.5-58.h13.x86_64 obsoletes python2 provided by pyt
  - package python2-debug-2.7.16-15.oe1.x86_64 requires python2 = 2.7.16-15.oe1,
  - cannot install the best update candidate for package python2-2.7.16-15.oe1.x
  - problem with installed package python2-debug-2.7.16-15.oe1.x86_64
 Problem 4: package qemu-img-10:1.5.3-156.5.h2.x86_64 requires libiscsi.so.2()(6
  - cannot install both libiscsi-1.9.0-6.x86_64 and libiscsi-1.18.0-6.oe1.x86_64
  - cannot install the best update candidate for package qemu-img-2:4.0.1-11.oe1
  - problem with installed package libiscsi-1.18.0-6.oe1.x86_64
 Problem 5: package python2-debug-2.7.16-15.oe1.x86_64 requires python2-devel =
  - package python2-2.7.16-15.oe1.x86_64 requires libpython2.7_d.so.1.0()(64bit)
  - package python-devel-2.7.5-58.h13.x86_64 obsoletes python2-devel provided by
  - package python2-tkinter-2.7.16-15.oe1.x86_64 requires python2 = 2.7.16-15.oe
  - cannot install the best update candidate for package python2-devel-2.7.16-15
  - problem with installed package python2-tkinter-2.7.16-15.oe1.x86_64
(try to add '--allowerasing' to command line to replace conflicting packages or

如上面所示,update 总是出错。

然后换成 EulerOS-2.0SP3 base ,SP2,SP1 都是依然出错。

最后在 文档的 “系统安装”中找到一个 repo源 的链接:https://openeuler.org/zh/docs/20.03_LTS/docs/Releasenotes/%E7%B3%BB%E7%BB%9F%E5%AE%89%E8%A3%85.html

正确的repo源地址是:http://repo.openeuler.org/openEuler-20.03-LTS/OS/x86_64/

/etc/yum.repos.d/EulerOS.repo 配置为:

[base]
name=openEuler-20.03-LTS base
baseurl=https://repo.openeuler.org/openEuler-20.03-LTS/OS/x86_64/
enabled=1
gpgcheck=1
gpgkey=https://repo.openeuler.org/openEuler-20.03-LTS/OS/x86_64/RPM-GPG-KEY-openEuler

之后再次update成功!

yum clean all
yum makecache
yum update

openEuler-20.03-LTS base                                                                                                                                                            36 kB/s | 2.7 MB     01:18
Last metadata expiration check: 0:00:56 ago on 2020年04月14日 星期二 23时17分46秒.
Dependencies resolved.
Nothing to do.
Complete!

原因在于: openEuler 与 华为云中的 EulerOS 是两个不同的发行版本!!!

Vesta 主机控制面板

http://vestacp.com/

Vesta,是一个非常简单明了的服务器主机控制面板界。

它速度快,易于使用
安装很简单,界面友好
无需过多配置即可使用
轻形、 快速,资源占用少。

# 当前支持的操作系统:
# RHEL 5, RHEL 6
# CentOS 5, CentOS 6
# Debian 7
# Ubuntu 12.04, Ubuntu 12.10, Ubuntu 13.04, Ubuntu 13.10, Ubuntu 14.04

多语言界面:英语,法语,德语,荷兰语,挪威语,芬兰语,瑞典语,西班牙语,葡萄牙语,意大利语,希腊语,中国,台湾普通话,印度尼西亚,罗马尼亚,波黑,捷克,匈牙利,乌克兰,俄语,土耳其语,阿拉伯语

安装 Vesta 控制面板

1. Root用户登录 SSH
ssh root@your.server-name

2. 下载安装脚本
curl -O http://vestacp.com/pub/vst-install.sh

3. 运行脚本
sh vst-install.sh

卸载 Vesta 控制面板

1. 停止 vesta 服务
service vesta stop

2. 移除 vesta 软件包和软件资源库
RHEL/CentOS:
yum remove vesta*
rm -f /etc/yum.repos.d/vesta.repo

Debian/Ubuntu:
apt-get remove vesta*
rm -f /etc/apt/sources.list.d/vesta.list

3. 删除数据文件夹
rm -rf /usr/local/vesta

你也可以考虑删除管理员用户帐户和其 cron 作业。

Kloxo-MR 中安装 thirdparty phpMyAdmin

/thirdparty/phpMyAdmin/

File not found.

yum install kloxomr-thirdparty-phpmyadmin

安装 Kloxo-MR 7.0.0.b 后发现在面板中点击20150425021410

Url地址 – /thirdparty/phpMyAdmin/

File not found.

打开后找不到文件:

20150425020556

之后在服务组件中也看不到有phpMyAdmin 的信息。

sftp上服务器上的 Kloxo下也确实没有.  也许thirdparty就是要自己装把, 那么就装吧.

如下:

yum list kloxomr-thirdparty*

| 列出以 kloxomr-thirdparty 打头 记得后面有个星号.

kloxomr-thirdparty-phpmyadmin
kloxomr-thirdparty-jcterm
kloxomr-thirdparty-sshterm-applet

,找到全部的kloxomr第三方插件, 然后安装 phpMyAdmin

yum install kloxomr-thirdparty-phpmyadmin

20150425024041

如此,已经OK!

Linux vps 中使用ntp包自动校准时间

很多VPS安装完成后,过了很久才发现时间不准这个问题。有些是由于本身就没有调整好准确的时间,而有些则是因为时差问题导致连日期都有错误。本文将讲解ntpdate这一网络自动校时工具的安装与使用方法。

其实Linux中有个ntp包可以自动校准时间,并且非常好用。

Debian系统安装NTP校时包:

1 apt-get install ntpdate

CentOS系统安装NTP校时包:

1 yum install ntp

校时命令:

1 ntpdate cn.pool.ntp.org

如果想每隔一定时间自动校时,只需将上面的命令加入至Cron就行了:

1 00 12 * * * /sbin/ntpdate cn.pool.ntp.org

* cn.pool.ntp.org是ntp网络授时组织的中国授时源

————-

如果出现ntpdate: step-systime: Operation not permitted,说明vps不允许修改时间,可以使用:

cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime


附 OpenVZ VPS不能修改时间的母鸡解决办法

因为系统架构的原因,OpenVZ的linux vps默认是不允许在客户在vps自行修改系统时间,当执行修改时间的操作时,会出错

[root@root ~]# date -s 10:22:33
date: cannot set date: Operation not permitted

解决办法:

1、在OpenVZ主服务器上打开ntp

yum install ntp

2、给客户vps开启修改系统时间的权限:

vzctl set (veid) --capability sys_time:on --save

如果执行这个命令后报错:

WARNING: Some of the parameters could not be applied to a running container.
        Please consider using --setmode option

请先停止该vps后再执行

vzctl stop (veid)
vzctl set (veid) --capability sys_time:on --save
vzctl start (veid)

这样客户就可以自己在vps里修改系统时间了:

[root@root ~]# date -s 11:17:40

Wed Feb 23 11:17:40 CST 2011

VPS中须掌握的常用Linux命令

新手对于Linux类操作系统的恐惧大多数都来自Linux无数难记的命令,但实际上真正需要熟练掌握的Linux命令并不是很多,并且在熟练使用后,你还会发现Linux下的命令比Windows下一层一层的控制台来得远远方便。

相信我,只要经常在LinuxShell环境下工作,你会很快对这个BT的操作系统游刃有余。

下面仅仅介绍一些与VPS息息相关的命令,并且用最通俗易懂的语言来解释这些命令的作用:

 

1、基本的文件目录操作:

显示当前所处的目录:pwd

直接输入pwd即可,服务器会返回你所在的完整目录。

在不同目录之间跳转:cd

进入当前用户的用户目录:cd ~

进入根目录:cd /

进入上层目录:cd ../

进入上上层目录:cd ../../

进入当前目录下的photos目录:cd photos

删除文件:rm

删除readme文件:rm readme (然后系统会询问你是否删除,输入y表示确认,然后回车即可)

强制删除readme文件:rm readme -f (此时系统不会询问而是直接删除)

强制删除photos目录:rm photos -rf (后面的-rf表示强制删除目录)

创建目录:mkdir

在当前目录中创建photos目录:mkdir photos

在根目录中创建photos目录:mkdir /photos

创建文件:touch

创建空白文件readme:touch readme

重命名/移动:mv

将photos目录重命名为pictures: mv photos pictures

对于文件也是一样:mv oldfile newfile

将photos文件/目录移动到根目录:mv photos /

将photos文件/目录移动到上层目录:mv photos ../

复制文件/目录:cp

命令格式与上面的mv一样,第一个参数是源,第二个参数是目标。

2、压缩与解压缩

Linux系统默认的标准压缩格式是tar.gz,对zip也有比较好的兼容性。我们强烈建议如果要对文件进行压缩,都采用tar.gz或zip格式。Linux与Windows都能读取tar.gz(但Windows不太好编辑或创建)

将filename.tar.gz解压到当前目录:tar zxf filename.tar.gz

将photos目录打包成photos.tar.gz文件:tar zcf photos.tar.gz photos

将photos.zip文件在当前目录解压:unzip photos.zip

3、磁盘操作

查看所有分区剩余空间与占用情况:df -hl

[root@pt ~]# df -hl
文件系统 容量 已用 可用 已用% 挂载点
/dev/mapper/VolGroup00-LogVol00
8.6G 3.9G 4.4G 47% /
/dev/sda1 99M 19M 76M 20% /boot
tmpfs 506M 0 506M 0% /dev/shm
/dev/sdb1 16G 3.3G 12G 22% /home/wwwroot
/dev/sdc1 16G 386M 15G 3% /usr/local/mysql/var

目前就只介绍这一个命令就行了,df命令其它的参数暂时没必要介绍。这条命令会将磁盘情况以最人性化的方式显示出来

4、内存操作

查看当前内存使用情况:free -m (m参数:用M为单位显示,该参数还可以为k、g)

[root@pt ~]# free -m
total used free shared buffers cached
Mem: 1010 978 31 0 275 360
-/+ buffers/cache: 342 667
Swap: 1023 0 1023

需要注意的是,实际占用内存并非上面显示的978M,而是:used-buffers-cached,所以上面显示的实际占用内存为978-275-360=343M

至于为什么会这样,请参考VPS管理百科的:Linux free命令实际内存占用全解析与内存工作方式

这种内存管理方式看起来会造成Linux总是占用了几乎所有的物理内存,但却能大大提高Linux的效率:内存作为最快的存储是用来用的,不是用来看的。

4、下载文件:wget

wget是非常好用的文件下载工具。

下载http://www.bootf.com/test.zip文件:wget http://www.bootf.com/test.zip

继续下载(断点续传):wget -c http://www.bootf.com/test.zip

5、进程管理器:top

直接执行top命令,即会显示一个类似于Windows任务管理器的界面,并且实时刷新。如果想对这个界面有深入的了解,参考:Linux下Top命令全解析

退出这个top命令,直接按q建即可。

6、文本文件编辑:vim

此编辑器杀伤力强大,且功能复杂(但是非常好用),详细介绍请参考:Linux下vi编辑器使用教程与用法大全

VPS下对mysql内存性能的优化

VPS的内存对性能至关重要,所以很有必要优化一下。

看了几篇针对vps小内存优化的文章,于是自己也动手参照优化下自己的mysql。

修改过调整好的 my.cnf ,service mysqld restart 启动时报错。

查看log,发现 skip-innodb / skip-bdb / skip-locking,这几个参数有问题。

 

继续学习,查资料,得知 使用的参数都是老版本的参数,mysql5.1对应的为:

skip-innodb  –>  loose-skip-innodb

skip-locking  –> skip-external-locking

skip-bdb (已经废除了skip-bdb这个参数!)

 

配置文件: /etc/my.cnf

# low memory stuff – Mr.Tang
# Tue May 26 22:23:15 CST 2015

[mysqld]

loose-skip-innodb
skip-external-locking
skip-host-cache
skip-name-resolve

character_set_server = utf8
default-storage-engine = myisam

key_buffer_size = 256M
key_buffer = 256K
max_allowed_packet = 1M
myisam_sort_buffer_size = 8M
net_buffer_length = 128K
query_cache_size= 16M
read_buffer_size = 1M
read_rnd_buffer_size = 4M
sort_buffer_size = 1M
table_cache = 4M
table_open_cache = 16M
thread_cache_size = 8M
thread_stack = 131072

[mysqldump]
quick
max_allowed_packet = 16M

[mysql]
no-auto-rehash
#safe-updates

[isamchk]
key_buffer = 8M
sort_buffer_size = 8M

[myisamchk]
key_buffer_size = 128M
sort_buffer_size = 128M
read_buffer = 2M
write_buffer = 2M

[mysqlhotcopy]
interactive-timeout