Help us understand the problem. What is going on with this article?

ArchLinuxのアップデートでやらかした話

はじめに

はじめまして。今さっきQiitaのアカウントを作りました。
この記事は、ITRC Advent Calendar 2019 の3日目の記事になります。
今回は、少し前にArchLinuxでyayを使ってアップデートをした時にやらかした話について書いていきます。

しょうもないオチだったので結論から言いますと、wget壊れてるんだからcurlに戻せばいいじゃんっていう話でした。

今回参考にした記事はこちら
https://wiki.archlinux.jp/index.php/Pacman_%E3%83%92%E3%83%B3%E3%83%88#wget

事の始まり

いつも通りアップデートをしたところ、ネットにしっかりつながっていない状態でアップデートをしてしまった。

起こったこと

アップデート事態は特に何も起こることなく終了したので再起動をしたところ、エラーがでてログインできなくなった。

/usr/lib/Xorg: error while loading shared libraries: libnettle.so.7: cannot open shared objectfile: No such file or directory

共有ライブラリが無いって言ってる?

原因を考える

ネットに完全に繋がらないうちにアップデートをしたということが大本の原因ではあるけれど、それによって何が起きたかを考えたところ、最初の接続が応答なしで進んでしまったため、部分的にアップデートをしてしまったと考えました。
調べてみても、同じようなことをやってしまった人がいるっぽい。

対処法を考える

  1. アップデートされなかった部分をアップデートする
  2. LD_LIBRARY_PATHに追加か、シンボリックリンクの作成(?)
  3. ArchISOでchrootしてpacman -Syuする

この3つを試してみました。

実践

  • アップデートされなかった部分をアップデートする
    • これに関しては、そもそもyayやpacmanが実行できないため、できなかった
  • LD_LIBRARY_PATHに追加か、シンボリックリンクの作成(?)
    • 無理やり作成したけど駄目だった

なので、必然的に3番目の方法でやることに。。。

ArchISOでchrootしてpacman -Syuする

ArchISOが入ったUSBを使ってBOOTする。

# mount /dev/sda3 /mnt
# mount /dev/sda1 /mnt/boot
# cd /mnt
#arch-chroot /mnt bin/bash ←bashシェルを起動

まずArchISOが入ったUSBをBOOTして、起動します。
/mntに/をマウント、/mnt/bootに/bootをマウントします。
その後/mntに移動してから、arch-chrootをします。

これを踏まえてpacman -Syuを実行してみると

/usr/bin/wget: error while loading shared libraries: libnettle.so.7: cannot open shared object file: No such file or directory

エラーがでて実行できない
wgetに必要なものがないとか言ってる

ちなみに

駄目だったのでpacstrapを試してみましたが、上記と同じエラーがでて駄目だった。

pactrapとは?

archリポジトリのCoreのbaseグループとbase-develをインストールすることができる。

ここで。。。

ここまでやったときに、pacman.confのある記事を見つけました。

wget
pacman に初めから入っている機能よりもパワフルなプロキシ設定が必要な場合、wget はとても使い勝手がよいです etc...

XferCommand = /usr/bin/wget -c -q --show-progress --passive-ftp -O %o %u

なので、pacman.confのwgetをコメントして、curlをコメントアウトする

pacman.conf

XferCommand = /usr/bin/curl -C - -f %u > %o
# XferCommand = /usr/bin/wget --passive-ftp -c -O %o %u

すると、無事にアップデートできました!

結論

wgetが使えないなら、pacman.confの設定をcurlに変えてからpacman -Syuをすればいいだけだったというオチ...
そもそもデフォルトの設定だとwgetじゃなくてcurl使うようになってるっていうのを知らなかった。

まとめ

ただでさえ色々トラブルが起こるようなものなんだから、ちゃんを気をつけましょうっていう話でした。

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした