BNU-FZH

fengzhenhua@outlook.com

最初只是想用U盘作为远程仓库,解决现存托管平台的若干问题。但是,随着近两天的考虑,逐步实现了本地U盘仓库及时同步+联网同步(可选择仓库,用来发布软件)的功能,这种做法的优点是:

  • 所有仓库在本地U盘, 可以解决网络托管平台访问速度慢、容量有限、费用高、隐私保护等问题。
  • 对于不能联网的电脑,可以使用U盘仓库随时随地编辑代码,离线同步。
  • 对于开源代码,可以设置网络,一条命令实现本地+U盘+网络托管平台同步功能,及时发布最新软件。
  • 配置文件: 网络托管平台githabgitlabgitee等已经配置了ssh或公开的仓库。
    ~/.ugitrcf
    1
    2
    3
    4
    example:
    gitee https://github.com/project.git
    gitee git@gitee_fengzhenhua:fengzhenhua
    gitlab git@gitlab_fengzhenhua:fengzhenhua

配置文件设置后,脚本自动启用网络同步功能。~/.ugitrcf前2行格式范例,不起作用,,您的有效配置应当

ugit 项目

安装脚本

  • 安装版本

    Install ugit.sh
    1
    2
    sudo curl -o /usr/local/bin/ugit https://gitlab.com/fengzhenhua/script/-/raw/usbmain/ugit.sh\?inline\=false 
    sudo chmod +x /usr/local/bin/ugit

    注意:单U盘版是第一代试验性的方案,目前已经实现多U盘版,且功能更加实用,所以单U盘版不再维护。其存在的问题主要是根据U盘名称识别U盘仓库,如果用户修改了U盘名称或使用了同名的其他U盘,则会出现问题,所以不建议大家使用单U盘版。

  • 安装版本

    Install neougit.sh
    1
    2
    sudo curl -o /usr/local/bin/ugit https://gitlab.com/fengzhenhua/script/-/raw/usbmain/neogit.sh\?inline\=false 
    sudo chmod +x /usr/local/bin/ugit

选项及功能

各项操作前,先将U盘插入到Linux电脑的USB接口, 如果没有U盘连接电脑则会出现提示。

命令 功能 备注
ugit -a 克隆全部U盘仓库到本地仓库 2024年04月17日
ugit -ad 关联远程网络仓库 2024年04月19日,需设置~/.ugitrcf
ugit -b 上传全部本地仓库到U盘仓库和网络仓库 2024年04月19日
ugit -c 克隆U盘中已经建立的仓库 2024年04月16日
ugit -h 显示帮助 2024年04月19日
ugit -l 列出U盘仓库 2024年04月18日
ugit -ll 列出本地仓库 仅适用多U盘版2024-04-22
ugit -lr 列出U盘仓库 仅适用多U盘版2024-04-22
ugit -n 新建U盘仓库并克隆到本地 2024年04月16日
ugit -p 上传全部本地仓库到网络仓库 2024年04月18日
ugit -r 删除U盘中已经建立的仓库 2024年04月16日
ugit -s 同步本地、U盘、网络 2024年04月23日
ugit -u 联网升级 2024年04月18日
ugit -v 显示版本 2024年04月19日
ugit 自动更新本机克隆自U盘的仓库 2024年04月17日
ugit.sh -i 安装脚本到/usr/local/bin/ugit 2024年04月16日
  • 2024年04月16日, 获得使用U盘作为Git仓库的方法后,为了尽快投入工作,连夜编写了自动化脚本ugit.sh,直接使用curl命令安装可以保证始终使用的是最新版。
  • 2024年04月19日, ugit.sh目前仅支持Linux系统,欢迎您移植到Windows平台。
  • 2024年04月22日, neougit.sh发布,版本号V3.1, 支持多U盘
  • 2024年04月22日, 修复关联远程仓库bug, 升级版本号V3.3
  • 2024年04月23日, 增加-s同步选项,升级版本号V3.5, 对于U盘中已经删除的仓库,但是另一台电脑上尚没有删除的,此选项将其移除到回收站

