スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。
総合案内当ブログについて
Windowsの目次Linuxの目次Linuxの目次2・ ・自作PC関連の目次Web技術関連の目次
全記事一覧情報サイト新着RSS一覧

Sponsored Link

Gitのエラーを直そう object is empty →refs/remotes/origin/master does not point to a valid object!

LMDE(クライアント)+CentOSサーバー(リポジトリ置いてあるサーバー)でgit管理してたらある日エラーでpushもpullもできなくなってしまいました。
たぶん作業してたLMDEのほうでXorgがハングしたっぽくて強制再起動書けたのが原因ではあるかと。そして多分CentOSサーバーに置いてあるmasterは大丈夫。

エラーはこんな感じ。

$ git fsck --full
Checking object directories: 100% (256/256), done.
error: object file .git/objects/54/b9b82b7a061d307f542f70867df49fe8f35004 is empty
error: object file .git/objects/54/b9b82b7a061d307f542f70867df49fe8f35004 is empty
fatal: loose object 54b9b82b7a061d307f542f70867df49fe8f35004 (stored in .git/objects/54/b9b82b7a061d307f542f70867df49fe8f35004) is corrupt



さて、ぐぐってみるとerror吐いてるobject内のファイルを削除すればいいとかいう記事がちらほら。単純に試してみたけどうまく行かず。
Stack Over Flowに詳細な手順が!!

how to fix GIT error: object file is empty?
というわけでここからobject file is emptyの修復。

1..gitのバックアップ

$ cp -a .git .git-old


現在の.gitディレクトリを.git-oldとしてコピーしてバックアップ。

2.git fsck --fullを走らせる

$ git fsck --full
Checking object directories: 100% (256/256), done.
error: object file .git/objects/54/b9b82b7a061d307f542f70867df49fe8f35004 is empty
error: object file .git/objects/54/b9b82b7a061d307f542f70867df49fe8f35004 is empty
fatal: loose object 54b9b82b7a061d307f542f70867df49fe8f35004 (stored in .git/objects/54/b9b82b7a061d307f542f70867df49fe8f35004) is corrupt



3.エラーが出てるファイルを削除する
$ rm .git/objects/54/b9b82b7a061d307f542f70867df49fe8f35004
rm: 書き込み保護されたファイル 通常の空ファイル `.git/objects/54/b9b82b7a061d307f542f70867df49fe8f35004' を削除しますか?y

4.エラーが消えるまで2と3を繰り返す
いやー、エラー吐いてるのって一個だけだと思ったら違うんですね。次々出てくるんで次々削除します。(ぶっちゃけかなりめんどい
よくよく読んだら.gitに入ってfind . -type f -empty -deleteで削除することもできるとかなんとか書いてありますが、もうやっちゃったあとで後の祭り。

$ git fsck --full
Checking object directories: 100% (256/256), done.
error: object file .git/objects/76/d3e0682bb2d8bdfd8b3a8872eea58e53eccbed is empty
error: object file .git/objects/76/d3e0682bb2d8bdfd8b3a8872eea58e53eccbed is empty
fatal: loose object 76d3e0682bb2d8bdfd8b3a8872eea58e53eccbed (stored in .git/objects/76/d3e0682bb2d8bdfd8b3a8872eea58e53eccbed) is corrupt


$ rm .git/objects/76/d3e0682bb2d8bdfd8b3a8872eea58e53eccbed
rm: 書き込み保護されたファイル 通常の空ファイル `.git/objects/76/d3e0682bb2d8bdfd8b3a8872eea58e53eccbed' を削除しますか?y


これを6-7回繰り返すとemptyエラーは消えました。

$ git fsck --full
Checking object directories: 100% (256/256), done.
Checking objects: 100% (250/250), done.
error: HEAD: invalid sha1 pointer a03514ed39862e69c265fbeea8b599151f7cf03f
error: refs/heads/master: invalid sha1 pointer a03514ed39862e69c265fbeea8b599151f7cf03f
error: refs/remotes/origin/master: invalid sha1 pointer a03514ed39862e69c265fbeea8b599151f7cf03f
notice: No default references
dangling blob 65c322ef3ba52eb0717bfc74e0ab4d4f3a668543


しかしまだエラーは出てますね。

5.HEADが壊れてるっぽいので git reflog を試すけどたぶんFAILするよ。

$ git reflog
fatal: bad object HEAD


