前言
本博客記錄自己使用ubuntu的一些錯誤和坑。
ubuntu不支持yum下載安裝機制
- 命令 sudo apt install yum 是可以安裝yum的,但安裝好后執行:
$ yum install gcc
報錯:
There are no enabled repos.
Run "yum repolist all" to see the repos you have.
You can enable repos with yum-config-manager --enable <repo>
- ubuntu不支持yum的下載安裝機制,需要使用apt.
執行ubuntu 更新源出現錯誤:
Reading package lists… Done
E: Problem executing scripts APT::Update::Post-Invoke-Success ‘if /usr/bin/test -w /var/cache/app-info -a -e /usr/bin/appstreamcli; then appstreamcli refresh > /dev/null; fi’
E: Sub-process returned an error code
- 解決辦法:
cd /tmp && mkdir asfix
cd asfix
wget https://launchpad.net/ubuntu/+archive/primary/+files/appstream_0.9.4-1ubuntu1_amd64.deb
wget https://launchpad.net/ubuntu/+archive/primary/+files/libappstream3_0.9.4-1ubuntu1_amd64.deb
sudo dpkg -i *.deb
- 重新update后問題解決;
ubuntu安裝python3.6后pip命令錯誤
pip is configured with locations that require TLS/SSL, however the ssl module in Python is not available.
Could not fetch URL https:*******: There was a problem confirming the ssl certificate:
Can't connect to HTTPS URL because the SSL module is not available. - skipping
- 原因是缺少ssl模塊。
sudo apt install openssl
sudo apt-get install libssl-dev
# 嘗試在python交互窗口輸入
import ssl
# 如果找不到那么要重新編譯安裝python
sudo ./configure --with-ssl
sudo make
sudo make install
# 如果提示找不到ssl先不用管,依舊編譯安裝。
# 最好在安裝python版本前先安裝openssl和libssl-dev
Ubuntu更新時提示錯誤 E: Sub-process /usr/bin/dpkg returned an error code (1)
按下面操作依次執行
$ sudo su //root權限
$ sudo mv /var/lib/dpkg/info /var/lib/dpkg/info_old //現將info文件夾更名
$ sudo mkdir /var/lib/dpkg/info //再新建一個新的info文件夾
//更新
$ sudo apt-get update
$ apt-get -f install
$ sudo mv /var/lib/dpkg/info/* /var/lib/dpkg/info_old
//執行完更新操作后會在info文件夾下生成一些文件,現將這些文件全部移到info_old文件夾下
$ sudo rm -rf /var/lib/dpkg/info // delete新建的info文件夾
$ sudo mv /var/lib/dpkg/info_old /var/lib/dpkg/info //把以前的info文件夾重新改回名字
sudo mv /var/lib/dpkg/info /var/lib/dpkg/info_old
sudo mkdir /var/lib/dpkg/info
sudo apt-get update
apt-get -f install
sudo mv /var/lib/dpkg/info/* /var/lib/dpkg/info_old
sudo rm -rf /var/lib/dpkg/info
sudo mv /var/lib/dpkg/info_old /var/lib/dpkg/info
Ubuntu安裝redis是指定make test報錯:You need tcl 8.5 or newer in order to run the Redis test
# 需要更新tcl到更高的版本
wget http://downloads.sourceforge.net/tcl/tcl8.6.1-src.tar.gz
sudo tar xzvf tcl8.6.1-src.tar.gz -C /usr/local/
cd /usr/local/tcl8.6.1/unix/
sudo ./configure
sudo make
sudo make install
Ubuntu安裝報錯:update-rc.d: error: insserv rejected the script header
# 一般是配置文件設置死循環帶來的錯誤
先將/etc/init.d中的程序啟動文件移動到其他的位置,然后重新執行
apt install xxx
最后將啟動文件移動回/etc/init.d文件夾中
Ubuntu提示:/etc/init.d/functions: No such file or directory
functions這個腳本是給/etc/init.d里邊的文件使用的。提供了一些基礎的功能,但是Ubuntu16.04默認/etc/init.d/目錄下不帶這個文件,
其實這個文件在/lib/apparmor/目錄下,設置一個軟連接到/etc/init.d/就可以解決這個問題。
ln -s /lib/apparmor/functions /etc/init.d/functions
ubuntu其pip后出現ImportError: cannot import name main
- 修改pip文件
將pip文件:
from pip._internal import main
if __name__ == '__main__':
sys.argv[0] = re.sub(r'(-script\.pyw|\.exe)?$', '', sys.argv[0])
sys.exit(main())
改為:
from pip import __main__
if __name__ == '__main__':
sys.argv[0] = re.sub(r'(-script\.pyw|\.exe)?$', '', sys.argv[0])
sys.exit(__main__._main())
# 退出就可以正常使用了
