Ubuntu 16.04 升级到 18.04 过程中,出现了和 miktex 相关的一个错误。升级顺利完成,但是发生了这个错误。导致了一些包并没有更新,以及 apt 的依赖被搞崩了,提示如下
You might want to run 'apt --fix-broken install' to correct these.
The following packages have unmet dependencies
miktex : Depends: libcurl3 (>= 7.16.2) but it is not installed
E: Unmet dependencies. Try 'apt --fix-broken install' with no packages (or specify a solution).
这时候使用 apt remove miktex 也是没有用的,提示这个错误
Removing miktex (2.9.6650-1) ...
miktexsetup: /usr/lib/x86_64-linux-gnu/libcurl.so.4: version
`CURL_OPENSSL_3' not found (required by miktexsetup)
dpkg: error processing package miktex (--remove):
installed miktex package pre-removal script subprocess returned error exit status 1
Errors were encountered while processing:
miktex
E: Sub-process /usr/bin/dpkg returned an error code (1)
错误的原因是 Ubuntu 18.04 将 libcurl3 升级成 libcurl4,对应的库也进行了更新,导致依赖 libcurl3 的应用程序例如 miktex 崩坏,进而导致 apt 崩坏,小白用户面对这种情况基本就手足无措了。
以错误关键字搜索,网上很多这样的问题,这个 bug 也算旷日持久,例如这里1的讨论。
搜索到的大部分网页要么没有提供解决方法,要么提供的方法是错误的2,其实问题很简单,既然要依赖 libcurl3,我们安装上 libcurl3 不就可以了?问题在于 Ubuntu 不允许同时安装 libcurl3 和 libcurl4。我们只能手动给 miktex 提供 libcurl3 对应的库,具体步骤如下 (参考链接3)
# download libcurl3
mkdir ~/libcurl3 && cd ~/libcurl3
apt-get download -o=dir::cache=~/libcurl3 libcurl3
ar x libcurl3* data.tar.xz
tar xf data.tar.xz
# backup
cp /usr/lib/x86_64-linux-gnu/libcurl.so.4.5.0 /usr/lib/x86_64-linux-gnu/libcurl.so.4.5.0.back
cp ~/libcurl3/usr/lib/x86_64-linux-gnu/libcurl.so.4.5.0 /usr/lib/x86_64-linux-gnu/
此时应该可以正常卸载 miktex 了,sudo apt remove miktex,如果还是提示错误记得检查下软链接
ls -alh /usr/lib/x86_64-linux-gnu/ | grep curl
卸载之后记得将之前备份的 libcurl4 对应的库文件恢复,最好再检查下软链接是否正确。这时候 apt 应该也正常工作了。
参考链接
Flexgate 背光门事件是指苹果公司 2016 或者 2017 款的 Macbook 在长期使用后出现的屏 幕质量问题,具体表现为屏幕背光完全消失(黑屏)或者出现严重的漏光现象,国内外很多 文章视频对此已经有详细的介绍1。美国也出现了针对 Flexgate 事件的集体诉讼。2019年5 月19日,苹果官方推出了 2016/2017 款 13 寸 Macbook Pro 的显示屏背光服务计划2,但是对于存在同 样问题的 2016 款 15 寸 Macbook Pro 却没有对应的服务计划。这也正是我购买的机型。
遇到同样问题的苹果用户,希望我们都能力所能及地投诉并关注这件事情。对于不想在官方换屏维修的用户,可以尝试在淘宝或者华强北维修,我个人的体验比较满意。
Flexgate 背光门出现的原因是苹果在 2016 款 Macbook 中引入了蝶式键盘,新设计降低了屏幕排线的强度,长期使用造成疲劳损坏。 无数的案例已经切实证明了这一设计缺陷,苹果官方对 2016 款 13 寸 Macbook Pro 提供背光服务计划,却罔顾大量 15 寸用户和 2017 款用户的权益损失。 苹果的不维修只更换服务也导致维修费用天价,不具有实际操作性,令人失望。此事件发生后,我也尝试在 12315 投诉,接到苹果的来电非常强硬,拒不承认自己的错误。 不提供任何补救措施。更是令人心寒。
注意:作者目前使用的方案已经更新,请参考最新文章,使用 TUN 方案,不需要自己维护 iptables 规则
一直以来的方式是在各个终端进行代理,因为没有一定网关/路由层面处理的理由。之前也在路由器上折腾过几次,成功大抵算是成功,但是偶尔的稳定性问题,以及不方便更改代理状态和调试,最终还是放弃。
前段时间折腾了 DIYNAS,安装了 PVE 系统,折腾了虚拟机好久。想着既然没什么后顾之忧,不如在虚拟机上试试软路由?使用 OpenWRT 原生系统 + openclash 使用了一周左右,稳定性尚可,就是更新频繁(强迫症无法不点更新啊),配置文件看得人眼花缭乱。
在翻 Clash 的 GitHub 仓库时,发现最近 TProxy 支持了转发 TCP1,遂想起来在 Ubuntu 上折腾一下透明代理作为网关,成功后发现这种方式相对于 OpenWRT + openclash 简单省心,维护一份配置文件,不用频繁更新。记录方案于此。
提前声明本人网络知识欠缺,配置大多参考他人,尽力给出原始链接供参考。
首先,在网关机器上打开 ipv4 转发, echo net.ipv4.ip_forward=1 >> /etc/sysctl.conf && sysctl -p
Clash 配置文件添加如下
# Transparent proxy server port for Linux (TProxy TCP and TProxy UDP)
tproxy-port: 7893
设置路由和 iptables 的脚本
# ROUTE RULES
ip rule add fwmark 1 table 100
ip route add local 0.0.0.0/0 dev lo table 100
# CREATE TABLE
iptables -t mangle -N clash
# RETURN LOCAL AND LANS
iptables -t mangle -A clash -d 0.0.0.0/8 -j RETURN
iptables -t mangle -A clash -d 10.0.0.0/8 -j RETURN
iptables -t mangle -A clash -d 127.0.0.0/8 -j RETURN
iptables -t mangle -A clash -d 169.254.0.0/16 -j RETURN
iptables -t mangle -A clash -d 172.16.0.0/12 -j RETURN
iptables -t mangle -A clash -d 192.168.50.0/16 -j RETURN
iptables -t mangle -A clash -d 192.168.9.0/16 -j RETURN
iptables -t mangle -A clash -d 224.0.0.0/4 -j RETURN
iptables -t mangle -A clash -d 240.0.0.0/4 -j RETURN
# FORWARD ALL
iptables -t mangle -A clash -p udp -j TPROXY --on-port 7893 --tproxy-mark 1
iptables -t mangle -A clash -p tcp -j TPROXY --on-port 7893 --tproxy-mark 1
# REDIRECT
iptables -t mangle -A PREROUTING -j clash
最后在局域网的 DHCP 服务器设置网关为该机器 IP 即可,也可以手动在希望走代理机器的网关设置未该机器 IP。
下载好对应版本的 clash 执行文件,移动或软链接至系统路径。
编写自动启动文件 # /etc/init.d/clash
#!/bin/sh /etc/rc.common
START=99
STOP=15
start() {
echo start
clash &
/root/.config/clash/iptables.sh
}
stop() {
echo stop
killall clash
}
配置文件中的 iptables.sh 即为上文中的 iptales 设置命令。
参考链接: