낙서장[1]: 54개의 글

[DataBase] PK 지정 및 제거

Posted by nkjok
2025. 4. 7. 16:51 낙서장[1]/93. DataBase
반응형

1. 테이블 생성
mysql> create table 테스트부서2( 부서번호 varchar(25) not null, 부서명 varchar(25) not null, 테스트번호 varchar(25)
not null);
Query OK, 0 rows affected (0.06 sec)

mysql> desc 테스트부서2;
+-----------------+-------------+------+-----+---------+-------+
| Field           | Type        | Null | Key | Default | Extra |
+-----------------+-------------+------+-----+---------+-------+
| 부서번호        | varchar(25) | NO   |     | NULL    |       |
| 부서명          | varchar(25) | NO   |     | NULL    |       |
| 테스트번호      | varchar(25) | NO   |     | NULL    |       |
+-----------------+-------------+------+-----+---------+-------+
3 rows in set (0.00 sec)



2. PK 지정 
mysql> alter table 테스트부서2 ADD primary key (부서번호);
Query OK, 0 rows affected (0.06 sec)
Records: 0  Duplicates: 0  Warnings: 0

mysql> desc 테스트부서2;
+-----------------+-------------+------+-----+---------+-------+
| Field           | Type        | Null | Key | Default | Extra |
+-----------------+-------------+------+-----+---------+-------+
| 부서번호        | varchar(25) | NO   | PRI | NULL    |       |
| 부서명          | varchar(25) | NO   |     | NULL    |       |
| 테스트번호      | varchar(25) | NO   |     | NULL    |       |
+-----------------+-------------+------+-----+---------+-------+
3 rows in set (0.00 sec)



3. PK 삭제
mysql> alter table 테스트부서2 drop primary key;
Query OK, 0 rows affected (0.08 sec)
Records: 0  Duplicates: 0  Warnings: 0

mysql> desc 테스트부서2;
+-----------------+-------------+------+-----+---------+-------+
| Field           | Type        | Null | Key | Default | Extra |
+-----------------+-------------+------+-----+---------+-------+
| 부서번호        | varchar(25) | NO   |     | NULL    |       |
| 부서명          | varchar(25) | NO   |     | NULL    |       |
| 테스트번호      | varchar(25) | NO   |     | NULL    |       |
+-----------------+-------------+------+-----+---------+-------+
3 rows in set (0.00 sec)



4. PK 삭제 후 다른 속성에 PK 지정
mysql> alter table 테스트부서2 add primary key (테스트번호);
Query OK, 0 rows affected (0.08 sec)
Records: 0  Duplicates: 0  Warnings: 0

mysql> desc 테스트부서2;
+-----------------+-------------+------+-----+---------+-------+
| Field           | Type        | Null | Key | Default | Extra |
+-----------------+-------------+------+-----+---------+-------+
| 부서번호        | varchar(25) | NO   |     | NULL    |       |
| 부서명          | varchar(25) | NO   |     | NULL    |       |
| 테스트번호      | varchar(25) | NO   | PRI | NULL    |       |
+-----------------+-------------+------+-----+---------+-------+
3 rows in set (0.00 sec)

반응형

[Java] 우분투22.04에서 자바 한글 출력

Posted by nkjok
2025. 3. 23. 18:30 낙서장[1]/91. Java
반응형

Ubuntu 22.04에서 자바 프로그램이 한글을 제대로 출력하지 않는 문제를 해결하는 방법을 공유합니다. 
이 과정에서는 로케일 설정과 관련 패키지 설치를 통해 문제를 해결합니다.

1. 한글 언어팩 설치
먼저, 한글 언어팩을 설치합니다.
apt-get -y install language-pack-ko

2. 로케일 설정
로케일 설정을 업데이트합니다.
locale-gen --purge
dpkg-reconfigure locales

로케일 설정 파일을 수정합니다.
vi /var/lib/locales/supported.d/ko
다음 내용을 추가합니다:
ko_KR.EUC-KR EUC-KR

3. 환경 변수 설정
환경 변수 파일을 수정하여 로케일을 설정합니다.
vi /etc/environment
다음 내용을 추가합니다:
LANG="ko_KR.UTF-8"
LANG="ko_KR.EUC-KR"

프로파일 파일도 수정합니다.
vi /etc/profile
다음 내용을 추가합니다:
LANG="ko_KR.UTF-8"

변경 사항을 적용합니다.
source /etc/profile

4. 테스트
이제 자바 프로그램을 실행하여 한글이 제대로 출력되는지 확인합니다.

cd /home/nkjok/var/lib/u2204_java
/usr/bin/env /usr/lib/jvm/java-17-amazon-corretto/bin/java -agentlib:jdwp=transport=dt_socket,server=n,suspend=y,address=localhost:44087 -XX:+ShowCodeDetailsInExceptionMessages -cp /root/.vscode-server/data/User/workspaceStorage/f9b4ef33dc6f41286343b53b35c5a9a3/redhat.java/jdt_ws/u2204_java_73517661/bin nadocoding.chap_10._04_FunctionalInterface

정상적으로 한글이 출력되는 것을 확인할 수 있습니다:

2 달러 = 2800 원

이 과정을 통해 Ubuntu 22.04에서 자바 프로그램이 한글을 제대로 출력하도록 설정할 수 있습니다.

 

- 아래는 요약

apt-get -y install language-pack-ko

apt-get install localepurge
엔터 하다가 리무브 부분은 no 했음

vi /var/lib/locales/supported.d/ko
ko_KR.EUC-KR EUC-KR

locale-gen --purge

dpkg-reconfigure locales
엔터 2번? 후 5. ko_KR.EUC-KR 선택

vi /etc/environment
LANG="ko_KR.UTF-8"
LANG="ko_KR.EUC-KR"

vi /etc/profile
LANG="ko_KR.UTF-8"

source /etc/profile

 

- 아래는 실제작업 로그

root@b74821646a14:/home/nkjok/var/lib/u2204_java#  /usr/bin/env /usr/lib/jvm/java-17-amazon-corretto/bin/java -agentlib:jdwp=transport=dt_socket,server=n,suspend=y,address=localhost:43079 -XX:+ShowCodeDetailsInExceptionMessages -cp /root/.vscode-server/data/User/workspaceStorage/f9b4ef33dc6f41286343b53b35c5a9a3/redhat.java/jdt_ws/u2204_java_73517661/bin nadocoding.chap_10._04_FunctionalInterface 
2 ?? = 2800 ?
root@b74821646a14:/home/nkjok/var/lib/u2204_java# 
root@b74821646a14:/home/nkjok/var/lib/u2204_java# 
root@b74821646a14:/home/nkjok/var/lib/u2204_java# 
root@b74821646a14:/home/nkjok/var/lib/u2204_java# 
root@b74821646a14:/home/nkjok/var/lib/u2204_java# apt-get -y install language-pack-ko 
Reading package lists... Done
Building dependency tree... Done
Reading state information... Done
The following additional packages will be installed:
  language-pack-ko-base locales
The following NEW packages will be installed:
  language-pack-ko language-pack-ko-base locales
0 upgraded, 3 newly installed, 0 to remove and 10 not upgraded.
Need to get 5486 kB of archives.
After this operation, 22.9 MB of additional disk space will be used.
Get:1 http://archive.ubuntu.com/ubuntu jammy-updates/main amd64 locales all 2.35-0ubuntu3.9 [4248 kB]
Get:2 http://archive.ubuntu.com/ubuntu jammy-updates/main amd64 language-pack-ko-base all 1:22.04+20240902 [1237 kB]
Get:3 http://archive.ubuntu.com/ubuntu jammy-updates/main amd64 language-pack-ko all 1:22.04+20240902 [1900 B]
Fetched 5486 kB in 4s (1562 kB/s)          
perl: warning: Setting locale failed.
perl: warning: Please check that your locale settings:
        LANGUAGE = (unset),
        LC_ALL = (unset),
        LANG = "en_US.UTF-8"
    are supported and installed on your system.
perl: warning: Falling back to the standard locale ("C").
debconf: delaying package configuration, since apt-utils is not installed
Selecting previously unselected package locales.
(Reading database ... 5531 files and directories currently installed.)
Preparing to unpack .../locales_2.35-0ubuntu3.9_all.deb ...
Unpacking locales (2.35-0ubuntu3.9) ...
Selecting previously unselected package language-pack-ko-base.
Preparing to unpack .../language-pack-ko-base_1%3a22.04+20240902_all.deb ...
Unpacking language-pack-ko-base (1:22.04+20240902) ...
Selecting previously unselected package language-pack-ko.
Preparing to unpack .../language-pack-ko_1%3a22.04+20240902_all.deb ...
Unpacking language-pack-ko (1:22.04+20240902) ...
Setting up locales (2.35-0ubuntu3.9) ...
debconf: unable to initialize frontend: Dialog
debconf: (No usable dialog-like program is installed, so the dialog based frontend cannot be used. at /usr/share/perl5/Debconf/FrontEnd/Dialog.pm line 78.)
debconf: falling back to frontend: Readline
debconf: unable to initialize frontend: Readline
debconf: (Can't locate Term/ReadLine.pm in @INC (you may need to install the Term::ReadLine module) (@INC contains: /etc/perl /usr/local/lib/x86_64-linux-gnu/perl/5.34.0 /usr/local/share/perl/5.34.0 /usr/lib/x86_64-linux-gnu/perl5/5.34 /usr/share/perl5 /usr/lib/x86_64-linux-gnu/perl-base /usr/lib/x86_64-linux-gnu/perl/5.34 /usr/share/perl/5.34 /usr/local/lib/site_perl) at /usr/share/perl5/Debconf/FrontEnd/Readline.pm line 7.)
debconf: falling back to frontend: Teletype
Generating locales (this might take a while)...
  ko_KR.UTF-8... done
Generation complete.
Setting up language-pack-ko (1:22.04+20240902) ...
Setting up language-pack-ko-base (1:22.04+20240902) ...
Generating locales (this might take a while)...
Generation complete.
root@b74821646a14:/home/nkjok/var/lib/u2204_java# apt-get install localepurge
Reading package lists... Done
Building dependency tree... Done
Reading state information... Done
The following additional packages will be installed:
  libgdbm-compat4 libgdbm6 libperl5.34 netbase perl perl-modules-5.34 ucf
Suggested packages:
  gdbm-l10n debfoster deborphan bleachbit perl-doc libterm-readline-gnu-perl | libterm-readline-perl-perl make libtap-harness-archive-perl
The following NEW packages will be installed:
  libgdbm-compat4 libgdbm6 libperl5.34 localepurge netbase perl perl-modules-5.34 ucf
0 upgraded, 8 newly installed, 0 to remove and 10 not upgraded.
Need to get 8170 kB of archives.
After this operation, 48.5 MB of additional disk space will be used.
Do you want to continue? [Y/n] y
Get:1 http://archive.ubuntu.com/ubuntu jammy-updates/main amd64 perl-modules-5.34 all 5.34.0-3ubuntu1.3 [2976 kB]
Get:2 http://archive.ubuntu.com/ubuntu jammy/main amd64 libgdbm6 amd64 1.23-1 [33.9 kB]
Get:3 http://archive.ubuntu.com/ubuntu jammy/main amd64 libgdbm-compat4 amd64 1.23-1 [6606 B]
Get:4 http://archive.ubuntu.com/ubuntu jammy-updates/main amd64 libperl5.34 amd64 5.34.0-3ubuntu1.3 [4820 kB]
Get:5 http://archive.ubuntu.com/ubuntu jammy-updates/main amd64 perl amd64 5.34.0-3ubuntu1.3 [232 kB]
Get:6 http://archive.ubuntu.com/ubuntu jammy/main amd64 netbase all 6.3 [12.9 kB]
Get:7 http://archive.ubuntu.com/ubuntu jammy/main amd64 ucf all 3.0043 [56.1 kB]
Get:8 http://archive.ubuntu.com/ubuntu jammy/universe amd64 localepurge all 0.7.3.10 [33.1 kB]
Fetched 8170 kB in 4s (2222 kB/s)     
perl: warning: Setting locale failed.
perl: warning: Please check that your locale settings:
        LANGUAGE = (unset),
        LC_ALL = (unset),
        LANG = "en_US.UTF-8"
    are supported and installed on your system.
perl: warning: Falling back to the standard locale ("C").
debconf: delaying package configuration, since apt-utils is not installed
Selecting previously unselected package perl-modules-5.34.
(Reading database ... 6372 files and directories currently installed.)
Preparing to unpack .../0-perl-modules-5.34_5.34.0-3ubuntu1.3_all.deb ...
Unpacking perl-modules-5.34 (5.34.0-3ubuntu1.3) ...
Selecting previously unselected package libgdbm6:amd64.
Preparing to unpack .../1-libgdbm6_1.23-1_amd64.deb ...
Unpacking libgdbm6:amd64 (1.23-1) ...
Selecting previously unselected package libgdbm-compat4:amd64.
Preparing to unpack .../2-libgdbm-compat4_1.23-1_amd64.deb ...
Unpacking libgdbm-compat4:amd64 (1.23-1) ...
Selecting previously unselected package libperl5.34:amd64.
Preparing to unpack .../3-libperl5.34_5.34.0-3ubuntu1.3_amd64.deb ...
Unpacking libperl5.34:amd64 (5.34.0-3ubuntu1.3) ...
Selecting previously unselected package perl.
Preparing to unpack .../4-perl_5.34.0-3ubuntu1.3_amd64.deb ...
Unpacking perl (5.34.0-3ubuntu1.3) ...
Selecting previously unselected package netbase.
Preparing to unpack .../5-netbase_6.3_all.deb ...
Unpacking netbase (6.3) ...
Selecting previously unselected package ucf.
Preparing to unpack .../6-ucf_3.0043_all.deb ...
Moving old data out of the way
Unpacking ucf (3.0043) ...
Selecting previously unselected package localepurge.
Preparing to unpack .../7-localepurge_0.7.3.10_all.deb ...
Unpacking localepurge (0.7.3.10) ...
Setting up perl-modules-5.34 (5.34.0-3ubuntu1.3) ...
Setting up ucf (3.0043) ...
debconf: unable to initialize frontend: Dialog
debconf: (No usable dialog-like program is installed, so the dialog based frontend cannot be used. at /usr/share/perl5/Debconf/FrontEnd/Dialog.pm line 78.)
debconf: falling back to frontend: Readline
Setting up netbase (6.3) ...
Setting up libgdbm6:amd64 (1.23-1) ...
Setting up libgdbm-compat4:amd64 (1.23-1) ...
Setting up libperl5.34:amd64 (5.34.0-3ubuntu1.3) ...
Setting up perl (5.34.0-3ubuntu1.3) ...
Setting up localepurge (0.7.3.10) ...
debconf: unable to initialize frontend: Dialog
debconf: (No usable dialog-like program is installed, so the dialog based frontend cannot be used. at /usr/share/perl5/Debconf/FrontEnd/Dialog.pm line 78.)
debconf: falling back to frontend: Readline
Configuring localepurge
-----------------------

The localepurge package will remove all locale files from the system except those that you select here.

When selecting the locale corresponding to your language and country code (such as "de_DE", "de_CH", "it_IT", etc.) it is recommended to choose the two-character entry ("de", "it", etc.) as well.

Entries from /etc/locale.gen will be preselected if no prior configuration has been successfully completed.

  1. aa             79. bg_BG.UTF-8      157. doi_IN             235. es_NI.UTF-8        313. gv                391. ku_TR         469. ne                547. se                 625. tn
  2. aa_DJ          80. bhb              158. dsb                236. es_PA              314. gv_GB             392. ku_TR.UTF-8   470. ne_NP             548. se_NO              626. tn_ZA
  3. aa_DJ.UTF-8    81. bhb_IN.UTF-8     159. dsb_DE             237. es_PA.UTF-8        315. gv_GB.UTF-8       393. kw            471. nhn               549. sgs                627. to
  4. aa_ER          82. bho              160. dv                 238. es_PE              316. ha                394. kw_GB         472. nhn_MX            550. sgs_LT             628. to_TO
[More]  

  5. aa_ER@saaho    83. bho_IN           161. dv_MV              239. es_PE.UTF-8        317. ha_NG             395. kw_GB.UTF-8   473. niu               551. shn                629. tpi
  6. aa_ET          84. bho_NP           162. dz                 240. es_PR              318. hak               396. ky            474. niu_NU            552. shn_MM             630. tpi_PG
  7. af             85. bi               163. dz_BT              241. es_PR.UTF-8        319. hak_TW            397. ky_KG         475. niu_NZ            553. shs                631. tr
  8. af_ZA          86. bi_VU            164. el                 242. es_PY              320. he                398. lb            476. nl                554. shs_CA             632. tr_CY
  9. af_ZA.UTF-8    87. bn               165. el_CY              243. es_PY.UTF-8        321. he_IL             399. lb_LU         477. nl_AW             555. si                 633. tr_CY.UTF-8
  10. agr           88. bn_BD            166. el_CY.UTF-8        244. es_SV              322. he_IL.UTF-8       400. lg            478. nl_BE             556. si_LK              634. tr_TR
  11. agr_PE        89. bn_IN            167. el_GR              245. es_SV.UTF-8        323. hi                401. lg_UG         479. nl_BE.UTF-8       557. sid                635. tr_TR.UTF-8
  12. ak            90. bo               168. el_GR.UTF-8        246. es_US              324. hi_IN             402. lg_UG.UTF-8   480. nl_BE@euro        558. sid_ET             636. ts
  13. ak_GH         91. bo_CN            169. el_GR@euro         247. es_US.UTF-8        325. hif               403. li            481. nl_NL             559. sk                 637. ts_ZA
  14. am            92. bo_IN            170. en                 248. es_UY              326. hif_FJ            404. li_BE         482. nl_NL.UTF-8       560. sk_SK              638. tt
  15. am_ET         93. br               171. en_AG              249. es_UY.UTF-8        327. hne               405. li_NL         483. nl_NL@euro        561. sk_SK.UTF-8        639. tt_RU
  16. an            94. br_FR            172. en_AU              250. es_VE              328. hne_IN            406. lij           484. nn                562. sl                 640. tt_RU@iqtelif
  17. an_ES         95. br_FR.UTF-8      173. en_AU.UTF-8        251. es_VE.UTF-8        329. hr                407. lij_IT        485. nn_NO             563. sl_SI              641. ug
[More] 

  18. an_ES.UTF-8   96. br_FR@euro       174. en_BW              252. et                 330. hr_HR             408. ln            486. nn_NO.UTF-8       564. sl_SI.UTF-8        642. ug_CN
  19. anp           97. brx              175. en_BW.UTF-8        253. et_EE              331. hr_HR.UTF-8       409. ln_CD         487. nr                565. sm                 643. ug_CN@latin
  20. anp_IN        98. brx_IN           176. en_CA              254. et_EE.ISO-8859-15  332. hsb               410. lo            488. nr_ZA             566. sm_WS              644. uk
  21. ar            99. bs               177. en_CA.UTF-8        255. et_EE.UTF-8        333. hsb_DE            411. lo_LA         489. nso               567. so                 645. uk_UA
  22. ar_AE         100. bs_BA           178. en_DK              256. eu                 334. hsb_DE.UTF-8      412. lt            490. nso_ZA            568. so_DJ              646. uk_UA.UTF-8
  23. ar_AE.UTF-8   101. bs_BA.UTF-8     179. en_DK.ISO-8859-15  257. eu_ES              335. ht                413. lt_LT         491. oc                569. so_DJ.UTF-8        647. unm
  24. ar_BH         102. byn             180. en_DK.UTF-8        258. eu_ES.UTF-8        336. ht_HT             414. lt_LT.UTF-8   492. oc_FR             570. so_ET              648. unm_US
  25. ar_BH.UTF-8   103. byn_ER          181. en_GB              259. eu_ES@euro         337. hu                415. lv            493. oc_FR.UTF-8       571. so_KE              649. ur
  26. ar_DZ         104. ca              182. en_GB.ISO-8859-15  260. eu_FR              338. hu_HU             416. lv_LV         494. om                572. so_KE.UTF-8        650. ur_IN
  27. ar_DZ.UTF-8   105. ca_AD           183. en_GB.UTF-8        261. eu_FR.UTF-8        339. hu_HU.UTF-8       417. lv_LV.UTF-8   495. om_ET             573. so_SO              651. ur_PK
  28. ar_EG         106. ca_AD.UTF-8     184. en_HK              262. eu_FR@euro         340. hy                418. lzh           496. om_KE             574. so_SO.UTF-8        652. uz
  29. ar_EG.UTF-8   107. ca_ES           185. en_HK.UTF-8        263. fa                 341. hy_AM             419. lzh_TW        497. om_KE.UTF-8       575. sq                 653. uz_UZ
  30. ar_IN         108. ca_ES.UTF-8     186. en_IE              264. fa_IR              342. hy_AM.ARMSCII-8   420. mag           498. or                576. sq_AL              654. uz_UZ.UTF-8
[More] 

  31. ar_IQ         109. ca_ES@euro      187. en_IE.UTF-8        265. ff                 343. ia                421. mag_IN        499. or_IN             577. sq_AL.UTF-8        655. uz_UZ@cyrillic
  32. ar_IQ.UTF-8   110. ca_ES@valencia  188. en_IE@euro         266. ff_SN              344. ia_FR             422. mai           500. os                578. sq_MK              656. ve
  33. ar_JO         111. ca_FR           189. en_IL              267. fi                 345. id                423. mai_IN        501. os_RU             579. sr                 657. ve_ZA
  34. ar_JO.UTF-8   112. ca_FR.UTF-8     190. en_IN              268. fi_FI              346. id_ID             424. mai_NP        502. pa                580. sr_ME              658. vi
  35. ar_KW         113. ca_IT           191. en_NG              269. fi_FI.UTF-8        347. id_ID.UTF-8       425. mfe           503. pa_IN             581. sr_RS              659. vi_VN
  36. ar_KW.UTF-8   114. ca_IT.UTF-8     192. en_NZ              270. fi_FI@euro         348. ig                426. mfe_MU        504. pa_PK             582. sr_RS@latin        660. wa
  37. ar_LB         115. ce              193. en_NZ.UTF-8        271. fil                349. ig_NG             427. mg            505. pap               583. ss                 661. wa_BE
  38. ar_LB.UTF-8   116. ce_RU           194. en_PH              272. fil_PH             350. ik                428. mg_MG         506. pap_AW            584. ss_ZA              662. wa_BE.UTF-8
  39. ar_LY         117. chr             195. en_PH.UTF-8        273. fo                 351. ik_CA             429. mg_MG.UTF-8   507. pap_CW            585. st                 663. wa_BE@euro
  40. ar_LY.UTF-8   118. chr_US          196. en_SC.UTF-8        274. fo_FO              352. is                430. mhr           508. pl                586. st_ZA              664. wae
  41. ar_MA         119. ckb             197. en_SG              275. fo_FO.UTF-8        353. is_IS             431. mhr_RU        509. pl_PL             587. st_ZA.UTF-8        665. wae_CH
  42. ar_MA.UTF-8   120. ckb_IQ          198. en_SG.UTF-8        276. fr                 354. is_IS.UTF-8       432. mi            510. pl_PL.UTF-8       588. sv                 666. wal
  43. ar_OM         121. cmn             199. en_US              277. fr_BE              355. it                433. mi_NZ         511. ps                589. sv_FI              667. wal_ET
[More] 

  44. ar_OM.UTF-8   122. cmn_TW          200. en_US.ISO-8859-15  278. fr_BE.UTF-8        356. it_CH             434. mi_NZ.UTF-8   512. ps_AF             590. sv_FI.UTF-8        668. wo
  45. ar_QA         123. crh             201. en_US.UTF-8        279. fr_BE@euro         357. it_CH.UTF-8       435. miq           513. pt                591. sv_FI@euro         669. wo_SN
  46. ar_QA.UTF-8   124. crh_UA          202. en_ZA              280. fr_CA              358. it_IT             436. miq_NI        514. pt_BR             592. sv_SE              670. xh
  47. ar_SA         125. cs              203. en_ZA.UTF-8        281. fr_CA.UTF-8        359. it_IT.UTF-8       437. mjw           515. pt_BR.UTF-8       593. sv_SE.ISO-8859-15  671. xh_ZA
  48. ar_SA.UTF-8   126. cs_CZ           204. en_ZM              282. fr_CH              360. it_IT@euro        438. mjw_IN        516. pt_PT             594. sv_SE.UTF-8        672. xh_ZA.UTF-8
  49. ar_SD         127. cs_CZ.UTF-8     205. en_ZW              283. fr_CH.UTF-8        361. iu                439. mk            517. pt_PT.UTF-8       595. sw                 673. yi
  50. ar_SD.UTF-8   128. csb             206. en_ZW.UTF-8        284. fr_FR              362. iu_CA             440. mk_MK         518. pt_PT@euro        596. sw_KE              674. yi_US
  51. ar_SS         129. csb_PL          207. eo                 285. fr_FR.UTF-8        363. ja                441. mk_MK.UTF-8   519. quz               597. sw_TZ              675. yi_US.UTF-8
  52. ar_SY         130. cv              208. eo_US.UTF-8        286. fr_FR@euro         364. ja_JP.EUC-JP      442. ml            520. quz_PE            598. szl                676. yo
  53. ar_SY.UTF-8   131. cv_RU           209. es                 287. fr_LU              365. ja_JP.UTF-8       443. ml_IN         521. raj               599. szl_PL             677. yo_NG
  54. ar_TN         132. cy              210. es_AR              288. fr_LU.UTF-8        366. ka                444. mn            522. raj_IN            600. ta                 678. yue
  55. ar_TN.UTF-8   133. cy_GB           211. es_AR.UTF-8        289. fr_LU@euro         367. ka_GE             445. mn_MN         523. ro                601. ta_IN              679. yue_HK
  56. ar_YE         134. cy_GB.UTF-8     212. es_BO              290. fur                368. ka_GE.UTF-8       446. mni           524. ro_RO             602. ta_LK              680. yuw
[More] 

  57. ar_YE.UTF-8   135. da              213. es_BO.UTF-8        291. fur_IT             369. kab               447. mni_IN        525. ro_RO.UTF-8       603. tcy                681. yuw_PG
  58. as            136. da_DK           214. es_CL              292. fy                 370. kab_DZ            448. mnw           526. ru                604. tcy_IN.UTF-8       682. zh
  59. as_IN         137. da_DK.UTF-8     215. es_CL.UTF-8        293. fy_DE              371. kk                449. mnw_MM        527. ru_RU             605. te                 683. zh_CN
  60. ast           138. de              216. es_CO              294. fy_NL              372. kk_KZ             450. mr            528. ru_RU.CP1251      606. te_IN              684. zh_CN.GB18030
  61. ast_ES        139. de_AT           217. es_CO.UTF-8        295. ga                 373. kk_KZ.RK1048      451. mr_IN         529. ru_RU.KOI8-R      607. tg                 685. zh_CN.GBK
  62. ast_ES.UTF-8  140. de_AT.UTF-8     218. es_CR              296. ga_IE              374. kk_KZ.UTF-8       452. ms            530. ru_RU.UTF-8       608. tg_TJ              686. zh_CN.UTF-8
  63. ayc           141. de_AT@euro      219. es_CR.UTF-8        297. ga_IE.UTF-8        375. kl                453. ms_MY         531. ru_UA             609. tg_TJ.UTF-8        687. zh_HK
  64. ayc_PE        142. de_BE           220. es_CU              298. ga_IE@euro         376. kl_GL             454. ms_MY.UTF-8   532. ru_UA.UTF-8       610. th                 688. zh_HK.UTF-8
  65. az            143. de_BE.UTF-8     221. es_DO              299. gd                 377. kl_GL.UTF-8       455. mt            533. rw                611. th_TH              689. zh_SG
  66. az_AZ         144. de_BE@euro      222. es_DO.UTF-8        300. gd_GB              378. km                456. mt_MT         534. rw_RW             612. th_TH.UTF-8        690. zh_SG.GBK
  67. az_IR         145. de_CH           223. es_EC              301. gd_GB.UTF-8        379. km_KH             457. mt_MT.UTF-8   535. sa                613. the                691. zh_SG.UTF-8
  68. be            146. de_CH.UTF-8     224. es_EC.UTF-8        302. gez                380. kn                458. my            536. sa_IN             614. the_NP             692. zh_TW
  69. be_BY         147. de_DE           225. es_ES              303. gez_ER             381. kn_IN             459. my_MM         537. sah               615. ti                 693. zh_TW.EUC-TW
[More] 

  70. be_BY.UTF-8   148. de_DE.UTF-8     226. es_ES.UTF-8        304. gez_ER@abegede     382. ko                460. nan           538. sah_RU            616. ti_ER              694. zh_TW.UTF-8
  71. be_BY@latin   149. de_DE@euro      227. es_ES@euro         305. gez_ET             383. ko_KR.EUC-KR      461. nan_TW        539. sat               617. ti_ET              695. zu
  72. bem           150. de_IT           228. es_GT              306. gez_ET@abegede     384. ko_KR.UTF-8       462. nan_TW@latin  540. sat_IN            618. tig                696. zu_ZA
  73. bem_ZM        151. de_IT.UTF-8     229. es_GT.UTF-8        307. gl                 385. kok               463. nb            541. sc                619. tig_ER             697. zu_ZA.UTF-8
  74. ber           152. de_LI.UTF-8     230. es_HN              308. gl_ES              386. kok_IN            464. nb_NO         542. sc_IT             620. tk
  75. ber_DZ        153. de_LU           231. es_HN.UTF-8        309. gl_ES.UTF-8        387. ks                465. nb_NO.UTF-8   543. sd                621. tk_TM
  76. ber_MA        154. de_LU.UTF-8     232. es_MX              310. gl_ES@euro         388. ks_IN             466. nds           544. sd_IN             622. tl
  77. bg            155. de_LU@euro      233. es_MX.UTF-8        311. gu                 389. ks_IN@devanagari  467. nds_DE        545. sd_IN@devanagari  623. tl_PH
  78. bg_BG         156. doi             234. es_NI              312. gu_IN              390. ku                468. nds_NL        546. sd_PK             624. tl_PH.UTF-8

(Enter the items or ranges you want to select, separated by spaces.)

Locale files to keep on this system: 

No locale has been chosen for being kept. This means that all locales will be removed from this system. Please confirm whether this is really your intent.

Really remove all locales? [yes/no] 

Really remove all locales? [yes/no] no

No localepurge action until the package is configured

The localepurge package will not be useful until it has been successfully configured using the command "dpkg-reconfigure localepurge". The configured entries from /etc/locale.gen of the locales package will
then be automatically preselected.

dpkg supports --path-exclude and --path-include options to filter files from packages being installed.

Please see /usr/share/doc/localepurge/README.dpkg-path for more information about this feature. It can be enabled (or disabled) later by running "dpkg-reconfigure localepurge".

This option will become active for packages unpacked after localepurge has been (re)configured. Packages installed or upgraded together with localepurge may (or may not) be subject to the previous
configuration of localepurge.

Use dpkg --path-exclude? [yes/no] no


Creating config file /etc/locale.nopurge with new version
Processing triggers for libc-bin (2.35-0ubuntu3.8) ...
root@b74821646a14:/home/nkjok/var/lib/u2204_java# 
root@b74821646a14:/home/nkjok/var/lib/u2204_java# 
root@b74821646a14:/home/nkjok/var/lib/u2204_java# vi /var/lib/locales/supported.d/ko
bash: vi: command not found
root@b74821646a14:/home/nkjok/var/lib/u2204_java# 
root@b74821646a14:/home/nkjok/var/lib/u2204_java# 
root@b74821646a14:/home/nkjok/var/lib/u2204_java# vi /var/lib/locales/supported.d/ko test/
.vscode/   README.md  bin/       lib/       src/       
root@b74821646a14:/home/nkjok/var/lib/u2204_java# vi /var/lib/locales/supported.d/ko test/
.vscode/   README.md  bin/       lib/       src/       
root@b74821646a14:/home/nkjok/var/lib/u2204_java# vi /var/lib/locales/supported.d/ko      
bash: vi: command not found
root@b74821646a14:/home/nkjok/var/lib/u2204_java# sudo vi /var/lib/locales/supported.d/ko 
bash: sudo: command not found
root@b74821646a14:/home/nkjok/var/lib/u2204_java# sudo vim /var/lib/locales/supported.d/ko 
bash: sudo: command not found
root@b74821646a14:/home/nkjok/var/lib/u2204_java# 
root@b74821646a14:/home/nkjok/var/lib/u2204_java# 
root@b74821646a14:/home/nkjok/var/lib/u2204_java# apt -y install vim
Reading package lists... Done
Building dependency tree... Done
Reading state information... Done
The following additional packages will be installed:
  libexpat1 libgpm2 libmpdec3 libpython3.10 libpython3.10-minimal libpython3.10-stdlib libreadline8 libsodium23 libsqlite3-0 media-types readline-common vim-common vim-runtime xxd
Suggested packages:
  gpm readline-doc ctags vim-doc vim-scripts
The following NEW packages will be installed:
  libexpat1 libgpm2 libmpdec3 libpython3.10 libpython3.10-minimal libpython3.10-stdlib libreadline8 libsodium23 libsqlite3-0 media-types readline-common vim vim-common vim-runtime xxd
0 upgraded, 15 newly installed, 0 to remove and 10 not upgraded.
Need to get 14.5 MB of archives.
After this operation, 61.2 MB of additional disk space will be used.
Get:1 http://archive.ubuntu.com/ubuntu jammy-updates/main amd64 libexpat1 amd64 2.4.7-1ubuntu0.5 [91.5 kB]
Get:2 http://archive.ubuntu.com/ubuntu jammy/main amd64 libmpdec3 amd64 2.5.1-2build2 [86.8 kB]
Get:3 http://archive.ubuntu.com/ubuntu jammy-updates/main amd64 libpython3.10-minimal amd64 3.10.12-1~22.04.9 [815 kB]
Get:4 http://archive.ubuntu.com/ubuntu jammy/main amd64 media-types all 7.0.0 [25.5 kB]
Get:5 http://archive.ubuntu.com/ubuntu jammy/main amd64 readline-common all 8.1.2-1 [53.5 kB]
Get:6 http://archive.ubuntu.com/ubuntu jammy/main amd64 libreadline8 amd64 8.1.2-1 [153 kB]
Get:7 http://archive.ubuntu.com/ubuntu jammy-updates/main amd64 libsqlite3-0 amd64 3.37.2-2ubuntu0.3 [641 kB]
Get:8 http://archive.ubuntu.com/ubuntu jammy-updates/main amd64 libpython3.10-stdlib amd64 3.10.12-1~22.04.9 [1850 kB]
Get:9 http://archive.ubuntu.com/ubuntu jammy-updates/main amd64 xxd amd64 2:8.2.3995-1ubuntu2.23 [51.7 kB]
Get:10 http://archive.ubuntu.com/ubuntu jammy-updates/main amd64 vim-common all 2:8.2.3995-1ubuntu2.23 [81.5 kB]
Get:11 http://archive.ubuntu.com/ubuntu jammy/main amd64 libgpm2 amd64 1.20.7-10build1 [15.3 kB]
Get:12 http://archive.ubuntu.com/ubuntu jammy-updates/main amd64 libpython3.10 amd64 3.10.12-1~22.04.9 [1949 kB]
Get:13 http://archive.ubuntu.com/ubuntu jammy/main amd64 libsodium23 amd64 1.0.18-1build2 [164 kB]
Get:14 http://archive.ubuntu.com/ubuntu jammy-updates/main amd64 vim-runtime all 2:8.2.3995-1ubuntu2.23 [6833 kB]
Get:15 http://archive.ubuntu.com/ubuntu jammy-updates/main amd64 vim amd64 2:8.2.3995-1ubuntu2.23 [1732 kB]
Fetched 14.5 MB in 4s (3907 kB/s)
perl: warning: Setting locale failed.
perl: warning: Please check that your locale settings:
        LANGUAGE = (unset),
        LC_ALL = (unset),
        LANG = "en_US.UTF-8"
    are supported and installed on your system.
perl: warning: Falling back to the standard locale ("C").
debconf: delaying package configuration, since apt-utils is not installed
Selecting previously unselected package libexpat1:amd64.
(Reading database ... 8427 files and directories currently installed.)
Preparing to unpack .../00-libexpat1_2.4.7-1ubuntu0.5_amd64.deb ...
Unpacking libexpat1:amd64 (2.4.7-1ubuntu0.5) ...
Selecting previously unselected package libmpdec3:amd64.
Preparing to unpack .../01-libmpdec3_2.5.1-2build2_amd64.deb ...
Unpacking libmpdec3:amd64 (2.5.1-2build2) ...
Selecting previously unselected package libpython3.10-minimal:amd64.
Preparing to unpack .../02-libpython3.10-minimal_3.10.12-1~22.04.9_amd64.deb ...
Unpacking libpython3.10-minimal:amd64 (3.10.12-1~22.04.9) ...
Selecting previously unselected package media-types.
Preparing to unpack .../03-media-types_7.0.0_all.deb ...
Unpacking media-types (7.0.0) ...
Selecting previously unselected package readline-common.
Preparing to unpack .../04-readline-common_8.1.2-1_all.deb ...
Unpacking readline-common (8.1.2-1) ...
Selecting previously unselected package libreadline8:amd64.
Preparing to unpack .../05-libreadline8_8.1.2-1_amd64.deb ...
Unpacking libreadline8:amd64 (8.1.2-1) ...
Selecting previously unselected package libsqlite3-0:amd64.
Preparing to unpack .../06-libsqlite3-0_3.37.2-2ubuntu0.3_amd64.deb ...
Unpacking libsqlite3-0:amd64 (3.37.2-2ubuntu0.3) ...
Selecting previously unselected package libpython3.10-stdlib:amd64.
Preparing to unpack .../07-libpython3.10-stdlib_3.10.12-1~22.04.9_amd64.deb ...
Unpacking libpython3.10-stdlib:amd64 (3.10.12-1~22.04.9) ...
Selecting previously unselected package xxd.
Preparing to unpack .../08-xxd_2%3a8.2.3995-1ubuntu2.23_amd64.deb ...
Unpacking xxd (2:8.2.3995-1ubuntu2.23) ...
Selecting previously unselected package vim-common.
Preparing to unpack .../09-vim-common_2%3a8.2.3995-1ubuntu2.23_all.deb ...
Unpacking vim-common (2:8.2.3995-1ubuntu2.23) ...
Selecting previously unselected package libgpm2:amd64.
Preparing to unpack .../10-libgpm2_1.20.7-10build1_amd64.deb ...
Unpacking libgpm2:amd64 (1.20.7-10build1) ...
Selecting previously unselected package libpython3.10:amd64.
Preparing to unpack .../11-libpython3.10_3.10.12-1~22.04.9_amd64.deb ...
Unpacking libpython3.10:amd64 (3.10.12-1~22.04.9) ...
Selecting previously unselected package libsodium23:amd64.
Preparing to unpack .../12-libsodium23_1.0.18-1build2_amd64.deb ...
Unpacking libsodium23:amd64 (1.0.18-1build2) ...
Selecting previously unselected package vim-runtime.
Preparing to unpack .../13-vim-runtime_2%3a8.2.3995-1ubuntu2.23_all.deb ...
Adding 'diversion of /usr/share/vim/vim82/doc/help.txt to /usr/share/vim/vim82/doc/help.txt.vim-tiny by vim-runtime'
Adding 'diversion of /usr/share/vim/vim82/doc/tags to /usr/share/vim/vim82/doc/tags.vim-tiny by vim-runtime'
Unpacking vim-runtime (2:8.2.3995-1ubuntu2.23) ...
Selecting previously unselected package vim.
Preparing to unpack .../14-vim_2%3a8.2.3995-1ubuntu2.23_amd64.deb ...
Unpacking vim (2:8.2.3995-1ubuntu2.23) ...
Setting up libexpat1:amd64 (2.4.7-1ubuntu0.5) ...
Setting up media-types (7.0.0) ...
Setting up libsodium23:amd64 (1.0.18-1build2) ...
Setting up libgpm2:amd64 (1.20.7-10build1) ...
Setting up libsqlite3-0:amd64 (3.37.2-2ubuntu0.3) ...
Setting up xxd (2:8.2.3995-1ubuntu2.23) ...
Setting up vim-common (2:8.2.3995-1ubuntu2.23) ...
Setting up libpython3.10-minimal:amd64 (3.10.12-1~22.04.9) ...
Setting up libmpdec3:amd64 (2.5.1-2build2) ...
Setting up vim-runtime (2:8.2.3995-1ubuntu2.23) ...
Setting up readline-common (8.1.2-1) ...
Setting up libreadline8:amd64 (8.1.2-1) ...
Setting up libpython3.10-stdlib:amd64 (3.10.12-1~22.04.9) ...
Setting up libpython3.10:amd64 (3.10.12-1~22.04.9) ...
Setting up vim (2:8.2.3995-1ubuntu2.23) ...
update-alternatives: using /usr/bin/vim.basic to provide /usr/bin/vim (vim) in auto mode
update-alternatives: using /usr/bin/vim.basic to provide /usr/bin/vimdiff (vimdiff) in auto mode
update-alternatives: using /usr/bin/vim.basic to provide /usr/bin/rvim (rvim) in auto mode
update-alternatives: using /usr/bin/vim.basic to provide /usr/bin/rview (rview) in auto mode
update-alternatives: using /usr/bin/vim.basic to provide /usr/bin/vi (vi) in auto mode
update-alternatives: warning: skip creation of /usr/share/man/da/man1/vi.1.gz because associated file /usr/share/man/da/man1/vim.1.gz (of link group vi) doesn't exist
update-alternatives: warning: skip creation of /usr/share/man/de/man1/vi.1.gz because associated file /usr/share/man/de/man1/vim.1.gz (of link group vi) doesn't exist
update-alternatives: warning: skip creation of /usr/share/man/fr/man1/vi.1.gz because associated file /usr/share/man/fr/man1/vim.1.gz (of link group vi) doesn't exist
update-alternatives: warning: skip creation of /usr/share/man/it/man1/vi.1.gz because associated file /usr/share/man/it/man1/vim.1.gz (of link group vi) doesn't exist
update-alternatives: warning: skip creation of /usr/share/man/ja/man1/vi.1.gz because associated file /usr/share/man/ja/man1/vim.1.gz (of link group vi) doesn't exist
update-alternatives: warning: skip creation of /usr/share/man/pl/man1/vi.1.gz because associated file /usr/share/man/pl/man1/vim.1.gz (of link group vi) doesn't exist
update-alternatives: warning: skip creation of /usr/share/man/ru/man1/vi.1.gz because associated file /usr/share/man/ru/man1/vim.1.gz (of link group vi) doesn't exist
update-alternatives: warning: skip creation of /usr/share/man/man1/vi.1.gz because associated file /usr/share/man/man1/vim.1.gz (of link group vi) doesn't exist
update-alternatives: using /usr/bin/vim.basic to provide /usr/bin/view (view) in auto mode
update-alternatives: warning: skip creation of /usr/share/man/da/man1/view.1.gz because associated file /usr/share/man/da/man1/vim.1.gz (of link group view) doesn't exist
update-alternatives: warning: skip creation of /usr/share/man/de/man1/view.1.gz because associated file /usr/share/man/de/man1/vim.1.gz (of link group view) doesn't exist
update-alternatives: warning: skip creation of /usr/share/man/fr/man1/view.1.gz because associated file /usr/share/man/fr/man1/vim.1.gz (of link group view) doesn't exist
update-alternatives: warning: skip creation of /usr/share/man/it/man1/view.1.gz because associated file /usr/share/man/it/man1/vim.1.gz (of link group view) doesn't exist
update-alternatives: warning: skip creation of /usr/share/man/ja/man1/view.1.gz because associated file /usr/share/man/ja/man1/vim.1.gz (of link group view) doesn't exist
update-alternatives: warning: skip creation of /usr/share/man/pl/man1/view.1.gz because associated file /usr/share/man/pl/man1/vim.1.gz (of link group view) doesn't exist
update-alternatives: warning: skip creation of /usr/share/man/ru/man1/view.1.gz because associated file /usr/share/man/ru/man1/vim.1.gz (of link group view) doesn't exist
update-alternatives: warning: skip creation of /usr/share/man/man1/view.1.gz because associated file /usr/share/man/man1/vim.1.gz (of link group view) doesn't exist
update-alternatives: using /usr/bin/vim.basic to provide /usr/bin/ex (ex) in auto mode
update-alternatives: warning: skip creation of /usr/share/man/da/man1/ex.1.gz because associated file /usr/share/man/da/man1/vim.1.gz (of link group ex) doesn't exist
update-alternatives: warning: skip creation of /usr/share/man/de/man1/ex.1.gz because associated file /usr/share/man/de/man1/vim.1.gz (of link group ex) doesn't exist
update-alternatives: warning: skip creation of /usr/share/man/fr/man1/ex.1.gz because associated file /usr/share/man/fr/man1/vim.1.gz (of link group ex) doesn't exist
update-alternatives: warning: skip creation of /usr/share/man/it/man1/ex.1.gz because associated file /usr/share/man/it/man1/vim.1.gz (of link group ex) doesn't exist
update-alternatives: warning: skip creation of /usr/share/man/ja/man1/ex.1.gz because associated file /usr/share/man/ja/man1/vim.1.gz (of link group ex) doesn't exist
update-alternatives: warning: skip creation of /usr/share/man/pl/man1/ex.1.gz because associated file /usr/share/man/pl/man1/vim.1.gz (of link group ex) doesn't exist
update-alternatives: warning: skip creation of /usr/share/man/ru/man1/ex.1.gz because associated file /usr/share/man/ru/man1/vim.1.gz (of link group ex) doesn't exist
update-alternatives: warning: skip creation of /usr/share/man/man1/ex.1.gz because associated file /usr/share/man/man1/vim.1.gz (of link group ex) doesn't exist
update-alternatives: using /usr/bin/vim.basic to provide /usr/bin/editor (editor) in auto mode
update-alternatives: warning: skip creation of /usr/share/man/da/man1/editor.1.gz because associated file /usr/share/man/da/man1/vim.1.gz (of link group editor) doesn't exist
update-alternatives: warning: skip creation of /usr/share/man/de/man1/editor.1.gz because associated file /usr/share/man/de/man1/vim.1.gz (of link group editor) doesn't exist
update-alternatives: warning: skip creation of /usr/share/man/fr/man1/editor.1.gz because associated file /usr/share/man/fr/man1/vim.1.gz (of link group editor) doesn't exist
update-alternatives: warning: skip creation of /usr/share/man/it/man1/editor.1.gz because associated file /usr/share/man/it/man1/vim.1.gz (of link group editor) doesn't exist
update-alternatives: warning: skip creation of /usr/share/man/ja/man1/editor.1.gz because associated file /usr/share/man/ja/man1/vim.1.gz (of link group editor) doesn't exist
update-alternatives: warning: skip creation of /usr/share/man/pl/man1/editor.1.gz because associated file /usr/share/man/pl/man1/vim.1.gz (of link group editor) doesn't exist
update-alternatives: warning: skip creation of /usr/share/man/ru/man1/editor.1.gz because associated file /usr/share/man/ru/man1/vim.1.gz (of link group editor) doesn't exist
update-alternatives: warning: skip creation of /usr/share/man/man1/editor.1.gz because associated file /usr/share/man/man1/vim.1.gz (of link group editor) doesn't exist
Processing triggers for libc-bin (2.35-0ubuntu3.8) ...

          You have to configure "localepurge" with the command

              dpkg-reconfigure localepurge

          to make /usr/sbin/localepurge actually start to function.

          Nothing to be done, exiting ...

root@b74821646a14:/home/nkjok/var/lib/u2204_java# 
root@b74821646a14:/home/nkjok/var/lib/u2204_java# 
root@b74821646a14:/home/nkjok/var/lib/u2204_java# sudo vim /var/lib/locales/supported.d/ko 
bash: sudo: command not found
root@b74821646a14:/home/nkjok/var/lib/u2204_java# sudo vi /var/lib/locales/supported.d/ko 
bash: sudo: command not found
root@b74821646a14:/home/nkjok/var/lib/u2204_java# 
root@b74821646a14:/home/nkjok/var/lib/u2204_java# 
root@b74821646a14:/home/nkjok/var/lib/u2204_java# vi test
root@b74821646a14:/home/nkjok/var/lib/u2204_java# 
root@b74821646a14:/home/nkjok/var/lib/u2204_java# 
root@b74821646a14:/home/nkjok/var/lib/u2204_java#  vi /var/lib/locales/supported.d/ko 
root@b74821646a14:/home/nkjok/var/lib/u2204_java# 
root@b74821646a14:/home/nkjok/var/lib/u2204_java# 
root@b74821646a14:/home/nkjok/var/lib/u2204_java# vi /var/lib/locales/supported.d/ko 
root@b74821646a14:/home/nkjok/var/lib/u2204_java# 
root@b74821646a14:/home/nkjok/var/lib/u2204_java# 
root@b74821646a14:/home/nkjok/var/lib/u2204_java# locale-gen --purge
Generating locales (this might take a while)...
  ko_KR.EUC-KR... done
  ko_KR.UTF-8... done
Generation complete.
root@b74821646a14:/home/nkjok/var/lib/u2204_java# dpkg-reconfigure locales
perl: warning: Setting locale failed.
perl: warning: Please check that your locale settings:
        LANGUAGE = (unset),
        LC_ALL = (unset),
        LANG = "en_US.UTF-8"
    are supported and installed on your system.
perl: warning: Falling back to the standard locale ("C").
debconf: unable to initialize frontend: Dialog
debconf: (No usable dialog-like program is installed, so the dialog based frontend cannot be used. at /usr/share/perl5/Debconf/FrontEnd/Dialog.pm line 78.)
debconf: falling back to frontend: Readline
Configuring locales
-------------------

Locales are a framework to switch between multiple languages and allow users to use their language, country, characters, collation order, etc.

Please choose which locales to generate. UTF-8 locales should be chosen by default, particularly for new installations. Other character sets may be useful for backwards compatibility with older systems and
software.

  1. All locales              85. ca_ES@euro ISO-8859-15          169. es_AR.UTF-8 UTF-8              253. gl_ES.UTF-8 UTF-8          337. mni_IN UTF-8            421. sq_AL ISO-8859-1
  2. C.UTF-8 UTF-8            86. ca_ES@valencia UTF-8            170. es_BO ISO-8859-1               254. gl_ES@euro ISO-8859-15     338. mnw_MM UTF-8            422. sq_AL.UTF-8 UTF-8
  3. aa_DJ ISO-8859-1         87. ca_FR ISO-8859-15               171. es_BO.UTF-8 UTF-8              255. gu_IN UTF-8                339. mr_IN UTF-8             423. sq_MK UTF-8
  4. aa_DJ.UTF-8 UTF-8        88. ca_FR.UTF-8 UTF-8               172. es_CL ISO-8859-1               256. gv_GB ISO-8859-1           340. ms_MY ISO-8859-1        424. sr_ME UTF-8
  5. aa_ER UTF-8              89. ca_IT ISO-8859-15               173. es_CL.UTF-8 UTF-8              257. gv_GB.UTF-8 UTF-8          341. ms_MY.UTF-8 UTF-8       425. sr_RS UTF-8
[More] 

  6. aa_ER@saaho UTF-8        90. ca_IT.UTF-8 UTF-8               174. es_CO ISO-8859-1               258. ha_NG UTF-8                342. mt_MT ISO-8859-3        426. sr_RS@latin UTF-8
  7. aa_ET UTF-8              91. ce_RU UTF-8                     175. es_CO.UTF-8 UTF-8              259. hak_TW UTF-8               343. mt_MT.UTF-8 UTF-8       427. ss_ZA UTF-8
  8. af_ZA ISO-8859-1         92. chr_US UTF-8                    176. es_CR ISO-8859-1               260. he_IL ISO-8859-8           344. my_MM UTF-8             428. st_ZA ISO-8859-1
  9. af_ZA.UTF-8 UTF-8        93. ckb_IQ UTF-8                    177. es_CR.UTF-8 UTF-8              261. he_IL.UTF-8 UTF-8          345. nan_TW UTF-8            429. st_ZA.UTF-8 UTF-8
  10. agr_PE UTF-8            94. cmn_TW UTF-8                    178. es_CU UTF-8                    262. hi_IN UTF-8                346. nan_TW@latin UTF-8      430. sv_FI ISO-8859-1
  11. ak_GH UTF-8             95. crh_UA UTF-8                    179. es_DO ISO-8859-1               263. hif_FJ UTF-8               347. nb_NO ISO-8859-1        431. sv_FI.UTF-8 UTF-8
  12. am_ET UTF-8             96. cs_CZ ISO-8859-2                180. es_DO.UTF-8 UTF-8              264. hne_IN UTF-8               348. nb_NO.UTF-8 UTF-8       432. sv_FI@euro ISO-8859-15
  13. an_ES ISO-8859-15       97. cs_CZ.UTF-8 UTF-8               181. es_EC ISO-8859-1               265. hr_HR ISO-8859-2           349. nds_DE UTF-8            433. sv_SE ISO-8859-1
  14. an_ES.UTF-8 UTF-8       98. csb_PL UTF-8                    182. es_EC.UTF-8 UTF-8              266. hr_HR.UTF-8 UTF-8          350. nds_NL UTF-8            434. sv_SE.ISO-8859-15 ISO-8859-15
  15. anp_IN UTF-8            99. cv_RU UTF-8                     183. es_ES ISO-8859-1               267. hsb_DE ISO-8859-2          351. ne_NP UTF-8             435. sv_SE.UTF-8 UTF-8
  16. ar_AE ISO-8859-6        100. cy_GB ISO-8859-14              184. es_ES.UTF-8 UTF-8              268. hsb_DE.UTF-8 UTF-8         352. nhn_MX UTF-8            436. sw_KE UTF-8
  17. ar_AE.UTF-8 UTF-8       101. cy_GB.UTF-8 UTF-8              185. es_ES@euro ISO-8859-15         269. ht_HT UTF-8                353. niu_NU UTF-8            437. sw_TZ UTF-8
  18. ar_BH ISO-8859-6        102. da_DK ISO-8859-1               186. es_GT ISO-8859-1               270. hu_HU ISO-8859-2           354. niu_NZ UTF-8            438. szl_PL UTF-8
[More] 

  19. ar_BH.UTF-8 UTF-8       103. da_DK.UTF-8 UTF-8              187. es_GT.UTF-8 UTF-8              271. hu_HU.UTF-8 UTF-8          355. nl_AW UTF-8             439. ta_IN UTF-8
  20. ar_DZ ISO-8859-6        104. de_AT ISO-8859-1               188. es_HN ISO-8859-1               272. hy_AM UTF-8                356. nl_BE ISO-8859-1        440. ta_LK UTF-8
  21. ar_DZ.UTF-8 UTF-8       105. de_AT.UTF-8 UTF-8              189. es_HN.UTF-8 UTF-8              273. hy_AM.ARMSCII-8 ARMSCII-8  357. nl_BE.UTF-8 UTF-8       441. tcy_IN.UTF-8 UTF-8
  22. ar_EG ISO-8859-6        106. de_AT@euro ISO-8859-15         190. es_MX ISO-8859-1               274. ia_FR UTF-8                358. nl_BE@euro ISO-8859-15  442. te_IN UTF-8
  23. ar_EG.UTF-8 UTF-8       107. de_BE ISO-8859-1               191. es_MX.UTF-8 UTF-8              275. id_ID ISO-8859-1           359. nl_NL ISO-8859-1        443. tg_TJ KOI8-T
  24. ar_IN UTF-8             108. de_BE.UTF-8 UTF-8              192. es_NI ISO-8859-1               276. id_ID.UTF-8 UTF-8          360. nl_NL.UTF-8 UTF-8       444. tg_TJ.UTF-8 UTF-8
  25. ar_IQ ISO-8859-6        109. de_BE@euro ISO-8859-15         193. es_NI.UTF-8 UTF-8              277. ig_NG UTF-8                361. nl_NL@euro ISO-8859-15  445. th_TH TIS-620
  26. ar_IQ.UTF-8 UTF-8       110. de_CH ISO-8859-1               194. es_PA ISO-8859-1               278. ik_CA UTF-8                362. nn_NO ISO-8859-1        446. th_TH.UTF-8 UTF-8
  27. ar_JO ISO-8859-6        111. de_CH.UTF-8 UTF-8              195. es_PA.UTF-8 UTF-8              279. is_IS ISO-8859-1           363. nn_NO.UTF-8 UTF-8       447. the_NP UTF-8
  28. ar_JO.UTF-8 UTF-8       112. de_DE ISO-8859-1               196. es_PE ISO-8859-1               280. is_IS.UTF-8 UTF-8          364. nr_ZA UTF-8             448. ti_ER UTF-8
  29. ar_KW ISO-8859-6        113. de_DE.UTF-8 UTF-8              197. es_PE.UTF-8 UTF-8              281. it_CH ISO-8859-1           365. nso_ZA UTF-8            449. ti_ET UTF-8
  30. ar_KW.UTF-8 UTF-8       114. de_DE@euro ISO-8859-15         198. es_PR ISO-8859-1               282. it_CH.UTF-8 UTF-8          366. oc_FR ISO-8859-1        450. tig_ER UTF-8
  31. ar_LB ISO-8859-6        115. de_IT ISO-8859-1               199. es_PR.UTF-8 UTF-8              283. it_IT ISO-8859-1           367. oc_FR.UTF-8 UTF-8       451. tk_TM UTF-8
[More] 

  32. ar_LB.UTF-8 UTF-8       116. de_IT.UTF-8 UTF-8              200. es_PY ISO-8859-1               284. it_IT.UTF-8 UTF-8          368. om_ET UTF-8             452. tl_PH ISO-8859-1
  33. ar_LY ISO-8859-6        117. de_LI.UTF-8 UTF-8              201. es_PY.UTF-8 UTF-8              285. it_IT@euro ISO-8859-15     369. om_KE ISO-8859-1        453. tl_PH.UTF-8 UTF-8
  34. ar_LY.UTF-8 UTF-8       118. de_LU ISO-8859-1               202. es_SV ISO-8859-1               286. iu_CA UTF-8                370. om_KE.UTF-8 UTF-8       454. tn_ZA UTF-8
  35. ar_MA ISO-8859-6        119. de_LU.UTF-8 UTF-8              203. es_SV.UTF-8 UTF-8              287. ja_JP.EUC-JP EUC-JP        371. or_IN UTF-8             455. to_TO UTF-8
  36. ar_MA.UTF-8 UTF-8       120. de_LU@euro ISO-8859-15         204. es_US ISO-8859-1               288. ja_JP.UTF-8 UTF-8          372. os_RU UTF-8             456. tpi_PG UTF-8
  37. ar_OM ISO-8859-6        121. doi_IN UTF-8                   205. es_US.UTF-8 UTF-8              289. ka_GE GEORGIAN-PS          373. pa_IN UTF-8             457. tr_CY ISO-8859-9
  38. ar_OM.UTF-8 UTF-8       122. dsb_DE UTF-8                   206. es_UY ISO-8859-1               290. ka_GE.UTF-8 UTF-8          374. pa_PK UTF-8             458. tr_CY.UTF-8 UTF-8
  39. ar_QA ISO-8859-6        123. dv_MV UTF-8                    207. es_UY.UTF-8 UTF-8              291. kab_DZ UTF-8               375. pap_AW UTF-8            459. tr_TR ISO-8859-9
  40. ar_QA.UTF-8 UTF-8       124. dz_BT UTF-8                    208. es_VE ISO-8859-1               292. kk_KZ PT154                376. pap_CW UTF-8            460. tr_TR.UTF-8 UTF-8
  41. ar_SA ISO-8859-6        125. el_CY ISO-8859-7               209. es_VE.UTF-8 UTF-8              293. kk_KZ.RK1048 RK1048        377. pl_PL ISO-8859-2        461. ts_ZA UTF-8
  42. ar_SA.UTF-8 UTF-8       126. el_CY.UTF-8 UTF-8              210. et_EE ISO-8859-1               294. kk_KZ.UTF-8 UTF-8          378. pl_PL.UTF-8 UTF-8       462. tt_RU UTF-8
  43. ar_SD ISO-8859-6        127. el_GR ISO-8859-7               211. et_EE.ISO-8859-15 ISO-8859-15  295. kl_GL ISO-8859-1           379. ps_AF UTF-8             463. tt_RU@iqtelif UTF-8
  44. ar_SD.UTF-8 UTF-8       128. el_GR.UTF-8 UTF-8              212. et_EE.UTF-8 UTF-8              296. kl_GL.UTF-8 UTF-8          380. pt_BR ISO-8859-1        464. ug_CN UTF-8
[More] 

  45. ar_SS UTF-8             129. el_GR@euro ISO-8859-7          213. eu_ES ISO-8859-1               297. km_KH UTF-8                381. pt_BR.UTF-8 UTF-8       465. ug_CN@latin UTF-8
  46. ar_SY ISO-8859-6        130. en_AG UTF-8                    214. eu_ES.UTF-8 UTF-8              298. kn_IN UTF-8                382. pt_PT ISO-8859-1        466. uk_UA KOI8-U
  47. ar_SY.UTF-8 UTF-8       131. en_AU ISO-8859-1               215. eu_ES@euro ISO-8859-15         299. ko_KR.EUC-KR EUC-KR        383. pt_PT.UTF-8 UTF-8       467. uk_UA.UTF-8 UTF-8
  48. ar_TN ISO-8859-6        132. en_AU.UTF-8 UTF-8              216. eu_FR ISO-8859-1               300. ko_KR.UTF-8 UTF-8          384. pt_PT@euro ISO-8859-15  468. unm_US UTF-8
  49. ar_TN.UTF-8 UTF-8       133. en_BW ISO-8859-1               217. eu_FR.UTF-8 UTF-8              301. kok_IN UTF-8               385. quz_PE UTF-8            469. ur_IN UTF-8
  50. ar_YE ISO-8859-6        134. en_BW.UTF-8 UTF-8              218. eu_FR@euro ISO-8859-15         302. ks_IN UTF-8                386. raj_IN UTF-8            470. ur_PK UTF-8
  51. ar_YE.UTF-8 UTF-8       135. en_CA ISO-8859-1               219. fa_IR UTF-8                    303. ks_IN@devanagari UTF-8     387. ro_RO ISO-8859-2        471. uz_UZ ISO-8859-1
  52. as_IN UTF-8             136. en_CA.UTF-8 UTF-8              220. ff_SN UTF-8                    304. ku_TR ISO-8859-9           388. ro_RO.UTF-8 UTF-8       472. uz_UZ.UTF-8 UTF-8
  53. ast_ES ISO-8859-15      137. en_DK ISO-8859-1               221. fi_FI ISO-8859-1               305. ku_TR.UTF-8 UTF-8          389. ru_RU ISO-8859-5        473. uz_UZ@cyrillic UTF-8
  54. ast_ES.UTF-8 UTF-8      138. en_DK.ISO-8859-15 ISO-8859-15  222. fi_FI.UTF-8 UTF-8              306. kw_GB ISO-8859-1           390. ru_RU.CP1251 CP1251     474. ve_ZA UTF-8
  55. ayc_PE UTF-8            139. en_DK.UTF-8 UTF-8              223. fi_FI@euro ISO-8859-15         307. kw_GB.UTF-8 UTF-8          391. ru_RU.KOI8-R KOI8-R     475. vi_VN UTF-8
  56. az_AZ UTF-8             140. en_GB ISO-8859-1               224. fil_PH UTF-8                   308. ky_KG UTF-8                392. ru_RU.UTF-8 UTF-8       476. wa_BE ISO-8859-1
  57. az_IR UTF-8             141. en_GB.ISO-8859-15 ISO-8859-15  225. fo_FO ISO-8859-1               309. lb_LU UTF-8                393. ru_UA KOI8-U            477. wa_BE.UTF-8 UTF-8
[More] 

  58. be_BY CP1251            142. en_GB.UTF-8 UTF-8              226. fo_FO.UTF-8 UTF-8              310. lg_UG ISO-8859-10          394. ru_UA.UTF-8 UTF-8       478. wa_BE@euro ISO-8859-15
  59. be_BY.UTF-8 UTF-8       143. en_HK ISO-8859-1               227. fr_BE ISO-8859-1               311. lg_UG.UTF-8 UTF-8          395. rw_RW UTF-8             479. wae_CH UTF-8
  60. be_BY@latin UTF-8       144. en_HK.UTF-8 UTF-8              228. fr_BE.UTF-8 UTF-8              312. li_BE UTF-8                396. sa_IN UTF-8             480. wal_ET UTF-8
  61. bem_ZM UTF-8            145. en_IE ISO-8859-1               229. fr_BE@euro ISO-8859-15         313. li_NL UTF-8                397. sah_RU UTF-8            481. wo_SN UTF-8
  62. ber_DZ UTF-8            146. en_IE.UTF-8 UTF-8              230. fr_CA ISO-8859-1               314. lij_IT UTF-8               398. sat_IN UTF-8            482. xh_ZA ISO-8859-1
  63. ber_MA UTF-8            147. en_IE@euro ISO-8859-15         231. fr_CA.UTF-8 UTF-8              315. ln_CD UTF-8                399. sc_IT UTF-8             483. xh_ZA.UTF-8 UTF-8
  64. bg_BG CP1251            148. en_IL UTF-8                    232. fr_CH ISO-8859-1               316. lo_LA UTF-8                400. sd_IN UTF-8             484. yi_US CP1255
  65. bg_BG.UTF-8 UTF-8       149. en_IN UTF-8                    233. fr_CH.UTF-8 UTF-8              317. lt_LT ISO-8859-13          401. sd_IN@devanagari UTF-8  485. yi_US.UTF-8 UTF-8
  66. bhb_IN.UTF-8 UTF-8      150. en_NG UTF-8                    234. fr_FR ISO-8859-1               318. lt_LT.UTF-8 UTF-8          402. sd_PK UTF-8             486. yo_NG UTF-8
  67. bho_IN UTF-8            151. en_NZ ISO-8859-1               235. fr_FR.UTF-8 UTF-8              319. lv_LV ISO-8859-13          403. se_NO UTF-8             487. yue_HK UTF-8
  68. bho_NP UTF-8            152. en_NZ.UTF-8 UTF-8              236. fr_FR@euro ISO-8859-15         320. lv_LV.UTF-8 UTF-8          404. sgs_LT UTF-8            488. yuw_PG UTF-8
  69. bi_VU UTF-8             153. en_PH ISO-8859-1               237. fr_LU ISO-8859-1               321. lzh_TW UTF-8               405. shn_MM UTF-8            489. zh_CN GB2312
  70. bn_BD UTF-8             154. en_PH.UTF-8 UTF-8              238. fr_LU.UTF-8 UTF-8              322. mag_IN UTF-8               406. shs_CA UTF-8            490. zh_CN.GB18030 GB18030
[More] 

  71. bn_IN UTF-8             155. en_SC.UTF-8 UTF-8              239. fr_LU@euro ISO-8859-15         323. mai_IN UTF-8               407. si_LK UTF-8             491. zh_CN.GBK GBK
  72. bo_CN UTF-8             156. en_SG ISO-8859-1               240. fur_IT UTF-8                   324. mai_NP UTF-8               408. sid_ET UTF-8            492. zh_CN.UTF-8 UTF-8
  73. bo_IN UTF-8             157. en_SG.UTF-8 UTF-8              241. fy_DE UTF-8                    325. mfe_MU UTF-8               409. sk_SK ISO-8859-2        493. zh_HK BIG5-HKSCS
  74. br_FR ISO-8859-1        158. en_US ISO-8859-1               242. fy_NL UTF-8                    326. mg_MG ISO-8859-15          410. sk_SK.UTF-8 UTF-8       494. zh_HK.UTF-8 UTF-8
  75. br_FR.UTF-8 UTF-8       159. en_US.ISO-8859-15 ISO-8859-15  243. ga_IE ISO-8859-1               327. mg_MG.UTF-8 UTF-8          411. sl_SI ISO-8859-2        495. zh_SG GB2312
  76. br_FR@euro ISO-8859-15  160. en_US.UTF-8 UTF-8              244. ga_IE.UTF-8 UTF-8              328. mhr_RU UTF-8               412. sl_SI.UTF-8 UTF-8       496. zh_SG.GBK GBK
  77. brx_IN UTF-8            161. en_ZA ISO-8859-1               245. ga_IE@euro ISO-8859-15         329. mi_NZ ISO-8859-13          413. sm_WS UTF-8             497. zh_SG.UTF-8 UTF-8
  78. bs_BA ISO-8859-2        162. en_ZA.UTF-8 UTF-8              246. gd_GB ISO-8859-15              330. mi_NZ.UTF-8 UTF-8          414. so_DJ ISO-8859-1        498. zh_TW BIG5
  79. bs_BA.UTF-8 UTF-8       163. en_ZM UTF-8                    247. gd_GB.UTF-8 UTF-8              331. miq_NI UTF-8               415. so_DJ.UTF-8 UTF-8       499. zh_TW.EUC-TW EUC-TW
  80. byn_ER UTF-8            164. en_ZW ISO-8859-1               248. gez_ER UTF-8                   332. mjw_IN UTF-8               416. so_ET UTF-8             500. zh_TW.UTF-8 UTF-8
  81. ca_AD ISO-8859-15       165. en_ZW.UTF-8 UTF-8              249. gez_ER@abegede UTF-8           333. mk_MK ISO-8859-5           417. so_KE ISO-8859-1        501. zu_ZA ISO-8859-1
  82. ca_AD.UTF-8 UTF-8       166. eo UTF-8                       250. gez_ET UTF-8                   334. mk_MK.UTF-8 UTF-8          418. so_KE.UTF-8 UTF-8       502. zu_ZA.UTF-8 UTF-8
  83. ca_ES ISO-8859-1        167. eo_US.UTF-8 UTF-8              251. gez_ET@abegede UTF-8           335. ml_IN UTF-8                419. so_SO ISO-8859-1
[More] 

  84. ca_ES.UTF-8 UTF-8       168. es_AR ISO-8859-1               252. gl_ES ISO-8859-1               336. mn_MN UTF-8                420. so_SO.UTF-8 UTF-8

(Enter the items or ranges you want to select, separated by spaces.)

Locales to be generated: 

Many packages in Debian use locales to display text in the correct language for the user. You can choose a default locale for the system from the generated locales.

This will select the default language for the entire system. If this system is a multi-user system where not all users are able to speak the default language, they will experience difficulties.

  1. None  2. C.UTF-8  3.   4. ko_KR.UTF-8  5. ko_KR.EUC-KR
Default locale for the system environment: 5

Generating locales (this might take a while)...
  ko_KR.EUC-KR... done
  ko_KR.UTF-8... done
Generation complete.
root@b74821646a14:/home/nkjok/var/lib/u2204_java# vi /etc/environment
root@b74821646a14:/home/nkjok/var/lib/u2204_java# 
root@b74821646a14:/home/nkjok/var/lib/u2204_java# 
root@b74821646a14:/home/nkjok/var/lib/u2204_java# vi /etc/profile
root@b74821646a14:/home/nkjok/var/lib/u2204_java# 
root@b74821646a14:/home/nkjok/var/lib/u2204_java# 
root@b74821646a14:/home/nkjok/var/lib/u2204_java# 
root@b74821646a14:/home/nkjok/var/lib/u2204_java# source /etc/profile
root@b74821646a14:/home/nkjok/var/lib/u2204_java# 
root@b74821646a14:/home/nkjok/var/lib/u2204_java# 
root@b74821646a14:/home/nkjok/var/lib/u2204_java# 
root@b74821646a14:/home/nkjok/var/lib/u2204_java# ^C

root@b74821646a14:/home/nkjok/var/lib/u2204_java#  cd /home/nkjok/var/lib/u2204_java ; /usr/bin/env /usr/lib/jvm/java-17-amazon-corretto/bin/java -agentlib:jdwp=transport=dt_socket,server=n,suspend=y,address=localhost:44087 -XX:+ShowCodeDetailsInExceptionMessages -cp /root/.vscode-server/data/User/workspaceStorage/f9b4ef33dc6f41286343b53b35c5a9a3/redhat.java/jdt_ws/u2204_java_73517661/bin nadocoding.chap_10._04_FunctionalInterface 
2 달러 = 2800 원
반응형

[Java] 자바 synchronized (멀티스레드/동기화)

Posted by nkjok
2025. 3. 22. 20:45 낙서장[1]/91. Java
반응형

자바에서 synchronized 키워드는 멀티스레드 환경에서 동기화를 위해 사용되는 중요한 기능입니다. 이 포스팅에서는 synchronized의 개념, 사용 방법, 장단점, 그리고 예시를 통해 상세하게 설명하겠습니다.

1. synchronized의 개념

동기화란?

동기화는 여러 스레드가 동시에 접근할 수 있는 공유 자원에 대해 한 번에 하나의 스레드만 접근할 수 있도록 제어하는 것을 의미합니다. 이를 통해 데이터의 일관성을 유지하고, 경쟁 상태(race condition)를 방지할 수 있습니다.

synchronized 키워드

자바에서 synchronized 키워드는 메서드나 코드 블록 앞에 사용되어 해당 영역을 임계 영역(critical section)으로 지정합니다. 임계 영역은 한 번에 하나의 스레드만 접근할 수 있는 코드 영역을 의미합니다.

2. synchronized의 사용 방법

메서드 동기화

메서드 선언부에 synchronized 키워드를 붙여서 해당 메서드가 한 번에 하나의 스레드만 접근할 수 있도록 합니다.

public synchronized void method() {
    // 임계 영역
}

블록 동기화

특정 코드 블록을 동기화할 수 있습니다. 이 경우, synchronized 블록 내의 코드만 동기화됩니다.

public void method() {
    synchronized(this) {
        // 임계 영역
    }
}

정적 메서드 동기화

정적 메서드에 synchronized 키워드를 붙이면 클래스 레벨에서 동기화가 이루어집니다.

public static synchronized void staticMethod() {
    // 임계 영역
}

정적 블록 동기화

정적 블록을 동기화할 때는 클래스 객체를 사용합니다.

public static void staticMethod() {
    synchronized(MyClass.class) {
        // 임계 영역
    }
}

3. synchronized의 동작 원리

모니터 락(Monitor Lock)

synchronized 키워드는 객체의 모니터 락을 사용합니다. 스레드가 synchronized 메서드나 블록에 진입하면 해당 객체의 모니터 락을 획득하고, 메서드나 블록을 빠져나올 때 락을 해제합니다

예시

public class Counter {
    private int count = 0;

    public synchronized void increment() {
        count++;
    }

    public synchronized int getCount() {
        return count;
    }
}

위 예시에서 increment와 getCount 메서드는 동기화되어 있어, 여러 스레드가 동시에 접근하더라도 count 변수의 일관성이 유지됩니다.

4. synchronized의 장단점

장점

  1. 데이터 일관성 유지: 여러 스레드가 동시에 접근할 때 데이터의 일관성을 유지할 수 있습니다.
  2. 간단한 사용법: synchronized 키워드를 사용하여 쉽게 동기화를 구현할 수 있습니다.

단점

  1. 성능 저하: 동기화로 인해 스레드가 대기 상태에 들어가면 성능이 저하될 수 있습니다.
  2. 교착 상태(Deadlock): 잘못된 동기화로 인해 교착 상태가 발생할 수 있습니다.
  3. 무한 대기(Blocked 상태): 스레드가 락을 획득하지 못할 경우 무한 대기 상태에 빠질 수 있습니다

5. 고급 예시

생산자-소비자 문제

생산자-소비자 문제는 멀티스레드 환경에서 자주 등장하는 문제로, synchronized를 사용하여 해결할 수 있습니다.

import java.util.LinkedList;
import java.util.Queue;

public class ProducerConsumer {
    private final Queue<Integer> queue = new LinkedList<>();
    private final int MAX_SIZE = 5;

    public void produce() throws InterruptedException {
        int value = 0;
        while (true) {
            synchronized (this) {
                while (queue.size() == MAX_SIZE) {
                    wait();
                }
                queue.add(value);
                System.out.println("Produced: " + value);
                value++;
                notify();
                Thread.sleep(1000);
            }
        }
    }

    public void consume() throws InterruptedException {
        while (true) {
            synchronized (this) {
                while (queue.isEmpty()) {
                    wait();
                }
                int value = queue.poll();
                System.out.println("Consumed: " + value);
                notify();
                   }

    public static void main(String[] args) {
        ProducerConsumer pc = new ProducerConsumer();
        Thread producerThread = new Thread(() -> {
            try {
                pc.produce();
            } catch (InterruptedException e) {
                Thread.currentThread().interrupt();
            }
        });

        Thread consumerThread = new Thread(() -> {
            try {
                pc.consume();
            } catch (InterruptedException e) {
                Thread.currentThread().interrupt();
            }
        });

        producerThread.start();
        consumerThread.start();
    }
}

위 예시에서 produce와 consume 메서드는 synchronized 블록을 사용하여 동기화됩니다. wait와 notify 메서드를 사용하여 생산자와 소비자 스레드 간의 협력을 구현합니다.

synchronized 키워드는 자바에서 멀티스레드 환경에서 동기화를 구현하는 데 매우 유용한 도구입니다. 이를 통해 데이터의 일관성을 유지하고, 경쟁 상태를 방지할 수 있습니다. 그러나 성능 저하와 교착 상태와 같은 단점도 있으므로, 상황에 맞게 적절히 사용해야 합니다.

반응형

[Docker] 도커 파일복사 및 확인

Posted by nkjok
2025. 2. 18. 13:51 낙서장[1]/4. Docker
반응형

도커 컨테이너와 로컬 시스템 간에 파일을 복사하고, 복사된 파일을 검증하는 과정은 도커를 활용하는 데 있어 중요한 부분입니다. 이번 포스팅에서는 docker cp 명령어를 사용하여 파일을 복사하고 검증하는 방법을 소개하겠습니다.

로컬 시스템에서 컨테이너로 파일 복사 및 확인

먼저, 로컬 시스템에 있는 파일을 도커 컨테이너로 복사한 후, 해당 파일이 제대로 복사되었는지 검증하는 방법을 알아보겠습니다.

  1. 로컬 시스템에서 컨테이너로 파일 복사:
    • /home/ubuntu/index.html: 로컬 시스템에 있는 복사할 파일의 경로입니다.
    • nginx-server:/usr/share/nginx/html/index.html: 파일을 복사할 도커 컨테이너와 대상 경로입니다. 
      docker cp /home/ubuntu/index.html nginx-server:/usr/share/nginx/html/index.html
      
  2. 컨테이너 내부의 파일 내용 확인:
    • cat /usr/share/nginx/html/index.html: 컨테이너 내부에서 파일 내용을 출력하여 복사된 파일을 검증합니다.
      docker exec -it nginx-server cat /usr/share/nginx/html/index.html
      

컨테이너에서 로컬 시스템으로 파일 복사 및 확인

다음으로, 도커 컨테이너에 있는 파일을 로컬 시스템으로 복사한 후, 해당 파일이 제대로 복사되었는지 검증하는 방법을 알아보겠습니다.

  1. 컨테이너에서 로컬 시스템으로 파일 복사:
    • nginx-server:/usr/share/nginx/html/index.html: 도커 컨테이너에 있는 복사할 파일의 경로입니다.
    • /home/ubuntu/indextest.html: 파일을 복사할 로컬 시스템의 대상 경로입니다.
      docker cp nginx-server:/usr/share/nginx/html/index.html /home/ubuntu/indextest.html
      
  2. 로컬 시스템에서 파일 목록 확인:
    • ls -l /home/ubuntu/indextest.html: 로컬 시스템에서 파일 목록을 확인하여 복사된 파일을 검증합니다.
      ls -l /home/ubuntu/indextest.html
      

 

docker cp 명령어를 사용하여 도커 컨테이너와 로컬 시스템 간에 파일을 복사하고, docker exec 명령어를 통해 컨테이너 내부의 파일을 검증하거나, ls -l 명령어를 통해 로컬 시스템의 파일을 검증할 수 있습니다. 이를 통해 컨테이너와 로컬 시스템 간의 파일 전송 및 확인 작업을 원활하게 수행할 수 있습니다.

반응형

[Docker] docker inspect 명령어 출력 정보

Posted by nkjok
2025. 2. 18. 13:47 낙서장[1]/4. Docker
반응형

inspect 출력 정보 중 일부

양식: docker inspect [컨테이너 NAMES]

예시: docker inspect nginx-server 

 

  • Id: 컨테이너의 고유 ID입니다.
  • Created: 컨테이너가 생성된 시간입니다.
  • Path: 컨테이너가 시작될 때 실행되는 명령어의 경로입니다.
  • Args: 컨테이너 시작 시 전달된 인수 목록입니다.

State 상태

  • Status: 현재 컨테이너의 상태입니다 (running, exited 등).
  • Running: 컨테이너가 실행 중인지를 나타냅니다 (true/false).
  • Paused: 컨테이너가 일시 중지 상태인지를 나타냅니다 (true/false).
  • Restarting: 컨테이너가 재시작 중인지를 나타냅니다 (true/false).
  • OOMKilled: Out Of Memory(OOM) 상태로 종료되었는지를 나타냅니다 (true/false).
  • Dead: 컨테이너가 죽었는지를 나타냅니다 (true/false).
  • Pid: 컨테이너의 프로세스 ID입니다.
  • ExitCode: 컨테이너가 종료된 코드입니다.
  • Error: 컨테이너가 종료될 때 발생한 에러 메시지입니다.
  • StartedAt: 컨테이너가 시작된 시간입니다.
  • FinishedAt: 컨테이너가 종료된 시간입니다.

HostConfig 설정

  • Binds: 호스트와 컨테이너 간의 바인딩된 볼륨 목록입니다.
  • ContainerIDFile: 컨테이너 ID가 저장된 파일입니다.
  • LogConfig: 컨테이너의 로그 구성입니다.
  • NetworkMode: 컨테이너의 네트워크 모드입니다.
  • PortBindings: 호스트와 컨테이너 간의 포트 바인딩 설정입니다.
  • RestartPolicy: 컨테이너의 재시작 정책입니다.
  • AutoRemove: 컨테이너가 종료될 때 자동으로 제거되는지를 나타냅니다.
  • VolumeDriver: 볼륨 드라이버 설정입니다.
  • ConsoleSize: 컨테이너의 콘솔 사이즈입니다.
  • CapAdd: 추가된 커널 기능 목록입니다.
  • CapDrop: 제거된 커널 기능 목록입니다.
  • CgroupnsMode: cgroup 네임스페이스 모드입니다.
  • Dns: 컨테이너의 DNS 설정입니다.
  • DnsOptions: 컨테이너의 DNS 옵션입니다.
  • DnsSearch: 컨테이너의 DNS 검색 도메인입니다.
  • ExtraHosts: 컨테이너의 추가 호스트 목록입니다.
  • GroupAdd: 컨테이너에 추가된 그룹 목록입니다.
  • IpcMode: 컨테이너의 IPC 모드입니다.
  • Cgroup: 컨테이너의 cgroup 설정입니다.
  • Links: 컨테이너 간 링크 목록입니다.
  • OomScoreAdj: OOM killer의 점수 조정 값입니다.
  • PidMode: 컨테이너의 PID 네임스페이스 모드입니다.
  • Privileged: 컨테이너가 특권 모드인지 나타냅니다 (true/false).
  • PublishAllPorts: 컨테이너의 모든 포트를 호스트에 노출할지 여부를 나타냅니다.
  • ReadonlyRootfs: 컨테이너의 루트 파일 시스템을 읽기 전용으로 설정합니다.
  • SecurityOpt: 컨테이너의 보안 옵션입니다.
  • UTSMode: 컨테이너의 UTS 네임스페이스 모드입니다.
  • UsernsMode: 컨테이너의 사용자 네임스페이스 모드입니다.
  • ShmSize: 컨테이너의 공유 메모리 크기입니다.
  • Runtime: 컨테이너의 런타임입니다.
  • Isolation: 컨테이너의 격리 수준입니다.
  • CpuShares: CPU 공유 설정입니다.
  • Memory: 메모리 설정입니다.
  • NanoCpus: 나노 CPU 설정입니다.
  • CgroupParent: 컨테이너의 cgroup 부모입니다.
  • BlkioWeight: 블록 IO 가중치 설정입니다.
  • BlkioWeightDevice: 블록 IO 가중치 장치 목록입니다.
  • BlkioDeviceReadBps: 읽기 Bps 제한이 설정된 블록 IO 장치 목록입니다.
  • BlkioDeviceWriteBps: 쓰기 Bps 제한이 설정된 블록 IO 장치 목록입니다.
  • BlkioDeviceReadIOps: 읽기 IOP 제한이 설정된 블록 IO 장치 목록입니다.
  • BlkioDeviceWriteIOps: 쓰기 IOP 제한이 설정된 블록 IO 장치 목록입니다.
  • CpuPeriod: CPU 주기 설정입니다.
  • CpuQuota: CPU 할당량 설정입니다.
  • CpuRealtimePeriod: 실시간 CPU 주기 설정입니다.
  • CpuRealtimeRuntime: 실시간 CPU 런타임 설정입니다.
  • CpusetCpus: CPU 집합 설정입니다.
  • CpusetMems: 메모리 집합 설정입니다.
  • Devices: 장치 목록입니다.
  • DeviceCgroupRules: 장치 cgroup 규칙입니다.
  • DeviceRequests: 장치 요청 목록입니다.
  • MemoryReservation: 메모리 예약 설정입니다.
  • MemorySwap: 메모리 스왑 설정입니다.
  • MemorySwappiness: 메모리 스와피니스 설정입니다.
  • OomKillDisable: OOM killer 비활성화 여부를 나타냅니다.
  • PidsLimit: PID 제한 설정입니다.
  • Ulimits: ulimit 설정 목록입니다.
  • CpuCount: CPU 개수 설정입니다.
  • CpuPercent: CPU 백분율 설정입니다.
  • IOMaximumIOps: 최대 IOps 설정입니다.
  • IOMaximumBandwidth: 최대 대역폭 설정입니다.
  • MaskedPaths: 마스킹된 경로 목록입니다.
  • ReadonlyPaths: 읽기 전용 경로 목록입니다.

GraphDriver 그래프 드라이버

  • Data: 그래프 드라이버 데이터입니다.
    • LowerDir: 하위 디렉터리 목록입니다.
    • MergedDir: 병합된 디렉터리 경로입니다.
    • UpperDir: 상위 디렉터리 경로입니다.
    • WorkDir: 작업 디렉터리 경로입니다.

NetworkSettings 네트워크 설정

  • Bridge: 브리지 네트워크 설정입니다.
  • SandboxID: 샌드박스 ID입니다.
  • SandboxKey: 샌드박스 키 경로입니다.
  • Ports: 포트 설정입니다.
    • HostIp: 호스트 IP입니다.
    • HostPort: 호스트 포트입니다.
  • HairpinMode: 헤어핀 모드 여부입니다.
  • LinkLocalIPv6Address: 링크 로컬 IPv6 주소입니다.
  • LinkLocalIPv6PrefixLen: 링크 로컬 IPv6 접두사 길이입니다.
  • SecondaryIPAddresses: 보조 IP 주소 목록입니다.
  • SecondaryIPv6Addresses: 보조 IPv6 주소 목록입니다.
  • EndpointID: 엔드포인트 ID입니다.
  • Gateway: 게이트웨이 주소입니다.
  • GlobalIPv6Address: 글로벌 IPv6 주소입니다.
  • GlobalIPv6PrefixLen: 글로벌 IPv6 접두사 길이입니다.
  • IPAddress: IP 주소입니다.
  • IPPrefixLen: IP 접두사 길이입니다.
  • IPv6Gateway: IPv6 게이트웨이 주소입니다.
  • MacAddress: MAC 주소입니다.
  • Networks: 네트워크 설정 목록입니다.
반응형