2
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

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

Posted at

はじめに

はじめまして。今さっき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使うようになってるっていうのを知らなかった。

まとめ

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

2
0
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?