『壹』 如何在ubuntu server 14.04下安裝gitlab中文版
安裝步驟有:
1. 依賴包
2. ruby
3. 用戶創建
4. 資料庫初始化
5. redis
6. gitlab源碼
7. apache
本文可能會用到VPN連接,在命令行下創建VPN連接的方法如下:
sudo apt-get install pptp-linux
sudo pptpsetup --create VPN名稱 --server 伺服器地址 --username 用戶名 --password 密碼 [--encrypt] --start
以上命令會創建一個設備,如果沒有其他的撥號設備,這個設備會是ppp0,用ifconfig可以看到,「--encrypt」選項可選,因為有的伺服器不支持,會提示MPPE required but peer negotiation failed,創建時帶上「--start」選項可以看到連接的情況。
pptpsetup創建的VPN連接重啟後會失效,如果想在不重啟的情況下刪除VPN連接:
sudo pptpsetup --delete VPN名稱
創建VPN連接後還需要使能,並且添加到路由列表:
sudo pon VPN名稱
sudo route add default dev ppp0
禁用VPN連接的方法是:
sudo poff VPN名稱
下面開始正文:
1. 依賴包
我裝的是ubuntu server 14.04,安裝的時候可以選是否安裝LAMP(Linux+Apache+MySQL+PHP),如果沒裝,可以用下面的命令裝:
sudo tasksel install lamp-server
安裝的時候會提示輸入MySQL的root密碼,下面要用。
接下來是依賴關系:
sudo apt-get install flex bison ruby build-essential zlib1g-dev libyaml-dev libssl-dev libgdbm-dev libreadline-dev libncurses5-dev libffi-dev curl openssh-server redis-server checkinstall libxml2-dev libxslt-dev libcurl4-openssl-dev libicu-dev logrotate python-docutils pkg-config cmake libkrb5-dev nodejs git-core
注意:這裡面裝了ruby,應該是1.9.1版本的,gitlab需要2.0以上的ruby,但是安裝2.0以上的ruby需要低版本的ruby,所以我們先裝上,一會兒卸掉。另外,ubuntu 14.04的軟體庫里有ruby 2.0,但是實測不能用,所以還是從源碼裝ruby吧。
2. ruby
下載,編譯,安裝(安裝前刪掉ruby 1.9.1):
curl -L --progress http://cache.ruby-lang.org/pub/ruby/2.1/ruby-2.1.5.tar.gz | tar xz
cd ruby-2.1.5
./configure --prefix=/usr --disable-install-rdoc
make
sudo apt-get autoremove ruby
sudo make install
然後安裝bundler:
sudo gem install bundler --no-ri --no-rdoc
3. 用戶創建
為gitlab創建一個git用戶:
sudo adser --disabled-login --gecos 'GitLab' git
4. 資料庫初始化
官方指南用的是PostgreSQL,不過官方也有MySQL的說明:
http://doc.gitlab.com/ce/install/database_mysql.html
sudo apt-get install -y mysql-server mysql-client libmysqlclient-dev
mysql -u root -p
輸入MySQL的root密碼登陸,然後:
mysql> CREATE USER 'git'@'localhost' IDENTIFIED BY '$password';
記得把上面這句的"$password"換成實際的密碼,然後:
mysql> SET storage_engine=INNODB;
mysql> CREATE DATABASE IF NOT EXISTS `gitlabhq_proction` DEFAULT CHARACTER SET `utf8` COLLATE `utf8_unicode_ci`;
mysql> GRANT SELECT, INSERT, UPDATE, DELETE, CREATE, DROP, INDEX, ALTER, LOCK TABLES ON `gitlabhq_proction`.* TO 'git'@'localhost';
mysql> \q
5. Redis
Redis貌似是用來存key的資料庫吧,不知道,反正按步驟安裝:
sudo apt-get install redis-server
sudo cp /etc/redis/redis.conf /etc/redis/redis.conf.orig
sed 's/^port .*/port 0/' /etc/redis/redis.conf.orig | sudo tee /etc/redis/redis.conf
echo 'unixsocket /var/run/redis/redis.sock' | sudo tee -a /etc/redis/redis.conf
echo 'unixsocketperm 770' | sudo tee -a /etc/redis/redis.conf
sudo service redis-server restart
sudo usermod -aG redis git
6. gitlab源碼
gitlab源碼默認是安裝在/home/git/gitlab,如果要更改,請參照官方手冊。獲取中文版源碼的過程如下:
cd /home/git
sudo -u git -H git clone https://gitlab.com/larryli/gitlab.git
不知道是因為GFW還是什麼,git clone這個版本庫可慢可慢了,我用了VPN,速度會快點。
git clone完以後可以checkout你想要的版本,在本文編寫的時間(2015年4月22日),可以:
sudo -u git -H git checkout 7-7-zh
然後配置源碼
cd /home/git/gitlab
sudo -u git -H cp config/gitlab.yml.example config/gitlab.yml
sudo chown -R git log/
sudo chown -R git tmp/
sudo chmod -R u+rwX,go-w log/
sudo chmod -R u+rwX tmp/
sudo -u git -H mkdir /home/git/gitlab-satellites
sudo chmod u+rwx,g=rx,o-rwx /home/git/gitlab-satellites
sudo chmod -R u+rwX tmp/pids/
sudo chmod -R u+rwX tmp/sockets/
sudo chmod -R u+rwX public/uploads
sudo -u git -H cp config/unicorn.rb.example config/unicorn.rb
sudo -u git -H cp config/initializers/rack_attack.rb.example config/initializers/rack_attack.rb
sudo -u git -H git config --global user.name "GitLab"
sudo -u git -H git config --global user.email "[email protected]"
sudo -u git -H git config --global core.autocrlf input
sudo -u git -H cp config/resque.yml.example config/resque.yml
當然,你可以把[email protected]改成你的email;上面的那些yml文件裡面的配置基本都不用更改;然後,配置資料庫用戶名和密碼:
sudo -u git cp config/database.yml.mysql config/database.yml
sudo -u git -H editor config/database.yml
sudo -u git -H chmod o-rwx config/database.yml
然後,安裝gems:
sudo -u git -H bundle install --deployment --without development test postgres aws
這一步必須使用VPN,因為萬惡的GFW屏蔽了rubygems.org,所以會提示connection reset by peer之類的,這部時間也會比較久,如果你的機器是多核的,也可以加上和make相同-jN參數,N等於核數。
(2015年5月2日追加)
發現淘寶做了個rubygrems.org的國內鏡像,http://ruby.taobao.org/,可以參照上面的內容設置,加快gems安裝速度。
再接下來安裝gitlab shell:
sudo -u git -H bundle exec rake gitlab:shell:install[v2.6.0] REDIS_URL=unix:/var/run/redis/redis.sock RAILS_ENV=proction
sudo -u git -H editor /home/git/gitlab-shell/config.yml
把gitlab的url改成http://localhost/或者你的域名。
在接下來初始化資料庫:
sudo -u git -H bundle exec rake gitlab:setup RAILS_ENV=proction
加入啟動項:
sudo cp lib/support/init.d/gitlab /etc/init.d/gitlab
sudo update-rc.d gitlab defaults 21
初始化日誌:
sudo cp lib/support/logrotate/gitlab /etc/logrotate.d/gitlab
檢查應用狀態:
sudo -u git -H bundle exec rake gitlab:env:info RAILS_ENV=proction
編譯附件:
sudo -u git -H bundle exec rake assets:precompile RAILS_ENV=proction
啟動gitlab服務:
sudo service gitlab start
7. apache
下載apache的配置文件:https://gitlab.com/gitlab-org/gitlab-recipes/blob/master/web-server/apache/gitlab-apache2.4.conf
將其中的「ProxyPassReverse
http://gitlab.example.com/」改成「ProxyPassReverse
http://localhost/」或者你的域名,將其中的「/var/log/httpd/logs/」改為「/var/log/apache2/」。
用命令來說:
wget https://gitlab.com/gitlab-org/gitlab-recipes/raw/master/web-server/apache/gitlab-apache2.4.conf
mv gitlab-apache2.4.conf 001-gitlab.conf
editor 001-gitlab.conf (進行上述修改)
sudo cp 001-gitlab.conf /etc/apache2/sites-available
cd /etc/apache2/sites-enabled
sudo rm 000-default.conf
sudo ln -s ../sites-available/001-gitlab.conf 001-gitlab.conf
另外,還需要使能代理模塊以實現反向代理功能,不然會提示「ProxyPassReverse」無效之類的。
cd /etc/apache2/mods-enabled
sudo ln -s ../mods-available/proxy.conf proxy.conf
sudo ln -s ../mods-available/proxy.load proxy.load
sudo ln -s ../mods-available/proxy_connect.load proxy_connect.load
sudo ln -s ../mods-available/proxy_http.load proxy_http.load
sudo ln -s ../mods-available/rewrite.load rewrite.load
重啟apache:
sudo service apache2 restart
然後,檢查下配置是否正確:
sudo -u git -H bundle exec rake gitlab:check RAILS_ENV=proction
如果都是綠色的結果,那就可以訪問了。登陸用戶名:root,初始密碼:5iveL!fe
最後配置一下郵件,修改/home/git/gitlab/config/gitlab.yml,裡面的「email_from:」為一個有效的email地址;修改/home/git/gitlab/config/environments/proction.rb,裡面的 「config.action_mailer.delivery_method=」為「:smtp」;最後:
cd /home/git/gitlab/config/initializers
sudo -u git -H cp smtp_settings.rb.sample smtp_settings.rb
然後把文件的里的內容修改正確了,再重啟一下gitlab服務就行了:
sudo service gitlab restart
『貳』 我在安編譯glib遇到這個問題怎麼解決
需要安裝libffi-dev包,你用的什麼系統?如果是ubuntu或者debian的話,運行: sudo apt-get install libffi-dev
『叄』 linux系統安裝軟體時,出現1提示的現象,但yum install libffi 時又出現了2提示的現象,這是怎麼回事啊
redhat系列用的庫一般都是比較舊的,尤其是官方源;
不過你這個,已經是3.0.5,滿足了>=3.0.0的要求了,估計就是configre找不到你的庫文件在哪裡
locate libffi.so
看看在哪個目錄,然後修改 環境變數PKG_CONFIG_PATH,增加這個路徑
『肆』 GCC4.7有沒有什麼方便的安裝辦法
因為是centos Linux,默認可以採用yum方式安裝,則採用如下命令安裝gcc編譯器即可:# yum -y install gcc
如果是其他linux,可以地址參考如下步驟
步驟如下:
1:在/gcc.gnu.org 下載
最新的gcc-4.7.2.tar.gz包
mkdir /usr/gcc/
gcc-4.7.2.tar.gz 到/usr/gcc/
2:解壓縮
tar xfz gcc-4.7.2.tar.gz
[root@pg2 gcc]# tar xfz gcc-4.7.2.tar.gz
[root@pg2 gcc]# ls
gcc-4.7.2 gcc-4.7.2.tar.gz
進入gcc-4.7.2
[root@pg2 gcc-4.7.2]# ls
ABOUT-NLS configure gcc libffi libquadmath ltsugar.m4 mkinstalldirs
boehm-gc configure.ac gnattools libgcc libssp ltversion.m4 move-if-change
ChangeLog contrib include libgfortran libstdc++-v3 MAINTAINERS NEWS
ChangeLog.tree-ssa COPYING INSTALL libgo libtool-ldflags maintainer-scripts README
compile COPYING3 install-sh libgomp libtool.m4 Makefile.def symlink-tree
config COPYING3.LIB intl libiberty ltgcc.m4 Makefile.in ylwrap
config.guess COPYING.LIB LAST_UPDATED libitm ltmain.sh Makefile.tpl zlib
config-ml.in COPYING.RUNTIME libada libjava lt~obsolete.m4 MD5SUMS
config.rpath depcomp libcpp libmudflap lto-plugin missing
config.sub fixincludes libdecnumber libobjc ltoptions.m4 mkdep
3:准備
/usr/gcc/gcc-4.7.2 作為${srcdir}
4:配置目標目錄
[root@pg2 gcc472]# pwd
/usr/gcc472
mkdir /usr/gcc472作為${destdir}
配置是通過執行${srcdir}下的configure來完成的。其命令格式為(記得用你的真實路徑替換${destdir}):
% ${srcdir}/configure --prefix=${destdir} [其它選項]
在我的機器上,我是這樣配置的:
[root@pg2 gcc-4.7.2]#
./configure --prefix=/usr/gcc472 --enable-threads=posix --disable-checking --disable-multilib --enable-languages=c,c++
將GCC安裝在/usr/gcc472目錄下,支持C/C++,其它選項參見GCC提供的幫助說明
這里會報一些錯誤,主要是編譯依賴,網上很多方法很麻煩,這里直接在線下載依賴,輸入
使用./contrib/download_prerequisites ,他會自動下載,自動編譯,何樂而不為
./contrib/download_prerequisites
然後在./configure --prefix=/usr/gcc472 --enable-threads=posix --disable-checking --disable-multilib --enable-languages=c,c++
『伍』 如何在windows平台下配置gtk開發環境
GTK+開發環境搭建
「工欲善其事,必先利其器」首先介紹一下GTK+開發環境的搭建,網上很多所謂的GTK的開發環境的搭建基本都是抄來抄去,也不知道有沒有人使用他們介紹的方法搭建並編譯成功,很不幸的是我使用他們寫的方法沒有搭建成功,所以有必要再增加一個原創版本來介紹GTK+開發環境的搭建,這里介紹windows下兩種環境搭建的方法,ubuntu的我就不說了,apt-get的功能真是太強大,直接sudo apt-get install gtk+2.0就搞定了,使用gcc編譯添加編譯條件就沒問題了.現在說說windows吧!第一種是使用VS開發環境,我打算基於VS2012來講解,我的電腦里裝的是2012;另一種是使用codeblocks開發工具.
准備步驟一:
首先是gtk+開發包版本的選擇,這個非常重要,我在搭建的時候參考了非常多的資料,官方的資料、個人的心得,怎麼都沒有成功,最後偶然的機會發現是版本的問題。gtk+的官網上windows下的開發包分成32bit和64bit的,
網上我看到的文章說的都是根據自己的系統選擇開發包版本,我的系統是windows 8.1 x64 pro版本,足夠新了吧!很多軟體開發人員喜歡xp系統,但是我認為最新的東西才是適合軟體開發人員的,如果我們自己都固步自封,怎麼做出好的東西給客戶呢,新的東西雖然冒險,但是你可以根據自己項目的特點進行取捨,現在大家不喜歡用新東西的原因無非是出了問題無法很容易的找到解決方案,這個看自己了!我這是自己折騰著玩,沒有老闆在後面催著,所以我選擇最新的系統、最新的開發包。無論是你的系統是32bit還是64bit的,不要根據系統選擇開發包,要根據編譯器是32bit還是64bit來選擇開發包,無論VS2012還是codeblocks默認的編譯器都是32bit的,所以選擇32bit的開發包即可,由於gtk+是使用gcc編譯的或者minGW,使用VS2012的MS編譯器有點小問題,但是不影響使用。到www.gtk.org網站上下載gtk All-in-one bundle版本,這個版本打包了所有需要的文件,比較方便,我下載的是gtk+bundle_3.6.4-20130921_win32.zip和gtk+bundle_2.24.10-20120208_win32.zip是目前3.x和2.x最新的版本了。
為什麼下載2.x的是給codeblocks准備的,codeblocks不支持直接創建3.x版本的開發環境,但是支持從2.x版本直接創建gtk+工程,
這個稍後再講。現在開始:
准備步驟二:
將下載的開發包壓縮文件解壓縮到一個文件夾內,在環境變數的path下將這個文件夾下的bin目錄添加進去,
這個目錄是我試驗64bit時的截圖,不用糾結這個。
添加完成之後,你們可以試著運行bin目錄下的gtk3-demo.exe,如果配置沒有錯誤將會出現GTK+ Code Demos的窗口,這就說明你的配置是沒有錯誤的。
准備工作完畢,現在可以開始了。
VS2012搭建GTK+開發環境
1.新建一個空的C++項目,Visual C++—常規—空項目
2.右鍵項目—選擇「屬性」,打開屬性設置。
3.配置屬性—C/C++—常規—附加包含目錄—編輯
4.添加新行
將開發包的include文件夾添加進去,
需要添加的目錄有:
include,及include下的所有文件夾(atk-1.0,cairo,fontconfig,freetype2,gail-3.0,gdk-pixbuf-2.0,gio-win32-2.0,glib-2.0,jasper,libcroco-0.6,libpng15,librsvg-2.0,libxml2,lzma,pango-1.0,pixman-1),和lib文件夾下的glib-2.0\include、libffi-3.0.12\include(千萬不要忘記這兩個文件)。很不幸的是這些文件夾只能一個一個的添加,不能批量添加。添加完成之後會像這樣。
5.配置屬性—鏈接器—常規—附加庫目錄—編輯,將lib目錄添加進去
6.配置屬性—鏈接器—輸入—附加依賴項—編輯,將lib文件夾下則*.lib文件全部添加進去,我的lib目錄下有:
atk-1.0.lib
cairo.lib
fontconfig.lib
gailutil.lib
gdk_pixbuf-2.0.lib
gdk-win32-3.0.lib
gio-2.0.lib
glib-2.0.lib
gmole-2.0.lib
gobject-2.0.lib
gthread-2.0.lib
gtk-win32-3.0.lib
pango-1.0.lib
pangocairo-1.0.lib
pangoft2-1.0.lib
pangowin32-1.0.lib
添加完成之後像這樣:
每行回車,後面沒有「;」
7.新建一個main.cpp文件,在文件中輸入
復制代碼
代碼如下:
#include <stdlib.h>
#include <gtk/gtk.h></p> <p>static void helloWorld (GtkWidget *wid, GtkWidget *win)
{
GtkWidget *dialog = NULL;</p> <p> dialog = gtk_message_dialog_new (GTK_WINDOW (win), GTK_DIALOG_MODAL, GTK_MESSAGE_INFO, GTK_BUTTONS_CLOSE, "Hello World!");
gtk_window_set_position (GTK_WINDOW (dialog), GTK_WIN_POS_CENTER);
gtk_dialog_run (GTK_DIALOG (dialog));
gtk_widget_destroy (dialog);
}</p> <p>int main (int argc, char *argv[])
{
GtkWidget *button = NULL;
GtkWidget *win = NULL;
GtkWidget *vbox = NULL;</p> <p> /* Initialize GTK+ */
g_log_set_handler ("Gtk", G_LOG_LEVEL_WARNING, (GLogFunc) gtk_false, NULL);
gtk_init (&argc, &argv);
g_log_set_handler ("Gtk", G_LOG_LEVEL_WARNING, g_log_default_handler, NULL);</p> <p> /* Create the main window */
win = gtk_window_new (GTK_WINDOW_TOPLEVEL);
gtk_container_set_border_width (GTK_CONTAINER (win), 8);
gtk_window_set_title (GTK_WINDOW (win), "Hello World");
gtk_window_set_position (GTK_WINDOW (win), GTK_WIN_POS_CENTER);
gtk_widget_realize (win);
g_signal_connect (win, "destroy", gtk_main_quit, NULL);</p> <p> /* Create a vertical box with buttons */
vbox = gtk_vbox_new (TRUE, 6);
gtk_container_add (GTK_CONTAINER (win), vbox);</p> <p> button = gtk_button_new_from_stock (GTK_STOCK_DIALOG_INFO);
g_signal_connect (G_OBJECT (button), "clicked", G_CALLBACK (helloWorld), (gpointer) win);
gtk_box_pack_start (GTK_BOX (vbox), button, TRUE, TRUE, 0);</p> <p> button = gtk_button_new_from_stock (GTK_STOCK_CLOSE);
g_signal_connect (button, "clicked", gtk_main_quit, NULL);
gtk_box_pack_start (GTK_BOX (vbox), button, TRUE, TRUE, 0);</p> <p> /* Enter the main loop */
gtk_widget_show_all (win);
gtk_main ();
return 0;
}
然後運行,得到:
到此一個可以使用的VS的GTK+開發環境搭建完畢。這樣的步驟本人一步步試驗得來,應該沒有錯誤。可放心使用,哈!
codeblocks下搭建GTK+開發環境
我的codeblocks是12.11版本,是目前最新的codeblocks版本,如果使用2.x版本的GTK+那麼建立一個GTK+工程很容易。
1.選擇GTK+ progect
2.next—填寫工程名字
可以隨便填寫
3.選擇開發包的直接根目錄
如果出現上面的提示證明你使用的是3.x的開發包。出現上面錯誤是因為codeblocks的問題,你只需要重新指定一個指向2.x開發包的目錄即可。
選擇「next」,並點擊「finsh」,至此一個新的GTK+工程就完成了。
如果你原來添加到環境變數path下的目錄要更改成現在這個新目錄了,否則會有錯誤提示。
『陸』 如何將ansible tower安裝到python2.7目錄下
pip2.6安裝Ansible,但是pip2.6是基於python2.6安裝的,而python2.6版本有點老。所以而已用python2.7安裝Ansible。
其實python2.7安裝Ansible和python2.6安裝過程基本上是一樣的,只不過在安裝Ansible所需要的模塊和Ansible時,需要用pip2.7來安裝。
安裝過程如下:
1、安裝python2.7
安裝python2.7前的准備
yum-yinstallreadlinereadline-devel
yum-yinstallzlib-devel
yum-yinstallopensslopenssl-devel
安裝gcc編譯工具
yum-yinstallgcc
下載python2.7安裝包
下載地址:www python.org
yum-yinstallxz
tarJxfPython-2.7.11.tar.xz
cdPython-2.7.11
mkdir/usr/local/python27
./configure--prefix=/usr/local/python27
make&&makeinstall
創建軟連接
ln-s/usr/local/python27/bin/python2.7/usr/bin/python2.7
2、安裝pip2.7
安裝setuptools
下載地址:https//pypi.python.org/pypi?%3Aaction=search&term=setuptools&submit=search
安裝:
tarzxfsetuptools-19.6.2.tar.gz
cdsetuptools-19.6.2
python2.7setup.pyinstall
安裝pip
下載地址:https//pypi.python.org/pypi/pip/
安裝:
tarzxfpip-8.1.0.tar.gz
cdpip-8.1.0
python2.7setup.pyinstall
創建軟連接
ln-s/usr/local/python27/bin/pip2.7/usr/bin/pip2.7
3、安裝Ansible
安裝依賴包
yum-yinstalllibffilibffi-devel
yum-yinstallgccgcc-c++python-develpython-simplejson
安裝Ansible需要的python模塊
pip2.
安裝Ansible
pipinstallansible
安裝完成後,ansible的執行文件在python2.7的bin目錄下
[root@localhostbin]#cd/usr/local/python27/bin/
[root@localhostbin]#ll
total6240
-rwxr-xr-x.1rootroot110Jun1517:312to3
-rwxr-xr-x.1rootroot4203Jun1517:48ansible
-rwxr-xr-x.1rootroot4203Jun1517:48ansible-console
-rwxr-xr-x.1rootroot4203Jun1517:48ansible-doc
-rwxr-xr-x.1rootroot4203Jun1517:48ansible-galaxy
-rwxr-xr-x.1rootroot4203Jun1517:48ansible-playbook
-rwxr-xr-x.1rootroot4203Jun1517:48ansible-pull
-rwxr-xr-x.1rootroot4203Jun1517:48ansible-vault
-rwxr-xr-x.1rootroot326Jun1517:41easy_install
-rwxr-xr-x.1rootroot334Jun1517:41easy_install-2.7
-rwxr-xr-x.1rootroot108Jun1517:31idle
-rwxr-xr-x.1rootroot284Jun1517:42pip
-rwxr-xr-x.1rootroot286Jun1517:42pip2
-rwxr-xr-x.1rootroot290Jun1517:42pip2.7
-rwxr-xr-x.1rootroot93Jun1517:31pydoc
lrwxrwxrwx.1rootroot7Jun1517:33python->python2
lrwxrwxrwx.1rootroot9Jun1517:33python2->python2.7
-rwxr-xr-x.1rootroot6271354Jun1517:31python2.7
-rwxr-xr-x.1rootroot1696Jun1517:33python2.7-config
lrwxrwxrwx.1rootroot16Jun1517:33python2-config->python2.7-config
lrwxrwxrwx.1rootroot14Jun1517:33python-config->python2-config
-rwxr-xr-x.1rootroot18556Jun1517:31smtpd.py
編輯/etc/profile文件,加入以下配置
exportANSIBLE_HOME=/usr/local/python27
exportPATH=$PATH:$ANSIBLE_HOME/bin[root@localhostbin]#ansible--version
ansible2.1.0.0
configfile=
configuredmolesearchpath=Defaultw/ooverrides
『柒』 編譯安裝python需要哪些依賴
依賴庫:
//使用apt 安裝即可
1.gcc, make, zlib1g-dev(壓縮/解壓縮庫)
安裝過程需要的庫。
2.libbz2-dev
bz2支持庫,若在編譯安裝python前沒有安裝,將無法通過pip install 安裝提供bz2格式的第三方庫,會出現unsupported archive format: .tar.bz2的錯誤,例如爬蟲庫Scrapy依賴的Twisted。
3.libsqlite3-dev
sqlite3支持庫,若在編譯安裝python前沒有安裝,則python中會缺失sqlite3模塊,當引入sqlite3或使用依賴sqllite3的第三方庫(例如Scrapy)時,會出現ImportError: No mol named _sqllite3的錯誤。
//以上為編譯安裝前需要安裝的庫,可能不夠全面,會不斷補充。
4.其他:安裝第三方庫需要的庫
python3-dev, libxml2-dev, libxslt1, libffi-dev, libssl-dev等,在安裝第三方庫會有具體說明,不做過多解釋。
安裝:
//通過wget獲取壓縮包,這里選擇3.6.1版
wget https://www.python.org/ftp/python/3.6.1/Python-3.6.1.tar.xz
//解壓
tar xJf Python-3.6.1.tar.xz
cd Python-3.6.1
./configure
make
/*這步如果需要sudo,請使用sudo -H命令,即sudo -H make install,避免pip等模塊安裝失敗。
錯誤示例(pip安裝失敗):The directory '/home/ls/.cache/pip' or its parent directory is not owned by the current user and caching wheels has been disabled. check the permissions and owner of that directory. If executing pip with sudo, you may want sudo's -H flag.
*/
make install
『捌』 我在安編譯glib遇到這個問題怎麼解決gclosure.c:27:17: fatal error: ffi.h: No such file or directory
需要安裝libffi-dev包,你用的什麼系統?如果是ubuntu或者debian的話,運行:
sudo apt-get install libffi-dev
『玖』 如何使用libffi庫實現OC方法替換
其中i12中的i代表返回值類型是int,12代碼這個block參數的總長度是12位元組(不確定,感覺是這個意思),@?0標識block的第一參數類型是Block類型(類似函調調用的self),後面的0代表了第一個參數從函數調用棧偏移0位元組開始,i4代表了第二個參數是int類型,其中4代碼表了參數的起始位置從從函數調用棧偏移4位元組開始,i8代表了第三個參數是int類型,其中8參數的起始位置從從函數調用棧偏移8位元組開始。
分析出OC數據類型信息後(並沒有使用類型偏移信息~,只用到了類型信息),根據每種類型生成對應的ffi_type
『拾』 編譯安裝python需要哪些依賴
依賴庫:
//使用apt
安裝即可
1.gcc,
make,
zlib1g-dev(壓縮/解壓縮庫)
安裝過程需要的庫。
2.libbz2-dev
bz2支持庫,若在編譯安裝python前沒有安裝,將無法通過pip
install
安裝提供bz2格式的第三方庫,會出現unsupported
archive
format:
.tar.bz2的錯誤,例如爬蟲庫Scrapy依賴的Twisted。
3.libsqlite3-dev
sqlite3支持庫,若在編譯安裝python前沒有安裝,則python中會缺失sqlite3模塊,當引入sqlite3或使用依賴sqllite3的第三方庫(例如Scrapy)時,會出現ImportError:
No
mol
named
_sqllite3的錯誤。
//以上為編譯安裝前需要安裝的庫,可能不夠全面,會不斷補充。
4.其他:安裝第三方庫需要的庫
python3-dev,
libxml2-dev,
libxslt1,
libffi-dev,
libssl-dev等,在安裝第三方庫會有具體說明,不做過多解釋。
安裝:
//通過wget獲取壓縮包,這里選擇3.6.1版
wget
https://www.python.org/ftp/python/3.6.1/Python-3.6.1.tar.xz
//解壓
tar
xJf
Python-3.6.1.tar.xz
cd
Python-3.6.1
./configure
make
/*這步如果需要sudo,請使用sudo
-H命令,即sudo
-H
make
install,避免pip等模塊安裝失敗。
錯誤示例(pip安裝失敗):The
directory
'/home/ls/.cache/pip'
or
its
parent
directory
is
not
owned
by
the
current
user
and
caching
wheels
has
been
disabled.
check
the
permissions
and
owner
of
that
directory.
If
executing
pip
with
sudo,
you
may
want
sudo's
-H
flag.
*/
make
install