技术细节

  1. 插入电脑U盘, 假设您的U盘名字为159xxxxxxxx, 您的Linux用户名为wheel, 则在ArchLinuxU盘的地址为

    1
    /run/media/wheel/159xxxxxxxx

  2. U盘创建空仓库test, 实际就是建立一个文件夹作为git的远程仓库

    1
    2
    3
    4
    cd /run/media/wheel/159xxxxxxxx
    mkdir test
    cd test
    git init --bare

    注意:选项--bare必须有, 如果git仓库创建成功,则提示消息为

    1
    Initialized empty Git repository in /run/media/wheel/150xxxxxxxx/test/

  3. ,初始化本地仓库

    1
    2
    cd ~/test-your
    git init

  4. 建立远程仓库连接,编辑本地git配置文件,写入如下内容,关联仓库及其分支

    ~/test-your/.git/config
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    [core]
    repositoryformatversion = 0
    filemode = true
    bare = false
    logallrefupdates = true
    [remote "usb"]
    url = /run/media/wheel/159xxxxxxxx/test/
    fetch = +refs/heads/*:refs/remotes/usb/*
    [branch "master"]
    remote = usb
    merge = refs/heads/master

    注意:文件~/test-your/.git/config, 中的usb是您对远程仓库的别名,可以任意取定。

  5. 创建README.md文件,同第一次推送文件,注意中。

    1
    2
    3
    4
    5
    git pull
    touch README.md
    git add .
    git commit -m "first push"
    git push

  6. 拉取文件, 注意中。

    1
    git pull

  7. 在新电脑上克隆项目

    1
    git clone /run/media/wheel/159xxxxxxxx/test

    注意:对于clone下来的项目,pushpull和普通的git操作没有区别。如果不像上面这样编辑默认的默认的仓库及分支,则网络上的教程在U盘上建立git仓库,移动的“私有云”完成的配置的话应当使用命令pull usb master拉取,使用push usb master推送,其显然不如此处的配置便捷。

实现此脚本的最初说明 常用的代码托管平台有:githubgitlabgitee. github访问不是很稳定,同时只有付费版的才可以建立私有仓库,否则就是开放的。gitlab支持私有仓库的建立,但是注册gitlab需要google接收验证码,这在国内不容易做到,再者仓库容量5G, 有些不够用. gitee是国内的,优点是速度快,缺点容量也是5G,还有一些其他因素导致也不适合存放隐私文件。上述这些都是自己准备一个U盘建立自己的远程仓库的理由,优点无非是容量大,成本低,速度快,但也不是没有缺点,如果使用的U盘质量不过关那就面临资料损失的风险,所以.

在使用LaTeX生成目录超链接时,默认超链接的样式为带红色边框,这被多数人认为不美观,所以本文给出去掉边框的方法。

  • 在引用hyperref宏包时,应当把它放在最后一个位置,因为它修改了若干命令,如果有其他的宏包也修改了常规命令,则编译文件时会出错。

  • 宏包调用时的设置

    • 使用pdfborder选项

      1
      \usepackage[colorlinks=false, pdfborder={0 0 0}]{hyperref}

    • 使用hidelinks选项

      1
      \usepackage[hidelinks]{hyperref}

    • 修改链接颜色

      1
      2
      3
      4
      \usepackage[
      colorlinks=true,
      linkcolor=black
      ]{hyperref}

  • 使用hyperref的配置选项

    • 使用hidelinks隐藏链接

      1
      \hypersetup{hidelinks}

    • 修改链接颜色

      1
      2
      3
      4
      \hypersetup{
      colorlinks=true,
      linkcolor=black
      }

今天在打开同学的论文时发现乱码,这显然是由于他的LaTeX文件是在Windows下编辑的,默认编码为GBK编码,于是需要配置vim和neovim来自动转换编码到UTF-8才行。处理方法为:

~/.vimrc
1
2
3
4
5
6
7
8
" 设置编码为utf-8
set encoding=utf-8
" 如下设置,则无论所打开的文件是否为utf-8编码,保存时都强制保存为utf-8
"set fenc=utf-8
" 设置多编码文件
set fileencodings=utf-8,gbk,cp936,gb18030,big5,euc-jp,euc-kr,latin1,ucs-bom,ucs
" 设置终端显示编码为utf-8
set termencoding=utf-8
~/.config/nvim/lua/lsp/base.lua
1
2
3
4
5
6
-- 设置编码为UTF-8
vim.o.encoding = "utf-8"
-- 如下设置,则无论所打开的文件是否为utf-8编码,保存时都强制保存为utf-8
-- vim.o.fenc=UTF-8
-- 设置多编码文件
vim.o.fileencodings = "utf-8,gbk,big5,cp936,gb18030,euc-jp,euc-kr,latin1,ucs-bom,ucs "

由于neovim取消了对termencoding的支持,所以在neovim的配置中去除了这一项。详情参考commit-abaabd1d0

ArchLinux 是一个优秀的操作系统,但是实际使用的过程中时间给我上了一课! 最初追逐Gnome3的简洁,同时它也是渲染效果最好的桌面环境,与之齐名的是KDE Plasma 桌面环境。在Plasma4的时候,由于其经常漰溃,所以切换到了Gnome3。 但Gnome3虽然简洁好用,同时最符合我的个人需求,但是它的最大缺点就是依懒大量的插件,而我主要需要的插件是hide-top-bardash-to-dockUSER-Theme , 每次Gnome3的大版本升级,这些插件就会大量挂掉!由于这个问题切换到了KDE Plasma5, 据网传Plasma5比Plasma4要稳定的多,经过几个月的使用,证实了Plasma5稳定的传说。但是在2024年04月11日升级我的ArchLinux后,发现Plasma5已经升级到了Plasma6, 刚刚到这个桌面环境下,由于第一次支持Wayland, 速度提升明显,但是毕竟是刚刚发布,其稳定性堪忧,这不2024年04月14日系统就无法进入了!不得不考虑切换到其他桌面,尝试了budgie, 其足够简洁,同时基于gnome3构建,而它比Gnome3落后太多,渲染效果并不好。综合上述使用经验,一个在生产实践中的最佳方法就是不要急于升级桌面环境,要待Gnome3的插件都稳定的跟上相应版本时升级Gnome3环境,对于Plasma也是,不要急于升级,等到Plasma版本稳定后再升级。本文就是在解决这个稳定使用的问题时提出的,这是时间和实践的教训!

Pacman列出可用软件包组

pacmanpackage manager的缩写。列出可用软件包组命令:

1
2
3
sudo pacman -Sg
sudo pacman -Sg gnome
sudo pacman -Sg gnome |wc -l
  • 第1条命令,列出可用软件包组.
  • 第2条命令,列出软件包组gnome所包含的软件包.
  • 第3条命令, 检查软件包组gnome所包含的软件包数量.

配置软件包和软件包组禁止更新

编辑文件/etc/pacman.conf, 找到IgnorePkgIgnoreGroup, 对应位置后添加不需要升级的软件包或软件包组的名字。如果要添加多个包,则用空格分隔两个连续的包,即

禁用了gnome和gnome-extra的升级
1
2
3
4
5
6
7
# Pacman won't upgrade packages listed in IgnorePkg and members of IgnoreGroup
#IgnorePkg =
IgnoreGroup = gnome gnome-extra kde-applications

#NoUpgrade =
#NoExtract =

临时禁止软件包或软件包组更新

此时逗号分隔多个包或组
1
2
sudo pacman -Syyu --ignore=linux,vim
sudo pacman -Syyu --ignoregroup=gnome, gnome-extra

降级安装软件包

1
2
sudo pacman -S downgrade
sudo downgrade plasm-desktop

Thunderbird 默认开启了保留副本功能,这导致了每次发送邮件时在已发送邮箱中总是保留两份邮件,让人感觉不爽。下而给出解决方法:

编辑帐户设置副本和文件夹取消保留副本到

操作步骤

配置Neovim时,安装插件需要配置Perl路径,否则会报错如下:

perl
1
2
3
4
5
6
7
8
9
10
11
Perl provider (optional) ~
- perl executable: /usr/bin/perl
- WARNING Can't write to /usr/share/perl5/site_perl and /usr/bin: Installing modules to /home/feng/perl5
- ADVICE:
- To turn off this warning, you have to do one of the following:
- - run me as a root or with --sudo option (to install to /usr/share/perl5/site_perl and /usr/bin)
- - Configure local::lib in your existing shell to set PERL_MM_OPT etc.
- - Install local::lib by running the following commands
-
- cpanm --local-lib=~/perl5 local::lib && eval $(perl -I ~/perl5/lib/perl5/ -Mlocal::lib)
- OK Latest "Neovim::Ext" cpan module is installed: 0.06

为了应对这个错误,我们选择执行第二条建议:配置Perl路径。为了方便起见,让我们将基本位置分配给一个变量:(除了以下命令之外,任何变量都不使用这个变量。实际上,没有必要使用export )。

阅读全文 »

Linux下的KDE Plasma6 默认启用了立方体虚拟桌面特效。使用方法为:

  1. 安装kdeplasma6-addons
  2. 系统设置窗口管理桌面特效立方体
  3. 确认已经添加的虚拟桌面,按Meta+C

注意:如果虚拟桌面不足3个此特效无用。

有时候需要安装一些Aur源中没有的软件,此刻就需要找其他格式的包,比如DEB包。本文借助软件debtap将DEB软件包转换成zst软件包,从而实现pacman -U xxx.zst安装软件。

  1. 由于Arch仓库中不含软件debtap, 于是借助Aur助手paru安装

    install debtap
    1
    paru -S debtap

  2. 切换debtap为国内源,否则因风速问题容易升级失败

    1
    2
    sudo sed -i "s|http://ftp.debian.org/debian/dists|https://mirrors.ustc.edu.cn/debian/dists|g" /usr/bin/debtap
    sudo sed -i "s|http://archive.ubuntu.com/ubuntu/dists|https://mirrors.ustc.edu.cn/ubuntu/dists|g" /usr/bin/debtap

  3. 升级debtap

    1
    sudo debtap -u 

  4. 转换软件

    1
    sudo debtap xxxx.deb

  5. 安装转换生成的软件

    1
    sudo pacman -U x.tar.zst

如果一个 GRUB 主题托管在 GitHub 中,它很可能有安装程序脚本和卸载程序脚本。让我们以 Modern GRUB Themes 为例。它托管在 GitHub 中。

使用 Git 复刻项目的 GitHub 存储库:

1
git clone https://github.com/vinceliuice/grub2-themes.git

转到项目的文件夹:

1
cd grub2-themes/

运行安装程序脚本:

1
./install
阅读全文 »

pacman 包管理器是 Arch Linux 和其他主要发行版如 Red Hat 和 Ubuntu/Debian 之间的主要区别之一。它结合了简单的二进制包格式和易于使用的 构建系统pacman 的目标是方便地管理软件包,无论它是来自 官方库 还是用户自己构建的软件库。

如果你曾经使用过 Ubuntu 或基于 debian 的发行版,那么你可能使用过 apt-get 或 apt 命令。pacman 在 Arch Linux 中是同样的命令。如果你 刚刚安装了 Arch Linux,在安装 Arch Linux 后,首先要做的 几件事 之一就是学习使用 pacman 命令。

下面我将解释一些基本的 pacman 命令的用法,你应该知道如何用这些命令来管理你的基于 Archlinux 的系统。

阅读全文 »