git reflogはHEADの履歴を見れるコマンド、なはずだけどエラーですかねこれは。

6.$ tail -n 2 .git/logs/refs/heads/masterで最後の2つを見てみる
ちょっとスパムよけのためにアドレスの@マークだけ変えてるけどログはこんな。

$ tail -n 2 .git/logs/refs/heads/master
15482f922b224a56804e6c357722bc8e57f6ec6a 10404ed50d630b2dc687c5f20d566220791ed997 t-min <na8ctmあっとgmail.com> 1437371212 +0900 commit: fix contact
10404ed50d630b2dc687c5f20d566220791ed997 a03514ed39862e69c265fbeea8b599151f7cf03f t-min <na8ctmあっとgmail.com> 1437472949 +0900 commit: blog-comment-form fix


一応これはエラーでcommitできなくなる前の2つがちゃんと見えていますね。
ここで履歴が変だった時はまためんどくなりそうですが。

7.HEADをメモっといて最後のcommitのstatusを確認。
最初にならんでる英数の羅列ですね。上から順に時系列なので下の方、10404ed50d630b2dc687c5f20d566220791ed997がそれになります。

$ git show 10404ed50d630b2dc687c5f20d566220791ed997
commit 10404ed50d630b2dc687c5f20d566220791ed997
Author: t-min <na8ctmあっとgmail.com>
Date: Mon Jul 20 14:46:52 2015 +0900

fix contact

diff --git a/Elements/header.php b/Elements/header.php
index 3b75e84..067ec54 100755
--- a/Elements/header.php
+++ b/Elements/header.php
@@ -11,9 +11,9 @@
<header>
<div class="header-inner">
<div class="page-header">
- <h1>Example page header <small>Subtext for header</small></h1>
+ <?php $this->BcBaser->logo(array('class' => 'logo')) ?> <h1>Example page header <small>Subtext for header</small></h1>
</div>
- <?php $this->BcBaser->logo(array('class' => 'logo')) ?>
+



8. git update-ref HEADを使って上記のポイントにHEADを書き戻す
上記のように一番新しくて確認がとれるポイントのHEADに書き戻す?

$ git update-ref HEAD 10404ed50d630b2dc687c5f20d566220791ed997



9.もっかいfsck --fullしてみてみる。

$ git fsck --full
Checking object directories: 100% (256/256), done.
Checking objects: 100% (250/250), done.
error: refs/remotes/origin/master: invalid sha1 pointer a03514ed39862e69c265fbeea8b599151f7cf03f
dangling blob 49990d6e14503798f142dcb0d5b23cb0c8f80244
dangling blob 96ba64ee46d7f07803ff0e53e2330ee27b19e186
dangling blob 39bb2b053302e7072cd78041059652e59962bb67
dangling blob 485bb6cfeb1bd87879c675f69d2cb50e2bb285f4
dangling blob 65c322ef3ba52eb0717bfc74e0ab4d4f3a668543
dangling blob 6cdbbcee6a4553f136f85d023e16f876e97f55e3
dangling blob bb7796ed485e66822fe80dbf57d0c0c8e93cd963
dangling blob cf1f6bcf645c352d36bb7f37ba10a698dcd446bf



10.invalid sha1 pointer a03514ed39862e69c265fbeeってのはindex fileから来てるようなので、killしてresetする
./git/indexを削除してgit resetしてみます。

$ rm .git/index
$ git reset
Unstaged changes after reset:
M Elements/blog_comments.php
M Elements/sidenav.php
M Elements/widgets/search.php
M Pages/about.php
D Pages/about/index.php
M Pages/blog/index.php
D Pages/galally/index.php
D Pages/galally/templategarden-alpha.php
M Pages/index.php
M Pages/mobile/index.php
M Pages/news/index.php
M Pages/sample.php
D Pages/service.php
M Pages/service/index.php
M Pages/service/service1.php
M Pages/service/service2.php
M Pages/service/service3.php
M Pages/smartphone/about.php
M Pages/smartphone/icons.php
M Pages/smartphone/index.php
M Pages/smartphone/service.php
M Pages/smartphone/sitemap.php
M css/style.css



11.もっかいfsck --full
dangling blob はエラーじゃないとか言ってますが、まだ invalid sha1 pointerのエラーが出てますね。

$ git fsck --full
Checking object directories: 100% (256/256), done.
Checking objects: 100% (250/250), done.
error: refs/remotes/origin/master: invalid sha1 pointer a03514ed39862e69c265fbeea8b599151f7cf03f
dangling blob 49990d6e14503798f142dcb0d5b23cb0c8f80244
dangling blob 96ba64ee46d7f07803ff0e53e2330ee27b19e186
dangling blob 39bb2b053302e7072cd78041059652e59962bb67
dangling blob 485bb6cfeb1bd87879c675f69d2cb50e2bb285f4
dangling blob 65c322ef3ba52eb0717bfc74e0ab4d4f3a668543
dangling blob 6cdbbcee6a4553f136f85d023e16f876e97f55e3
dangling blob bb7796ed485e66822fe80dbf57d0c0c8e93cd963
dangling blob cf1f6bcf645c352d36bb7f37ba10a698dcd446bf


おっかしーなー。
試しにこのあと $ git status →$ git add . →$ git commit -m ""→$ git push origin masterやってみたけどエラーでした。

具体的にはこんな感じでpushができない。

$ git status
On branch master
Changes not staged for commit:
(use "git add/rm ..." to update what will be committed)
(use "git checkout -- ..." to discard changes in working directory)
(commit or discard the untracked or modified content in submodules)

modified: Elements/blog_comments.php
modified: Elements/sidenav.php
modified: Elements/widgets/search.php
modified: Pages/about.php
deleted: Pages/about/index.php
modified: Pages/blog/index.php
deleted: Pages/galally/index.php
deleted: Pages/galally/templategarden-alpha.php
modified: Pages/index.php
modified: Pages/mobile/index.php
modified: Pages/news/index.php
modified: Pages/sample.php
deleted: Pages/service.php
modified: Pages/service/index.php
modified: Pages/service/service1.php
modified: Pages/service/service2.php
modified: Pages/service/service3.php
modified: Pages/smartphone/about.php
modified: Pages/smartphone/icons.php
modified: Pages/smartphone/index.php
modified: Pages/smartphone/service.php
modified: Pages/smartphone/sitemap.php
modified: contest (modified content, untracked content)
modified: css/style.css

Untracked files:
(use "git add ..." to include in what will be committed)

.git-old/
css/.#style.css
js/jquery-2.1.4.min.js

no changes added to commit (use "git add" and/or "git commit -a")
$ git add .
$ git commit -m "adjust sidenav"
[master cea8f1a] adjust sidenav
132 files changed, 590 insertions(+), 372 deletions(-)
create mode 100644 .git-old/COMMIT_EDITMSG
create mode 100644 .git-old/FETCH_HEAD
create mode 100644 .git-old/HEAD
create mode 100644 .git-old/ORIG_HEAD
create mode 100644 .git-old/config
create mode 100644 .git-old/description
create mode 100755 .git-old/hooks/applypatch-msg.sample
create mode 100755 .git-old/hooks/commit-msg.sample
create mode 100755 .git-old/hooks/post-update.sample
create mode 100755 .git-old/hooks/pre-applypatch.sample
create mode 100755 .git-old/hooks/pre-commit.sample
create mode 100755 .git-old/hooks/pre-push.sample
create mode 100755 .git-old/hooks/pre-rebase.sample
create mode 100755 .git-old/hooks/prepare-commit-msg.sample
create mode 100755 .git-old/hooks/update.sample
create mode 100644 .git-old/index
create mode 100644 .git-old/info/exclude
create mode 100644 .git-old/logs/HEAD
create mode 100644 .git-old/logs/refs/heads/master
create mode 100644 .git-old/logs/refs/remotes/origin/master
create mode 100644 .git-old/objects/06/7ec54b48387e93891b500d41ac35fc48f903d3
create mode 100644 .git-old/objects/0e/c399c90a745bb1927c211eea11c0e8baddaa1e
create mode 100644 .git-old/objects/10/404ed50d630b2dc687c5f20d566220791ed997
create mode 100644 .git-old/objects/12/6a740ea35584d07624790764c3de1634d818b4
create mode 100644 .git-old/objects/14/13fc609ab6f21774de0cb7e01360095584f65b
create mode 100644 .git-old/objects/15/482f922b224a56804e6c357722bc8e57f6ec6a
create mode 100644 .git-old/objects/1a/2b4a7015e4f8e5905fcd3d0ea92e716cafde4f
create mode 100644 .git-old/objects/1c/95e4f9a4992c8559b87573764c931f33c6793d
create mode 100644 .git-old/objects/1f/91b19bb366f92795ba9d26b3afae6e137b9702
create mode 100644 .git-old/objects/22/9aacc6c4bd8f9cba4fb1ac7284b4aa876a6aaa
create mode 100644 .git-old/objects/25/1c3763b2445341e5ea52adeaa8afc93f92402e
create mode 100644 .git-old/objects/2a/f55dbf345e3a67491becf400e3e4dc696b65e0
create mode 100644 .git-old/objects/31/80ee179d9f27d32ede5ccb1d36ec519fc833e8
create mode 100644 .git-old/objects/32/0e6b51f0f91c9dc5cb722b9035b4daf81e8b08
create mode 100644 .git-old/objects/35/1fa003174cc31ea9cd0aefe469707ff2052215
create mode 100644 .git-old/objects/36/c4aff4c574d6ec417d1b7ad676176dcf70be35
create mode 100644 .git-old/objects/37/8aad8b15cca4cdf24871c7175810cbc941e92e
create mode 100644 .git-old/objects/39/bb2b053302e7072cd78041059652e59962bb67
create mode 100644 .git-old/objects/3b/75e844ac18cfc1a17d3409e446f09e11203aa6
create mode 100644 .git-old/objects/3c/e6bf1deae4f510e219e024cb5695aa01564df5
create mode 100644 .git-old/objects/3f/d37df7fd387ca9a2715ad7b50638c2f7df4c8a
create mode 100644 .git-old/objects/48/2c7911ae61e5e0b27fe57e7489b8192f7e5e95
create mode 100644 .git-old/objects/48/591633b3e59a5c1593fc108e20d419c9ab80cc
create mode 100644 .git-old/objects/48/5bb6cfeb1bd87879c675f69d2cb50e2bb285f4
(中略)
mode change 100644 => 100755 Pages/smartphone/sitemap.php
create mode 120000 css/.#style.css
create mode 100644 js/jquery-2.1.4.min.js
$ git push origin master
error: refs/remotes/origin/master does not point to a valid object!
error: refs/remotes/origin/master does not point to a valid object!
tmin@192.168.0.2's password:
Connection closed by 192.168.0.2
fatal: Could not read from remote repository.



でもこれはpushができないだけでそれ以前はちゃんと動いているみたい。

というわけでここからerror: refs/remotes/origin/master does not point to a valid object!を直す作業。

これまたStack Over Flowから。
Git refs/remotes/origin/master does not point to a valid object
git gc なんちゃらで解決できるとかなんとか。
git gcってのはリポジトリ内の不要なオブジェクトを削除し、最適化を行うらしいです。
早速やってみましょう。
1.git gc

$ git gc
Counting objects: 521, done.
Delta compression using up to 4 threads.
Compressing objects: 100% (422/422), done.
Writing objects: 100% (521/521), done.
Total 521 (delta 115), reused 235 (delta 53)
p>



2.git fsck --full

$ git fsck --full
Checking object directories: 100% (256/256), done.
Checking objects: 100% (521/521), done.
dangling blob 9caa2d1c3f1dcb8022ec31e204a5886b7567694d



3.git update-ref -d
後ろにはfsck --fullで出てた最後の行の英数列を。

$ git update-ref -d 9caa2d1c3f1dcb8022ec31e204a5886b7567694d



4.git gc --aggressive

$ git gc --aggressive
Counting objects: 521, done.
Delta compression using up to 4 threads.
Compressing objects: 100% (475/475), done.
Writing objects: 100% (521/521), done.
Total 521 (delta 124), reused 397 (delta 0)



5.git remote update --prune

$ git remote update --prune
Fetching origin
tmin@192.168.0.2's password:


どうやら同期できたような感じ。
なのでここから普通にaddしてcommitしてみます

6.add→commit

$ git add .


$ git status
On branch master
All conflicts fixed but you are still merging.
(use "git commit" to conclude merge)

Changes to be committed:

modified: Elements/widgets/search.php

Changes not staged for commit:
(use "git add ..." to update what will be committed)
(use "git checkout -- ..." to discard changes in working directory)
(commit or discard the untracked or modified content in submodules)

modified: contest (modified content, untracked content)


$ git commit -m "adjust sidenav"
[master f0bd309] adjust sidenav


pushしてみます。

$ git push origin master
tmin@192.168.0.2's password:
Counting objects: 196, done.
Delta compression using up to 4 threads.
Compressing objects: 100% (174/174), done.
Writing objects: 100% (196/196), 842.35 KiB | 0 bytes/s, done.
Total 196 (delta 18), reused 183 (delta 7)
To ssh://192.168.0.2/home/tmin/basertheme
a03514e..f0bd309 master -> master


できたー\(^o^)/

けっこう大変でしたが、一応手順通りにやってみたらさほど大きなトラブルはなくいけましたね。
やってみてからでなんですが、リポジトリふっとばす可能性も無きにしもあらずなので、サーバーに置いてあるリポジトリの方もバックアップ取ってからやったほうがよかったかも知れません。でかいプロジェクトだと致命傷ですからね。

関連記事
いまさら始めるGithHub & GistでFC2にソースコード貼り付け
WindowsでGitHubのリポジトリ管理(Windows10 TPでgit)
いまさらながらLinux上(LMDE)からGitHubを使ってみよう
スポンサーサイト
総合案内当ブログについて
Windowsの目次Linuxの目次Linuxの目次2・ ・自作PC関連の目次Web技術関連の目次
全記事一覧情報サイト新着RSS一覧

Sponsored Link

LMDE2にrbenvでruby2.2.2入れてmikutter起動まで(rbenv on LMDE 3回目)

はい。やってみましょう。今回は大きなエラーなかったのでさくさく行きます。

1.現状確認

$ rbenv install -l


ここで2.2.xが出てればいいんですが、なければruby-buildのUpdateが必要。うちの環境では最新が2.2.0-devになってました。

$ rbenv versions
system
* 2.1.2 (set by /home/tmin/.rbenv/version)
2.2.0-dev


rbenvで入れてるのは2.1.2と2.2.0-devですね。で、現状2.1.2をシステムデフォルトにしています。
が、先日の記事のようにaptで入った2.1.5を使うように/home/.bashrcのrbenvへのパスコメントアウトしちゃったので、rbenv的には2.1.2だけどこれが無効でシステムの2.1.5使ってるのが現状です。

$ ruby -v
ruby 2.1.5p273 (2014-11-13) [x86_64-linux-gnu]



2.ruby-buildをupdateして2.2.xの最新を入れよう
ruby-buildは最初にrbenv使い始めた時にgitで取ってきてるはずなので git pull origin masterすればおっけー。
初めてrbenv使う人はこんな感じ

$ mkdir -p ~/.rbenv/plugins
$ cd ~/.rbenv/plugins
~/.rbenv/plugins $ git clone git://github.com/sstephenson/ruby-build.git



今回はUpdateなので~/.rbenv/plugin/ruby-buildに入ってgit pull origin master

$ cd .rbenv/plugins/ruby-build/
$ git pull origin master
remote: Counting objects: 1214, done.
remote: Compressing objects: 100% (79/79), done.
(後略)



Updateが正常に終わってたら最新のが反映されてインストールできるようになってます。

$ rbenv install -l
Available versions:
(中略)
2.1.6
2.2.0-dev
2.2.0-preview1
2.2.0-preview2
2.2.0-rc1
2.2.0
2.2.1
2.2.2
2.3.0-dev
(後略)



じゃあ入れてみましょう。現状最新の開発版じゃない奴ってことで2.2.2を選択。
少し時間かかるのでコーヒーでも飲んで待ちましょう。

$ rbenv install 2.2.2
Downloading ruby-2.2.2.tar.gz...
-> http://dqw8nmjcqpjn7.cloudfront.net/5ffc0f317e429e6b29d4a98ac521c3ce65481bfd22a8cf845fa02a7b113d9b44
Installing ruby-2.2.2...



ちなみにうちの環境ではうまく行きましたが、libffi-devが足りなくてこけることがある模様。
rbenv での Ruby 2.2.1 のインストールに失敗する
このときはaptで該当パッケージを入れれば良いらしいです。

3.ruby2.2.2をセットして環境を整える。

$ rbenv rehash
$ rbenv versions
system
* 2.1.2 (set by /home/tmin/.rbenv/version)
2.2.0-dev
2.2.2


ちゃんと入ってるのを確認して。。。

