とりあえず半歩

学んだことを1日1個、簡単なことでも良いから記録していきたい。

pacmanのオプションSyuについてほんの少し調べたこと

目標

pacmanの後ろについているSyuが何を意味するのか知る。

動機

pacmanはパッケージ管理してくれる便利なパッケージ*1ということを知り、 使い方を調べていたところ『pacman -Syuってするよ』とか『pacman -Syuuだよ』とか『pacman -Syはだめよ』とか『update-coreね』とか書いてあった。

が、しかし、SyuやSyuuが何をしてくれるかわからない。update-coreがpacmanの何なのかわからない。

だから、これらが何をするためのものなのかを知って、自分で使えるようにしたい。

課題

  • Syu, Syuu, update-coreが何をしてくれるのかマニュアルを読んで調べる
  • 実際に使ってみる

実施

Syu, Syuu, Sy

大文字S

マニュアルを読むと大文字Sは同期操作と書いてあった。 どことどこの同期を取るかというとローカルのパッケージリストとリモートリポジトリの間とのこと。

例えば

pacman -S qt

てコマンドを打つと、ローカルのパッケージリストにqtパッケージをダウンロード・インストールすることで ローカルのパッケージリストとリモートリポジトリのqtパッケージの状態を同じにしてくれる(=同期を取ってくれる)。

小文字のyとu

続いて小文字のyuが何かを知るためにマニュアルを読み、自分の解釈をまとめると

  • y : ローカルのパッケージリストをリモートにあるマスターパッケージリストに合わせて更新する
  • u : ローカルのパッケージを更新する

という感じ。

yの対象がパッケージリストで、uの対象がパッケージ自体であるところが違いになる。

また、『uu』って2つ連続でuを使うと更新(upgrade)のほかに古い版への格下げ(downgrade)も許可されるようになるとのこと。 どんなときにdowngradeが必要になるかというと、テスト用リモートリポジトリを参照していた状態から 安定版リモートリポジトリへ参照先を変更してパッケージも安定版に戻したいときらしい。 やったことないし、しばらくやりそうにないので、必要になったら挑戦します。

Syがだめなわけ

ここは全部自分の理解なので、自分が読み直すときも参考にするときも適宜ほかも確認したほうがよいと思う。

上記のことからSyという操作・オプションは『ローカルのパッケージリストを更新する』という意味になるんだけれど、 パッケージリストを更新してその中の一部パッケージだけを更新すると、 そのパッケージに依存していたほかのパッケージは依然として更新前のパッケージに依存しようとするから壊れてしまう。 壊れてしまうとパッケージ管理の破綻につながる。だからSyっていう操作・オプションはだめよ、っていうことらしい。

参考

オプションの順番

S, y, uの意味はわかった。そこで思ったのは『SyuじゃなくてSuy、SyuuじゃなくてSuuyでもよいのでは??』だった。だからやってみた。結果はSyuやSyuuと同じだった。よしよし。

update-core

pacmanのバージョンが古いとpacman -Syuじゃなくてupdate-coreだったようだ。

参考:MSYS2における正しいパッケージの更新方法 - Qiita

おいらのpacmanはV.5.0.1だからpacman -Syuですね。

感想

書いてて思ったけれど、Syuなどの前にpacmanのパッケージの管理のしかたについて覚書しといたほうがよかったな。

*1:pacmanもパッケージなのです。前回学んだ