ICTSC2024 本戦 問題解説: [LTN] APT. (Advanced Packaging Tool)

問題文

概要

なんてことだ! 俺のオアシスapt mooが実行できない!

そういえば前々からaptの調子が悪かったな。昨日なんてコマンドが無いぞ(意訳)とか言ってたし。

もしかして先週に間違ってaptの設定ファイルを全て消してしまったのが原因か?

この問題を解決できればapt mooを実行できるってこと!?

でもaptの設定ファイルなんて持ってないぞ...

どうしよう...そうだ!art先輩がaptの設定ファイルをバックアップしてるusbを持っているとか言ってたな。

そのusbを借りに行ってこよう。

前提条件

  • usbはすでにマウントされている(自動マウント)
  • VMのインターネット疎通性は無いものとする(外との通信はapt updateを実行するときのみ使用可能)
  • mooの質問に回答すること。

初期状態

手元のPCから $ sudo apt update を実行できない

手元のPCから $ sudo apt moo を実行できない

終了状態

手元のPCから $ sudo apt update を実行でき、正常に動作する

手元のPCから $ sudo apt moo を実行でき、正常に動作する


解説

usbにバックアップしてあるファイルを/etc/cpする

USBの自動マウント先/media直下のファイルを/etcに移動する

usbの場所は/media/usb/

$ sudo cp /media/usb/backup/apt /etc/

/bin/apt/bin/ɑptになっている。これはlsをすれば一番最後に表示されるためすぐ分かる

ɑptaptに変える

$ sudo mv /bin/ɑpt /bin/apt

最後にsudo apt update``sudo apt moo

                 (__)
                 (oo)
           /------\/
          / |    ||
         *  /\---/\
            ~~   ~~
..."Have you mooed today?"...

「君は今日モーモー鳴いたかい?」

複数のチームがシンボリックリンクやエイリアスの作成、SCPを用いた解答を行っていた。

  • シンボリックリンクやエイリアスの作成を行い裏でapt-getを動かす方法については、終了状態の「手元のPCから $ sudo apt update を実行でき、正常に動作する。」を満たしていないため不正解。(たとえaptにシンボリックリンクやエイリアスを設定しても実際に動いているのはapt-getのため)

  • scpを使う解決法については、前提条件の「VMのインターネット疎通性は無いものとする」より、同じネットワークにいるローカル環境もインターネット疎通性が無いため不正解。

    • ただし、別のネットワークでダウンロードしたと明記してある場合は別解として認める。

採点基準

  • /etc/の修正 20点
  • /bin/aptの修正 130点

講評

かなり多くのチームがモーモー鳴いていました。

ちなみに自分は本戦当日の朝起きたときにモーモーしました^^