$ rbenv global 2.2.2
$ rbenv versions
system
2.1.2
2.2.0-dev
* 2.2.2 (set by /home/tmin/.rbenv/version)



$ ruby -v
ruby 2.1.5p273 (2014-11-13) [x86_64-linux-gnu]


だめじゃんってまだ環境変数に書いてないですね。

$ emacs .bashrc

export PATH="$HOME/.rbenv/bin:$PATH"
eval "$(rbenv init -)"



端末に入り直して・・・


$ exec $SHELL -l
$ ruby -v
ruby 2.2.2p95 (2015-04-13 revision 50295) [x86_64-linux]


おっけー。
mikutterたちあげようとしてみると。。。

$ ruby mikutter.rb
/home/tmin/.rbenv/versions/2.2.2/lib/ruby/2.2.0/rubygems/core_ext/kernel_require.rb:54:in `require': cannot load such file -- gtk2 (LoadError)
後略


まぁそうですよね。ライブラリが足りません。
bundle installしようとすると

$ bundle install --path vendor/bundle
rbenv: bundle: command not found

The `bundle' command exists in these Ruby versions:
2.1.2


おや?2.1.2で入ってるので使えない?gemでbundlerを入れます。

$ gem install bundler
Fetching: bundler-1.10.1.gem (100%)
Successfully installed bundler-1.10.1
Parsing documentation for bundler-1.10.1
Installing ri documentation for bundler-1.10.1
Done installing documentation for bundler after 5 seconds
1 gem installed



これでもう一回bundle installを走らせると

$ bundle install --path vendor/bundle
Fetching gem metadata from https://rubygems.org/..........
Fetching version metadata from https://rubygems.org/..
Installing rake 10.3.2
Installing addressable 2.3.6
Installing pkg-config 1.1.6
with native extensions Installing glib2 2.2.5
with native extensions Installing atk 2.2.5
with native extensions Installing cairo 1.14.1
(中略)
Using bundler 1.10.1
Bundle complete! 17 Gemfile dependencies, 31 gems now installed.
Bundled gems are installed into ./vendor/bundle.


どうやら通ったようですね。ここでも少し時間かかるので麦茶でも飲んで待ちましょう。

5.起動です

$ ruby mikutter.rb
/home/tmin/.rbenv/versions/2.2.2/lib/ruby/2.2.0/x86_64-linux/continuation.so: warning: callcc is obsolete; use Fiber instead


callccはもう廃れてるからFiberを使えとかなんとか出てますが、とりあえず無事起動です。
で、このエラーが何者かと思ってfiberについて調べてみたけどさっぱりわかりませんでした。

まぁ動いたからいいよね!!

追記
@kakkokka氏と@mugijiru氏に教えてもらって大分スッキリ。
mikutterでcalcc使ってる部分があるんだけど、calccはFiberへの移行が推奨されてて2.2.2から?警告が出るように/continuation.cこの辺に変更が入ったっぽいですね。でも現状あくまで警告だけの変更、みたいです。



関連記事
最新Mikutter3.1で始めるておくれ最新Ruby(rbenv on LMDE 2回目)
bundle installのエラーでglib2が入らない→解決
Mikutterで始めるておくれ最新Ruby(rbenv on LMDE)
総合案内当ブログについて
Windowsの目次Linuxの目次Linuxの目次2・ ・自作PC関連の目次Web技術関連の目次
全記事一覧情報サイト新着RSS一覧

Sponsored Link

bundle installのエラーでglib2が入らない→解決

LMDEを2(Besty)にUpdateしたら標準のrubyのversionが2.1.5になってました。
ちなみにrbenvで入れてたのは2.1.2。システム標準のほうが新しくなってますね。
というわけで2.1.5の方を使ってmikutterを動かそうとしてはまりました。
rubyとgemとbundlerの関係をいまいち分かってないものだからいっつも同じようなとこでハマりますね。

1.rbenvのパスをコメントアウト

$ emacs .bashrc


#export PATH="$HOME/.rbenv/bin:$PATH"
#eval "$(rbenv init -)"


そのうちまたrbenv使うだろうから、とりあえず頭に#つけてコメントアウト。
シェルに入りなおして

$ ruby -v
ruby 2.1.5p273 (2014-11-13) [x86_64-linux-gnu]


おっけー。

2.mikutterを3.2.3にupdate
出てましたね。
ちなみに1の手順のみで3.2.2はそのまま無事起動。
mikutter
3.2.3をDLして/homeの/mikutterと置き換え。

$ ruby mikutter.rb


したらgemのパッケージが足りないとかバージョンがどうとか言われて起動こける。
まぁbundle installでいけるだろうと思いきやこれ。glibの指定バージョンが入らなくてこけている模様。

$ bundle install --path vendor/bundle
Fetching gem metadata from https://rubygems.org/............
Fetching version metadata from https://rubygems.org/..
Resolving dependencies...
Using rake 10.3.2
Using addressable 2.3.6
Using pkg-config 1.1.6

Gem::Ext::BuildError: ERROR: Failed to build gem native extension.

/usr/bin/ruby2.1 extconf.rb
mkmf.rb can't find header files for ruby at /usr/lib/ruby/include/ruby.h

extconf failed, exit code 1

Gem files will remain installed in /home/tmin/mikutter/vendor/bundle/ruby/2.1.0/gems/glib2-2.2.5 for inspection.
Results logged to /home/tmin/mikutter/vendor/bundle/ruby/2.1.0/extensions/x86_64-linux/2.1.0/glib2-2.2.5/gem_make.out
An error occurred while installing glib2 (2.2.5), and Bundler cannot continue.
Make sure that `gem install glib2 -v '2.2.5'` succeeds before bundling.
tmin@tmin-pc:~/mikutter$ bundle install --path vendor/bundle
Fetching gem metadata from https://rubygems.org/............
Fetching version metadata from https://rubygems.org/..
Resolving dependencies...
Using rake 10.3.2
Using addressable 2.3.6
Using pkg-config 1.1.6

Gem::Ext::BuildError: ERROR: Failed to build gem native extension.

/usr/bin/ruby2.1 extconf.rb
mkmf.rb can't find header files for ruby at /usr/lib/ruby/include/ruby.h

extconf failed, exit code 1

Gem files will remain installed in /home/tmin/mikutter/vendor/bundle/ruby/2.1.0/gems/glib2-2.2.5 for inspection.
Results logged to /home/tmin/mikutter/vendor/bundle/ruby/2.1.0/extensions/x86_64-linux/2.1.0/glib2-2.2.5/gem_make.out
An error occurred while installing glib2 (2.2.5), and Bundler cannot continue.
Make sure that `gem install glib2 -v '2.2.5'` succeeds before bundling.



3.gemで指定のパッケージが入らない。
なんか毎回同じようなとこでハマっている気がしますが。
言われたとおりに

$ sudo gem install glib2 -v '2.2.5'


してもエラー。

$ gem update


してからもっかい

$ bundle install --path vendor/bundle


しても変わらない。

$ bundle update
(中略)
Error details

Gem::Ext::BuildError: ERROR: Failed to build gem native extension.

/usr/bin/ruby2.1 extconf.rb
mkmf.rb can't find header files for ruby at /usr/lib/ruby/include/ruby.h

extconf failed, exit code 1
(後略)


もしやこれか!!

4.mkmf.rb can't find header files for ruby at /usr/lib/ruby/include/ruby.hを解消する

"mkmf.rb can't find header files for ruby"の対応
パッケージが違うだけでほぼ同じですね。ありがたい。
ruby-devでsynapticで検索してもそのままのはなくって、いくつか怪しいのが。
ruby2.1-dev (2.1.5-2+deb8u1) ruby-gnome2-dev (2.2.0-5+b2) ruby-all-dev (1:2.1.5)あたりでしょうかね。ruby2.1-devだけで行けそうな気もしますが。
依存で入ったのはこの辺。

gir1.2-gstreamer-1.0 (1.4.4-2)
libgmp-dev (2:6.0.0+dfsg-6)
libgmpxx4ldbl (2:6.0.0+dfsg-6)
libgtksourceview2.0-0 (2.10.5-2)
libgtksourceview2.0-common (2.10.5-2)
ruby-all-dev (1:2.1.5)
ruby-cairo-gobject (2.2.0-5+b2)
ruby-gdk3 (2.2.0-5+b2)
ruby-gio2 (2.2.0-5+b2)
ruby-gnome2 (2.2.0-5)
ruby-gnome2-dev (2.2.0-5+b2)
ruby-gobject-introspection (2.2.0-5+b2)
ruby-gstreamer (2.2.0-5+b2)
ruby-gtk3 (2.2.0-5+b2)
ruby-gtksourceview2 (2.2.0-5+b2)
ruby-gtksourceview3 (2.2.0-5+b2)
ruby-pkg-config (1.1.5-1)
ruby-poppler (2.2.0-5+b2)
ruby-rsvg2 (2.2.0-5+b2)
ruby-vte (2.2.0-5+b2)
ruby-vte3 (2.2.0-5+b2)
ruby2.1-dev (2.1.5-2+deb8u1)



