文章目录
问题1:git clone error:gnutls_handshake() failed
问题描述:gnutls_handshake() failed: The TLS connection was non-properly terminated.
解决办法:
需要使用libcurl4-openssl-dev替换gnutls对git进行编译
sudo apt-get install build-essential fakeroot dpkg-dev
mkdir ~/git-openssl
cd ~/git-openssl
sudo apt-get source git
sudo apt-get build-dep git
如果出现找不到源代码的报错,使用命令sudo vim /etc/apt/sources.list,打开文件并取消带deb_src那一行的注释,保存后运行sudo apt update,然后再执行上面最后一条命令
然后运行:
sudo apt-get install libcurl4-openssl-dev
ls#查看版本
sudo dpkg-source -x git_2.7.4-0ubuntu1.7.dsc#版本可能不同
cd git_2.7.4 #实际版本可能不同
然后编辑文件debian/control,
sudo vim debian/control
vim模式下将全部的libcurl4-gnutls-dev改为libcurl4-openssl-dev,
:1,$s/libcurl4-gnutls-dev/libcurl4-openssl-dev/g
命令解释:在vim的insert模式下,将第1行到结尾($表示结尾)的所有字符libcurl4-gnutls-dev替换为libcurl4-openssl-dev,s表示替换switch,g表示全局global
然后运行sudo dpkg-buildpackage -rfakeroot -b
如果test失败,sudo vi debian/rules删去TEST=test,然后重新运行上述命令。
最后:
sudo dpkg -i ../git_2.17.0-1_amd64.deb
cd ..
ls #查看deb文件名
sudo dpkg -i ./git_2.7.4-0ubuntu1.7_amd64.deb #版本可能不同
问题2 Permission denied
提示哪个文件或文件夹Permission denied,就修改权限
chmod -R 777 文件名或者文件夹名
问题3 error=2 no such file or directory
可是发现目录下有这个文件,于是手动执行这个文件报错
shell脚本执行报错:/bin/bash^M: bad interpreter: No such file or directory
原因:shell脚本格式必须是unix才行行尾则以\n来标识,windows是doc类型的每行结尾以\r\n来标识
查看文件格式:
1.cat -A filename,如果输出结果中行末尾是^M$,则是dos格式,如果行末尾只是$,则是unix格式。
2.vim filename,编辑文件,执行“:set ff”,若执行结果为fileformat=dos则为dos格式,若执行结果为fileformat=unix则为unix格式。
解决办法:
安装dos2unix
sudo apt-get install dos2unix
在损坏文件的目录下,执行覆盖
dos2unix xxxx.sh