5.再チャレンジのbundle install

$ bundle install --path vendor/bundle
Fetching gem metadata from https://rubygems.org/............
Fetching version metadata from https://rubygems.org/..
Resolving dependencies...
Using rake 10.3.2
Using addressable 2.3.6
Using pkg-config 1.1.6
Installing glib2 2.2.5 (was 2.2.3)
Installing atk 2.2.5 (was 2.2.3)
Installing cairo 1.14.1 (was 1.12.9)
Using safe_yaml 1.0.4
Using crack 0.4.2
Using delayer 0.0.2
Installing gdk_pixbuf2 2.2.5 (was 2.2.3)
Using locale 2.1.0
Using text 1.3.0
Using gettext 3.0.9
Installing pango 2.2.5 (was 2.2.3)
Installing gtk2 2.2.5 (was 2.2.3)
Using httpclient 2.5.3.3
Using json_pure 1.8.1
Using memoize 1.3.1
Using metaclass 0.0.4
Using mini_portile 0.6.1
Using mocha 0.14.0
Using moneta 0.8.0
Using nokogiri 1.6.5
Using oauth 0.4.7
Using power_assert 0.1.4
Using ruby-hmac 0.4.0
Using test-unit 3.0.2
Using typed-array 0.1.2
Using watch 0.1.0
Using webmock 1.20.0
Using bundler 1.9.9
Bundle complete! 17 Gemfile dependencies, 31 gems now installed.
Bundled gems are installed into ./vendor/bundle.


通りましたね。

$ ruby mikutter.rbで無事起動。

たぶん、今までrbenvで動かしてたからrbenvのディレクトリ(~/.rbenv/versions/2.1.2/lib/ruby/gems/2.1.0/gems)に入ったgemパッケージ群を読みに行ってたんだけど、システムのに変えちゃったからだったのかなと予想。

ところでruby2.2が出てて。mikutterも対応してるっぽい。
#mikutter 3.2.2
というわけでrbenvで2.2で動かしたいところだけど、今日はこのエラーではまって疲れたので終わり。
また時間出来たら2.2で動かしてみようと思います。

関連記事
Mikutterで始めるておくれ最新Ruby(rbenv on LMDE)
最新Mikutter3.1で始めるておくれ最新Ruby(rbenv on LMDE 2回目)
Windows 10 Technical Preview でRuby入れてMikutter for Windowsを動かしてておくれよう
Windows10 TPで最新mikutter3.2.2にしたらrubygemsにSSL接続できなくてどハマった
LMDE2にrbenvでruby2.2.2入れてmikutter起動まで(rbenv on LMDE 3回目)
総合案内当ブログについて
Windowsの目次Linuxの目次Linuxの目次2・ ・自作PC関連の目次Web技術関連の目次
全記事一覧情報サイト新着RSS一覧

Sponsored Link

ブログ内検索

カスタム検索

フリーエリア

クリックで救える命がある。

レンタルサーバー

さくらのマネージドサーバ
さくらインターネットのVPS
ConoHaのVPS
WebARENA VPSクラウド
99円レンタルサーバー
【CloudCore VPS】
GMOクラウドのレンタルサーバー
転送量無制限 ABLENET
@WAPPYレンタルサーバー
SPPDレンタルサーバー

カテゴリー+月別アーカイブ

 

アクセスカウンター

現在の閲覧者数:

プロフィール

Author:tmin
PCヲタ。ライト2ちゃんねら。
スロット好きのギャンブラー。(元
むしろ人生がギャンブルだが目下のところ負けっぱなし。
座右の銘は「結果オーライ」。故に基本適当。
トラブルもまた楽しみのひとつ

コメント、トラバ、相互リンク歓迎。お気軽にどうぞ。
当ブログについて
Twitterでこっちとあっちの更新情報流すことにしてみます。
http://twitter.com/t_min
Project Mikunchu♪Wikiできました。
Mikunchu200x40.png


上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。