/usr/share/debian-reference/ch02.zh-tw.html is in debian-reference-zh-tw 2.72.
This file is owned by root:root, with mode 0o644.
The actual contents of the file can be viewed below.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 320 321 322 323 324 325 326 327 328 329 330 331 332 333 334 335 336 337 338 339 340 341 342 343 344 345 346 347 348 349 350 351 352 353 354 355 356 357 358 359 360 361 362 363 364 365 366 367 368 369 370 371 372 373 374 375 376 377 378 379 380 381 382 383 384 385 386 387 388 389 390 391 392 393 394 395 396 397 398 399 400 401 402 403 404 405 406 407 408 409 410 411 412 413 414 415 416 417 418 419 420 421 422 423 424 425 426 427 428 429 430 431 432 433 434 435 436 437 438 439 440 441 442 443 444 445 446 447 448 449 450 451 452 453 454 455 456 457 458 459 460 461 462 463 464 465 466 467 468 469 470 471 472 473 474 475 476 477 478 479 480 481 482 483 484 485 486 487 488 489 490 491 492 493 494 495 496 497 498 499 500 501 502 503 504 505 506 507 508 509 510 511 512 513 514 515 516 517 518 519 520 521 522 523 524 525 526 527 528 529 530 531 532 533 534 535 536 537 538 539 540 541 542 543 544 545 546 547 548 549 550 551 552 553 554 555 556 557 558 559 560 561 562 563 564 565 566 567 568 569 570 571 572 573 574 575 576 577 578 579 580 581 582 583 584 585 586 587 588 589 590 591 592 593 594 595 596 597 598 599 600 601 602 603 604 605 606 607 608 609 610 611 612 613 614 615 616 617 618 619 620 621 622 623 624 625 626 627 628 629 630 631 632 633 634 635 636 637 638 639 640 641 642 643 644 645 646 647 648 649 650 651 652 653 654 655 656 657 658 659 660 661 662 663 664 665 666 667 668 669 670 671 672 673 674 675 676 677 678 679 680 681 682 683 684 685 686 687 688 689 690 691 692 693 694 695 696 697 698 699 700 701 702 703 704 705 706 707 708 709 710 711 712 713 714 715 716 717 718 719 720 721 722 723 724 725 726 727 728 729 730 731 732 733 734 735 736 737 738 739 740 741 742 743 744 745 746 747 748 749 750 751 752 753 754 755 756 757 758 759 760 761 762 763 764 765 766 767 768 769 770 771 772 773 774 775 776 777 778 779 780 781 782 783 784 785 786 787 788 789 790 791 792 793 794 795 796 797 798 799 800 801 802 803 804 805 806 807 808 809 810 811 812 813 814 815 816 817 818 819 820 821 822 823 824 825 826 827 828 829 830 831 832 833 834 835 836 837 838 839 840 841 842 843 844 845 846 847 848 849 850 851 852 853 854 855 856 857 858 859 860 861 862 863 864 865 866 867 868 869 870 871 872 873 874 875 876 877 878 879 880 881 882 883 884 885 886 887 888 889 890 891 892 893 894 895 896 897 898 899 900 901 902 903 904 905 906 907 908 909 910 911 912 913 914 915 916 917 918 919 920 921 922 923 924 925 926 927 928 929 930 931 932 933 934 935 936 937 938 939 940 941 942 943 944 945 946 947 948 949 950 951 952 953 954 955 956 957 958 959 960 961 962 963 964 965 966 967 968 969 970 971 972 973 974 975 976 977 978 979 980 981 982 983 984 985 986 987 988 989 990 991 992 993 994 995 996 997 998 999 1000 1001 1002 1003 1004 1005 1006 1007 1008 1009 1010 1011 1012 1013 1014 1015 1016 1017 1018 1019 1020 1021 1022 1023 1024 1025 1026 1027 1028 1029 1030 1031 1032 1033 1034 1035 1036 1037 1038 1039 1040 1041 1042 1043 1044 1045 1046 1047 1048 1049 1050 1051 1052 1053 1054 1055 1056 1057 1058 1059 1060 1061 1062 1063 1064 1065 1066 1067 1068 1069 1070 1071 1072 1073 1074 1075 1076 1077 1078 1079 1080 1081 1082 1083 1084 1085 1086 1087 1088 1089 1090 1091 1092 1093 1094 1095 1096 1097 1098 1099 1100 1101 1102 1103 1104 1105 1106 1107 1108 1109 1110 1111 1112 1113 1114 1115 1116 1117 1118 1119 1120 1121 1122 1123 1124 1125 1126 1127 1128 1129 1130 1131 1132 1133 1134 1135 1136 1137 1138 1139 1140 1141 1142 1143 1144 1145 1146 1147 1148 1149 1150 1151 1152 1153 1154 1155 1156 1157 1158 1159 1160 1161 1162 1163 1164 1165 1166 1167 1168 1169 1170 1171 1172 1173 1174 1175 1176 1177 1178 1179 1180 1181 1182 1183 1184 1185 1186 1187 1188 1189 1190 1191 1192 1193 1194 1195 1196 1197 1198 1199 1200 1201 1202 1203 1204 1205 1206 1207 1208 1209 1210 1211 1212 1213 1214 1215 1216 1217 1218 1219 1220 1221 1222 1223 1224 1225 1226 1227 1228 1229 1230 1231 1232 1233 1234 1235 1236 1237 1238 1239 1240 1241 1242 1243 1244 1245 1246 1247 1248 1249 1250 1251 1252 1253 1254 1255 1256 1257 1258 1259 1260 1261 1262 1263 1264 1265 1266 1267 1268 1269 1270 1271 1272 1273 1274 1275 1276 1277 1278 1279 1280 1281 1282 1283 1284 1285 1286 1287 1288 1289 1290 1291 1292 1293 1294 1295 1296 1297 1298 1299 1300 1301 1302 1303 1304 1305 1306 1307 1308 1309 1310 1311 1312 1313 1314 1315 1316 1317 1318 1319 1320 1321 1322 1323 1324 1325 1326 1327 1328 1329 1330 1331 1332 1333 1334 1335 1336 1337 1338 1339 1340 1341 1342 1343 1344 1345 1346 1347 1348 1349 1350 1351 1352 1353 1354 1355 1356 1357 1358 1359 1360 1361 1362 1363 1364 1365 1366 1367 1368 1369 1370 1371 1372 1373 1374 1375 1376 1377 1378 1379 1380 1381 1382 1383 1384 1385 1386 1387 1388 1389 1390 1391 1392 1393 1394 1395 1396 1397 1398 1399 1400 1401 1402 1403 1404 1405 1406 1407 1408 1409 1410 1411 1412 1413 1414 1415 1416 1417 1418 1419 1420 1421 1422 1423 1424 1425 1426 1427 1428 1429 1430 1431 1432 1433 1434 1435 1436 1437 1438 1439 1440 1441 1442 1443 1444 1445 1446 1447 1448 1449 1450 1451 1452 1453 1454 1455 1456 1457 1458 1459 1460 1461 1462 1463 1464 1465 1466 1467 1468 1469 1470 1471 1472 1473 1474 1475 1476 1477 1478 1479 1480 1481 1482 1483 1484 1485 1486 1487 1488 1489 1490 1491 1492 1493 1494 1495 1496 1497 1498 1499 1500 1501 1502 1503 1504 1505 1506 1507 1508 1509 1510 1511 1512 1513 1514 1515 1516 1517 1518 1519 1520 1521 1522 1523 1524 1525 1526 1527 1528 1529 1530 1531 1532 1533 1534 1535 1536 1537 1538 1539 1540 1541 1542 1543 1544 1545 1546 1547 1548 1549 1550 1551 1552 1553 1554 1555 1556 1557 1558 1559 1560 1561 1562 1563 1564 1565 1566 1567 1568 1569 1570 1571 1572 1573 1574 1575 1576 1577 1578 1579 1580 1581 1582 1583 1584 1585 1586 1587 1588 1589 1590 1591 1592 1593 1594 1595 1596 1597 1598 1599 1600 1601 1602 1603 1604 1605 1606 1607 1608 1609 1610 1611 1612 1613 1614 1615 1616 1617 1618 1619 1620 1621 1622 1623 1624 1625 1626 1627 1628 1629 1630 1631 1632 1633 1634 1635 1636 1637 1638 1639 1640 1641 1642 1643 1644 1645 1646 1647 1648 1649 1650 1651 1652 1653 1654 1655 1656 1657 1658 1659 1660 1661 1662 1663 1664 1665 1666 1667 1668 1669 1670 1671 1672 1673 1674 1675 1676 1677 1678 1679 1680 1681 1682 1683 1684 1685 1686 1687 1688 1689 1690 1691 1692 1693 1694 1695 1696 1697 1698 1699 1700 1701 1702 1703 1704 1705 1706 1707 1708 1709 1710 1711 1712 1713 1714 1715 1716 1717 1718 1719 1720 1721 1722 1723 1724 1725 1726 1727 1728 1729 1730 1731 1732 1733 1734 1735 1736 1737 1738 1739 1740 1741 1742 1743 1744 1745 1746 1747 1748 1749 1750 1751 1752 1753 1754 1755 1756 1757 1758 1759 1760 1761 1762 1763 1764 1765 1766 1767 1768 1769 1770 1771 1772 1773 1774 1775 1776 1777 1778 1779 1780 1781 1782 1783 1784 1785 1786 1787 1788 1789 1790 1791 1792 1793 1794 1795 1796 1797 1798 1799 1800 1801 1802 1803 1804 1805 1806 1807 1808 1809 1810 1811 1812 1813 1814 1815 1816 1817 1818 1819 1820 1821 1822 1823 1824 1825 1826 1827 1828 1829 1830 1831 1832 1833 1834 1835 1836 1837 1838 1839 1840 1841 1842 1843 1844 1845 1846 1847 1848 1849 1850 1851 1852 1853 1854 1855 1856 1857 1858 1859 1860 1861 1862 1863 1864 1865 1866 1867 1868 1869 1870 1871 1872 1873 1874 1875 1876 1877 1878 1879 1880 1881 1882 1883 1884 1885 1886 1887 1888 1889 1890 1891 1892 1893 1894 1895 1896 1897 1898 1899 1900 1901 1902 1903 1904 1905 1906 1907 1908 1909 1910 1911 1912 1913 1914 1915 1916 1917 1918 1919 1920 1921 1922 1923 1924 1925 1926 1927 1928 1929 1930 1931 1932 1933 1934 1935 1936 1937 1938 1939 1940 1941 1942 1943 1944 1945 1946 1947 1948 1949 1950 1951 1952 1953 1954 1955 1956 1957 1958 1959 1960 1961 1962 1963 1964 1965 1966 1967 1968 1969 1970 1971 1972 1973 1974 1975 1976 1977 1978 1979 1980 1981 1982 1983 1984 1985 1986 1987 1988 1989 1990 1991 1992 1993 1994 1995 1996 1997 1998 1999 2000 2001 2002 2003 2004 2005 2006 2007 2008 2009 2010 2011 2012 2013 2014 2015 2016 2017 2018 2019 2020 2021 2022 2023 2024 2025 2026 2027 2028 2029 2030 2031 2032 2033 2034 2035 2036 2037 2038 2039 2040 2041 2042 2043 2044 2045 2046 2047 2048 2049 2050 2051 2052 2053 2054 2055 2056 2057 2058 2059 2060 2061 2062 2063 2064 2065 2066 2067 2068 2069 2070 2071 2072 2073 2074 2075 2076 2077 2078 2079 2080 2081 2082 2083 2084 2085 2086 2087 2088 2089 2090 2091 2092 2093 2094 2095 2096 2097 2098 2099 2100 2101 2102 2103 2104 2105 2106 2107 2108 2109 2110 2111 2112 2113 2114 2115 2116 2117 2118 2119 2120 2121 2122 2123 2124 2125 2126 2127 2128 2129 2130 2131 2132 2133 2134 2135 2136 2137 2138 2139 2140 2141 2142 2143 2144 2145 2146 2147 2148 2149 2150 2151 2152 2153 2154 2155 2156 2157 2158 2159 2160 2161 2162 2163 2164 2165 2166 2167 2168 2169 2170 2171 2172 2173 2174 2175 2176 2177 2178 2179 2180 2181 2182 2183 2184 2185 2186 2187 2188 2189 2190 2191 2192 2193 2194 2195 2196 2197 2198 2199 2200 2201 2202 2203 2204 2205 2206 2207 2208 2209 2210 2211 2212 2213 2214 2215 2216 2217 2218 2219 2220 2221 2222 2223 2224 2225 2226 2227 2228 2229 2230 2231 2232 2233 2234 2235 2236 2237 2238 2239 2240 2241 2242 2243 2244 2245 2246 2247 2248 2249 2250 2251 2252 2253 2254 2255 2256 2257 2258 2259 2260 2261 2262 2263 2264 2265 2266 2267 2268 2269 2270 2271 2272 2273 2274 2275 2276 2277 2278 2279 2280 2281 2282 2283 2284 2285 2286 2287 2288 2289 2290 2291 2292 2293 2294 2295 2296 2297 2298 2299 2300 2301 2302 2303 2304 2305 2306 2307 2308 2309 2310 2311 2312 2313 2314 2315 2316 2317 2318 2319 2320 2321 2322 2323 2324 2325 2326 2327 2328 2329 2330 2331 2332 2333 2334 2335 2336 2337 2338 2339 2340 2341 2342 2343 2344 2345 2346 2347 2348 2349 2350 2351 2352 2353 2354 2355 2356 2357 2358 2359 2360 2361 2362 2363 2364 2365 2366 2367 2368 2369 2370 2371 2372 2373 2374 2375 2376 2377 2378 2379 2380 2381 2382 2383 2384 2385 2386 2387 2388 2389 2390 2391 2392 2393 2394 2395 2396 2397 2398 2399 2400 2401 2402 2403 2404 2405 2406 2407 2408 2409 2410 2411 2412 2413 2414 2415 2416 2417 2418 2419 2420 2421 2422 2423 2424 2425 2426 2427 2428 2429 2430 2431 2432 2433 2434 2435 2436 2437 2438 2439 2440 2441 2442 2443 2444 2445 2446 2447 2448 2449 2450 2451 2452 2453 2454 2455 2456 2457 2458 2459 2460 2461 2462 2463 2464 2465 2466 2467 2468 2469 2470 2471 2472 2473 2474 2475 2476 2477 2478 2479 2480 2481 2482 2483 2484 2485 2486 2487 2488 2489 2490 2491 2492 2493 2494 2495 2496 2497 2498 2499 2500 2501 2502 2503 2504 2505 2506 2507 2508 2509 2510 2511 2512 2513 2514 2515 2516 2517 2518 2519 2520 2521 2522 2523 2524 2525 2526 2527 2528 2529 2530 2531 2532 2533 2534 2535 2536 2537 2538 2539 2540 2541 2542 2543 2544 2545 2546 2547 2548 2549 2550 2551 2552 2553 2554 2555 2556 2557 2558 2559 2560 2561 2562 2563 2564 2565 2566 2567 2568 2569 2570 2571 2572 2573 2574 2575 2576 2577 2578 2579 2580 2581 2582 2583 2584 2585 2586 2587 2588 2589 2590 2591 2592 2593 2594 2595 2596 2597 2598 2599 2600 2601 2602 2603 2604 2605 2606 2607 2608 2609 2610 2611 2612 2613 2614 2615 2616 2617 2618 2619 2620 2621 2622 2623 2624 2625 2626 2627 2628 2629 2630 2631 2632 2633 2634 2635 2636 2637 2638 2639 2640 2641 2642 2643 2644 2645 2646 2647 2648 2649 2650 2651 2652 2653 2654 2655 2656 2657 2658 2659 2660 2661 2662 2663 2664 2665 2666 2667 2668 2669 2670 2671 2672 2673 2674 2675 2676 2677 2678 2679 2680 2681 2682 2683 2684 2685 2686 2687 2688 2689 2690 2691 2692 2693 2694 2695 2696 2697 2698 2699 2700 2701 2702 2703 2704 2705 2706 2707 2708 2709 2710 2711 2712 2713 2714 2715 2716 2717 2718 2719 2720 2721 2722 2723 2724 2725 2726 2727 2728 2729 2730 2731 2732 2733 2734 2735 2736 2737 2738 2739 2740 2741 2742 2743 2744 2745 2746 2747 2748 2749 2750 2751 2752 2753 2754 2755 2756 2757 2758 2759 2760 2761 2762 2763 2764 2765 2766 2767 2768 2769 2770 2771 2772 2773 2774 2775 2776 2777 2778 2779 2780 2781 2782 2783 2784 2785 2786 2787 2788 2789 2790 2791 2792 2793 2794 2795 2796 2797 2798 2799 2800 2801 2802 2803 2804 2805 2806 2807 2808 2809 2810 2811 2812 2813 2814 2815 2816 2817 2818 2819 2820 2821 2822 2823 2824 2825 2826 2827 2828 2829 2830 2831 2832 2833 2834 2835 2836 2837 2838 2839 2840 2841 2842 2843 2844 2845 2846 2847 2848 2849 2850 2851 2852 2853 2854 2855 2856 2857 2858 2859 2860 2861 2862 2863 2864 2865 2866 2867 2868 2869 2870 2871 2872 2873 2874 2875 2876 2877 2878 2879 2880 2881 2882 2883 2884 2885 2886 2887 2888 2889 2890 2891 2892 2893 2894 2895 2896 2897 2898 2899 2900 2901 2902 2903 2904 2905 2906 2907 2908 2909 2910 2911 2912 2913 2914 2915 2916 2917 2918 2919 2920 2921 2922 2923 2924 2925 2926 2927 2928 2929 2930 2931 2932 2933 2934 2935 2936 2937 2938 2939 2940 2941 2942 2943 2944 2945 2946 2947 2948 2949 2950 2951 2952 2953 2954 2955 2956 2957 2958 2959 2960 2961 2962 2963 2964 2965 2966 2967 2968 2969 2970 2971 2972 2973 2974 2975 2976 2977 2978 2979 2980 2981 2982 2983 2984 2985 2986 2987 2988 2989 2990 2991 2992 2993 2994 2995 2996 2997 2998 2999 3000 3001 3002 3003 3004 3005 3006 3007 3008 3009 3010 3011 3012 3013 3014 3015 3016 3017 3018 3019 3020 3021 3022 3023 3024 3025 3026 3027 3028 3029 3030 3031 3032 3033 3034 3035 3036 3037 3038 3039 3040 3041 3042 3043 3044 3045 3046 3047 3048 3049 3050 3051 3052 3053 3054 3055 3056 3057 3058 3059 3060 3061 3062 3063 3064 3065 3066 3067 3068 3069 3070 3071 3072 3073 3074 3075 3076 3077 3078 3079 3080 3081 3082 3083 3084 3085 3086 3087 3088 3089 3090 3091 3092 3093 3094 3095 3096 3097 3098 3099 3100 3101 3102 3103 3104 3105 3106 3107 3108 3109 3110 3111 3112 3113 3114 3115 3116 3117 3118 3119 3120 3121 3122 3123 3124 3125 3126 3127 3128 3129 3130 3131 3132 3133 3134 3135 3136 3137 3138 3139 3140 3141 3142 3143 3144 3145 3146 3147 3148 3149 3150 3151 3152 3153 3154 3155 3156 3157 3158 3159 3160 3161 3162 3163 3164 3165 3166 3167 3168 3169 3170 3171 3172 3173 3174 3175 3176 3177 3178 3179 3180 3181 3182 3183 3184 3185 3186 3187 3188 3189 3190 3191 3192 3193 3194 3195 3196 3197 3198 3199 3200 3201 3202 3203 3204 3205 3206 3207 3208 3209 3210 3211 3212 3213 3214 3215 3216 3217 3218 3219 3220 3221 3222 3223 3224 3225 3226 3227 3228 3229 3230 3231 3232 3233 3234 3235 3236 3237 3238 3239 3240 3241 3242 3243 3244 3245 3246 3247 3248 3249 3250 3251 3252 3253 3254 3255 3256 3257 3258 3259 3260 3261 3262 3263 3264 3265 3266 3267 3268 3269 3270 3271 3272 3273 3274 3275 3276 3277 3278 3279 3280 3281 3282 3283 3284 3285 3286 3287 3288 3289 3290 3291 3292 3293 3294 3295 3296 3297 3298 3299 3300 3301 3302 3303 3304 3305 3306 3307 3308 3309 3310 3311 3312 3313 3314 3315 3316 3317 3318 3319 3320 3321 3322 3323 3324 3325 3326 3327 3328 3329 3330 3331 3332 3333 3334 3335 3336 3337 3338 3339 3340 3341 3342 3343 3344 3345 3346 3347 3348 3349 3350 3351 3352 3353 3354 3355 3356 3357 3358 3359 3360 3361 3362 3363 3364 3365 3366 3367 3368 3369 3370 3371 3372 3373 3374 3375 3376 3377 3378 3379 3380 3381 3382 3383 3384 3385 3386 3387 3388 3389 3390 3391 3392 3393 3394 3395 3396 3397 3398 3399 3400 3401 3402 3403 3404 3405 3406 3407 3408 3409 3410 3411 3412 3413 3414 3415 3416 3417 3418 3419 3420 3421 3422 3423 3424 3425 3426 3427 3428 3429 3430 3431 3432 3433 3434 3435 3436 3437 3438 3439 3440 3441 3442 3443 3444 3445 3446 3447 3448 3449 3450 3451 3452 3453 3454 3455 3456 3457 3458 3459 3460 3461 3462 3463 3464 3465 3466 3467 3468 3469 3470 3471 3472 3473 3474 3475 3476 3477 3478 3479 3480 3481 3482 3483 3484 3485 3486 3487 3488 3489 3490 3491 3492 3493 3494 3495 3496 3497 3498 3499 3500 3501 3502 3503 3504 3505 3506 3507 3508 3509 3510 3511 3512 3513 3514 3515 3516 3517 3518 3519 3520 3521 3522 3523 3524 3525 3526 3527 3528 3529 3530 3531 3532 3533 3534 3535 3536 3537 3538 3539 3540 3541 3542 3543 3544 3545 3546 3547 3548 3549 3550 3551 3552 3553 3554 3555 3556 3557 3558 3559 3560 3561 3562 3563 3564 3565 3566 3567 3568 3569 3570 3571 3572 3573 3574 3575 3576 3577 3578 3579 3580 3581 3582 3583 3584 3585 3586 3587 3588 3589 3590 3591 3592 3593 3594 3595 3596 3597 3598 3599 3600 3601 3602 3603 3604 3605 3606 3607 3608 3609 3610 3611 3612 3613 3614 3615 3616 3617 3618 3619 3620 3621 3622 3623 3624 3625 3626 3627 3628 3629 3630 3631 3632 3633 3634 3635 3636 3637 3638 3639 3640 3641 3642 3643 3644 3645 3646 3647 3648 3649 3650 3651 3652 3653 3654 3655 3656 3657 3658 3659 3660 3661 3662 3663 3664 3665 3666 3667 3668 3669 3670 3671 3672 3673 3674 3675 3676 3677 3678 3679 3680 3681 3682 3683 3684 3685 3686 3687 3688 3689 3690 3691 3692 3693 3694 3695 3696 3697 3698 3699 3700 3701 3702 3703 3704 3705 3706 3707 3708 3709 3710 3711 3712 3713 3714 3715 3716 3717 3718 3719 3720 3721 3722 3723 3724 3725 3726 3727 3728 3729 3730 3731 3732 3733 3734 3735 3736 3737 3738 3739 3740 3741 3742 3743 3744 3745 3746 3747 3748 3749 3750 3751 3752 3753 3754 3755 3756 3757 3758 3759 3760 3761 3762 3763 3764 3765 3766 3767 3768 3769 3770 3771 3772 3773 3774 3775 3776 3777 3778 3779 3780 3781 3782 3783 3784 3785 3786 3787 3788 3789 3790 3791 3792 3793 3794 3795 3796 3797 3798 3799 3800 3801 3802 3803 3804 3805 3806 3807 3808 3809 3810 3811 3812 3813 3814 3815 3816 3817 3818 3819 3820 3821 3822 3823 3824 3825 3826 3827 3828 3829 3830 3831 3832 3833 3834 3835 3836 3837 3838 3839 3840 3841 3842 3843 3844 3845 3846 3847 3848 3849 3850 3851 3852 3853 3854 3855 3856 3857 3858 3859 3860 3861 3862 3863 3864 3865 3866 3867 3868 3869 3870 3871 3872 3873 3874 3875 3876 3877 3878 3879 3880 3881 3882 3883 3884 3885 3886 3887 3888 3889 3890 3891 3892 3893 3894 3895 3896 3897 3898 3899 3900 3901 3902 3903 3904 3905 3906 3907 3908 3909 3910 3911 3912 3913 3914 3915 3916 3917 3918 3919 3920 3921 3922 3923 3924 3925 3926 3927 3928 3929 3930 3931 3932 3933 3934 3935 3936 3937 3938 3939 3940 3941 3942 3943 3944 3945 3946 3947 3948 3949 3950 3951 3952 3953 3954 3955 3956 3957 3958 3959 3960 3961 3962 3963 3964 3965 3966 3967 3968 3969 3970 3971 3972 3973 3974 3975 3976 3977 3978 3979 3980 3981 3982 3983 3984 3985 3986 3987 3988 3989 3990 3991 3992 3993 3994 3995 3996 3997 3998 3999 4000 4001 4002 4003 4004 4005 4006 4007 4008 4009 4010 4011 4012 4013 4014 4015 4016 4017 4018 4019 4020 4021 4022 4023 4024 4025 4026 4027 4028 4029 4030 4031 4032 4033 4034 4035 4036 4037 4038 4039 4040 4041 4042 4043 4044 4045 4046 4047 4048 4049 4050 4051 4052 4053 4054 4055 4056 4057 4058 4059 4060 4061 4062 4063 4064 4065 4066 4067 4068 4069 4070 4071 4072 4073 4074 4075 4076 4077 4078 4079 4080 4081 4082 4083 4084 4085 4086 4087 4088 4089 4090 4091 4092 4093 4094 4095 4096 4097 4098 4099 4100 4101 4102 4103 4104 4105 4106 4107 4108 4109 4110 4111 4112 4113 4114 4115 4116 4117 4118 4119 4120 4121 4122 4123 4124 4125 4126 4127 4128 4129 4130 4131 4132 4133 4134 4135 4136 4137 4138 4139 4140 4141 4142 4143 4144 4145 4146 4147 4148 4149 4150 4151 4152 4153 4154 4155 4156 4157 4158 4159 4160 4161 4162 4163 4164 4165 4166 4167 4168 4169 4170 4171 4172 4173 4174 4175 4176 4177 4178 4179 4180 4181 4182 4183 4184 4185 4186 4187 4188 4189 4190 4191 4192 4193 4194 4195 4196 4197 4198 4199 4200 4201 4202 4203 4204 4205 4206 4207 4208 4209 4210 4211 4212 4213 4214 4215 4216 4217 4218 4219 4220 4221 4222 4223 4224 4225 4226 4227 4228 4229 4230 4231 4232 4233 4234 4235 4236 4237 4238 4239 4240 4241 4242 4243 4244 4245 4246 4247 4248 4249 4250 4251 4252 4253 4254 4255 4256 4257 4258 4259 4260 4261 4262 4263 4264 4265 4266 4267 4268 4269 4270 4271 4272 4273 4274 4275 4276 4277 4278 4279 4280 4281 4282 4283 4284 4285 4286 4287 4288 4289 4290 4291 4292 4293 4294 4295 4296 4297 4298 4299 4300 4301 4302 4303 4304 4305 4306 4307 4308 4309 4310 4311 4312 4313 4314 4315 4316 4317 4318 4319 4320 4321 4322 4323 4324 4325 4326 4327 4328 4329 4330 4331 4332 4333 4334 4335 4336 4337 4338 4339 4340 4341 4342 4343 4344 4345 4346 4347 4348 4349 4350 4351 4352 4353 4354 4355 4356 4357 4358 4359 4360 4361 4362 4363 4364 4365 4366 4367 4368 4369 4370 4371 4372 4373 4374 4375 4376 4377 4378 4379 4380 4381 4382 4383 4384 4385 4386 4387 4388 4389 4390 4391 4392 4393 4394 4395 4396 4397 4398 4399 4400 4401 4402 4403 4404 4405 4406 4407 4408 4409 4410 4411 4412 4413 4414 4415 4416 4417 4418 4419 4420 4421 4422 4423 4424 4425 4426 4427 4428 4429 4430 4431 4432 4433 4434 4435 4436 4437 4438 4439 4440 4441 4442 4443 4444 4445 4446 4447 4448 4449 4450 4451 4452 4453 4454 4455 4456 4457 4458 4459 4460 4461 4462 4463 4464 4465 4466 4467 4468 4469 4470 4471 4472 4473 4474 4475 4476 4477 4478 4479 4480 4481 4482 4483 4484 4485 4486 4487 4488 4489 4490 4491 4492 4493 4494 4495 4496 4497 4498 4499 4500 4501 4502 4503 4504 4505 4506 4507 4508 4509 4510 4511 4512 4513 4514 4515 4516 4517 4518 4519 4520 4521 4522 4523 4524 4525 4526 4527 4528 4529 4530 4531 4532 4533 4534 4535 4536 4537 4538 4539 4540 4541 4542 4543 4544 4545 4546 4547 4548 4549 4550 4551 4552 4553 4554 4555 4556 4557 4558 4559 4560 4561 4562 4563 4564 4565 4566 4567 4568 4569 4570 4571 4572 4573 4574 4575 4576 4577 4578 4579 4580 4581 4582 4583 4584 4585 4586 4587 4588 4589 4590 4591 4592 4593 4594 4595 4596 4597 4598 4599 4600 4601 4602 4603 4604 4605 4606 4607 4608 4609 4610 4611 4612 4613 4614 4615 4616 4617 4618 4619 4620 4621 4622 4623 4624 4625 4626 4627 4628 4629 4630 4631 4632 4633 4634 4635 4636 4637 4638 4639 4640 4641 4642 4643 4644 4645 4646 4647 4648 4649 4650 4651 4652 4653 4654 4655 4656 4657 4658 4659 4660 4661 4662 4663 4664 4665 4666 4667 4668 4669 4670 4671 4672 4673 4674 4675 4676 4677 4678 4679 4680 4681 4682 4683 4684 4685 4686 4687 4688 4689 4690 4691 4692 4693 4694 4695 4696 4697 4698 4699 4700 4701 4702 4703 4704 4705 4706 4707 4708 4709 4710 4711 4712 4713 4714 4715 4716 4717 4718 4719 4720 4721 4722 4723 4724 4725 4726 4727 4728 4729 4730 4731 4732 4733 4734 4735 4736 4737 4738 4739 4740 4741 4742 4743 4744 4745 4746 4747 4748 4749 4750 4751 4752 4753 4754 4755 4756 4757 4758 4759 4760 4761 4762 4763 4764 4765 4766 4767 4768 4769 4770 4771 4772 4773 4774 4775 4776 4777 4778 4779 4780 4781 4782 4783 4784 4785 4786 4787 4788 4789 4790 4791 4792 4793 4794 4795 4796 4797 4798 4799 4800 4801 4802 4803 4804 4805 4806 4807 4808 4809 4810 4811 4812 4813 4814 4815 4816 4817 4818 4819 4820 4821 4822 4823 4824 4825 4826 4827 4828 4829 4830 4831 4832 4833 4834 4835 4836 4837 4838 4839 4840 4841 4842 4843 4844 4845 4846 4847 4848 4849 4850 4851 4852 4853 4854 4855 4856 4857 4858 4859 4860 4861 4862 4863 4864 4865 4866 4867 4868 4869 4870 4871 4872 4873 4874 4875 4876 4877 4878 4879 4880 4881 4882 4883 4884 4885 4886 4887 4888 4889 4890 4891 4892 4893 4894 4895 4896 4897 4898 4899 4900 4901 4902 4903 4904 4905 4906 4907 4908 4909 4910 4911 4912 4913 4914 4915 4916 4917 4918 4919 4920 4921 4922 4923 4924 4925 4926 4927 4928 4929 4930 4931 4932 4933 4934 4935 4936 4937 4938 4939 4940 4941 4942 4943 4944 4945 4946 4947 4948 4949 4950 4951 4952 4953 4954 4955 4956 4957 4958 4959 4960 4961 4962 4963 4964 4965 4966 4967 4968 4969 4970 4971 4972 4973 4974 4975 4976 4977 4978 4979 4980 4981 4982 4983 4984 4985 4986 4987 4988 4989 4990 4991 4992 4993 4994 4995 4996 4997 4998 4999 5000 5001 5002 5003 5004 5005 5006 5007 5008 5009 5010 5011 5012 5013 5014 5015 5016 5017 5018 5019 5020 5021 5022 5023 5024 5025 5026 5027 5028 5029 5030 5031 5032 5033 5034 5035 5036 5037 5038 5039 5040 5041 5042 5043 5044 5045 5046 5047 5048 5049 5050 5051 5052 5053 5054 5055 5056 5057 5058 5059 5060 5061 5062 5063 5064 5065 5066 5067 5068 5069 5070 5071 5072 5073 5074 5075 5076 5077 5078 5079 5080 5081 5082 5083 5084 5085 5086 5087 5088 5089 5090 5091 5092 5093 5094 5095 5096 5097 5098 5099 5100 5101 5102 5103 5104 5105 5106 5107 5108 5109 5110 5111 5112 5113 5114 5115 5116 5117 5118 5119 5120 5121 5122 5123 5124 5125 5126 5127 5128 5129 5130 5131 5132 5133 5134 5135 5136 5137 5138 5139 5140 5141 5142 5143 5144 5145 5146 5147 5148 5149 5150 5151 5152 5153 5154 5155 5156 5157 5158 5159 5160 5161 5162 5163 5164 5165 5166 5167 5168 5169 5170 5171 5172 5173 5174 5175 5176 5177 5178 5179 5180 5181 5182 5183 5184 5185 5186 5187 5188 5189 5190 5191 5192 5193 5194 5195 5196 5197 5198 5199 5200 5201 5202 5203 5204 5205 5206 5207 5208 5209 5210 5211 5212 5213 5214 5215 5216 5217 5218 5219 5220 5221 5222 5223 5224 5225 5226 5227 5228 5229 5230 5231 5232 5233 5234 5235 5236 5237 5238 5239 5240 5241 5242 5243 5244 5245 5246 5247 5248 5249 5250 5251 5252 5253 5254 5255 5256 5257 5258 5259 5260 5261 5262 5263 5264 5265 5266 5267 5268 5269 5270 5271 5272 5273 5274 5275 5276 5277 5278 5279 5280 5281 5282 5283 5284 5285 5286 5287 5288 5289 5290 5291 5292 5293 5294 5295 5296 5297 5298 5299 5300 5301 5302 5303 5304 5305 5306 5307 5308 5309 5310 5311 5312 5313 5314 5315 5316 5317 5318 5319 5320 5321 5322 5323 5324 5325 5326 5327 5328 5329 5330 5331 5332 5333 5334 5335 5336 5337 5338 5339 5340 5341 5342 5343 5344 5345 5346 5347 5348 5349 5350 5351 5352 5353 5354 5355 5356 5357 5358 5359 5360 5361 5362 5363 5364 5365 5366 5367 5368 5369 5370 5371 5372 5373 5374 5375 5376 5377 5378 5379 5380 5381 5382 5383 5384 5385 5386 5387 5388 5389 5390 5391 5392 5393 5394 5395 5396 5397 5398 5399 5400 5401 5402 5403 5404 5405 5406 5407 5408 5409 5410 5411 5412 5413 5414 5415 5416 5417 5418 5419 5420 5421 5422 5423 5424 5425 5426 5427 5428 5429 5430 5431 5432 5433 5434 5435 5436 5437 5438 5439 5440 5441 5442 5443 5444 5445 5446 5447 5448 5449 5450 5451 5452 5453 5454 5455 5456 5457 5458 5459 5460 5461 5462 5463 5464 5465 5466 5467 5468 5469 5470 5471 5472 5473 5474 5475 5476 5477 5478 5479 5480 5481 5482 5483 5484 5485 5486 5487 5488 5489 5490 5491 5492 5493 5494 5495 5496 5497 5498 5499 5500 5501 5502 5503 5504 5505 5506 5507 5508 5509 5510 5511 5512 5513 5514 5515 5516 5517 5518 5519 5520 5521 5522 5523 5524 5525 5526 5527 5528 5529 5530 5531 5532 5533 5534 5535 5536 5537 5538 5539 5540 5541 5542 5543 5544 5545 5546 5547 5548 5549 5550 5551 5552 5553 5554 5555 5556 5557 5558 5559 5560 5561 5562 5563 5564 5565 5566 5567 5568 5569 5570 5571 5572 5573 5574 5575 5576 5577 5578 5579 5580 5581 5582 5583 5584 5585 5586 5587 5588 5589 5590 5591 5592 5593 5594 5595 5596 5597 5598 5599 5600 5601 5602 5603 5604 5605 5606 5607 5608 5609 5610 5611 5612 5613 5614 5615 5616 5617 5618 5619 5620 5621 5622 5623 5624 5625 5626 5627 5628 5629 5630 5631 5632 5633 5634 5635 5636 5637 5638 5639 5640 5641 5642 5643 5644 5645 5646 5647 5648 5649 5650 5651 5652 5653 5654 5655 5656 5657 5658 5659 5660 5661 5662 5663 5664 5665 5666 5667 5668 5669 5670 5671 5672 5673 5674 5675 5676 5677 5678 5679 5680 5681 5682 5683 5684 5685 5686 5687 5688 5689 5690 5691 5692 5693 5694 5695 5696 5697 5698 5699 5700 5701 5702 5703 5704 5705 5706 5707 5708 5709 5710 5711 5712 5713 5714 5715 5716 5717 5718 5719 5720 5721 5722 5723 5724 5725 5726 5727 5728 5729 5730 5731 5732 5733 5734 5735 5736 5737 5738 5739 5740 5741 5742 5743 5744 5745 5746 5747 5748 5749 5750 5751 5752 5753 5754 5755 5756 5757 5758 5759 5760 5761 5762 5763 5764 5765 5766 5767 5768 5769 5770 5771 5772 5773 5774 5775 5776 5777 5778 5779 5780 5781 5782 5783 5784 5785 5786 5787 5788 5789 5790 5791 5792 5793 5794 5795 5796 5797 5798 5799 5800 5801 5802 5803 5804 5805 5806 5807 5808 5809 5810 5811 5812 5813 5814 5815 5816 5817 5818 5819 5820 5821 5822 5823 5824 5825 5826 5827 5828 5829 5830 5831 5832 5833 5834 5835 5836 5837 5838 5839 5840 5841 5842 5843 5844 5845 5846 5847 5848 5849 5850 5851 5852 5853 5854 5855 5856 5857 5858 5859 5860 5861 5862 5863 5864 5865 5866 5867 5868 5869 5870 5871 5872 5873 5874 5875 5876 5877 5878 5879 5880 5881 5882 5883 5884 5885 5886 5887 5888 5889 5890 5891 5892 5893 5894 5895 5896 5897 5898 5899 5900 5901 5902 5903 5904 5905 5906 5907 5908 5909 5910 5911 5912 5913 5914 5915 5916 5917 5918 5919 5920 5921 5922 5923 5924 5925 5926 5927 5928 5929 5930 5931 5932 5933 5934 5935 5936 5937 5938 5939 5940 5941 5942 5943 5944 5945 5946 5947 5948 5949 5950 5951 5952 5953 5954 5955 5956 5957 5958 5959 5960 5961 5962 5963 5964 5965 5966 5967 5968 5969 5970 5971 5972 5973 5974 5975 5976 5977 5978 5979 5980 5981 5982 5983 5984 5985 5986 5987 5988 5989 5990 5991 5992 5993 5994 5995 5996 5997 5998 5999 6000 6001 6002 6003 6004 6005 6006 6007 6008 6009 6010 6011 6012 6013 6014 6015 6016 6017 6018 6019 6020 6021 6022 6023 6024 6025 6026 6027 6028 6029 6030 6031 6032 6033 6034 6035 6036 6037 6038 6039 6040 6041 6042 6043 6044 6045 6046 6047 6048 6049 6050 6051 6052 6053 6054 6055 6056 6057 6058 6059 6060 6061 6062 6063 6064 6065 6066 6067 6068 6069 6070 6071 6072 6073 6074 6075 6076 6077 6078 6079 6080 6081 6082 6083 6084 6085 6086 6087 6088 6089 6090 6091 6092 6093 6094 6095 6096 6097 6098 6099 6100 6101 6102 6103 6104 6105 6106 6107 6108 6109 6110 6111 6112 6113 6114 6115 6116 6117 6118 6119 6120 6121 6122 6123 6124 6125 6126 6127 6128 6129 6130 6131 6132 6133 6134 6135 6136 6137 6138 6139 6140 6141 6142 6143 6144 6145 6146 6147 6148 6149 6150 6151 6152 6153 6154 6155 6156 6157 6158 6159 6160 6161 6162 6163 6164 6165 6166 6167 6168 6169 6170 6171 6172 6173 6174 6175 6176 6177 6178 6179 6180 6181 6182 6183 6184 6185 6186 6187 6188 6189 6190 6191 6192 6193 6194 6195 6196 6197 6198 6199 6200 6201 6202 6203 6204 6205 6206 6207 6208 6209 6210 6211 6212 6213 6214 6215 6216 6217 6218 6219 6220 6221 6222 6223 6224 6225 6226 6227 6228 6229 6230 6231 6232 6233 6234 6235 6236 6237 6238 6239 6240 6241 6242 6243 6244 6245 6246 6247 6248 6249 6250 6251 6252 6253 6254 6255 6256 6257 6258 6259 6260 6261 6262 6263 6264 6265 6266 6267 6268 6269 6270 6271 6272 6273 6274 6275 6276 6277 6278 6279 6280 6281 6282 6283 6284 6285 6286 6287 6288 6289 6290 6291 6292 6293 6294 6295 6296 6297 6298 6299 6300 6301 6302 6303 6304 6305 6306 6307 6308 6309 6310 6311 6312 6313 6314 6315 6316 6317 6318 6319 6320 6321 6322 6323 6324 6325 6326 6327 6328 6329 6330 6331 6332 6333 6334 6335 6336 6337 6338 6339 6340 6341 6342 6343 6344 6345 6346 6347 6348 6349 6350 6351 6352 6353 6354 6355 6356 6357 6358 6359 6360 6361 6362 6363 6364 6365 6366 6367 6368 6369 6370 6371 6372 6373 6374 6375 6376 6377 6378 6379 6380 6381 6382 6383 6384 6385 6386 6387 6388 6389 6390 6391 6392 6393 6394 6395 6396 6397 6398 6399 6400 6401 6402 6403 6404 6405 6406 6407 6408 6409 6410 6411 6412 6413 6414 6415 6416 6417 6418 6419 6420 6421 6422 6423 6424 6425 6426 6427 6428 6429 6430 6431 6432 6433 6434 6435 6436 6437 6438 6439 6440 6441 6442 6443 6444 6445 6446 6447 6448 6449 6450 6451 6452 6453 6454 6455 6456 6457 6458 6459 6460 6461 6462 6463 6464 6465 6466 6467 6468 6469 6470 6471 6472 6473 6474 6475 6476 6477 6478 6479 6480 6481 6482 6483 6484 6485 6486 6487 6488 6489 6490 6491 6492 6493 6494 6495 6496 6497 6498 6499 6500 6501 6502 6503 6504 6505 6506 6507 6508 6509 6510 6511 6512 6513 6514 6515 6516 6517 6518 6519 6520 6521 6522 6523 6524 6525 6526 6527 6528 6529 6530 6531 6532 6533 6534 6535 6536 6537 6538 6539 6540 6541 6542 6543 6544 6545 6546 6547 6548 6549 6550 6551 6552 6553 6554 6555 6556 6557 6558 6559 6560 6561 6562 6563 6564 6565 6566 6567 6568 6569 6570 6571 6572 6573 6574 6575 6576 6577 6578 6579 6580 6581 6582 6583 6584 6585 6586 6587 6588 6589 6590 6591 6592 6593 6594 6595 6596 6597 6598 6599 6600 6601 6602 6603 6604 6605 6606 6607 6608 6609 6610 6611 6612 6613 6614 6615 6616 6617 6618 6619 6620 6621 6622 6623 6624 6625 6626 6627 6628 6629 6630 6631 6632 6633 6634 6635 6636 6637 6638 6639 6640 6641 6642 6643 6644 6645 6646 6647 6648 6649 6650 6651 6652 6653 6654 6655 6656 6657 6658 6659 6660 6661 6662 6663 6664 6665 6666 6667 6668 6669 6670 6671 6672 6673 6674 6675 6676 6677 6678 6679 6680 6681 6682 6683 6684 6685 6686 6687 6688 6689 6690 6691 6692 6693 6694 6695 6696 6697 6698 6699 6700 6701 6702 6703 6704 6705 6706 6707 6708 6709 6710 6711 6712 6713 6714 6715 6716 6717 6718 6719 6720 6721 6722 6723 6724 6725 6726 6727 6728 6729 6730 6731 6732 6733 6734 6735 6736 6737 6738 6739 6740 6741 6742 6743 6744 6745 6746 6747 6748 6749 6750 6751 6752 6753 6754 6755 6756 6757 6758 6759 6760 6761 6762 6763 6764 6765 6766 6767 6768 6769 6770 6771 6772 6773 6774 6775 6776 6777 6778 6779 6780 6781 6782 6783 6784 6785 6786 6787 6788 6789 6790 6791 6792 6793 6794 6795 6796 6797 6798 6799 6800 6801 6802 6803 6804 6805 6806 6807 6808 6809 6810 6811 6812 6813 6814 6815 6816 6817 6818 6819 6820 6821 6822 6823 6824 6825 6826 6827 6828 6829 6830 6831 6832 6833 6834 6835 6836 6837 6838 6839 6840 6841 6842 6843 6844 6845 6846 6847 6848 6849 | <?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>第 2 章 Debian 軟體包管理</title>
<link rel="stylesheet" type="text/css" href="debian-reference.css"/>
<meta name="generator" content="DocBook XSL Stylesheets V1.79.1"/>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
<link rel="home" href="index.zh-tw.html" title="Debian 參考手冊"/>
<link rel="up" href="index.zh-tw.html" title="Debian 參考手冊"/>
<link rel="prev" href="ch01.zh-tw.html" title="第 1 章 GNU/Linux 教程"/>
<link rel="next" href="ch03.zh-tw.html" title="第 3 章 系統初始化"/>
</head>
<body>
<div class="navheader">
<table width="100%" summary="Navigation header">
<tr>
<th colspan="3" align="center">第 2 章 Debian 軟體包管理</th>
</tr>
<tr>
<td align="left"><a accesskey="p" href="ch01.zh-tw.html"><img src="images/prev.png" alt="上一页"/></a> </td>
<th width="60%" align="center"> </th>
<td align="right"> <a accesskey="n" href="ch03.zh-tw.html"><img src="images/next.png" alt="下一页"/></a></td>
</tr>
</table>
<hr/>
</div>
<div class="chapter">
<div class="titlepage">
<div>
<div>
<h1 class="title"><a id="_debian_package_management"/>第 2 章 Debian 軟體包管理</h1>
</div>
</div>
</div>
<div class="toc">
<p>
<strong>目录</strong>
</p>
<dl class="toc">
<dt>
<span class="section">
<a href="ch02.zh-tw.html#_debian_package_management_prerequisites">2.1. Debian 軟體包管理的前提</a>
</span>
</dt>
<dd>
<dl>
<dt>
<span class="section">
<a href="ch02.zh-tw.html#_package_configuration">2.1.1. 軟體包配置</a>
</span>
</dt>
<dt>
<span class="section">
<a href="ch02.zh-tw.html#_basic_precautions">2.1.2. 基本的注意事項</a>
</span>
</dt>
<dt>
<span class="section">
<a href="ch02.zh-tw.html#_life_with_eternal_upgrades">2.1.3. 持續升級的生活</a>
</span>
</dt>
<dt>
<span class="section">
<a href="ch02.zh-tw.html#_debian_archive_basics">2.1.4. Debian 檔案庫基礎</a>
</span>
</dt>
<dt>
<span class="section">
<a href="ch02.zh-tw.html#_debian_is_100_free_software">2.1.5. Debian 是100% 的自由軟體</a>
</span>
</dt>
<dt>
<span class="section">
<a href="ch02.zh-tw.html#_package_dependencies">2.1.6. 軟體包依賴關係</a>
</span>
</dt>
<dt>
<span class="section">
<a href="ch02.zh-tw.html#_the_event_flow_of_the_package_management">2.1.7. 包管理的事件流</a>
</span>
</dt>
<dt>
<span class="section">
<a href="ch02.zh-tw.html#_first_response_to_package_management_troubles">2.1.8. 對包管理問題的第一個迴應</a>
</span>
</dt>
</dl>
</dd>
<dt>
<span class="section">
<a href="ch02.zh-tw.html#_basic_package_management_operations">2.2. 基礎軟體包管理操作</a>
</span>
</dt>
<dd>
<dl>
<dt>
<span class="section">
<a href="ch02.zh-tw.html#_literal_apt_literal_vs_literal_apt_get_literal_literal_apt_cache_literal_vs_literal_aptitude_literal">2.2.1. <code class="literal">apt</code> vs. <code class="literal">apt-get</code> /
<code class="literal">apt-cache</code> vs. <code class="literal">aptitude</code></a>
</span>
</dt>
<dt>
<span class="section">
<a href="ch02.zh-tw.html#_basic_package_management_operations_with_the_commandline">2.2.2. 命令列中的基礎軟體包管理操作</a>
</span>
</dt>
<dt>
<span class="section">
<a href="ch02.zh-tw.html#_interactive_use_of_aptitude">2.2.3. aptitude 的互動式使用</a>
</span>
</dt>
<dt>
<span class="section">
<a href="ch02.zh-tw.html#_key_bindings_of_aptitude">2.2.4. aptitude 的按鍵繫結</a>
</span>
</dt>
<dt>
<span class="section">
<a href="ch02.zh-tw.html#_package_views_under_aptitude">2.2.5. aptitude 軟體包檢視</a>
</span>
</dt>
<dt>
<span class="section">
<a href="ch02.zh-tw.html#_search_method_options_with_aptitude">2.2.6. aptitude 搜尋方式選項</a>
</span>
</dt>
<dt>
<span class="section">
<a href="ch02.zh-tw.html#_the_aptitude_regex_formula">2.2.7. aptitude 正則表示式</a>
</span>
</dt>
<dt>
<span class="section">
<a href="ch02.zh-tw.html#_dependency_resolution_of_aptitude">2.2.8. aptitude 的依賴解決</a>
</span>
</dt>
<dt>
<span class="section">
<a href="ch02.zh-tw.html#_package_activity_logs">2.2.9. 軟體包活動日誌</a>
</span>
</dt>
</dl>
</dd>
<dt>
<span class="section">
<a href="ch02.zh-tw.html#_examples_of_aptitude_operations">2.3. aptitude 操作範例</a>
</span>
</dt>
<dd>
<dl>
<dt>
<span class="section">
<a href="ch02.zh-tw.html#_listing_packages_with_regex_matching_on_package_names">2.3.1. 通過正則表示式匹配軟體包名稱來列出軟體包</a>
</span>
</dt>
<dt>
<span class="section">
<a href="ch02.zh-tw.html#_browsing_with_the_regex_matching">2.3.2. 使用正則表示式匹配瀏覽</a>
</span>
</dt>
<dt>
<span class="section">
<a href="ch02.zh-tw.html#_purging_removed_packages_for_good">2.3.3. 完整地清理已刪除軟體包</a>
</span>
</dt>
<dt>
<span class="section">
<a href="ch02.zh-tw.html#_tidying_auto_manual_install_status">2.3.4. 調整自動/手動安裝狀態</a>
</span>
</dt>
<dt>
<span class="section">
<a href="ch02.zh-tw.html#_system_wide_upgrade">2.3.5. 全面的系統升級</a>
</span>
</dt>
</dl>
</dd>
<dt>
<span class="section">
<a href="ch02.zh-tw.html#_advanced_package_management_operations">2.4. 高階軟體包管理操作</a>
</span>
</dt>
<dd>
<dl>
<dt>
<span class="section">
<a href="ch02.zh-tw.html#_advanced_package_management_operations_with_commandline">2.4.1. 命令列中的高階軟體包管理操作</a>
</span>
</dt>
<dt>
<span class="section">
<a href="ch02.zh-tw.html#_verification_of_installed_package_files">2.4.2. 驗證安裝的軟體包檔案</a>
</span>
</dt>
<dt>
<span class="section">
<a href="ch02.zh-tw.html#_safeguarding_for_package_problems">2.4.3. 預防軟體包故障</a>
</span>
</dt>
<dt>
<span class="section">
<a href="ch02.zh-tw.html#_searching_on_the_package_meta_data">2.4.4. 搜尋軟體包元資料</a>
</span>
</dt>
</dl>
</dd>
<dt>
<span class="section">
<a href="ch02.zh-tw.html#_debian_package_management_internals">2.5. Debian 軟體包內部管理</a>
</span>
</dt>
<dd>
<dl>
<dt>
<span class="section">
<a href="ch02.zh-tw.html#_archive_meta_data">2.5.1. 檔案庫元資料</a>
</span>
</dt>
<dt>
<span class="section">
<a href="ch02.zh-tw.html#_top_level_release_file_and_authenticity">2.5.2. 頂層“Release”檔案及真實性</a>
</span>
</dt>
<dt>
<span class="section">
<a href="ch02.zh-tw.html#_archive_level_release_files">2.5.3. 檔案庫層的“Release”檔案</a>
</span>
</dt>
<dt>
<span class="section">
<a href="ch02.zh-tw.html#_fetching_of_the_meta_data_for_the_package">2.5.4. 獲取用於軟體包的元資料</a>
</span>
</dt>
<dt>
<span class="section">
<a href="ch02.zh-tw.html#_the_package_state_for_apt">2.5.5. APT 的軟體包狀態</a>
</span>
</dt>
<dt>
<span class="section">
<a href="ch02.zh-tw.html#_the_package_state_for_aptitude">2.5.6. aptitude 的軟體包狀態</a>
</span>
</dt>
<dt>
<span class="section">
<a href="ch02.zh-tw.html#_local_copies_of_the_fetched_packages">2.5.7. 獲取的軟體包的本地副本</a>
</span>
</dt>
<dt>
<span class="section">
<a href="ch02.zh-tw.html#_debian_package_file_names">2.5.8. Debian 軟體包檔名稱</a>
</span>
</dt>
<dt>
<span class="section">
<a href="ch02.zh-tw.html#_the_dpkg_command">2.5.9. dpkg 命令</a>
</span>
</dt>
<dt>
<span class="section">
<a href="ch02.zh-tw.html#_the_update_alternatives_command">2.5.10. update-alternatives 命令</a>
</span>
</dt>
<dt>
<span class="section">
<a href="ch02.zh-tw.html#_the_dpkg_statoverride_command">2.5.11. dpkg-statoverride 命令</a>
</span>
</dt>
<dt>
<span class="section">
<a href="ch02.zh-tw.html#_the_dpkg_divert_command">2.5.12. dpkg-divert 命令</a>
</span>
</dt>
</dl>
</dd>
<dt>
<span class="section">
<a href="ch02.zh-tw.html#_recovery_from_a_broken_system">2.6. 從損壞的系統中恢復</a>
</span>
</dt>
<dd>
<dl>
<dt>
<span class="section">
<a href="ch02.zh-tw.html#_incompatibility_with_old_user_configuration">2.6.1. 不相容舊的使用者配置</a>
</span>
</dt>
<dt>
<span class="section">
<a href="ch02.zh-tw.html#_different_packages_with_overlapped_files">2.6.2. 具有相同檔案的不同軟體包</a>
</span>
</dt>
<dt>
<span class="section">
<a href="ch02.zh-tw.html#_fixing_broken_package_script">2.6.3. 修復損壞的軟體包指令碼</a>
</span>
</dt>
<dt>
<span class="section">
<a href="ch02.zh-tw.html#_rescue_with_the_dpkg_command">2.6.4. 使用 dpkg 命令進行救援</a>
</span>
</dt>
<dt>
<span class="section">
<a href="ch02.zh-tw.html#_recovering_package_selection_data">2.6.5. 恢復軟體包選擇資料</a>
</span>
</dt>
</dl>
</dd>
<dt>
<span class="section">
<a href="ch02.zh-tw.html#_tips_for_the_package_management">2.7. 軟體包管理技巧</a>
</span>
</dt>
<dd>
<dl>
<dt>
<span class="section">
<a href="ch02.zh-tw.html#_how_to_pick_debian_packages">2.7.1. 如何挑選 Debian 軟體包</a>
</span>
</dt>
<dt>
<span class="section">
<a href="ch02.zh-tw.html#_packages_from_mixed_source_of_archives">2.7.2. 混合源檔案庫中的軟體包</a>
</span>
</dt>
<dt>
<span class="section">
<a href="ch02.zh-tw.html#_tweaking_candidate_version">2.7.3. 調整候選版本</a>
</span>
</dt>
<dt>
<span class="section">
<a href="ch02.zh-tw.html#_updates_and_backports">2.7.4. 更新和向後移植</a>
</span>
</dt>
<dt>
<span class="section">
<a href="ch02.zh-tw.html#_blocking_packages_installed_by_recommends">2.7.5. 阻止推薦的軟體包的安裝</a>
</span>
</dt>
<dt>
<span class="section">
<a href="ch02.zh-tw.html#_tracking_literal_testing_literal_with_some_packages_from_literal_unstable_literal">2.7.6. 使用帶有 <code class="literal">unstable</code> 軟體包的 <code class="literal">testing</code> 版本</a>
</span>
</dt>
<dt>
<span class="section">
<a href="ch02.zh-tw.html#_tracking_literal_unstable_literal_with_some_packages_from_literal_experimental_literal">2.7.7. 使用帶有 <code class="literal">experimental</code> 軟體包的 <code class="literal">unstable</code> 版本</a>
</span>
</dt>
<dt>
<span class="section">
<a href="ch02.zh-tw.html#_automatic_download_and_upgrade_of_packages">2.7.8. 自動下載和升級軟體包</a>
</span>
</dt>
<dt>
<span class="section">
<a href="ch02.zh-tw.html#_limiting_download_bandwidth_for_apt">2.7.9. 限制 APT 的下載頻寬</a>
</span>
</dt>
<dt>
<span class="section">
<a href="ch02.zh-tw.html#_emergency_downgrading">2.7.10. 緊急降級</a>
</span>
</dt>
<dt>
<span class="section">
<a href="ch02.zh-tw.html#_who_uploaded_the_package">2.7.11. 上傳軟體包的是誰?</a>
</span>
</dt>
<dt>
<span class="section">
<a href="ch02.zh-tw.html#_the_equivs_package">2.7.12. equivs 軟體包</a>
</span>
</dt>
<dt>
<span class="section">
<a href="ch02.zh-tw.html#_porting_a_package_to_the_stable_system">2.7.13. 移植一個軟體包到 stable 系統</a>
</span>
</dt>
<dt>
<span class="section">
<a href="ch02.zh-tw.html#_proxy_server_for_apt">2.7.14. 用於 APT 的代理伺服器</a>
</span>
</dt>
<dt>
<span class="section">
<a href="ch02.zh-tw.html#_small_public_package_archive">2.7.15. 小型公共軟體包檔案庫</a>
</span>
</dt>
<dt>
<span class="section">
<a href="ch02.zh-tw.html#_recording_and_copying_system_configuration">2.7.16. 記錄和複製系統配置</a>
</span>
</dt>
<dt>
<span class="section">
<a href="ch02.zh-tw.html#_converting_or_installing_an_alien_binary_package">2.7.17. 轉換或安裝一個外來的二進位制軟體包</a>
</span>
</dt>
<dt>
<span class="section">
<a href="ch02.zh-tw.html#_extracting_package_without_dpkg">2.7.18. 不使用 dpkg 解壓軟體包</a>
</span>
</dt>
<dt>
<span class="section">
<a href="ch02.zh-tw.html#_more_readings_for_the_package_management">2.7.19. 更多關於軟體包管理的文件</a>
</span>
</dt>
</dl>
</dd>
</dl>
</div>
<div class="note" style="margin-left: 0.5in; margin-right: 0.5in;">
<table border="0" summary="Note">
<tr>
<td rowspan="2" align="center" valign="top">
<img alt="[注意]" src="images/note.png"/>
</td>
<th align="left">注意</th>
</tr>
<tr>
<td align="left" valign="top">
<p>這一章假定最新的穩定版的代號為:<code class="literal">stretch</code> 。</p>
</td>
</tr>
</table>
</div>
<p><a class="ulink" href="https://www.debian.org">Debian</a> 是一個志願者組織,它建立<span class="strong"><strong>一致的</strong></span>自由軟體的預編譯二進位制包並從檔案庫中分發它們。</p>
<p><a class="ulink" href="https://www.debian.org/mirror/">許多遠端映象站</a>提供了 HTTP 和 FTP 的方式來訪問
<a class="ulink" href="http://deb.debian.org/debian/">Debian 檔案庫</a>。也可以使用 <a class="ulink" href="https://www.debian.org/CD/">CD-ROM/DVD</a> 。</p>
<p>Debian 軟體包管理系統,<span class="strong"><strong>當使用適當時</strong></span>,可以讓使用者從檔案庫安裝<span class="strong"><strong>統一設定的二進位制軟體包</strong></span> 到系統中。現在,有 58227 個可用於 amd64
架構的軟體包。</p>
<p>Debian 軟體包管理系統有豐富的歷史,有許多可供選擇的前端使用者程式和後端訪問方式。現在,我們推薦下列的這些。</p>
<div class="itemizedlist">
<ul class="itemizedlist">
<li class="listitem">
<p><span class="citerefentry"><span class="refentrytitle">apt</span>(8)</span>
用於所有的互動式命令列操作,包含軟體包的安裝、移除和升級。自 Debian Jessie(Debian 8)起可用。
</p>
</li>
<li class="listitem">
<p><span class="citerefentry"><span class="refentrytitle">apt-get</span>(8)</span>
用於從指令碼中呼叫 Debian 軟體包管理系統。它在 <code class="literal">apt</code> 不可用時也可作為一個備選選項(常見於較舊的
Debian 系統)。
</p>
</li>
<li class="listitem">
<p><span class="citerefentry"><span class="refentrytitle">aptitude</span>(8)</span>
使用一個互動式的文字介面來管理已安裝的軟體包和搜尋可用的軟體包。
</p>
</li>
</ul>
</div>
<div class="table">
<a id="listofdebianpackemanagementtools"/>
<p class="title">
<strong>表 2.1. Debian 軟體包管理工具列表</strong>
</p>
<div class="table-contents">
<table class="table" summary="Debian 軟體包管理工具列表" border="1">
<colgroup>
<col style="text-align: left"/>
<col style="text-align: left"/>
<col style="text-align: left"/>
<col style="text-align: left"/>
</colgroup>
<thead>
<tr>
<th style="text-align: left">
軟件包
</th>
<th style="text-align: left">
流行度
</th>
<th style="text-align: left">
大小
</th>
<th style="text-align: left">
說明
</th>
</tr>
</thead>
<tbody>
<tr>
<td style="text-align: left">
<a class="ulink" href="http://packages.debian.org/sid/apt"> <code class="literal">apt</code>
</a>
</td>
<td style="text-align: left">
<a class="ulink" href="http://qa.debian.org/popcon.php?package=apt">V:870, I:999</a>
</td>
<td style="text-align: left">
<a class="ulink" href="http://packages.qa.debian.org/a/apt.html">3755</a>
</td>
<td style="text-align: left">
高階軟體包工具(APT), <code class="literal">dpkg</code> 的前端,提供了 “<code class="literal">http</code>”
、“<code class="literal">ftp</code>” 和 “<code class="literal">file</code>” 的檔案庫訪問方式(包含
<code class="literal">apt</code>、<code class="literal">apt-get</code> 和
<code class="literal">apt-cache</code> 命令)
</td>
</tr>
<tr>
<td style="text-align: left">
<a class="ulink" href="http://packages.debian.org/sid/aptitude">
<code class="literal">aptitude</code> </a>
</td>
<td style="text-align: left">
<a class="ulink" href="http://qa.debian.org/popcon.php?package=aptitude">V:126, I:685</a>
</td>
<td style="text-align: left">
<a class="ulink" href="http://packages.qa.debian.org/a/aptitude.html">4217</a>
</td>
<td style="text-align: left">
<span class="citerefentry"><span class="refentrytitle">aptitude</span>(8)</span>
,基於終端的互動式軟體包管理工具
</td>
</tr>
<tr>
<td style="text-align: left">
<a class="ulink" href="http://packages.debian.org/sid/tasksel">
<code class="literal">tasksel</code> </a>
</td>
<td style="text-align: left">
<a class="ulink" href="http://qa.debian.org/popcon.php?package=tasksel">V:38, I:973</a>
</td>
<td style="text-align: left">
<a class="ulink" href="http://packages.qa.debian.org/t/tasksel.html">375</a>
</td>
<td style="text-align: left">
Debian 系統上對安裝進行選擇的工具(APT 的前端)
</td>
</tr>
<tr>
<td style="text-align: left">
<a class="ulink" href="http://packages.debian.org/sid/unattended-upgrades">
<code class="literal">unattended-upgrades</code> </a>
</td>
<td style="text-align: left">
<a class="ulink" href="http://qa.debian.org/popcon.php?package=unattended-upgrades">V:244, I:399</a>
</td>
<td style="text-align: left">
<a class="ulink" href="http://packages.qa.debian.org/u/unattended-upgrades.html">252</a>
</td>
<td style="text-align: left">
用於 APT 的增強軟體包,會自動安裝安全更新
</td>
</tr>
<tr>
<td style="text-align: left">
<a class="ulink" href="http://packages.debian.org/sid/dselect">
<code class="literal">dselect</code> </a>
</td>
<td style="text-align: left">
<a class="ulink" href="http://qa.debian.org/popcon.php?package=dselect">V:4, I:52</a>
</td>
<td style="text-align: left">
<a class="ulink" href="http://packages.qa.debian.org/d/dselect.html">2506</a>
</td>
<td style="text-align: left">
基於終端的軟體包管理工具(之前的標準,APT 的前端和其它老的訪問方式)
</td>
</tr>
<tr>
<td style="text-align: left">
<a class="ulink" href="http://packages.debian.org/sid/dpkg"> <code class="literal">dpkg</code>
</a>
</td>
<td style="text-align: left">
<a class="ulink" href="http://qa.debian.org/popcon.php?package=dpkg">V:931, I:999</a>
</td>
<td style="text-align: left">
<a class="ulink" href="http://packages.qa.debian.org/d/dpkg.html">6743</a>
</td>
<td style="text-align: left">
用於 Debian 的軟體包管理系統
</td>
</tr>
<tr>
<td style="text-align: left">
<a class="ulink" href="http://packages.debian.org/sid/synaptic">
<code class="literal">synaptic</code> </a>
</td>
<td style="text-align: left">
<a class="ulink" href="http://qa.debian.org/popcon.php?package=synaptic">V:71, I:454</a>
</td>
<td style="text-align: left">
<a class="ulink" href="http://packages.qa.debian.org/s/synaptic.html">7793</a>
</td>
<td style="text-align: left">
圖形化的軟體包管理工具(GNOME 的 APT 前端)
</td>
</tr>
<tr>
<td style="text-align: left">
<a class="ulink" href="http://packages.debian.org/sid/apt-utils">
<code class="literal">apt-utils</code> </a>
</td>
<td style="text-align: left">
<a class="ulink" href="http://qa.debian.org/popcon.php?package=apt-utils">V:405, I:998</a>
</td>
<td style="text-align: left">
<a class="ulink" href="http://packages.qa.debian.org/a/apt-utils.html">1113</a>
</td>
<td style="text-align: left">
APT
實用程式:<span class="citerefentry"><span class="refentrytitle">apt-extracttemplates</span>(1)</span>
、<span class="citerefentry"><span class="refentrytitle">apt-ftparchive</span>(1)</span>
和
<span class="citerefentry"><span class="refentrytitle">apt-sortpkgs</span>(1)</span>
</td>
</tr>
<tr>
<td style="text-align: left">
<a class="ulink" href="http://packages.debian.org/sid/apt-listchanges">
<code class="literal">apt-listchanges</code> </a>
</td>
<td style="text-align: left">
<a class="ulink" href="http://qa.debian.org/popcon.php?package=apt-listchanges">V:379, I:843</a>
</td>
<td style="text-align: left">
<a class="ulink" href="http://packages.qa.debian.org/a/apt-listchanges.html">385</a>
</td>
<td style="text-align: left">
軟體包歷史更改提醒工具
</td>
</tr>
<tr>
<td style="text-align: left">
<a class="ulink" href="http://packages.debian.org/sid/apt-listbugs">
<code class="literal">apt-listbugs</code> </a>
</td>
<td style="text-align: left">
<a class="ulink" href="http://qa.debian.org/popcon.php?package=apt-listbugs">V:8, I:12</a>
</td>
<td style="text-align: left">
<a class="ulink" href="http://packages.qa.debian.org/a/apt-listbugs.html">449</a>
</td>
<td style="text-align: left">
在每次 APT 安裝前列出嚴重的 bug
</td>
</tr>
<tr>
<td style="text-align: left">
<a class="ulink" href="http://packages.debian.org/sid/apt-file">
<code class="literal">apt-file</code> </a>
</td>
<td style="text-align: left">
<a class="ulink" href="http://qa.debian.org/popcon.php?package=apt-file">V:12, I:78</a>
</td>
<td style="text-align: left">
<a class="ulink" href="http://packages.qa.debian.org/a/apt-file.html">82</a>
</td>
<td style="text-align: left">
APT 軟體包搜尋工具 —— 命令列介面
</td>
</tr>
<tr>
<td style="text-align: left">
<a class="ulink" href="http://packages.debian.org/sid/apt-rdepends">
<code class="literal">apt-rdepends</code> </a>
</td>
<td style="text-align: left">
<a class="ulink" href="http://qa.debian.org/popcon.php?package=apt-rdepends">V:0, I:6</a>
</td>
<td style="text-align: left">
<a class="ulink" href="http://packages.qa.debian.org/a/apt-rdepends.html">40</a>
</td>
<td style="text-align: left">
遞迴列出軟體包依賴
</td>
</tr>
</tbody>
</table>
</div>
</div>
<br class="table-break"/>
<div class="section">
<div class="titlepage">
<div>
<div>
<h2 class="title"><a id="_debian_package_management_prerequisites"/>2.1. Debian 軟體包管理的前提</h2>
</div>
</div>
</div>
<div class="section">
<div class="titlepage">
<div>
<div>
<h3 class="title"><a id="_package_configuration"/>2.1.1. 軟體包配置</h3>
</div>
</div>
</div>
<p>下面是 Debian 系統軟體包配置的一些要點。</p>
<div class="itemizedlist">
<ul class="itemizedlist">
<li class="listitem">
<p>
Debian 尊重系統管理員的手動配置。換句話說,軟體包配置系統不會為了方便而去更改那些配置。
</p>
</li>
<li class="listitem">
<p>
每個軟體包都帶有自己的配置指令碼,它使用標準使用者介面
<span class="citerefentry"><span class="refentrytitle">debconf</span>(7)</span>
來幫助軟體包初始化安裝過程。
</p>
</li>
<li class="listitem">
<p>
Debian 開發者通過軟體包配置指令碼,盡力使你能有一個完美的升級體驗。
</p>
</li>
<li class="listitem">
<p>
系統管理員可以使用軟體包工具的全部功能。但在預設的安裝中會禁用那些具有安全風險的。
</p>
</li>
<li class="listitem">
<p>
如果你手動激活了一些具有安全隱患的服務,你有責任遏制風險。
</p>
</li>
<li class="listitem">
<p>
Esoteric configuration may be manually enabled by the system administrator.
This may create interference with popular generic helper programs for the
system configuration.
</p>
</li>
</ul>
</div>
</div>
<div class="section">
<div class="titlepage">
<div>
<div>
<h3 class="title"><a id="_basic_precautions"/>2.1.2. 基本的注意事項</h3>
</div>
</div>
</div>
<div class="warning" style="margin-left: 0.5in; margin-right: 0.5in;">
<table border="0" summary="Warning">
<tr>
<td rowspan="2" align="center" valign="top">
<img alt="[警告]" src="images/warning.png"/>
</td>
<th align="left">警告</th>
</tr>
<tr>
<td align="left" valign="top">
<p>不要從任何的混合套件中安裝軟體包。它可能會打破軟體包的一致性,這需要你要深厚的系統管理知識,例如 <a class="ulink" href="https://zh.wikipedia.org/wiki/應用二進制接口">ABI</a> 編譯器、<a class="ulink" href="https://zh.wikipedia.org/wiki/Library_(computing)">庫</a>版本和直譯器特性等等。</p>
</td>
</tr>
</table>
</div>
<p>Debian 系統管理員中的<a class="ulink" href="https://zh.wikipedia.org/wiki/Newbie">新手</a>應該保持在只進行安全更新的 <span class="strong"><strong><code class="literal">stable</code></strong></span>
版本。我的意思是,最好避免下列的一些行為作為一項預防措施,直到你十分了解 Debian 系統。下面有一些提醒。</p>
<div class="itemizedlist">
<ul class="itemizedlist">
<li class="listitem">
<p>
在 “<code class="literal">/etc/apt/sources.list</code>” 中不要包含 <span class="strong"><strong><code class="literal">testing</code></strong></span> 或 <span class="strong"><strong><code class="literal">unstable</code></strong></span> 。
</p>
</li>
<li class="listitem">
<p>
在 “<code class="literal">/etc/apt/sources.list</code>” 裡不要在標準的 Debian 中混合使用其它非 Debian
的檔案庫,例如 Ubuntu 。
</p>
</li>
<li class="listitem">
<p>
不要建立 “<code class="literal">/etc/apt/preferences</code>” 。
</p>
</li>
<li class="listitem">
<p>
不瞭解會造成的全部影響,就不要通過配置檔案改變軟體包管理工具的預設行為。
</p>
</li>
<li class="listitem">
<p>
不要使用 “<code class="literal">dpkg -i <random_package></code>” 安裝任何軟體包。
</p>
</li>
<li class="listitem">
<p>
絕不使用 “<code class="literal">dpkg --force-all -i <random_package></code>”
安裝任何軟體包。
</p>
</li>
<li class="listitem">
<p>
不要刪除或修改 “<code class="literal">/var/lib/dpkg/</code>” 中的檔案。
</p>
</li>
<li class="listitem">
<p>
不要讓從原始碼直接安裝的程式覆蓋系統檔案。
</p>
<div class="itemizedlist">
<ul class="itemizedlist">
<li class="listitem">
<p>
如果需要的話,將它們安裝到 “<code class="literal">/usr/local</code>” 或 “<code class="literal">/opt</code>” 中。
</p>
</li>
</ul>
</div>
</li>
</ul>
</div>
<p>上述對 Debian 軟體包管理系統做的行為所導致的不相容影響可能會使你的系統無法使用。</p>
<p>負責有關鍵任務的伺服器的嚴謹的 Debian 系統系統管理員,應該使用額外的預防措施。</p>
<div class="itemizedlist">
<ul class="itemizedlist">
<li class="listitem">
<p>
沒有在安全的條件下使用你特定的配置進行徹底地測試,就不要從 Debian 安裝任何軟體包(包含安全更新)。
</p>
<div class="itemizedlist">
<ul class="itemizedlist">
<li class="listitem">
<p>
你作為系統管理員要對你的系統負責到底。
</p>
</li>
<li class="listitem">
<p>
Debian 系統長久的穩定史並無法保證什麼。
</p>
</li>
</ul>
</div>
</li>
</ul>
</div>
</div>
<div class="section">
<div class="titlepage">
<div>
<div>
<h3 class="title"><a id="_life_with_eternal_upgrades"/>2.1.3. 持續升級的生活</h3>
</div>
</div>
</div>
<p>儘管我在上面進行了警告,我知道許多閱讀這份文件的人還是想要使用 Debian 的 <code class="literal">testing</code> 或
<code class="literal">unstable</code> 套件來作為他們<span class="strong"><strong>自行管理的桌面環境</strong></span>的主系統。這是因為這些套件執行得很好,更新頻繁,並提供了最新的特性。</p>
<div class="caution" style="margin-left: 0.5in; margin-right: 0.5in;">
<table border="0" summary="Caution">
<tr>
<td rowspan="2" align="center" valign="top">
<img alt="[小心]" src="images/caution.png"/>
</td>
<th align="left">小心</th>
</tr>
<tr>
<td align="left" valign="top">
<p>對於你的<span class="strong"><strong>生產伺服器</strong></span>,建議使用帶有安全更行的
<code class="literal">stable</code> 套件。對於你只進行有限管理的桌面 PC 也是同樣如此,例如你母親的 PC 。</p>
</td>
</tr>
</table>
</div>
<p>你只需要在 “<code class="literal">/etc/apt/sources.list</code>”
中簡單地將發行版字串設定為套件名:“<code class="literal">testing</code>” 或
“<code class="literal">unstable</code>”;或者代號:“<code class="literal">buster</code>” 或
“<code class="literal">sid</code>” 。這會使你享受<span class="strong"><strong>持續升級的生活</strong></span>。</p>
<p>使用 <code class="literal">testing</code> 或 <code class="literal">unstable</code> 是<span class="strong"><strong>很有樂趣的</strong></span>,但會帶來一些風險。儘管 Debian 系統的
<code class="literal">unstable</code> 套件在大多數時候看起來都非常穩定,但在 Debian 系統的
<code class="literal">testing</code> 和 <code class="literal">unstable</code>
套件中存在一些軟體包問題,並且它們中的一部分是不容易解決的。這對你來說可能會<span class="strong"><strong>很痛苦</strong></span>。有時候,你可能會有一個損壞的軟體包或缺少某些功能幾個星期。</p>
<p>這裡有一些方法,可以使你簡單快速地從 Debian 軟體包的 bug 中恢復。</p>
<div class="itemizedlist">
<ul class="itemizedlist">
<li class="listitem">
<p>
通過將 Debian 系統的 <code class="literal">stable</code> 套件安裝到另一個分割槽,可以使系統能夠進行<span class="strong"><strong>雙啟動</strong></span>
</p>
</li>
<li class="listitem">
<p>
製作安裝 CD 便於用於 <span class="strong"><strong>救援啟動</strong></span>
</p>
</li>
<li class="listitem">
<p>
考慮安裝 <code class="literal">apt-listbugs</code> ,這可以在升級之前檢查 <a class="ulink" href="https://www.debian.org/Bugs/">Debian Bug 跟蹤系統(BTS)</a> 的資訊
</p>
</li>
<li class="listitem">
<p>
對軟體包系統的基礎設施有足夠的瞭解來解決問題
</p>
</li>
<li class="listitem">
<p>
建立一個 chroot 或類似的環境來提前執行最新的系統(參見<a class="xref" href="ch09.zh-tw.html#_virtualized_system" title="9.10. 虛擬化系統">第 9.10 节 “虛擬化系統”</a>)
</p>
</li>
</ul>
</div>
<p>(如果你無法做到這些預防措施中的任何一個,那你可能還沒做好使用 <code class="literal">testing</code>
和<code class="literal">unstable</code> 套件的準備。)</p>
<p><a class="ulink" href="https://zh.wikipedia.org/wiki/Bodhi">菩薩</a>使用下面的內容拯救一個人,使他從掙扎於持續升級<a class="ulink" href="https://zh.wikipedia.org/wiki/Naraka">地獄</a>的<a class="ulink" href="https://zh.wikipedia.org/wiki/Karma">因果報應</a>中脫困,並讓他達到 Debian
的<a class="ulink" href="https://zh.wikipedia.org/wiki/Nirvana">極樂世界</a>。</p>
</div>
<div class="section">
<div class="titlepage">
<div>
<div>
<h3 class="title"><a id="_debian_archive_basics"/>2.1.4. Debian 檔案庫基礎</h3>
</div>
</div>
</div>
<p>讓我們從系統使用者的角度來看看 <a class="ulink" href="http://deb.debian.org/debian/">Debian 檔案庫</a>。</p>
<div class="tip" style="margin-left: 0.5in; margin-right: 0.5in;">
<table border="0" summary="Tip">
<tr>
<td rowspan="2" align="center" valign="top">
<img alt="[提示]" src="images/tip.png"/>
</td>
<th align="left">提示</th>
</tr>
<tr>
<td align="left" valign="top">
<p>Debian 檔案庫官方政策的定義參見 <a class="ulink" href="https://www.debian.org/doc/debian-policy/ch-archive">Debian
政策文件,第2章 —— Debian 檔案庫</a>。</p>
</td>
</tr>
</table>
</div>
<p>對於典型的 HTTP 訪問,檔案庫在 “<code class="literal">/etc/apt/sources.list</code>”
檔案中像下面那樣指定,例如,現在 <code class="literal">stable</code> =
<code class="literal">stretch</code> 系統。</p>
<pre class="screen">deb http://deb.debian.org/debian/ stretch main contrib non-free
deb-src http://deb.debian.org/debian/ stretch main contrib non-free
deb http://security.debian.org/ stretch/updates main contrib
deb-src http://security.debian.org/ stretch/updates main contrib</pre>
<p>這裡,我傾向於使用代號 “<code class="literal">stretch</code>” 來代替套件名
“<code class="literal">stable</code>” ,以避免下一個 <code class="literal">stable</code> 版本釋出時出現意外。</p>
<p>“<code class="literal">/etc/apt/sources.list</code>” 的含義在
<span class="citerefentry"><span class="refentrytitle">sources.list</span>(5)</span>
中進行了描述,下面是一些要點。</p>
<div class="itemizedlist">
<ul class="itemizedlist">
<li class="listitem">
<p>
“<code class="literal">deb</code>” 的那行定義了二進位制軟體包。
</p>
</li>
<li class="listitem">
<p>
“<code class="literal">deb-src</code>” 的那行定義了原始碼軟體包。
</p>
</li>
<li class="listitem">
<p>
第一個引數是 Debian 檔案庫的根 URL 。
</p>
</li>
<li class="listitem">
<p>
第二個引數是發行版名稱:可以使用套件名或代號。
</p>
</li>
<li class="listitem">
<p>
第三個和之後的引數是 Debian 檔案庫的有效檔案庫範圍名稱。
</p>
</li>
</ul>
</div>
<p>如果只是用
<code class="literal">aptitude</code>(它不訪問原始碼相關的元資料),“<code class="literal">deb-src</code>”那行可以安全地刪掉(或者在檔案開頭新增
“#” 來將它註釋掉)。這可以加速檔案庫元資料的更新。URL 可以是“<code class="literal">http://</code>”
、“<code class="literal">ftp://</code>” 、 “<code class="literal">file://</code>” ……</p>
<div class="tip" style="margin-left: 0.5in; margin-right: 0.5in;">
<table border="0" summary="Tip">
<tr>
<td rowspan="2" align="center" valign="top">
<img alt="[提示]" src="images/tip.png"/>
</td>
<th align="left">提示</th>
</tr>
<tr>
<td align="left" valign="top">
<p>如果在上述的例子中,使用了 “<code class="literal">sid</code>” 代替
“<code class="literal">stretch</code>” ,那麼
“<code class="literal">/etc/apt/sources.list</code>” 中的 “<code class="literal">deb:
http://security.debian.org/ …</code>” 這行就不需要了。因為沒有用於
“<code class="literal">sid</code>” (<code class="literal">unstable</code>)的安全更新的檔案庫。</p>
</td>
</tr>
</table>
</div>
<p>下面是配置檔案所使用的 Debian 檔案庫站點的 URL 和套件名或代號的列表。</p>
<div class="table">
<a id="listofdebianarchivesites"/>
<p class="title">
<strong>表 2.2. Debian 檔案庫站點列表</strong>
</p>
<div class="table-contents">
<table class="table" summary="Debian 檔案庫站點列表" border="1">
<colgroup>
<col style="text-align: left"/>
<col style="text-align: left"/>
<col style="text-align: left"/>
</colgroup>
<thead>
<tr>
<th style="text-align: left">
檔案庫 URL
</th>
<th style="text-align: left">
套件名(代號)
</th>
<th style="text-align: left">
目的
</th>
</tr>
</thead>
<tbody>
<tr>
<td style="text-align: left">
<a class="ulink" href="http://deb.debian.org/debian/">http://deb.debian.org/debian/</a>
</td>
<td style="text-align: left"><code class="literal">stable</code> (<code class="literal">stretch</code>)
</td>
<td style="text-align: left">
stable (stretch) release 版本
</td>
</tr>
<tr>
<td style="text-align: left">
<a class="ulink" href="http://deb.debian.org/debian/">http://deb.debian.org/debian/</a>
</td>
<td style="text-align: left"><code class="literal">testing</code> (<code class="literal">buster</code>)
</td>
<td style="text-align: left">
testing (buster) release 版本
</td>
</tr>
<tr>
<td style="text-align: left">
<a class="ulink" href="http://deb.debian.org/debian/">http://deb.debian.org/debian/</a>
</td>
<td style="text-align: left"><code class="literal">unstable</code> (<code class="literal">sid</code>)
</td>
<td style="text-align: left">
unstable (sid) release 版本
</td>
</tr>
<tr>
<td style="text-align: left">
<a class="ulink" href="http://deb.debian.org/debian/">http://deb.debian.org/debian/</a>
</td>
<td style="text-align: left">
<code class="literal">experimental</code>
</td>
<td style="text-align: left">
experimental pre-release 版本(可選,只適用於開發者)
</td>
</tr>
<tr>
<td style="text-align: left">
<a class="ulink" href="http://deb.debian.org/debian/">http://deb.debian.org/debian/</a>
</td>
<td style="text-align: left">
<code class="literal">stable-proposed-updates</code>
</td>
<td style="text-align: left">
用於下一個穩定版本的更新(可選)
</td>
</tr>
<tr>
<td style="text-align: left">
<a class="ulink" href="http://security.debian.org/">http://security.debian.org/</a>
</td>
<td style="text-align: left">
<code class="literal">stable/updates</code>
</td>
<td style="text-align: left">
用於 stable release 版本的安全更新(重要)
</td>
</tr>
<tr>
<td style="text-align: left">
<a class="ulink" href="http://security.debian.org/">http://security.debian.org/</a>
</td>
<td style="text-align: left">
<code class="literal">testing/updates</code>
</td>
<td style="text-align: left">
用於 testing release 版本的安全更新(重要)
</td>
</tr>
<tr>
<td style="text-align: left">
<a class="ulink" href="http://deb.debian.org/debian/">http://deb.debian.org/debian/</a>
</td>
<td style="text-align: left">
<code class="literal">stretch-updates</code>
</td>
<td style="text-align: left">
用於 stretch 的垃圾郵件過濾器、IM客戶端等的相容更新
</td>
</tr>
<tr>
<td style="text-align: left">
<a class="ulink" href="http://deb.debian.org/debian/">http://deb.debian.org/debian/</a>
</td>
<td style="text-align: left">
<code class="literal">stretch-backports</code>
</td>
<td style="text-align: left">
用於 stretch 的較新的 backported 軟體包(可選)
</td>
</tr>
</tbody>
</table>
</div>
</div>
<br class="table-break"/>
<div class="caution" style="margin-left: 0.5in; margin-right: 0.5in;">
<table border="0" summary="Caution">
<tr>
<td rowspan="2" align="center" valign="top">
<img alt="[小心]" src="images/caution.png"/>
</td>
<th align="left">小心</th>
</tr>
<tr>
<td align="left" valign="top">
<p>只有帶有安全更新的純淨的 <span class="strong"><strong><code class="literal">stable</code></strong></span>
release 版本可以提供最佳的穩定性。執行大多數 <span class="strong"><strong><code class="literal">stable</code></strong></span> release 版本的軟體包之中混合一些來自
<span class="strong"><strong><code class="literal">testing</code></strong></span> 或 <span class="strong"><strong><code class="literal">unstable</code></strong></span> release 版本的軟體包會比執行純淨的
<span class="strong"><strong><code class="literal">unstable</code></strong></span> release
版本冒更大的風險,這是因為庫版本的不匹配導致的。如果在 <span class="strong"><strong><code class="literal">stable</code></strong></span> release
版本下你真的需要一些程式的最新版本,請使用來自 <a class="ulink" href="https://www.debian.org/News/2011/20110215">stretch-updates</a> 和 <a class="ulink" href="http://backports.debian.org">http://backports.debian.org</a> (參見 <a class="xref" href="ch02.zh-tw.html#_updates_and_backports" title="2.7.4. 更新和向後移植">第 2.7.4 节 “更新和向後移植”</a>)的軟體包。使用這些軟體包時必須額外小心。</p>
</td>
</tr>
</table>
</div>
<div class="caution" style="margin-left: 0.5in; margin-right: 0.5in;">
<table border="0" summary="Caution">
<tr>
<td rowspan="2" align="center" valign="top">
<img alt="[小心]" src="images/caution.png"/>
</td>
<th align="left">小心</th>
</tr>
<tr>
<td align="left" valign="top">
<p>在 "<code class="literal">deb</code>" 行中,你只需列出
<code class="literal">stable</code>,<code class="literal">testing</code> 或者
<code class="literal">unstable</code> 套件中的一個即可,如果你在 "<code class="literal">deb</code>" 行中混合了
<code class="literal">stable</code>,<code class="literal">testing</code> 和
<code class="literal">unstable</code> 套件,APT 程式的執行速度將會變慢並且只有最新的檔案庫是有用的。只有在
"<code class="literal">/etc/apt/preferences</code>" 檔案帶有明確目標的時候,混合的列表才是有意義的。(檢視<a class="xref" href="ch02.zh-tw.html#_tweaking_candidate_version" title="2.7.3. 調整候選版本">第 2.7.3 节 “調整候選版本”</a>)。</p>
</td>
</tr>
</table>
</div>
<div class="tip" style="margin-left: 0.5in; margin-right: 0.5in;">
<table border="0" summary="Tip">
<tr>
<td rowspan="2" align="center" valign="top">
<img alt="[提示]" src="images/tip.png"/>
</td>
<th align="left">提示</th>
</tr>
<tr>
<td align="left" valign="top">
<p>對於使用 <code class="literal">stable</code> 和 <code class="literal">testing</code> 套件的 Debian
系統而言,在 “<code class="literal">/etc/apt/sources.list</code>” 中包含帶有
“<code class="literal">http://security.debian.org/</code>” 的一行是不錯的主意。它會啟用安全更新。</p>
</td>
</tr>
</table>
</div>
<div class="note" style="margin-left: 0.5in; margin-right: 0.5in;">
<table border="0" summary="Note">
<tr>
<td rowspan="2" align="center" valign="top">
<img alt="[注意]" src="images/note.png"/>
</td>
<th align="left">注意</th>
</tr>
<tr>
<td align="left" valign="top">
<p>Debian 安全團體將會修正 <code class="literal">stable</code>
檔案庫的安全缺陷。這些行為是十分嚴格可靠的。<code class="literal">testing</code> 檔案庫中的缺陷,不一定會被 Debian
測試安全團體修正。由於<a class="ulink" href="http://lists.debian.org/debian-testing-security-announce/2008/12/msg00019.html">一些</a><a class="ulink" href="http://lists.debian.org/debian-testing-security-announce/2010/01/msg00000.html">原因</a>,這些行為相對 <code class="literal">stable</code>
檔案庫沒有那麼嚴格,您可能需要等待已修正的 <code class="literal">unstable</code> 軟體包移植到
<code class="literal">testing</code>。<code class="literal">unstable</code>
檔案庫的缺陷,交由各個維護者修改。經常維護的<code class="literal">unstable</code>
軟體包通常處於相當好的狀況,因為它利用了上流最新的安全修正。有關 Debian 怎樣處理安全缺陷,請參見 <a class="ulink" href="https://www.debian.org/security/faq">Debian安全常問問題</a> 。</p>
</td>
</tr>
</table>
</div>
<div class="table">
<a id="listofdebianarchivearea"/>
<p class="title">
<strong>表 2.3. Debian 歸檔列表</strong>
</p>
<div class="table-contents">
<table class="table" summary="Debian 歸檔列表" border="1">
<colgroup>
<col style="text-align: left"/>
<col style="text-align: left"/>
<col style="text-align: left"/>
</colgroup>
<thead>
<tr>
<th style="text-align: left">
區域
</th>
<th style="text-align: left">
軟體包數量
</th>
<th style="text-align: left">
軟體包元件標準
</th>
</tr>
</thead>
<tbody>
<tr>
<td style="text-align: left">
<code class="literal">main</code>
</td>
<td style="text-align: left">
57346
</td>
<td style="text-align: left">
遵從 Debian 自由軟體指導方針(DFSG),並且不依賴於 <code class="literal">non-free</code>
</td>
</tr>
<tr>
<td style="text-align: left">
<code class="literal">contrib</code>
</td>
<td style="text-align: left">
341
</td>
<td style="text-align: left">
遵從 Debian 自由軟體指導方針(DFSG),但依賴於 <code class="literal">non-free</code>
</td>
</tr>
<tr>
<td style="text-align: left">
<code class="literal">non-free</code>
</td>
<td style="text-align: left">
540
</td>
<td style="text-align: left">
不遵從 Debian 自由軟體指導方針(DFSG)
</td>
</tr>
</tbody>
</table>
</div>
</div>
<br class="table-break"/>
<p>上述軟體包的數量是 amd64 架構的。<code class="literal">main</code> 區域提供 Debian 系統(參見 <a class="xref" href="ch02.zh-tw.html#_debian_is_100_free_software" title="2.1.5. Debian 是100% 的自由軟體">第 2.1.5 节 “Debian 是100% 的自由軟體”</a>)。</p>
<p>通過把你的瀏覽器指向檔案庫 URL,這些 URL 在 <code class="literal">dists</code> 或
<code class="literal">pool</code> 之後是各不相同的,Debian 檔案庫能夠被有規劃的組織。</p>
<p>發行版可以用套件或<a class="ulink" href="https://www.debian.org/doc/manuals/developers-reference/resources.html#codenames">代號</a>來指定。發行版在許多文件中也被當做是套件的同義詞。套件和代號的關係總結如下。</p>
<div class="table">
<a id="therelationshipbsuiteandcodename"/>
<p class="title">
<strong>表 2.4. 套件和代號的關係</strong>
</p>
<div class="table-contents">
<table class="table" summary="套件和代號的關係" border="1">
<colgroup>
<col style="text-align: left"/>
<col style="text-align: left"/>
<col style="text-align: left"/>
<col style="text-align: left"/>
</colgroup>
<thead>
<tr>
<th style="text-align: left">
時間
</th>
<th style="text-align: left">
suite = <code class="literal">stable</code>
</th>
<th style="text-align: left">
suite = <code class="literal">testing</code>
</th>
<th style="text-align: left">
suite = <code class="literal">unstable</code>
</th>
</tr>
</thead>
<tbody>
<tr>
<td style="text-align: left">
在 <code class="literal">stretch</code> 發佈後
</td>
<td style="text-align: left">
codename = <code class="literal">stretch</code>
</td>
<td style="text-align: left">
codename = <code class="literal">buster</code>
</td>
<td style="text-align: left">
codename = <code class="literal">sid</code>
</td>
</tr>
<tr>
<td style="text-align: left">
在 <code class="literal">buster</code> 發佈後
</td>
<td style="text-align: left">
codename = <code class="literal">buster</code>
</td>
<td style="text-align: left">
codename = <code class="literal">bullseye</code>
</td>
<td style="text-align: left">
codename = <code class="literal">sid</code>
</td>
</tr>
</tbody>
</table>
</div>
</div>
<br class="table-break"/>
<p>代號的歷史參見 <a class="ulink" href="https://www.debian.org/doc/manuals/debian-faq/ch-ftparchives#s-oldcodenames">Debian FAQ: 6.2.1
Which other codenames have been used in the past?</a></p>
<p>在較嚴格的 Debian 檔案術語,“部分 section”這一詞特指按應用領域來分類的軟體包類別。(但是,主要部分 ("main section")
這一詞有時會用來描述 Debian 檔案區中,名為”main 主要"的區域 。)</p>
<p>Debian 開發者(DD)每次上傳軟體包到 <code class="literal">unstable</code> 檔案庫(通過 <a class="ulink" href="http://incoming.debian.org/">incoming</a> 處理),都必須確保上傳的軟體包與最新的
<code class="literal">unstable</code> 檔案庫中的最新軟體包相容。</p>
<p>如果 DD 故意打破重要的庫升級等的這種相容性,這通常會在 <a class="ulink" href="http://lists.debian.org/debian-devel/">Debian 開發者郵件列表</a>等進行公告。</p>
<p>在 Debian 檔案庫維護指令碼將軟體包從 <code class="literal">unstable</code> 檔案庫移動到
<code class="literal">testing</code> 檔案庫前,檔案庫維護指令碼不僅檢查時間(約10天)和軟體包的 RC bug
報告的狀態,還嘗試確保它們可以和最新的 <code class="literal">testing</code>
檔案庫中的軟體相容。這個過程使得<code class="literal">testing</code> 檔案庫非常正確可用。</p>
<p>通過由釋出團隊領導的逐步凍結檔案庫的過程,並進行一些手動干預,使 <code class="literal">testing</code>
檔案庫完全一致,無缺陷。然後,將舊的 <code class="literal">testing</code> 檔案庫的程式碼名稱分配給新的
<code class="literal">stable</code> 檔案庫,併為新的 <code class="literal">testing</code>
檔案庫建立新的程式碼名稱。新的 <code class="literal">testing</code> 檔案庫最初的內容和新發布的
<code class="literal">stable</code> 檔案庫的內容完全相同。</p>
<p><code class="literal">unstable</code> 和 <code class="literal">testing</code>
檔案庫都可能會遭受由以下幾個因素導致的臨時的小故障。</p>
<div class="itemizedlist">
<ul class="itemizedlist">
<li class="listitem">
<p>
損壞的軟體包被上傳到檔案庫(多見於 <code class="literal">unstable</code> )
</p>
</li>
<li class="listitem">
<p>
延遲接受新的軟體包到檔案庫(多見於 <code class="literal">unstable</code> )
</p>
</li>
<li class="listitem">
<p>
檔案庫時間同步問題( <code class="literal">testing</code> 和 <code class="literal">unstable</code> )
</p>
</li>
<li class="listitem">
<p>
手動干預檔案庫,例如移除軟體包(多見於 <code class="literal">testing</code> )等。
</p>
</li>
</ul>
</div>
<p>因此,如果你決定使用這些檔案庫,你應該能夠修復或忍受這些型別的小故障。</p>
<div class="caution" style="margin-left: 0.5in; margin-right: 0.5in;">
<table border="0" summary="Caution">
<tr>
<td rowspan="2" align="center" valign="top">
<img alt="[小心]" src="images/caution.png"/>
</td>
<th align="left">小心</th>
</tr>
<tr>
<td align="left" valign="top">
<p>在新的 <code class="literal">stable</code> 版本釋出後的幾個月,大多數桌面使用者應該使用帶有安全更新的
<code class="literal">stable</code> 檔案庫,即使他們通常使用 <code class="literal">unstable</code> 或
<code class="literal">testing</code> 檔案庫。在這個過渡期中,<code class="literal">unstable</code> 和
<code class="literal">testing</code> 檔案庫不適合大多數人。你使用 <code class="literal">unstable</code>
檔案庫的系統是很難保持良好的工作狀態的,因為它會遭受核心軟體包的大量升級狂潮。 <code class="literal">testing</code>
檔案庫不大有用,因為它包含有和沒有安全支援的 <code class="literal">stable</code> 檔案庫相同的內容(<a class="ulink" href="http://lists.debian.org/debian-testing-security-announce/2008/12/msg00019.html">Debian testing 安全公告
2008-12</a>)。一個月左右的時間後, 如果你仔細點的話, <code class="literal">unstable</code> 檔案庫或許可以使用。</p>
</td>
</tr>
</table>
</div>
<div class="tip" style="margin-left: 0.5in; margin-right: 0.5in;">
<table border="0" summary="Tip">
<tr>
<td rowspan="2" align="center" valign="top">
<img alt="[提示]" src="images/tip.png"/>
</td>
<th align="left">提示</th>
</tr>
<tr>
<td align="left" valign="top">
<p>跟蹤 <code class="literal">testing</code> 檔案庫時,由一個已移除的軟體包引起的問題通常可以安裝
<code class="literal">unstable</code> 檔案庫中相同的軟體包(已修復 bug )來解決。</p>
</td>
</tr>
</table>
</div>
<p>檔案庫的定義參見 <a class="ulink" href="https://www.debian.org/doc/debian-policy/">Debian 政策文件</a>。</p>
<div class="itemizedlist">
<ul class="itemizedlist">
<li class="listitem">
<p>
<a class="ulink" href="https://www.debian.org/doc/debian-policy/ch-archive#s-subsections">部分</a>
</p>
</li>
<li class="listitem">
<p>
"<a class="ulink" href="https://www.debian.org/doc/debian-policy/ch-archive#s-priorities">優先順序</a>"
</p>
</li>
<li class="listitem">
<p>
"<a class="ulink" href="https://www.debian.org/doc/debian-policy/ch-binary#s3.7">基本系統</a>"
</p>
</li>
<li class="listitem">
<p>
"<a class="ulink" href="https://www.debian.org/doc/debian-policy/ch-binary#s3.8">極重要的軟體包</a>"
</p>
</li>
</ul>
</div>
</div>
<div class="section">
<div class="titlepage">
<div>
<div>
<h3 class="title"><a id="_debian_is_100_free_software"/>2.1.5. Debian 是100% 的自由軟體</h3>
</div>
</div>
</div>
<p>Debian 是100%的自由軟體,因為:</p>
<div class="itemizedlist">
<ul class="itemizedlist">
<li class="listitem">
<p>
Debian 預設只安裝自由軟體,這尊重了使用者的自由。
</p>
</li>
<li class="listitem">
<p>
Debian 在 <code class="literal">main</code> 中只提供自由軟體。
</p>
</li>
<li class="listitem">
<p>
Debian 建議只執行來自 <code class="literal">main</code> 的自由軟體。
</p>
</li>
<li class="listitem">
<p>
在 <code class="literal">main</code> 中的軟體包沒有依賴於在 <code class="literal">non-free</code> 或
<code class="literal">contrib</code> 中的軟體包。
</p>
</li>
</ul>
</div>
<p>有人想知道下列的兩個事實是否互相矛盾。</p>
<div class="itemizedlist">
<ul class="itemizedlist">
<li class="listitem">
<p>
“ Debian 將始終是 100% 的自由軟體”。( <a class="ulink" href="https://www.debian.org/social_contract">Debian
社群契約</a>中的第一條)
</p>
</li>
<li class="listitem">
<p>
Debian 伺服器上有一些 <code class="literal">non-free</code> 和 <code class="literal">contrib</code> 軟體包。
</p>
</li>
</ul>
</div>
<p>因為下列原因,這並不矛盾。</p>
<div class="itemizedlist">
<ul class="itemizedlist">
<li class="listitem">
<p>
Debian 系統具有100%的自由,並且它的軟體包位於 Debian 伺服器的 <code class="literal">main</code> 區域。
</p>
</li>
<li class="listitem">
<p>
Debian 系統之外的軟體包位於 Debian 伺服器的 <code class="literal">non-free</code> 和
<code class="literal">contrib</code> 區域。
</p>
</li>
</ul>
</div>
<p>在 <a class="ulink" href="https://www.debian.org/social_contract">Debian 社群契約</a>的第4條和第5條對這進行了明確的解釋:</p>
<div class="itemizedlist">
<ul class="itemizedlist">
<li class="listitem">
<p>
我們將優先考慮我們的使用者及自由軟體
</p>
<div class="itemizedlist">
<ul class="itemizedlist">
<li class="listitem">
<p>
我們由我們的使用者及自由軟體社群的需要所導向。我們將優先考慮他們的利益。我們將在多種計算環境中支援我們的使用者的操作需要。我們不反對在 Debian
系統上使用非自由軟體,我們也不會嘗試向建立和使用這部分軟體的使用者索取費用。我們允許他人,在沒有我們的資金的參與下,製造包括 Debian
以及商業軟體的增值套件。為了達成這些目標,我們將提供整合的、高質量的、100%自由的軟體,而不附加任何可能阻止在這些方面使用的法律限制。
</p>
</li>
</ul>
</div>
</li>
<li class="listitem">
<p>
哪些作品不符合我們的自由軟體規範
</p>
<div class="itemizedlist">
<ul class="itemizedlist">
<li class="listitem">
<p>
我們明瞭,某些我們的使用者需要使用不符合 Debian 自由軟體指導方針的作品。 我們為這些作品,在我們的檔案庫中留出了
“<code class="literal">contrib</code>" 以及 “<code class="literal">non-free</code>"
目錄。在這些目錄下的軟體包,並不屬於 Debian 系統 儘管它們已被配置成可以在 Debian
下使用。我們鼓勵光碟製造商閱讀這些目錄下的軟體的許可證,以判斷他們是否可以在光碟中發行這些軟體 。所以,儘管非自由軟體並非 Debian
系統的一部分,我們仍支援它們的使用,並且我們為非自由軟體提供了公共資源 (諸如我們的缺陷跟蹤系統以及郵件列表)。
</p>
</li>
</ul>
</div>
</li>
</ul>
</div>
<p>使用者應該瞭解使用 <code class="literal">non-free</code> 和 <code class="literal">contrib</code>
中的軟體包所需要冒的風險:</p>
<div class="itemizedlist">
<ul class="itemizedlist">
<li class="listitem">
<p>
使用類似的軟體包會失去自由
</p>
</li>
<li class="listitem">
<p>
失去 Debian 對軟體包的支援(這些軟體包無法訪問原始碼,Debian 不能進行完全的支援。)
</p>
</li>
<li class="listitem">
<p>
汙染你100%自由的 Debian 系統
</p>
</li>
</ul>
</div>
<p><a class="ulink" href="https://www.debian.org/social_contract#guidelines">Debian 自由軟體指導方針</a>為 <a class="ulink" href="https://www.debian.org">Debian</a> 設立了自由軟體標準。Debian
對軟體包中的軟體做了最廣泛的解釋,包含文件、韌體、圖示和圖形資料。這使得 Debian 的自由軟體標準非常嚴格。</p>
<p>為了滿足 <code class="literal">main</code> 嚴格的自由軟體標準,Debian 曾經提供了 <a class="ulink" href="http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=354622">去掉 Mozilla 商標</a> 的軟體包(例如 Firefox
、Thunderbird 和 Seamonkey),它們移除了 logo 和一些圖形資料;並將它們分別用 Iceweasel 、Icedove 和
Iceape 替代。在這些問題被解決後,這些軟體包隨著 Debian Stretch(Debian 9)的釋出恢復了其原本的名稱。</p>
<p>典型的 <code class="literal">non-free</code> 和 <code class="literal">contrib</code>
軟體包包含了下列型別的自由分發的軟體包:</p>
<div class="itemizedlist">
<ul class="itemizedlist">
<li class="listitem">
<p>
在<a class="ulink" href="https://zh.wikipedia.org/wiki/GNU_Free_Documentation_License">GNU Free Documentation
License</a>下的文件包 ,包含不變的部分 ,比如GCC 和 Make的。
(大多數都可以在<code class="literal">non-free/doc</code>找到 .)
</p>
</li>
<li class="listitem">
<p>
包含沒有原始碼的二進位制資料的韌體軟體包,例如在 <a class="xref" href="ch09.zh-tw.html#_hardware_drivers_and_firmware" title="9.9.6. 硬體驅動和韌體">第 9.9.6 节 “硬體驅動和韌體”</a>
中列出的 non-free 軟體包。(多見於 <code class="literal">non-free/kernel</code> 部分。)
</p>
</li>
<li class="listitem">
<p>
遊戲和字型軟體包,對商業使用和/或內容修改進行了限制。
</p>
</li>
</ul>
</div>
<p>請注意,<code class="literal">non-free</code> 和 <code class="literal">contrib</code> 軟體包的數量少於
<code class="literal">main</code> 軟體包的2%。允許訪問 <code class="literal">non-free</code> 和
<code class="literal">contrib</code> 並不會模糊軟體包的來源。使用
<span class="citerefentry"><span class="refentrytitle">aptitude</span>(8)</span>
的全屏互動式介面可以提供完全的可見性和完全的控制,可以讓你決定安裝來自某個部分的軟體包,來使你的系統保持自由。</p>
</div>
<div class="section">
<div class="titlepage">
<div>
<div>
<h3 class="title"><a id="_package_dependencies"/>2.1.6. 軟體包依賴關係</h3>
</div>
</div>
</div>
<p>Debian 系統通過其控制檔案欄位中的版本化二進位制依賴宣告機制來提供一致的二進位制軟體包集合。下面有一些它們的簡單定義。</p>
<div class="itemizedlist">
<ul class="itemizedlist">
<li class="listitem">
<p>
“依賴”
</p>
<div class="itemizedlist">
<ul class="itemizedlist">
<li class="listitem">
<p>
絕對的依賴,所有在這裡列出的軟體包都必須同時或提前安裝。
</p>
</li>
</ul>
</div>
</li>
<li class="listitem">
<p>
"預依賴"
</p>
<div class="itemizedlist">
<ul class="itemizedlist">
<li class="listitem">
<p>
類似於 Depends,但列出的軟體包必須提前完成安裝。
</p>
</li>
</ul>
</div>
</li>
<li class="listitem">
<p>
"推薦"
</p>
<div class="itemizedlist">
<ul class="itemizedlist">
<li class="listitem">
<p>
這裡表示一個強,但不是絕對的依賴關係 。大多數使用者不會想要這個包,除非在這裡列出的所有包都已經安裝。
</p>
</li>
</ul>
</div>
</li>
<li class="listitem">
<p>
"建議"
</p>
<div class="itemizedlist">
<ul class="itemizedlist">
<li class="listitem">
<p>
較弱的依賴。這個軟體包的大多數使用者可能會從安裝所列的軟體包中受益,但沒有它們也可以有適當的功能。
</p>
</li>
</ul>
</div>
</li>
<li class="listitem">
<p>
"增強"
</p>
<div class="itemizedlist">
<ul class="itemizedlist">
<li class="listitem">
<p>
這裡表明一個像推薦的弱依賴關係,不裝也沒關係。
</p>
</li>
</ul>
</div>
</li>
<li class="listitem">
<p>
"破損"
</p>
<div class="itemizedlist">
<ul class="itemizedlist">
<li class="listitem">
<p>
表明一個軟體包不相容一些版本規範。一般的解決方法就是升級列出的所有軟體包。
</p>
</li>
</ul>
</div>
</li>
<li class="listitem">
<p>
"衝突"
</p>
<div class="itemizedlist">
<ul class="itemizedlist">
<li class="listitem">
<p>
這表明了絕對的不相容。為了安裝這個軟體包必須移除所有列出的軟體包。
</p>
</li>
</ul>
</div>
</li>
<li class="listitem">
<p>
"替代"
</p>
<div class="itemizedlist">
<ul class="itemizedlist">
<li class="listitem">
<p>
這表明這個檔案安裝的檔案會替代所列的軟體包的檔案。
</p>
</li>
</ul>
</div>
</li>
<li class="listitem">
<p>
"提供"
</p>
<div class="itemizedlist">
<ul class="itemizedlist">
<li class="listitem">
<p>
表明這個軟體包會提供所列的軟體包所有的檔案和功能。
</p>
</li>
</ul>
</div>
</li>
</ul>
</div>
<div class="note" style="margin-left: 0.5in; margin-right: 0.5in;">
<table border="0" summary="Note">
<tr>
<td rowspan="2" align="center" valign="top">
<img alt="[注意]" src="images/note.png"/>
</td>
<th align="left">注意</th>
</tr>
<tr>
<td align="left" valign="top">
<p>請注意,同時將 “Provides” 、“Conflicts” 和 “Replaces”
定義到一個虛擬的軟體包是一個明智的配置。這確保了在任何一個時間只能安裝一個提供該虛擬包的真正軟體包。</p>
</td>
</tr>
</table>
</div>
<p>包含原始碼依賴關係的官方定義位於 <a class="ulink" href="https://www.debian.org/doc/debian-policy/ch-relationships">the Policy
Manual: Chapter 7 - Declaring relationships between packages</a>。</p>
</div>
<div class="section">
<div class="titlepage">
<div>
<div>
<h3 class="title"><a id="_the_event_flow_of_the_package_management"/>2.1.7. 包管理的事件流</h3>
</div>
</div>
</div>
<p>這是 APT 提供的軟體包管理的簡單事件流摘要。</p>
<div class="itemizedlist">
<ul class="itemizedlist">
<li class="listitem">
<p><span class="strong"><strong>更新</strong></span>(“<code class="literal">apt
update</code>”、“<code class="literal">aptitude update</code>” 或 “<code class="literal">apt-get
update</code>”):
</p>
<div class="orderedlist">
<ol class="orderedlist">
<li class="listitem">
<p>
從遠端檔案庫獲取檔案庫元資料
</p>
</li>
<li class="listitem">
<p>
重建和更新 APT 使用的本地元資料
</p>
</li>
</ol>
</div>
</li>
<li class="listitem">
<p><span class="strong"><strong>升級</strong></span>(“<code class="literal">apt upgrade</code>” 和
“<code class="literal">apt full-upgrade</code>”,或 “<code class="literal">aptitude
safe-upgrade</code>” 和 “<code class="literal">aptitude full-upgrade</code>”,或
“<code class="literal">apt-get upgrade</code>” 和 “<code class="literal">apt-get
dist-upgrade</code>”):
</p>
<div class="orderedlist">
<ol class="orderedlist">
<li class="listitem">
<p>
選擇候選版本,它所安裝的軟體包通常都是最新的可用版本(例外參見 <a class="xref" href="ch02.zh-tw.html#_tweaking_candidate_version" title="2.7.3. 調整候選版本">第 2.7.3 节 “調整候選版本”</a> )
</p>
</li>
<li class="listitem">
<p>
解決軟體包依賴關係
</p>
</li>
<li class="listitem">
<p>
如果候選版本與已安裝的版本不同,會從遠端檔案庫獲取所選擇的二進位制軟體包
</p>
</li>
<li class="listitem">
<p>
解包所獲取的二進位制軟體包
</p>
</li>
<li class="listitem">
<p>
執行 <span class="strong"><strong>preinst</strong></span> 指令碼
</p>
</li>
<li class="listitem">
<p>
安裝二進位制檔案
</p>
</li>
<li class="listitem">
<p>
執行 <span class="strong"><strong>postinst</strong></span> 指令碼
</p>
</li>
</ol>
</div>
</li>
<li class="listitem">
<p><span class="strong"><strong>安裝</strong></span>(“<code class="literal">apt install
...</code>”、“<code class="literal">aptitude install ...</code>" 或者
"<code class="literal">apt-get install …</code>” ):
</p>
<div class="orderedlist">
<ol class="orderedlist">
<li class="listitem">
<p>
選擇命令列中列出的包
</p>
</li>
<li class="listitem">
<p>
解決軟體包依賴關係
</p>
</li>
<li class="listitem">
<p>
從遠端伺服器獲取已選二進位制包
</p>
</li>
<li class="listitem">
<p>
解包所獲取的二進位制軟體包
</p>
</li>
<li class="listitem">
<p>
執行 <span class="strong"><strong>preinst</strong></span> 指令碼
</p>
</li>
<li class="listitem">
<p>
安裝二進位制檔案
</p>
</li>
<li class="listitem">
<p>
執行 <span class="strong"><strong>postinst</strong></span> 指令碼
</p>
</li>
</ol>
</div>
</li>
<li class="listitem">
<p><span class="strong"><strong>移除</strong></span> ("<code class="literal">apt remove …</code>",
“<code class="literal">aptitude remove …</code>” 或 “<code class="literal">apt-get remove
…</code>”):
</p>
<div class="orderedlist">
<ol class="orderedlist">
<li class="listitem">
<p>
選擇命令列中列出的包
</p>
</li>
<li class="listitem">
<p>
解決軟體包依賴關係
</p>
</li>
<li class="listitem">
<p>
執行 <span class="strong"><strong>prerm</strong></span> 指令碼
</p>
</li>
<li class="listitem">
<p>
移除已安裝的檔案,<span class="strong"><strong>除了</strong></span>配置檔案
</p>
</li>
<li class="listitem">
<p>
執行 <span class="strong"><strong>postrm</strong></span> 指令碼
</p>
</li>
</ol>
</div>
</li>
<li class="listitem">
<p><span class="strong"><strong>清除</strong></span> ("<code class="literal">apt
purge</code>",“<code class="literal">aptitude purge …</code>” 或 “<code class="literal">apt-get
purge …</code>”):
</p>
<div class="orderedlist">
<ol class="orderedlist">
<li class="listitem">
<p>
選擇命令列中列出的包
</p>
</li>
<li class="listitem">
<p>
解決軟體包依賴關係
</p>
</li>
<li class="listitem">
<p>
執行 <span class="strong"><strong>prerm</strong></span> 指令碼
</p>
</li>
<li class="listitem">
<p>
移除已安裝的檔案,<span class="strong"><strong>包含</strong></span>配置檔案
</p>
</li>
<li class="listitem">
<p>
執行 <span class="strong"><strong>postrm</strong></span> 指令碼
</p>
</li>
</ol>
</div>
</li>
</ul>
</div>
<p>這裡,為了大局,我特意省略了技術細節。</p>
</div>
<div class="section">
<div class="titlepage">
<div>
<div>
<h3 class="title"><a id="_first_response_to_package_management_troubles"/>2.1.8. 對包管理問題的第一個迴應</h3>
</div>
</div>
</div>
<p>你應該閱讀優良的官方文件。第一個閱讀的文件是 Debian 特定的
“<code class="literal">/usr/share/doc/<package_name>/README.Debian</code>”。同時也應該查詢
“<code class="literal">/usr/share/doc/<package_name>/</code>” 中的其它文件。如果你設定 shell
為<a class="xref" href="ch01.zh-tw.html#_customizing_bash" title="1.4.2. 定製bash">第 1.4.2 节 “定製bash”</a>,輸入下列命令。</p>
<pre class="screen">$ cd <package_name>
$ pager README.Debian
$ mc</pre>
<p>你可能需要安裝以 “<code class="literal">-doc</code>” 字尾命名的對應文件軟體包來獲取詳細的資訊。</p>
<p>如果你在使用一個特定的軟體包時出現了問題,一定要首先檢查 <a class="ulink" href="https://bugs.debian.org/">Debian bug 跟蹤系統(BTS)</a> 網站。</p>
<div class="table">
<a id="listofkeywebsiteaspecificpackage"/>
<p class="title">
<strong>表 2.5. 解決特定軟體包問題的主要網站</strong>
</p>
<div class="table-contents">
<table class="table" summary="解決特定軟體包問題的主要網站" border="1">
<colgroup>
<col style="text-align: left"/>
<col style="text-align: left"/>
</colgroup>
<thead>
<tr>
<th style="text-align: left">
網站
</th>
<th style="text-align: left">
命令
</th>
</tr>
</thead>
<tbody>
<tr>
<td style="text-align: left">
<a class="ulink" href="https://bugs.debian.org/">Debian bug tracking system
(BTS)</a> 主頁
</td>
<td style="text-align: left">
<code class="literal">sensible-browser "http://bugs.debian.org/"</code>
</td>
</tr>
<tr>
<td style="text-align: left">
已經知道軟件包名稱的 bug 報告
</td>
<td style="text-align: left">
<code class="literal">sensible-browser
"http://bugs.debian.org/<package_name>"</code>
</td>
</tr>
<tr>
<td style="text-align: left">
知道 bug 編號的 bug 報告
</td>
<td style="text-align: left">
<code class="literal">sensible-browser
"http://bugs.debian.org/<bug_number>"</code>
</td>
</tr>
</tbody>
</table>
</div>
</div>
<br class="table-break"/>
<p>使用 <a class="ulink" href="https://www.google.com">Google</a> 搜尋,在關鍵字中包含
“<code class="literal">site:debian.org</code>”,“<code class="literal">site:wiki.debian.org</code>”,“<code class="literal">site:lists.debian.org</code>”
等等。</p>
<p>當你要傳送一份 bug 報告時,請使用
<span class="citerefentry"><span class="refentrytitle">reportbug</span>(1)</span>
命令。</p>
</div>
</div>
<div class="section">
<div class="titlepage">
<div>
<div>
<h2 class="title"><a id="_basic_package_management_operations"/>2.2. 基礎軟體包管理操作</h2>
</div>
</div>
</div>
<p>在 Debian 系統中有許多基於 APT 的軟體包管理工具可以在 Debian
系統上進行基於倉庫的軟體包管理操作。在這裡,我們將介紹兩種基本的軟體包管理工具:<code class="literal">apt</code>、<code class="literal">apt-get</code>
/ <code class="literal">apt-cache</code> 和 <code class="literal">aptitude</code> 。</p>
<p>對於涉及軟體包安裝或更新軟體包元資料的軟體包管理操作,你必須有 root 許可權。</p>
<div class="section">
<div class="titlepage">
<div>
<div>
<h3 class="title"><a id="_literal_apt_literal_vs_literal_apt_get_literal_literal_apt_cache_literal_vs_literal_aptitude_literal"/>2.2.1. <code class="literal">apt</code> vs. <code class="literal">apt-get</code> /
<code class="literal">apt-cache</code> vs. <code class="literal">aptitude</code></h3>
</div>
</div>
</div>
<p>儘管 <code class="literal">aptitude</code> 是作者主要使用的一個非常好的可互動工具,但你應該知道下列警示:</p>
<div class="itemizedlist">
<ul class="itemizedlist">
<li class="listitem">
<p>
不建議在新版本釋出後在 <code class="literal">stable</code> Debian 系統上使用
<code class="literal">aptitude</code> 命令來進行跨版本的系統升級。
</p>
<div class="itemizedlist">
<ul class="itemizedlist">
<li class="listitem">
<p>
建議使用"<code class="literal">apt full-upgrade</code>"或“<code class="literal">apt-get
dist-upgrade</code>” 來進行這個操作。參見 <a class="ulink" href="https://bugs.debian.org/411280">Bug
#411280</a>。
</p>
</li>
</ul>
</div>
</li>
<li class="listitem">
<p>
<code class="literal">aptitude</code>命令有時候會為了<code class="literal">testing</code> 或
<code class="literal">unstable</code> Debian 系統升級清除大量軟體包。
</p>
<div class="itemizedlist">
<ul class="itemizedlist">
<li class="listitem">
<p>
這個情況嚇壞了許多的系統管理員。請不要驚慌。
</p>
</li>
<li class="listitem">
<p>
這似乎大多數是由元軟體包的依賴或推薦的軟體包版本偏差造成的,例如 <code class="literal">gnome-core</code>。
</p>
</li>
<li class="listitem">
<p>
要解決這個問題,可以在 <code class="literal">aptitude</code> 命令選單中選擇 “取消待執行的動作” ,退出
<code class="literal">aptitude</code>,並使用 “<code class="literal">apt full-upgrade</code>”。
</p>
</li>
</ul>
</div>
</li>
</ul>
</div>
<p><code class="literal">apt-get</code> 和 <code class="literal">apt-cache</code> 是最<span class="strong"><strong>基礎</strong></span> 的基於 APT 的軟體包管理工具。</p>
<div class="itemizedlist">
<ul class="itemizedlist">
<li class="listitem">
<p><code class="literal">apt-get</code> 和 <code class="literal">apt-cache</code> 只提供命令列使用者介面。
</p>
</li>
<li class="listitem">
<p><code class="literal">apt-get</code> 是進行跨版本的<span class="strong"><strong>主系統升級</strong></span>等操作的最合適工具。
</p>
</li>
<li class="listitem">
<p><code class="literal">apt-get</code> 提供了一個<span class="strong"><strong>強大</strong></span>的軟體包依賴解析器。
</p>
</li>
<li class="listitem">
<p><code class="literal">apt-get</code> 對硬體資源的要求不高。它消耗更少的記憶體並且執行速度更快。
</p>
</li>
<li class="listitem">
<p><code class="literal">apt-cache</code> 提供了一個 <span class="strong"><strong>標準的</strong></span>正則表示式來搜尋軟體包名稱和描述。
</p>
</li>
<li class="listitem">
<p><code class="literal">apt-get</code> 和 <code class="literal">apt-cache</code> 可以使用
<code class="literal">/etc/apt/preferences</code> 來管理軟體包的多個版本,但這非常繁瑣。
</p>
</li>
</ul>
</div>
<p><code class="literal">apt</code>指令是一個高階的命令行介面用於套件管理。基本上,它是<code class="literal">apt-get</code>、<code class="literal">apt-cache</code>及其相似指令的封裝。本意為一個終端使用者介面,且預設開啟一些適合互動用途的選項。</p>
<div class="itemizedlist">
<ul class="itemizedlist">
<li class="listitem">
<p><code class="literal">apt</code> 工具在使用者使用 <code class="literal">apt install</code>
安裝軟體包時提供了一個友好的進度條。
</p>
</li>
<li class="listitem">
<p>在成功安裝下載的軟體包後,<code class="literal">apt</code> 將預設<span class="strong"><strong>刪除</strong></span>快取的 <code class="literal">.deb</code> 軟體包。
</p>
</li>
</ul>
</div>
<div class="tip" style="margin-left: 0.5in; margin-right: 0.5in;">
<table border="0" summary="Tip">
<tr>
<td rowspan="2" align="center" valign="top">
<img alt="[提示]" src="images/tip.png"/>
</td>
<th align="left">提示</th>
</tr>
<tr>
<td align="left" valign="top">
<p>建議使用者使用新的
<span class="citerefentry"><span class="refentrytitle">apt</span>(8)</span>
命令用於 <span class="strong"><strong>互動式</strong></span>的使用場景,而在 shell 指令碼中使用
<span class="citerefentry"><span class="refentrytitle">apt-get</span>(8)</span>
和<span class="citerefentry"><span class="refentrytitle">apt-cache</span>(8)</span>
命令。</p>
</td>
</tr>
</table>
</div>
<p><code class="literal">aptitude</code> 命令是最<span class="strong"><strong>通用的</strong></span>基於 APT
的軟體包管理工具。</p>
<div class="itemizedlist">
<ul class="itemizedlist">
<li class="listitem">
<p><code class="literal">aptitude</code> 提供了一個全屏的互動式文字使用者介面。
</p>
</li>
<li class="listitem">
<p><code class="literal">aptitude</code> 同樣也提供了一個命令使用者介面。
</p>
</li>
<li class="listitem">
<p><code class="literal">aptitude</code> 是用於<span class="strong"><strong>日常軟體包管理</strong></span>(例如檢查已安裝的軟體包和搜尋可用的軟體包)的最合適工具。
</p>
</li>
<li class="listitem">
<p><code class="literal">aptitude</code> 對硬體資源的要求更高。它消耗更多的記憶體並且執行速度更慢。
</p>
</li>
<li class="listitem">
<p><code class="literal">aptitude</code> 提供一個<span class="strong"><strong>增強的</strong></span>正則表示式來搜尋所有的軟體包元資料。
</p>
</li>
<li class="listitem">
<p><code class="literal">aptitude</code> 可以管理軟體包的多個版本,並且不使用
<code class="literal">/etc/apt/preferences</code>,這會十分直觀。
</p>
</li>
</ul>
</div>
</div>
<div class="section">
<div class="titlepage">
<div>
<div>
<h3 class="title"><a id="_basic_package_management_operations_with_the_commandline"/>2.2.2. 命令列中的基礎軟體包管理操作</h3>
</div>
</div>
</div>
<p>下面是使用
<span class="citerefentry"><span class="refentrytitle">apt</span>(8)</span>,
<span class="citerefentry"><span class="refentrytitle">aptitude</span>(8)</span>
和
<span class="citerefentry"><span class="refentrytitle">apt-get</span>(8)</span>
/
<span class="citerefentry"><span class="refentrytitle">apt-cache</span>(8)</span>
的命令列基本軟體包管理操作。</p>
<div class="table">
<a id="basicpackagemanaaptgetiaptcachei"/>
<p class="title">
<strong>表 2.6. 使用
<span class="citerefentry"><span class="refentrytitle">apt</span>(8)</span>,
<span class="citerefentry"><span class="refentrytitle">aptitude</span>(8)</span>
和
<span class="citerefentry"><span class="refentrytitle">apt-get</span>(8)</span>
/
<span class="citerefentry"><span class="refentrytitle">apt-cache</span>(8)</span>
的命令列基本軟體包管理操作</strong>
</p>
<div class="table-contents">
<table class="table" summary="使用 apt8, aptitude8 和 apt-get8 / apt-cache8 的命令列基本軟體包管理操作" border="1">
<colgroup>
<col style="text-align: left"/>
<col style="text-align: left"/>
<col style="text-align: left"/>
<col style="text-align: left"/>
</colgroup>
<thead>
<tr>
<th style="text-align: left"><code class="literal">apt</code> 語法
</th>
<th style="text-align: left"><code class="literal">aptitude</code> 語法
</th>
<th style="text-align: left"><code class="literal">apt-get</code> / <code class="literal">apt-cache</code> 語法
</th>
<th style="text-align: left">
說明
</th>
</tr>
</thead>
<tbody>
<tr>
<td style="text-align: left">
<code class="literal">apt update</code>
</td>
<td style="text-align: left">
<code class="literal">aptitude update</code>
</td>
<td style="text-align: left">
<code class="literal">apt-get update</code>
</td>
<td style="text-align: left">
更新軟體包檔案庫元資料
</td>
</tr>
<tr>
<td style="text-align: left">
<code class="literal">apt install foo</code>
</td>
<td style="text-align: left">
<code class="literal">aptitude install foo</code>
</td>
<td style="text-align: left">
<code class="literal">apt-get install foo</code>
</td>
<td style="text-align: left">
安裝 “<code class="literal">foo</code>” 軟體包的候選版本以及它的依賴
</td>
</tr>
<tr>
<td style="text-align: left">
<code class="literal">apt upgrade</code>
</td>
<td style="text-align: left">
<code class="literal">aptitude safe-upgrade</code>
</td>
<td style="text-align: left">
<code class="literal">apt-get upgrade</code>
</td>
<td style="text-align: left">
安裝已安裝的軟體包的候選版本並且不移除任何其它的軟體包
</td>
</tr>
<tr>
<td style="text-align: left">
<code class="literal">apt full-upgrade</code>
</td>
<td style="text-align: left">
<code class="literal">aptitude full-upgrade</code>
</td>
<td style="text-align: left">
<code class="literal">apt-get dist-upgrade</code>
</td>
<td style="text-align: left">
安裝已安裝的軟體包的候選版本,並且需要的話會移除其它的軟體包
</td>
</tr>
<tr>
<td style="text-align: left">
<code class="literal">apt remove foo</code>
</td>
<td style="text-align: left">
<code class="literal">aptitude remove foo</code>
</td>
<td style="text-align: left">
<code class="literal">apt-get remove foo</code>
</td>
<td style="text-align: left">
移除 “<code class="literal">foo</code>” 軟體包,但留下配置檔案
</td>
</tr>
<tr>
<td style="text-align: left">
<code class="literal">apt autoremove</code>
</td>
<td style="text-align: left">
N/A
</td>
<td style="text-align: left">
<code class="literal">apt-get autoremove</code>
</td>
<td style="text-align: left">
移除不再需要的自動安裝的軟體包
</td>
</tr>
<tr>
<td style="text-align: left">
<code class="literal">apt purge foo</code>
</td>
<td style="text-align: left">
<code class="literal">aptitude purge foo</code>
</td>
<td style="text-align: left">
<code class="literal">apt-get purge foo</code>
</td>
<td style="text-align: left">
清除 “<code class="literal">foo</code>” 軟體包的配置檔案
</td>
</tr>
<tr>
<td style="text-align: left">
<code class="literal">apt clean</code>
</td>
<td style="text-align: left">
<code class="literal">aptitude clean</code>
</td>
<td style="text-align: left">
<code class="literal">apt-get clean</code>
</td>
<td style="text-align: left">
完全清除本地倉庫的軟體包檢索檔案
</td>
</tr>
<tr>
<td style="text-align: left">
<code class="literal">apt autoclean</code>
</td>
<td style="text-align: left">
<code class="literal">aptitude autoclean</code>
</td>
<td style="text-align: left">
<code class="literal">apt-get autoclean</code>
</td>
<td style="text-align: left">
清除本地倉庫中過時軟體包的軟體包檢索檔案
</td>
</tr>
<tr>
<td style="text-align: left">
<code class="literal">apt show foo</code>
</td>
<td style="text-align: left">
<code class="literal">aptitude show foo</code>
</td>
<td style="text-align: left">
<code class="literal">apt-cache show foo</code>
</td>
<td style="text-align: left">
顯示 “<code class="literal">foo</code>” 軟體包的詳細資訊
</td>
</tr>
<tr>
<td style="text-align: left">
<code class="literal">apt search <正則表示式></code>
</td>
<td style="text-align: left">
<code class="literal">aptitude search <regex></code>
</td>
<td style="text-align: left">
<code class="literal">apt-cache search <regex></code>
</td>
<td style="text-align: left">
搜尋匹配 <regex> 的軟體包
</td>
</tr>
<tr>
<td style="text-align: left">
N/A
</td>
<td style="text-align: left">
<code class="literal">aptitude why <regex></code>
</td>
<td style="text-align: left">
N/A
</td>
<td style="text-align: left">
解釋匹配 <regex> 的軟體包必須被安裝的原因
</td>
</tr>
<tr>
<td style="text-align: left">
N/A
</td>
<td style="text-align: left">
<code class="literal">aptitude why-not <regex></code>
</td>
<td style="text-align: left">
N/A
</td>
<td style="text-align: left">
解釋匹配 <regex> 的軟體包不必安裝的原因
</td>
</tr>
<tr>
<td style="text-align: left">
N/A
</td>
<td style="text-align: left">
<code class="literal">aptitude search '~i!~M'</code>
</td>
<td style="text-align: left">
<code class="literal">apt-mark showmanual</code>
</td>
<td style="text-align: left">
列出手動安裝的軟體包
</td>
</tr>
</tbody>
</table>
</div>
</div>
<br class="table-break"/>
<div class="note" style="margin-left: 0.5in; margin-right: 0.5in;">
<table border="0" summary="Note">
<tr>
<td rowspan="2" align="center" valign="top">
<img alt="[注意]" src="images/note.png"/>
</td>
<th align="left">注意</th>
</tr>
<tr>
<td align="left" valign="top">
<p>雖然 <code class="literal">aptitude</code>
命令提供了豐富的功能,例如增強的軟體包解析器,但它的複雜程度導致了(或可能導致)一些退步,例如 <a class="ulink" href="https://bugs.debian.org/411123">Bug
#411123</a>、<a class="ulink" href="https://bugs.debian.org/514930">Bug #514930</a> 及 <a class="ulink" href="https://bugs.debian.org/570377">Bug #570377</a>。如有疑問,請使用
<code class="literal">apt</code>,<code class="literal">apt-get</code> 和
<code class="literal">apt-cache</code> 命令來替代 <code class="literal">aptitude</code> 命令。</p>
</td>
</tr>
</table>
</div>
<div class="note" style="margin-left: 0.5in; margin-right: 0.5in;">
<table border="0" summary="Note">
<tr>
<td rowspan="2" align="center" valign="top">
<img alt="[注意]" src="images/note.png"/>
</td>
<th align="left">注意</th>
</tr>
<tr>
<td align="left" valign="top">
<p>因為在 <code class="literal">lenny</code> 版本之後的 Debian 系統中,
<code class="literal">apt</code>、<code class="literal">apt-get</code> 和
<code class="literal">aptitude</code> 會共享自動安裝的軟體包的狀態(參見<a class="xref" href="ch02.zh-tw.html#_the_package_state_for_apt" title="2.5.5. APT 的軟體包狀態">第 2.5.5 节 “APT 的軟體包狀態”</a>),因此你可以混合使用這些工具而不會出現嚴重的麻煩(參見 <a class="ulink" href="https://bugs.debian.org/594490">Bug #594490</a>)。</p>
</td>
</tr>
</table>
</div>
<p>“<code class="literal">aptitude why <regex></code>” 可以通過 “<code class="literal">aptitude -v
why <regex></code>” 列出更多的資訊。類似的資訊可以通過"<code class="literal">apt rdepends
<package></code>" 或 “<code class="literal">apt-cache rdepends
<package></code>” 獲取。</p>
<p>當 <code class="literal">aptitude</code> 命令在命令列模式下啟動後遇到了一些問題(例如軟體包衝突),你可以在之後的提示中按下
“<code class="literal">e</code>” 鍵切換到全屏的互動模式。</p>
<p>你可以在 “<code class="literal">aptitude</code>” 後面使用的命令選項。</p>
<div class="table">
<a id="notablecommandopionsforaptitudei"/>
<p class="title">
<strong>表 2.7. <span class="citerefentry"><span class="refentrytitle">aptitude</span>(8)</span>
中重要的命令選項</strong>
</p>
<div class="table-contents">
<table class="table" summary="aptitude8 中重要的命令選項" border="1">
<colgroup>
<col style="text-align: left"/>
<col style="text-align: left"/>
</colgroup>
<thead>
<tr>
<th style="text-align: left">
命令選項
</th>
<th style="text-align: left">
說明
</th>
</tr>
</thead>
<tbody>
<tr>
<td style="text-align: left">
<code class="literal">-s</code>
</td>
<td style="text-align: left">
模擬命令的結果
</td>
</tr>
<tr>
<td style="text-align: left">
<code class="literal">-d</code>
</td>
<td style="text-align: left">
僅下載,不進行安裝/更新
</td>
</tr>
<tr>
<td style="text-align: left">
<code class="literal">-D</code>
</td>
<td style="text-align: left">
在自動安裝和刪除前,顯示簡要的說明
</td>
</tr>
</tbody>
</table>
</div>
</div>
<br class="table-break"/>
<p>更多內容參見
<span class="citerefentry"><span class="refentrytitle">aptitude</span>(8)</span>
和位於 “<code class="literal">/usr/share/doc/aptitude/README</code>” 的 “aptitude 使用者手冊”。</p>
<div class="tip" style="margin-left: 0.5in; margin-right: 0.5in;">
<table border="0" summary="Tip">
<tr>
<td rowspan="2" align="center" valign="top">
<img alt="[提示]" src="images/tip.png"/>
</td>
<th align="left">提示</th>
</tr>
<tr>
<td align="left" valign="top">
<p><code class="literal">dselect</code> 軟體包依舊可用,並且曾是之前釋出的版本中首選的全屏互動式軟體包管理工具。</p>
</td>
</tr>
</table>
</div>
</div>
<div class="section">
<div class="titlepage">
<div>
<div>
<h3 class="title"><a id="_interactive_use_of_aptitude"/>2.2.3. aptitude 的互動式使用</h3>
</div>
</div>
</div>
<p>要使用互動式的軟體包管理,你可以像下面那樣以互動模式啟動 <code class="literal">aptitude</code> 。</p>
<pre class="screen">$ sudo aptitude -u
Password:</pre>
<p>這將更新檔案庫資訊的本地副本,並以選單的形式全屏顯示軟體包列表。 aptitude 將它的配置放在
“<code class="literal">~/.aptitude/config</code>”。</p>
<div class="tip" style="margin-left: 0.5in; margin-right: 0.5in;">
<table border="0" summary="Tip">
<tr>
<td rowspan="2" align="center" valign="top">
<img alt="[提示]" src="images/tip.png"/>
</td>
<th align="left">提示</th>
</tr>
<tr>
<td align="left" valign="top">
<p>如果你想用 root 的配置而非使用者的,可以在上面的例子中使用 “<code class="literal">sudo -H aptitude …</code>” 代替
“<code class="literal">sudo aptitude …</code>” 。</p>
</td>
</tr>
</table>
</div>
<div class="tip" style="margin-left: 0.5in; margin-right: 0.5in;">
<table border="0" summary="Tip">
<tr>
<td rowspan="2" align="center" valign="top">
<img alt="[提示]" src="images/tip.png"/>
</td>
<th align="left">提示</th>
</tr>
<tr>
<td align="left" valign="top">
<p>當 <code class="literal">aptitude</code> 以互動模式啟動時,會自動設定<span class="strong"><strong>待執行的動作</strong></span>。如果您不喜歡,您可以通過選單:“動作” → “取消待執行的動作” 來取消它。</p>
</td>
</tr>
</table>
</div>
</div>
<div class="section">
<div class="titlepage">
<div>
<div>
<h3 class="title"><a id="_key_bindings_of_aptitude"/>2.2.4. aptitude 的按鍵繫結</h3>
</div>
</div>
</div>
<p>在全屏模式下瀏覽軟體包狀態和設定動作的按鍵如下。</p>
<div class="table">
<a id="listofkeybindingsforaptitude"/>
<p class="title">
<strong>表 2.8. aptitude 的按鍵繫結</strong>
</p>
<div class="table-contents">
<table class="table" summary="aptitude 的按鍵繫結" border="1">
<colgroup>
<col style="text-align: left"/>
<col style="text-align: left"/>
</colgroup>
<thead>
<tr>
<th style="text-align: left">
快捷鍵
</th>
<th style="text-align: left">
鍵綁定功能
</th>
</tr>
</thead>
<tbody>
<tr>
<td style="text-align: left"><code class="literal">F10</code> or <code class="literal">Ctrl-t</code>
</td>
<td style="text-align: left">
選單
</td>
</tr>
<tr>
<td style="text-align: left">
<code class="literal">?</code>
</td>
<td style="text-align: left">
顯示按鍵<span class="strong"><strong>幫助</strong></span>(更加完整的清單)
</td>
</tr>
<tr>
<td style="text-align: left"><code class="literal">F10</code> → 幫助 → 使用者手冊
</td>
<td style="text-align: left">
顯示使用者手冊
</td>
</tr>
<tr>
<td style="text-align: left">
<code class="literal">u</code>
</td>
<td style="text-align: left">
更新軟體包檔案庫資訊
</td>
</tr>
<tr>
<td style="text-align: left">
<code class="literal">+</code>
</td>
<td style="text-align: left">
標記該軟體包以便<span class="strong"><strong>升級</strong></span>或<span class="strong"><strong>安裝</strong></span>
</td>
</tr>
<tr>
<td style="text-align: left">
<code class="literal">-</code>
</td>
<td style="text-align: left">
標記該軟體包以便<span class="strong"><strong>移除</strong></span>(保留配置檔案)
</td>
</tr>
<tr>
<td style="text-align: left">
<code class="literal">_</code>
</td>
<td style="text-align: left">
標記該軟體包以便<span class="strong"><strong>清除</strong></span>(移除配置檔案)
</td>
</tr>
<tr>
<td style="text-align: left">
<code class="literal">=</code>
</td>
<td style="text-align: left">
將軟體包設為<span class="strong"><strong>保持</strong></span>狀態
</td>
</tr>
<tr>
<td style="text-align: left">
<code class="literal">U</code>
</td>
<td style="text-align: left">
標記所有可升級包(動作如同 <span class="strong"><strong>full-upgrade</strong></span>)
</td>
</tr>
<tr>
<td style="text-align: left">
<code class="literal">g</code>
</td>
<td style="text-align: left">
開始 <span class="strong"><strong>下載</strong></span> 並 <span class="strong"><strong>安裝</strong></span> 所選擇包
</td>
</tr>
<tr>
<td style="text-align: left">
<code class="literal">q</code>
</td>
<td style="text-align: left">
退出該介面並儲存變更
</td>
</tr>
<tr>
<td style="text-align: left">
<code class="literal">x</code>
</td>
<td style="text-align: left">
退出該介面並清除變更
</td>
</tr>
<tr>
<td style="text-align: left">
<code class="literal">Enter</code>
</td>
<td style="text-align: left">
檢視軟體包的資訊
</td>
</tr>
<tr>
<td style="text-align: left">
<code class="literal">C</code>
</td>
<td style="text-align: left">
檢視軟體包的變更記錄
</td>
</tr>
<tr>
<td style="text-align: left">
<code class="literal">l</code>
</td>
<td style="text-align: left">
變更軟體包的顯示限制
</td>
</tr>
<tr>
<td style="text-align: left">
<code class="literal">/</code>
</td>
<td style="text-align: left">
搜尋匹配的第一個軟體包
</td>
</tr>
<tr>
<td style="text-align: left">
<code class="literal">\</code>
</td>
<td style="text-align: left">
重複上一個搜尋
</td>
</tr>
</tbody>
</table>
</div>
</div>
<br class="table-break"/>
<p>可以通過命令列指定檔名稱,也可以通過按 “<code class="literal">l</code>” 或 “<code class="literal">/</code>”
之後在選單提示下輸入下列所述的 aptitude 正則表示式。aptitude 正則表示式可以使用 “<code class="literal">~n</code>”
開頭後接軟體包名稱的字串來精確匹配軟體包名稱。</p>
<div class="tip" style="margin-left: 0.5in; margin-right: 0.5in;">
<table border="0" summary="Tip">
<tr>
<td rowspan="2" align="center" valign="top">
<img alt="[提示]" src="images/tip.png"/>
</td>
<th align="left">提示</th>
</tr>
<tr>
<td align="left" valign="top">
<p>你需要在視覺化介面中按下 “<code class="literal">U</code>” 鍵讓所有的已安裝軟體包升級到<span class="strong"><strong>可用版本</strong></span> 。否則只有選中的軟體包和一些與之有依賴關係的軟體包才能被升級到<span class="strong"><strong>可用版本</strong></span>。</p>
</td>
</tr>
</table>
</div>
</div>
<div class="section">
<div class="titlepage">
<div>
<div>
<h3 class="title"><a id="_package_views_under_aptitude"/>2.2.5. aptitude 軟體包檢視</h3>
</div>
</div>
</div>
<p><span class="citerefentry"><span class="refentrytitle">aptitude</span>(8)</span>
全屏互動模式下,軟體包列表裡的軟體包會像下面的例子那樣顯示。</p>
<pre class="screen">idA libsmbclient -2220kB 3.0.25a-1 3.0.25a-2</pre>
<p>該行的從左到右的含義如下。</p>
<div class="itemizedlist">
<ul class="itemizedlist">
<li class="listitem">
<p>
“狀態”標籤 (第一個字母)
</p>
</li>
<li class="listitem">
<p>
“動作”標籤(第二個字母)
</p>
</li>
<li class="listitem">
<p>
“自動”標籤(第三個字母)
</p>
</li>
<li class="listitem">
<p>
軟體包名稱
</p>
</li>
<li class="listitem">
<p>
該“動作”對磁碟空間的變化
</p>
</li>
<li class="listitem">
<p>
軟體包當前版本
</p>
</li>
<li class="listitem">
<p>
軟體包可用版本
</p>
</li>
</ul>
</div>
<div class="tip" style="margin-left: 0.5in; margin-right: 0.5in;">
<table border="0" summary="Tip">
<tr>
<td rowspan="2" align="center" valign="top">
<img alt="[提示]" src="images/tip.png"/>
</td>
<th align="left">提示</th>
</tr>
<tr>
<td align="left" valign="top">
<p>您可以在<span class="strong"><strong>幫助</strong></span>選單中找到完整的標籤列表,按“<code class="literal">?</code>”即可在幫助選單底部顯示。</p>
</td>
</tr>
</table>
</div>
<p><span class="strong"><strong>可用版本</strong></span> 的選擇是依據當前的本地首選項(參見
<span class="citerefentry"><span class="refentrytitle">apt_preferences</span>(5)</span>
和 <a class="xref" href="ch02.zh-tw.html#_tweaking_candidate_version" title="2.7.3. 調整候選版本">第 2.7.3 节 “調整候選版本”</a>)。</p>
<p>軟體包檢視的幾種型別都可以在“<code class="literal"> 檢視 </code>”選單下找到。</p>
<div class="table">
<a id="listofviewsforaptitude"/>
<p class="title">
<strong>表 2.9. aptitude 檢視</strong>
</p>
<div class="table-contents">
<table class="table" summary="aptitude 檢視" border="1">
<colgroup>
<col style="text-align: left"/>
<col style="text-align: left"/>
<col style="text-align: left"/>
</colgroup>
<thead>
<tr>
<th style="text-align: left">
檢視
</th>
<th style="text-align: left">
狀態
</th>
<th style="text-align: left">
檢視描述
</th>
</tr>
</thead>
<tbody>
<tr>
<td style="text-align: left">
<code class="literal">Package View</code>
</td>
<td style="text-align: left">
良好
</td>
<td style="text-align: left">
參見 <a class="xref" href="ch02.zh-tw.html#standard-package-views" title="表 2.10. 標準軟體包檢視的分類">表 2.10 “標準軟體包檢視的分類”</a> (預設)
</td>
</tr>
<tr>
<td style="text-align: left">
<code class="literal">Audit Recommendations</code>
</td>
<td style="text-align: left">
良好
</td>
<td style="text-align: left">
列出推薦安裝但還沒有安裝的軟體包
</td>
</tr>
<tr>
<td style="text-align: left">
<code class="literal">Flat Package List</code>
</td>
<td style="text-align: left">
良好
</td>
<td style="text-align: left">
不分類地列出軟體包 (用於正則表示式)
</td>
</tr>
<tr>
<td style="text-align: left">
<code class="literal">Debtags Browser</code>
</td>
<td style="text-align: left">
非常有用
</td>
<td style="text-align: left">
列出由 <a class="ulink" href="https://debtags.debian.org/">debtags</a> 進行分類的軟體包
</td>
</tr>
<tr>
<td style="text-align: left">
<code class="literal">Categorical Browser</code>
</td>
<td style="text-align: left">
已棄用
</td>
<td style="text-align: left">
列出按照類別分類的軟體包(用<code class="literal">Debtags 瀏覽器</code>替代)
</td>
</tr>
</tbody>
</table>
</div>
</div>
<br class="table-break"/>
<div class="note" style="margin-left: 0.5in; margin-right: 0.5in;">
<table border="0" summary="Note">
<tr>
<td rowspan="2" align="center" valign="top">
<img alt="[注意]" src="images/note.png"/>
</td>
<th align="left">注意</th>
</tr>
<tr>
<td align="left" valign="top">
<p>請幫助我們<a class="ulink" href="https://debtags.debian.org/getting-started/">改進用 debtags
標記的軟體包!</a></p>
</td>
</tr>
</table>
</div>
<p>標準“<code class="literal">軟體包檢視</code>”分類軟體包的方法與帶有一些額外功能的 <code class="literal">dselect</code>
有點像。</p>
<div class="table">
<a id="standard-package-views"/>
<p class="title">
<strong>表 2.10. 標準軟體包檢視的分類</strong>
</p>
<div class="table-contents">
<table class="table" summary="標準軟體包檢視的分類" border="1">
<colgroup>
<col style="text-align: left"/>
<col style="text-align: left"/>
</colgroup>
<thead>
<tr>
<th style="text-align: left">
分類
</th>
<th style="text-align: left">
檢視描述
</th>
</tr>
</thead>
<tbody>
<tr>
<td style="text-align: left">
<code class="literal">Upgradable Packages</code>
</td>
<td style="text-align: left">
按照 <code class="literal">section</code> → <code class="literal">area</code> →
<code class="literal">軟體包</code> 的順序顯示列出軟體包
</td>
</tr>
<tr>
<td style="text-align: left">
<code class="literal">New Packages</code>
</td>
<td style="text-align: left">
同上
</td>
</tr>
<tr>
<td style="text-align: left">
<code class="literal">Installed Packages</code>
</td>
<td style="text-align: left">
同上
</td>
</tr>
<tr>
<td style="text-align: left">
<code class="literal">Not Installed Packages</code>
</td>
<td style="text-align: left">
同上
</td>
</tr>
<tr>
<td style="text-align: left">
<code class="literal">Obsolete and Locally Created Packages</code>
</td>
<td style="text-align: left">
同上
</td>
</tr>
<tr>
<td style="text-align: left">
<code class="literal">Virtual Packages</code>
</td>
<td style="text-align: left">
列出同樣功能的軟體包
</td>
</tr>
<tr>
<td style="text-align: left">
<code class="literal">Tasks</code>
</td>
<td style="text-align: left">
列出一個特定任務所需的不同功能的軟體包
</td>
</tr>
</tbody>
</table>
</div>
</div>
<br class="table-break"/>
<div class="tip" style="margin-left: 0.5in; margin-right: 0.5in;">
<table border="0" summary="Tip">
<tr>
<td rowspan="2" align="center" valign="top">
<img alt="[提示]" src="images/tip.png"/>
</td>
<th align="left">提示</th>
</tr>
<tr>
<td align="left" valign="top">
<p><code class="literal">軟體集</code>檢視可以用來為你的任務選出最佳的軟體包。</p>
</td>
</tr>
</table>
</div>
</div>
<div class="section">
<div class="titlepage">
<div>
<div>
<h3 class="title"><a id="_search_method_options_with_aptitude"/>2.2.6. aptitude 搜尋方式選項</h3>
</div>
</div>
</div>
<p>aptitude 提供了幾個可以使用正則表示式來搜尋軟體包的選項。</p>
<div class="itemizedlist">
<ul class="itemizedlist">
<li class="listitem">
<p>
shell 命令列:
</p>
<div class="itemizedlist">
<ul class="itemizedlist">
<li class="listitem">
<p>
“<code class="literal">aptitude search '<aptitude_regex>'</code>”
列出安裝狀態、軟體包名稱和匹配軟體包的剪短描述
</p>
</li>
<li class="listitem">
<p>
“<code class="literal">aptitude show '<package_name>'</code>” 列出軟體包的詳細描述
</p>
</li>
</ul>
</div>
</li>
<li class="listitem">
<p>
全屏互動模式:
</p>
<div class="itemizedlist">
<ul class="itemizedlist">
<li class="listitem">
<p>
"<code class="literal">l</code>" 可以限制匹配軟體包的檢視
</p>
</li>
<li class="listitem">
<p>
"<code class="literal">/</code>" 搜尋匹配的軟體包
</p>
</li>
<li class="listitem">
<p>
"<code class="literal">\</code>" 向後搜尋匹配的軟體包
</p>
</li>
<li class="listitem">
<p>
"<code class="literal">n</code>" 查詢下一個
</p>
</li>
<li class="listitem">
<p>
"<code class="literal">N</code>" 查詢上一個
</p>
</li>
</ul>
</div>
</li>
</ul>
</div>
<div class="tip" style="margin-left: 0.5in; margin-right: 0.5in;">
<table border="0" summary="Tip">
<tr>
<td rowspan="2" align="center" valign="top">
<img alt="[提示]" src="images/tip.png"/>
</td>
<th align="left">提示</th>
</tr>
<tr>
<td align="left" valign="top">
<p>字串 <package_name> 被看作軟體包名稱的精確字串匹配,除非它是以 "<code class="literal">~</code>"
開頭的正則表示式。</p>
</td>
</tr>
</table>
</div>
</div>
<div class="section">
<div class="titlepage">
<div>
<div>
<h3 class="title"><a id="_the_aptitude_regex_formula"/>2.2.7. aptitude 正則表示式</h3>
</div>
</div>
</div>
<p>aptitude 正則表示式是類 mutt 的拓展 <span class="strong"><strong>ERE</strong></span>(參見 <a class="xref" href="ch01.zh-tw.html#_regular_expressions" title="1.6.2. 正則表達式">第 1.6.2 节 “正則表達式”</a>),<code class="literal">aptitude</code>
具體的特殊匹配規則擴充套件如下。</p>
<div class="table">
<a id="listoftheaptituderegexformula"/>
<p class="title">
<strong>表 2.11. aptitude 正則表示式</strong>
</p>
<div class="table-contents">
<table class="table" summary="aptitude 正則表示式" border="1">
<colgroup>
<col style="text-align: left"/>
<col style="text-align: left"/>
</colgroup>
<thead>
<tr>
<th style="text-align: left">
擴充套件匹配規則描述
</th>
<th style="text-align: left">
正則表示式
</th>
</tr>
</thead>
<tbody>
<tr>
<td style="text-align: left">
匹配軟體包名稱
</td>
<td style="text-align: left">
<code class="literal">~n<regex_name></code>
</td>
</tr>
<tr>
<td style="text-align: left">
匹配描述
</td>
<td style="text-align: left">
<code class="literal">~d<regex_description></code>
</td>
</tr>
<tr>
<td style="text-align: left">
匹配軟體集名稱
</td>
<td style="text-align: left">
<code class="literal">~t<regex_task></code>
</td>
</tr>
<tr>
<td style="text-align: left">
匹配 debtag
</td>
<td style="text-align: left">
<code class="literal">~G<regex_debtag></code>
</td>
</tr>
<tr>
<td style="text-align: left">
匹配維護者
</td>
<td style="text-align: left">
<code class="literal">~m<regex_maintainer></code>
</td>
</tr>
<tr>
<td style="text-align: left">
匹配軟體包的 section
</td>
<td style="text-align: left">
<code class="literal">~s<regex_section></code>
</td>
</tr>
<tr>
<td style="text-align: left">
匹配軟體包版本
</td>
<td style="text-align: left">
<code class="literal">~V<regex_version></code>
</td>
</tr>
<tr>
<td style="text-align: left">
匹配檔案庫
</td>
<td style="text-align: left"><code class="literal">~A{stretch,buster,sid</code>}
</td>
</tr>
<tr>
<td style="text-align: left">
匹配來源
</td>
<td style="text-align: left"><code class="literal">~O{debian,…</code>}
</td>
</tr>
<tr>
<td style="text-align: left">
匹配優先順序
</td>
<td style="text-align: left"><code class="literal">~p{extra,important,optional,required,standard</code>}
</td>
</tr>
<tr>
<td style="text-align: left">
匹配必要的軟體包
</td>
<td style="text-align: left">
<code class="literal">~E</code>
</td>
</tr>
<tr>
<td style="text-align: left">
匹配虛擬軟體包
</td>
<td style="text-align: left">
<code class="literal">~v</code>
</td>
</tr>
<tr>
<td style="text-align: left">
匹配新的軟體包
</td>
<td style="text-align: left">
<code class="literal">~N</code>
</td>
</tr>
<tr>
<td style="text-align: left">
匹配待執行的動作
</td>
<td style="text-align: left"><code class="literal">~a{install,upgrade,downgrade,remove,purge,hold,keep</code>}
</td>
</tr>
<tr>
<td style="text-align: left">
匹配已安裝軟體包
</td>
<td style="text-align: left">
<code class="literal">~i</code>
</td>
</tr>
<tr>
<td style="text-align: left">
匹配帶有 <span class="strong"><strong>A</strong></span> 標籤的已安裝軟體包(自動安裝的軟體包)
</td>
<td style="text-align: left">
<code class="literal">~M</code>
</td>
</tr>
<tr>
<td style="text-align: left">
匹配不帶有 <span class="strong"><strong>A</strong></span> 標籤的已安裝軟體包(管理員選擇的軟體包)
</td>
<td style="text-align: left">
<code class="literal">~i!~M</code>
</td>
</tr>
<tr>
<td style="text-align: left">
匹配已安裝並且是可升級的軟體包
</td>
<td style="text-align: left">
<code class="literal">~U</code>
</td>
</tr>
<tr>
<td style="text-align: left">
匹配已刪除但未清除的軟體包
</td>
<td style="text-align: left">
<code class="literal">~c</code>
</td>
</tr>
<tr>
<td style="text-align: left">
匹配已移除,已清除或可移除的軟體包
</td>
<td style="text-align: left">
<code class="literal">~g</code>
</td>
</tr>
<tr>
<td style="text-align: left">
匹配破壞依賴關係的軟體包
</td>
<td style="text-align: left">
<code class="literal">~b</code>
</td>
</tr>
<tr>
<td style="text-align: left">
匹配破壞 <type> 依賴關係的軟體包
</td>
<td style="text-align: left">
<code class="literal">~B<type></code>
</td>
</tr>
<tr>
<td style="text-align: left">
匹配 <pattern> 軟體包的 <type> 依賴關係
</td>
<td style="text-align: left">
<code class="literal">~D[<type>:]<pattern></code>
</td>
</tr>
<tr>
<td style="text-align: left">
匹配 <pattern> 軟體包破壞的 <type> 依賴關係
</td>
<td style="text-align: left">
<code class="literal">~DB[<type>:]<pattern></code>
</td>
</tr>
<tr>
<td style="text-align: left">
匹配依賴於 <pattern> 軟體包的 <type> 依賴的軟體包
</td>
<td style="text-align: left">
<code class="literal">~R[<type>:]<pattern></code>
</td>
</tr>
<tr>
<td style="text-align: left">
匹配依賴於 <pattern> 軟體包破壞的 <type> 依賴的軟體包
</td>
<td style="text-align: left">
<code class="literal">~RB[<type>:]<pattern></code>
</td>
</tr>
<tr>
<td style="text-align: left">
匹配其它已安裝軟體包所依賴的軟體包
</td>
<td style="text-align: left">
<code class="literal">~R~i</code>
</td>
</tr>
<tr>
<td style="text-align: left">
匹配沒有被其它已安裝軟體包所依賴的軟體包
</td>
<td style="text-align: left">
<code class="literal">!~R~i</code>
</td>
</tr>
<tr>
<td style="text-align: left">
匹配其它已安裝軟體包所依賴或建議安裝的軟體包
</td>
<td style="text-align: left">
<code class="literal">~R~i|~Rrecommends:~i</code>
</td>
</tr>
<tr>
<td style="text-align: left">
匹配 <pattern> 過濾版本之後的軟體包
</td>
<td style="text-align: left">
<code class="literal">~S filter <pattern></code>
</td>
</tr>
<tr>
<td style="text-align: left">
匹配所有軟體包(真)
</td>
<td style="text-align: left">
<code class="literal">~T</code>
</td>
</tr>
<tr>
<td style="text-align: left">
不匹配軟體包(假)
</td>
<td style="text-align: left">
<code class="literal">~F</code>
</td>
</tr>
</tbody>
</table>
</div>
</div>
<br class="table-break"/>
<div class="itemizedlist">
<ul class="itemizedlist">
<li class="listitem">
<p>
正則表示式使用的是 <span class="strong"><strong>ERE</strong></span>,就跟
<span class="citerefentry"><span class="refentrytitle">egrep</span>(1)</span>、<span class="citerefentry"><span class="refentrytitle">awk</span>(1)</span>
和
<span class="citerefentry"><span class="refentrytitle">perl</span>(1)</span>
這些典型的類 Unix 文字工具中所使用的
“<code class="literal">^</code>”、“<code class="literal">.*</code>”、“<code class="literal">$</code>” 等是相同的。
</p>
</li>
<li class="listitem">
<p>
依賴關係 <type>
是一種特定的軟體包相互關係(depends、predepends、recommends、suggests、conflicts、replaces、provides)。
</p>
</li>
<li class="listitem">
<p>
預設的 <type> 依賴關係是 “depends”。
</p>
</li>
</ul>
</div>
<div class="tip" style="margin-left: 0.5in; margin-right: 0.5in;">
<table border="0" summary="Tip">
<tr>
<td rowspan="2" align="center" valign="top">
<img alt="[提示]" src="images/tip.png"/>
</td>
<th align="left">提示</th>
</tr>
<tr>
<td align="left" valign="top">
<p>當 <regex_pattern> 為空字串時,請立即在命令後面新增 "<code class="literal">~T</code>"。</p>
</td>
</tr>
</table>
</div>
<p>下面是一些快捷方式。</p>
<div class="itemizedlist">
<ul class="itemizedlist">
<li class="listitem">
<p>
"<code class="literal">~P<term></code>" ==
"<code class="literal">~Dprovides:<term></code>"
</p>
</li>
<li class="listitem">
<p>
"<code class="literal">~C<term></code>" ==
"<code class="literal">~Dconflicts:<term></code>"
</p>
</li>
<li class="listitem">
<p>
"<code class="literal">…~W term</code>" == "<code class="literal">(…|term)</code>"
</p>
</li>
</ul>
</div>
<p>使用者熟悉 <code class="literal">mutt</code> 的快速選擇,因為 mutt 的靈感來源於表示式語法。參見 “使用者手冊”
“<code class="literal">/usr/share/doc/aptitude/README</code>” 中的 “SEARCHING, LIMITING,
AND EXPRESSIONS”。</p>
<div class="note" style="margin-left: 0.5in; margin-right: 0.5in;">
<table border="0" summary="Note">
<tr>
<td rowspan="2" align="center" valign="top">
<img alt="[注意]" src="images/note.png"/>
</td>
<th align="left">注意</th>
</tr>
<tr>
<td align="left" valign="top">
<p><code class="literal">lenny</code> 版本的
<span class="citerefentry"><span class="refentrytitle">aptitude</span>(8)</span>
中,新的<span class="strong"><strong>長格式</strong></span>語法,例如
“<code class="literal">?broken</code>”,在正則表示式中可以用來等效為它舊的<span class="strong"><strong>短格式</strong></span> “<code class="literal">~b</code>”。現在空格字元 “<code class="literal">
</code>” 被認為是除了波浪字元 “<code class="literal">~</code>” 外的另一個正則表示式終止字元。新的<span class="strong"><strong>長格式</strong></span>語法參見 “使用者手冊”。</p>
</td>
</tr>
</table>
</div>
</div>
<div class="section">
<div class="titlepage">
<div>
<div>
<h3 class="title"><a id="_dependency_resolution_of_aptitude"/>2.2.8. aptitude 的依賴解決</h3>
</div>
</div>
</div>
<p>如果通過選單 “<code class="literal">F10</code> → 選項 → 首選項 → 正在處理依賴關係” 進行相應的設定,則在
<code class="literal">aptitude</code> 中選擇一個軟體包時,不僅會將其 “<code class="literal">Depends:</code>”
列表中的軟體包選上,“<code class="literal">Recommends:</code>” 列表中的軟體包也會被選上。在
<code class="literal">aptitude</code> 下,這些自動安裝的軟體包在不再需要時會自動移除。</p>
<p><code class="literal">aptitude</code> 命令中控制 “自動安裝” 行為的標籤也可以通過 <code class="literal">apt</code>
軟體包中的
<span class="citerefentry"><span class="refentrytitle">apt-mark</span>(8)</span>
命令來設定。</p>
</div>
<div class="section">
<div class="titlepage">
<div>
<div>
<h3 class="title"><a id="_package_activity_logs"/>2.2.9. 軟體包活動日誌</h3>
</div>
</div>
</div>
<p>你可以在日誌檔案裡查詢到軟體包活動歷史。</p>
<div class="table">
<a id="thelogfilesforpackageactivities"/>
<p class="title">
<strong>表 2.12. 軟體包活動日誌檔案</strong>
</p>
<div class="table-contents">
<table class="table" summary="軟體包活動日誌檔案" border="1">
<colgroup>
<col style="text-align: left"/>
<col style="text-align: left"/>
</colgroup>
<thead>
<tr>
<th style="text-align: left">
檔案
</th>
<th style="text-align: left">
內容
</th>
</tr>
</thead>
<tbody>
<tr>
<td style="text-align: left">
<code class="literal">/var/log/dpkg.log</code>
</td>
<td style="text-align: left">
<code class="literal">dpkg</code> 級的軟體包活動日誌
</td>
</tr>
<tr>
<td style="text-align: left">
<code class="literal">/var/log/apt/term.log</code>
</td>
<td style="text-align: left">
通用 APT 活動日誌
</td>
</tr>
<tr>
<td style="text-align: left">
<code class="literal">/var/log/aptitude</code>
</td>
<td style="text-align: left">
<code class="literal">aptitude</code> 命令活動日誌
</td>
</tr>
</tbody>
</table>
</div>
</div>
<br class="table-break"/>
<p>事實上,很難從這些日誌上快速獲得有用的資訊。較簡便的方法參見 <a class="xref" href="ch09.zh-tw.html#_recording_changes_in_configuration_files" title="9.2.10. 記錄配置檔案的變更">第 9.2.10 节 “記錄配置檔案的變更”</a> 。</p>
</div>
</div>
<div class="section">
<div class="titlepage">
<div>
<div>
<h2 class="title"><a id="_examples_of_aptitude_operations"/>2.3. aptitude 操作範例</h2>
</div>
</div>
</div>
<p>下面是一些
<span class="citerefentry"><span class="refentrytitle">aptitude</span>(8)</span>
的操作範例。</p>
<div class="section">
<div class="titlepage">
<div>
<div>
<h3 class="title"><a id="_listing_packages_with_regex_matching_on_package_names"/>2.3.1. 通過正則表示式匹配軟體包名稱來列出軟體包</h3>
</div>
</div>
</div>
<p>下面的命令列出了通過正則表示式匹配軟體包名稱來列出軟體包。</p>
<pre class="screen">$ aptitude search '~n(pam|nss).*ldap'
p libnss-ldap - 使用 LDAP 作為名稱服務的 NSS 模組
p libpam-ldap - 允許 LDAP 介面的插入式驗證模組</pre>
<p>這種方式查詢精確的軟體包名稱很方便。</p>
</div>
<div class="section">
<div class="titlepage">
<div>
<div>
<h3 class="title"><a id="_browsing_with_the_regex_matching"/>2.3.2. 使用正則表示式匹配瀏覽</h3>
</div>
</div>
</div>
<p>在"新扁平軟體包列表" 中使用 "<code class="literal">l</code>" 提示檢視,正則表示式
"<code class="literal">~dipv6</code>" 可以限制性地匹配軟體描述,並互動式地展示資訊。</p>
</div>
<div class="section">
<div class="titlepage">
<div>
<div>
<h3 class="title"><a id="_purging_removed_packages_for_good"/>2.3.3. 完整地清理已刪除軟體包</h3>
</div>
</div>
</div>
<p>您能清除所有已移除軟體包的剩餘配置檔案。</p>
<p>檢查以下命令的結果。</p>
<pre class="screen"># aptitude search '~c'</pre>
<p>如果您確認所列出的軟體包應當被完整刪除,請執行以下命令。</p>
<pre class="screen"># aptitude purge '~c'</pre>
<p>您可能想要在互動模式中做類似的操作進行細粒度的控制。</p>
<p>在 "新軟體包檢視" 使用 "<code class="literal">l</code>" 提示並輸入正則匹配式 "<code class="literal">~c</code>"
,這將僅匹配軟體包,比如, "移除但不清空配置" 。所有符合匹配的軟體包可以在頂層標題上使用 "<code class="literal">[</code>" 顯示。</p>
<p>當您在頂層標題如 “未安裝的包” 中輸入
“<code class="literal">_</code>”,當前標題下的軟體包只有匹配正則式才會被清除。您還可以使用“<code class="literal">=</code>”
來互動式地排除軟體包以避免刪除它們。</p>
<p>這種技術方便易用且適用於許多其他的命令鍵。</p>
</div>
<div class="section">
<div class="titlepage">
<div>
<div>
<h3 class="title"><a id="_tidying_auto_manual_install_status"/>2.3.4. 調整自動/手動安裝狀態</h3>
</div>
</div>
</div>
<p>下面是調整軟體包的自動/手動安裝狀態的方法(在使用非 aptitude 軟體包管理器之後)。</p>
<div class="orderedlist">
<ol class="orderedlist">
<li class="listitem">
<p>
用 root 以互動模式執行 <code class="literal">aptitude</code>。
</p>
</li>
<li class="listitem">
<p>
用 "<code class="literal">u</code>" 命令更新可用的軟體包列表,"<code class="literal">U</code>"
命令標記所有可升級的軟體包以執行升級,"<code class="literal">f</code>" 命令清除新軟體包列表,"<code class="literal">g</code>"
命令執行所有可升級的軟體包以執行升級。
</p>
</li>
<li class="listitem">
<p>
按下 “<code class="literal">l</code>”,並輸入 “<code class="literal">~i(~R~i|~Rrecommends:~i)</code>”
來限制軟體包的顯示,按下 “<code class="literal">M</code>” 將 “<code class="literal">已安裝軟體包</code>” 的狀態改為自動安裝。
</p>
</li>
<li class="listitem">
<p>
按下 “<code class="literal">l</code>”,並輸入
“<code class="literal">~prequired|~pimportant|~pstandard|~E</code>” 來限制軟體包的顯示,按下
“<code class="literal">m</code>” 將 “<code class="literal">已安裝軟體包</code>” 的狀態改為手動安裝。
</p>
</li>
<li class="listitem">
<p>
按下 “<code class="literal">l</code>”,並輸入 “<code class="literal">~i!~M</code>” 來限制軟體包的顯示,在
“<code class="literal">已安裝軟體包</code>” 上按下 “<code class="literal">[</code>” 來陳列無用的軟體包,按下
“<code class="literal">-</code>” 將它們移除。
</p>
</li>
<li class="listitem">
<p>
按下 “<code class="literal">l</code>”,並輸入 “<code class="literal">~i</code>” 來限制軟體包的顯示,之後在
“<code class="literal">軟體集</code>” 上按下 “<code class="literal">m</code>” 將那些軟體包標記為手動安裝。
</p>
</li>
<li class="listitem">
<p>
退出 <code class="literal">aptitude</code>。
</p>
</li>
<li class="listitem">
<p>
用 root 使用者執行 "<code class="literal">apt-get -s autoremove|less</code>"
命令,來檢視有那些軟體包是不再需要的。
</p>
</li>
<li class="listitem">
<p>
在互動模式下重啟 <code class="literal">aptitude</code> 程式,用 “<code class="literal">m</code>”
命令標記所需要的軟體包。
</p>
</li>
<li class="listitem">
<p>
用 root 使用者重新執行 "<code class="literal">apt-get -s autoremove|less</code>"
這個命令來複查移除的包中是不是隻含有自己所希望移除的軟體包。
</p>
</li>
<li class="listitem">
<p>
用 root 使用者執行 "<code class="literal">apt-get autoremove|less</code>" 命令來自動移除不再需要的軟體包。
</p>
</li>
</ol>
</div>
<p>在你所需要執行的 "<code class="literal">Tasks</code>" 上,執行 "<code class="literal">m</code>"
命令是一個可選的操作,目的就是為了防止大量軟體包被解除安裝的情況出現。</p>
</div>
<div class="section">
<div class="titlepage">
<div>
<div>
<h3 class="title"><a id="_system_wide_upgrade"/>2.3.5. 全面的系統升級</h3>
</div>
</div>
</div>
<div class="note" style="margin-left: 0.5in; margin-right: 0.5in;">
<table border="0" summary="Note">
<tr>
<td rowspan="2" align="center" valign="top">
<img alt="[注意]" src="images/note.png"/>
</td>
<th align="left">注意</th>
</tr>
<tr>
<td align="left" valign="top">
<p>當你遷移到新的發行版的時候,雖然正如下面所描述的那樣,Debian
是可升級的,但是你還是應該考慮純淨的安裝新的系統。這給了你機會去移除廢棄的軟體包同時還可以接觸到最新軟體包的完美集合體。當然,在做遷移之前,你也應該對你的系統做完整的備份,並把它移到安全的地方去(檢視<a class="xref" href="ch10.zh-tw.html#_backup_and_recovery" title="10.2. 備份和恢復">第 10.2 节 “備份和恢復”</a>)。“我”也建議用不同的分割槽做另外一個啟動項,來實現平穩的升級。</p>
</td>
</tr>
</table>
</div>
<p>你可以通過改變 "<code class="literal">/etc/apt/sources.list</code>"
的內容使之指向新的發行版所在地址的方法來進行系統的全面升級,然後執行 "<code class="literal">apt update; apt
dist-upgrade</code>" 命令。</p>
<p>從 <code class="literal">stable</code> 升級到 <code class="literal">testing</code> 或者
<code class="literal">unstable</code>,你應該用 "<code class="literal">buster</code>" 或者
"<code class="literal">sid</code>" 替換 "<code class="literal">/etc/apt/sources.list</code>" 檔案裡的
"<code class="literal">stretch</code>",參考 <a class="xref" href="ch02.zh-tw.html#_debian_archive_basics" title="2.1.4. Debian 檔案庫基礎">第 2.1.4 节 “Debian 檔案庫基礎”</a>。</p>
<p>事實上,由於一些軟體包版本變遷的問題,你可能會遇到一些困難,主要是由於軟體包的依賴問題。升級之後的差異越大,你越有可能遇到麻煩。在新版本發行後,系統從舊的
<code class="literal">stable</code> 過渡到新的 <code class="literal"> stable</code>,你可以檢視 <a class="ulink" href="https://www.debian.org/releases/stable/releasenotes"> Release Notes</a> 然後按照裡面的步驟去做,來儘可能的減少麻煩。</p>
<p>在它正式釋出之前,你決定要從先前的 <code class="literal"> stable</code> 遷移到將要釋出的 <code class="literal">
testing</code>,這裡沒有 <a class="ulink" href="https://www.debian.org/releases/stable/releasenotes"> Release Notes</a>
可以幫到你。 在前一個 <code class="literal">stable</code> 釋出以後,<code class="literal"> stable</code>
發行版跟將要釋出的<code class="literal"> testing</code> 發行版之間的差異可能變得相當大同時也使得升級系統變得更加的複雜。</p>
<p>在全面升級系統的時候,你應該謹慎的操作,同時你也應該從郵件列表中獲取最新的資料然後根據你的常識作出正確的判斷。</p>
<div class="orderedlist">
<ol class="orderedlist">
<li class="listitem">
<p>
檢視先前的“發行說明”。
</p>
</li>
<li class="listitem">
<p>
備份整個系統(尤其是資料和配置資訊)。
</p>
</li>
<li class="listitem">
<p>
當 bootloader 壞了的時候,手邊應該有可以引導電腦啟動的儲存介質。
</p>
</li>
<li class="listitem">
<p>
事先通知系統上的使用者。
</p>
</li>
<li class="listitem">
<p>
用<span class="citerefentry"><span class="refentrytitle"> script</span>(1)</span> 記錄升級的過程。
</p>
</li>
<li class="listitem">
<p>
用 “unmarkauto” 命令來保留你想要的軟體包,例如 "<code class="literal">aptitude unmarkauto vim</code>"
這個命令是用來防止移除vim這個軟體的。
</p>
</li>
<li class="listitem">
<p>
為了減少軟體包之間可能會發生的衝突,應該儘量減少要安裝的軟體包的數目,例如,移除桌面環境這個軟體包。
</p>
</li>
<li class="listitem">
<p>
移除 "<code class="literal">/etc/apt/preferences</code>" 檔案(禁用apt-pinning)。
</p>
</li>
<li class="listitem">
<p>
試著一步步的升級: <code class="literal">oldstable</code> → <code class="literal">stable</code> →
<code class="literal">testing</code> → <code class="literal">unstable</code>.
</p>
</li>
<li class="listitem">
<p>
升級 "<code class="literal">/etc/apt/sources.list</code>" 檔案,使其指向新的檔案庫然後執行
"<code class="literal">aptitude update</code>" 命令。
</p>
</li>
<li class="listitem">
<p>
可選的安裝選項,首先是新的 <span class="strong"><strong> core packages</strong></span>,例如
“<code class="literal">aptitude install perl</code>"。
</p>
</li>
<li class="listitem">
<p>
執行 "<code class="literal">apt-get -s dist-upgrade</code>" 命令來評估升級造成的影響。
</p>
</li>
<li class="listitem">
<p>
最後執行 "<code class="literal">apt-get dist-upgrade</code>" 命令。
</p>
</li>
</ol>
</div>
<div class="caution" style="margin-left: 0.5in; margin-right: 0.5in;">
<table border="0" summary="Caution">
<tr>
<td rowspan="2" align="center" valign="top">
<img alt="[小心]" src="images/caution.png"/>
</td>
<th align="left">小心</th>
</tr>
<tr>
<td align="left" valign="top">
<p>在 <code class="literal"> stable</code> 版本升級的時候,跳過主要的 Debian 發行版是不明智的。</p>
</td>
</tr>
</table>
</div>
<div class="caution" style="margin-left: 0.5in; margin-right: 0.5in;">
<table border="0" summary="Caution">
<tr>
<td rowspan="2" align="center" valign="top">
<img alt="[小心]" src="images/caution.png"/>
</td>
<th align="left">小心</th>
</tr>
<tr>
<td align="left" valign="top">
<p>在先前的“發行手冊”裡, GCC, Linux Kernel, initrd-tools, Glibc, Perl, APT tool chain
等等,有一些關於系統全面升級的重要注意事項。</p>
</td>
</tr>
</table>
</div>
<p>關於 <code class="literal"> unstable</code> 版本的日常升級,檢視 <a class="xref" href="ch02.zh-tw.html#_safeguarding_for_package_problems" title="2.4.3. 預防軟體包故障">第 2.4.3 节 “預防軟體包故障”</a>。</p>
</div>
</div>
<div class="section">
<div class="titlepage">
<div>
<div>
<h2 class="title"><a id="_advanced_package_management_operations"/>2.4. 高階軟體包管理操作</h2>
</div>
</div>
</div>
<div class="section">
<div class="titlepage">
<div>
<div>
<h3 class="title"><a id="_advanced_package_management_operations_with_commandline"/>2.4.1. 命令列中的高階軟體包管理操作</h3>
</div>
</div>
</div>
<p>下面列出了一些其它的軟體包管理操作,這些操作對於 <code class="literal">aptitude</code> 過於高階或缺失所需的功能。</p>
<div class="table">
<a id="listofadvancedpagementoperations"/>
<p class="title">
<strong>表 2.13. 高階軟體包管理操作</strong>
</p>
<div class="table-contents">
<table class="table" summary="高階軟體包管理操作" border="1">
<colgroup>
<col style="text-align: left"/>
<col style="text-align: left"/>
</colgroup>
<thead>
<tr>
<th style="text-align: left">
命令
</th>
<th style="text-align: left">
操作
</th>
</tr>
</thead>
<tbody>
<tr>
<td style="text-align: left">
<code class="literal">COLUMNS=120 dpkg -l <package_name_pattern></code>
</td>
<td style="text-align: left">
列出已安裝軟體包的列表用於錯誤報告
</td>
</tr>
<tr>
<td style="text-align: left">
<code class="literal">dpkg -L <package_name></code>
</td>
<td style="text-align: left">
顯示一個已安裝軟體包的內容
</td>
</tr>
<tr>
<td style="text-align: left">
<code class="literal">dpkg -L <package_name> | egrep
'/usr/share/man/man.*/.+'</code>
</td>
<td style="text-align: left">
列出一個已安裝軟體包的 man 手冊頁
</td>
</tr>
<tr>
<td style="text-align: left">
<code class="literal">dpkg -S <file_name_pattern></code>
</td>
<td style="text-align: left">
列出匹配檔名的已安裝軟體包
</td>
</tr>
<tr>
<td style="text-align: left">
<code class="literal">apt-file search <file_name_pattern></code>
</td>
<td style="text-align: left">
列出檔案庫中匹配檔名的軟體包
</td>
</tr>
<tr>
<td style="text-align: left">
<code class="literal">apt-file list <package_name_pattern></code>
</td>
<td style="text-align: left">
列出檔案庫中匹配的軟體包的內容
</td>
</tr>
<tr>
<td style="text-align: left">
<code class="literal">dpkg-reconfigure <package_name></code>
</td>
<td style="text-align: left">
重新配置軟體包
</td>
</tr>
<tr>
<td style="text-align: left">
<code class="literal">dpkg-reconfigure -p=low <package_name></code>
</td>
<td style="text-align: left">
通過最詳細的方式來重新配置軟體包
</td>
</tr>
<tr>
<td style="text-align: left">
<code class="literal">configure-debian</code>
</td>
<td style="text-align: left">
以全屏選單的形式重新配置軟體包
</td>
</tr>
<tr>
<td style="text-align: left">
<code class="literal">dpkg --audit</code>
</td>
<td style="text-align: left">
部分安裝軟體包的審計系統
</td>
</tr>
<tr>
<td style="text-align: left">
<code class="literal">dpkg --configure -a</code>
</td>
<td style="text-align: left">
配置所有部分安裝的軟體包
</td>
</tr>
<tr>
<td style="text-align: left">
<code class="literal">apt-cache policy <binary_package_name></code>
</td>
<td style="text-align: left">
顯示一個二進位制軟體包的可用版本、優先順序和檔案庫資訊
</td>
</tr>
<tr>
<td style="text-align: left">
<code class="literal">apt-cache madison <package_name></code>
</td>
<td style="text-align: left">
顯示一個軟體包的可用版本和檔案庫資訊
</td>
</tr>
<tr>
<td style="text-align: left">
<code class="literal">apt-cache showsrc <binary_package_name></code>
</td>
<td style="text-align: left">
顯示一個二進位制軟體包的原始碼軟體包資訊
</td>
</tr>
<tr>
<td style="text-align: left">
<code class="literal">apt-get build-dep <package_name></code>
</td>
<td style="text-align: left">
安裝構建軟體包所需要的軟體包
</td>
</tr>
<tr>
<td style="text-align: left">
<code class="literal">aptitude build-dep <package_name></code>
</td>
<td style="text-align: left">
安裝構建軟體包所需要的軟體包
</td>
</tr>
<tr>
<td style="text-align: left">
<code class="literal">apt-get source <package_name></code>
</td>
<td style="text-align: left">
(從標準檔案庫)下載原始碼
</td>
</tr>
<tr>
<td style="text-align: left">
<code class="literal">dget <URL for dsc file></code>
</td>
<td style="text-align: left">
(從其它檔案庫)下載原始碼軟體包
</td>
</tr>
<tr>
<td style="text-align: left">
<code class="literal">dpkg-source -x
<package_name>_<version>-<debian_version>.dsc</code>
</td>
<td style="text-align: left">
從原始碼軟體包集合(“<code class="literal">*.orig.tar.gz</code>” 和
“<code class="literal">*.debian.tar.gz</code>"/"<code class="literal">*.diff.gz</code>”)中構建程式碼樹
</td>
</tr>
<tr>
<td style="text-align: left">
<code class="literal">debuild binary</code>
</td>
<td style="text-align: left">
從本地的原始碼樹中構建軟體包
</td>
</tr>
<tr>
<td style="text-align: left">
<code class="literal">make-kpkg kernel_image</code>
</td>
<td style="text-align: left">
從核心原始碼樹中構建一個核心軟體包
</td>
</tr>
<tr>
<td style="text-align: left">
<code class="literal">make-kpkg --initrd kernel_image</code>
</td>
<td style="text-align: left">
從啟用了 initramfs 的核心程式碼樹中構建一個核心軟體包
</td>
</tr>
<tr>
<td style="text-align: left">
<code class="literal">dpkg -i
<package_name>_<version>-<debian_version>_<arch>.deb</code>
</td>
<td style="text-align: left">
安裝一個本地的軟體包到系統中
</td>
</tr>
<tr>
<td style="text-align: left">
<code class="literal">apt install /path/to/<package_filename>.deb</code>
</td>
<td style="text-align: left">
安裝一個本地軟體包到系統中,同時,嘗試自動地解析依賴性
</td>
</tr>
<tr>
<td style="text-align: left">
<code class="literal">debi
<package_name>_<version>-<debian_version>_<arch>.dsc</code>
</td>
<td style="text-align: left">
安裝本地軟體包到系統中
</td>
</tr>
<tr>
<td style="text-align: left">
<code class="literal">dpkg --get-selections '*' >selection.txt</code>
</td>
<td style="text-align: left">
儲存 <code class="literal">dpkg</code> 級別的軟體包選擇狀態資訊
</td>
</tr>
<tr>
<td style="text-align: left">
<code class="literal">dpkg --set-selections <selection.txt</code>
</td>
<td style="text-align: left">
使用 <code class="literal">dpkg</code> 設定軟體包選擇狀態
</td>
</tr>
<tr>
<td style="text-align: left">
<code class="literal">echo <package_name> hold | dpkg --set-selections</code>
</td>
<td style="text-align: left">
使用 <code class="literal">dpkg</code> 將一個軟體包的包選擇狀態設定為 <span class="strong"><strong>hold</strong></span>(相當於 "<code class="literal">aptitude hold <
包名></code> ")
</td>
</tr>
</tbody>
</table>
</div>
</div>
<br class="table-break"/>
<div class="note" style="margin-left: 0.5in; margin-right: 0.5in;">
<table border="0" summary="Note">
<tr>
<td rowspan="2" align="center" valign="top">
<img alt="[注意]" src="images/note.png"/>
</td>
<th align="left">注意</th>
</tr>
<tr>
<td align="left" valign="top">
<p>對於一個支援<a class="ulink" href="https://wiki.debian.org/Multiarch">多架構</a>的軟體包,你可能需要為一些命令指定架構名稱。例如,使用
“<code class="literal">dpkg -L libglib2.0-0:amd64</code>” 來列出 <code class="literal">amd64</code>
架構的 <code class="literal">libglib2.0-0</code> 軟體包的內容。</p>
</td>
</tr>
</table>
</div>
<div class="caution" style="margin-left: 0.5in; margin-right: 0.5in;">
<table border="0" summary="Caution">
<tr>
<td rowspan="2" align="center" valign="top">
<img alt="[小心]" src="images/caution.png"/>
</td>
<th align="left">小心</th>
</tr>
<tr>
<td align="left" valign="top">
<p>系統管理員應該小心使用低階的軟體包工具(例如 “<code class="literal">dpkg -i …</code>” 和 “<code class="literal">debi
…</code>”),它們不會自動處理所需的軟體包依賴。 dpkg 的命令列選項 “<code class="literal">--force-all</code>”
和類似的選項(參見
<span class="citerefentry"><span class="refentrytitle">dpkg</span>(1)</span>)只適用於高手。沒有完全理解它們的效果卻使用它們會破壞你的整個系統。</p>
</td>
</tr>
</table>
</div>
<p>請注意以下幾點。</p>
<div class="itemizedlist">
<ul class="itemizedlist">
<li class="listitem">
<p>
所有的系統配置和安裝命令都需要以 root 執行。
</p>
</li>
<li class="listitem">
<p>
不同於使用正則表示式的 <code class="literal">aptitude</code> (參見 <a class="xref" href="ch01.zh-tw.html#_regular_expressions" title="1.6.2. 正則表達式">第 1.6.2 节 “正則表達式”</a>),其它的軟體包管理命令使用類似於 shell glob 的萬用字元(參見 <a class="xref" href="ch01.zh-tw.html#_shell_glob" title="1.5.6. Shell 萬用字元">第 1.5.6 节 “Shell 萬用字元”</a>)。
</p>
</li>
<li class="listitem">
<p><span class="citerefentry"><span class="refentrytitle">apt-file</span>(1)</span>
由 <code class="literal">apt-file</code> 軟體包提供,並且需要先執行 “<code class="literal">apt-file
update</code>”。
</p>
</li>
<li class="listitem">
<p><span class="citerefentry"><span class="refentrytitle">configure-debian</span>(8)</span>
由 <code class="literal">configure-debian</code> 軟體包提供,它執行
<span class="citerefentry"><span class="refentrytitle">dpkg-reconfigure</span>(8)</span>
作為後端。
</p>
</li>
<li class="listitem">
<p><span class="citerefentry"><span class="refentrytitle">dpkg-reconfigure</span>(8)</span>
使用
<span class="citerefentry"><span class="refentrytitle">debconf</span>(1)</span>
作為後端來執行軟體包指令碼。
</p>
</li>
<li class="listitem">
<p>
"<code class="literal">apt-get build-dep</code>" 、"<code class="literal">apt-get source</code>"
和 "<code class="literal">apt-cache showsrc</code>" 命令需要
"<code class="literal">/etc/apt/sources.list</code>" 中存在 "<code class="literal">deb-src</code>"
條目。
</p>
</li>
<li class="listitem">
<p><span class="citerefentry"><span class="refentrytitle">dget</span>(1)</span>
、<span class="citerefentry"><span class="refentrytitle">debuild</span>(1)</span>
和
<span class="citerefentry"><span class="refentrytitle">debi</span>(1)</span>
需要 <code class="literal">devscripts</code> 軟體包。
</p>
</li>
<li class="listitem">
<p>
參見 <a class="xref" href="ch02.zh-tw.html#_porting_a_package_to_the_stable_system" title="2.7.13. 移植一個軟體包到 stable 系統">第 2.7.13 节 “移植一個軟體包到 stable 系統”</a> 裡使用
"<code class="literal">apt-get source</code>" 的打包(重打包)過程。
</p>
</li>
<li class="listitem">
<p><code class="literal">make-kpkg</code> 命令需要 <code class="literal">kernel-package</code> 軟體包(參見
<a class="xref" href="ch09.zh-tw.html#_the_kernel" title="9.9. 核心">第 9.9 节 “核心”</a>)。
</p>
</li>
<li class="listitem">
<p>
通用打包參見 <a class="xref" href="ch12.zh-tw.html#_making_debian_package" title="12.11. 製作 Debian 包">第 12.11 节 “製作 Debian 包”</a>.
</p>
</li>
</ul>
</div>
</div>
<div class="section">
<div class="titlepage">
<div>
<div>
<h3 class="title"><a id="_verification_of_installed_package_files"/>2.4.2. 驗證安裝的軟體包檔案</h3>
</div>
</div>
</div>
<p>已經安裝 <code class="literal">debsums</code> 軟體包的,能使用
<span class="citerefentry"><span class="refentrytitle">debsums</span>(1)</span>
命令通過 "<code class="literal">/var/lib/dpkg/info/*.md5sums</code>" 檔案中的 MD5sum
值,驗證已安裝的檔案。參見<a class="xref" href="ch10.zh-tw.html#_the_md5_sum" title="10.3.5. MD5 校驗和">第 10.3.5 节 “MD5 校驗和”</a>來獲得 MD5sum 是怎樣工作的資訊。</p>
<div class="note" style="margin-left: 0.5in; margin-right: 0.5in;">
<table border="0" summary="Note">
<tr>
<td rowspan="2" align="center" valign="top">
<img alt="[注意]" src="images/note.png"/>
</td>
<th align="left">注意</th>
</tr>
<tr>
<td align="left" valign="top">
<p>因為 MD5sum
資料庫可能被侵入者篡改,<span class="citerefentry"><span class="refentrytitle">debsums</span>(1)</span>
作為安全工具使用有限。這種工具用於校驗管理者造成的本地修改或媒體錯誤造成的損壞是很不錯的。</p>
</td>
</tr>
</table>
</div>
</div>
<div class="section">
<div class="titlepage">
<div>
<div>
<h3 class="title"><a id="_safeguarding_for_package_problems"/>2.4.3. 預防軟體包故障</h3>
</div>
</div>
</div>
<p>許多使用者更想使用 <span class="strong"><strong>unstable</strong></span>,因為它有新的功能和軟體包。但這會使得系統更容易遇到嚴重的軟體包 bug 。</p>
<p>安裝軟體包 <code class="literal">apt-list bugs</code> 可以避免您的系統遭遇嚴重 bugs,在通過 APT
系統升級時,它會自動檢查 Debian BTS 裡的嚴重 bug。</p>
<p>安裝 <code class="literal">apt-listchanges</code> 軟體包,在使用 APT 系統升級時它會在
“<code class="literal">NEWS.Debian</code>” 中提供重要新聞。</p>
</div>
<div class="section">
<div class="titlepage">
<div>
<div>
<h3 class="title"><a id="_searching_on_the_package_meta_data"/>2.4.4. 搜尋軟體包元資料</h3>
</div>
</div>
</div>
<p>儘管近來瀏覽 Debian 網站 <a class="ulink" href="https://packages.debian.org/">https://packages.debian.org/</a>
是搜尋軟體包元資料更加簡單的方法,但我們依舊來看看更傳統的方法。</p>
<p><span class="citerefentry"><span class="refentrytitle">grep-dctrl</span>(1)</span>
、<span class="citerefentry"><span class="refentrytitle">grep-status</span>(1)</span>
和
<span class="citerefentry"><span class="refentrytitle">grep-available</span>(1)</span>
命令被用來搜尋具有 Debian 軟體包控制檔案格式的任何檔案。</p>
<p>“<code class="literal">dpkg -S <file_name_pattern></code>” 被用來搜尋由
<code class="literal">dpkg</code> 安裝的軟體包中包含匹配檔案的。但它會忽略維護者的指令碼建立的檔案。</p>
<p>如果你需要對 dpkg 元資料進行更復雜的搜尋,你需要在 “<code class="literal">/var/lib/dpkg/info/</code>” 目錄下執行
“<code class="literal">grep -e regex_pattern *</code>” 命令。這會使你在軟體包指令碼和安裝查詢文字中搜索提及的單詞。</p>
<p>如果你想遞迴查詢軟體包依賴,你應該使用
<span class="citerefentry"><span class="refentrytitle">apt-rdepends</span>(8)</span>
。</p>
</div>
</div>
<div class="section">
<div class="titlepage">
<div>
<div>
<h2 class="title"><a id="_debian_package_management_internals"/>2.5. Debian 軟體包內部管理</h2>
</div>
</div>
</div>
<p>讓我們來學習 Debian 軟體包管理的內部工作原理。這應該能夠幫助你獨立解決一些軟體包問題。</p>
<div class="section">
<div class="titlepage">
<div>
<div>
<h3 class="title"><a id="_archive_meta_data"/>2.5.1. 檔案庫元資料</h3>
</div>
</div>
</div>
<p>每個發行版的元資料檔案都儲存在 Debian 映象站的 “<code class="literal">dist/<codename></code>” 下面,例如
“<code class="literal">http://deb.debian.org/debian/</code>”。檔案庫的結構可以通過網路瀏覽器來瀏覽。其中有 6
種關鍵的元資料。</p>
<div class="table">
<a id="thecontentofthednarchivemetadata"/>
<p class="title">
<strong>表 2.14. Debian 檔案庫元資料的內容</strong>
</p>
<div class="table-contents">
<table class="table" summary="Debian 檔案庫元資料的內容" border="1">
<colgroup>
<col style="text-align: left"/>
<col style="text-align: left"/>
<col style="text-align: left"/>
</colgroup>
<thead>
<tr>
<th style="text-align: left">
檔案
</th>
<th style="text-align: left">
位置
</th>
<th style="text-align: left">
內容
</th>
</tr>
</thead>
<tbody>
<tr>
<td style="text-align: left">
<code class="literal">Release</code>
</td>
<td style="text-align: left">
發行版的頂層
</td>
<td style="text-align: left">
檔案庫描述和完整性資訊
</td>
</tr>
<tr>
<td style="text-align: left">
<code class="literal">Release.gpg</code>
</td>
<td style="text-align: left">
發行版的頂層
</td>
<td style="text-align: left">
"<code class="literal">Release</code>" 檔案的簽名檔案,使用檔案庫金鑰簽名
</td>
</tr>
<tr>
<td style="text-align: left">
<code class="literal">Contents-<architecture></code>
</td>
<td style="text-align: left">
發行版的頂層
</td>
<td style="text-align: left">
列出在相關架構中所有軟體包的全部檔案
</td>
</tr>
<tr>
<td style="text-align: left">
<code class="literal">Release</code>
</td>
<td style="text-align: left">
每個發行版/區域/架構組合的頂部
</td>
<td style="text-align: left">
歸檔描述使用
<span class="citerefentry"><span class="refentrytitle">apt_preferences</span>( 5
)</span> 的規則
</td>
</tr>
<tr>
<td style="text-align: left">
<code class="literal">Packages</code>
</td>
<td style="text-align: left">
每個發行版/區域/二進位制架構組合的頂部
</td>
<td style="text-align: left">
連線 <code class="literal">debian/control</code> 獲得二進位制包
</td>
</tr>
<tr>
<td style="text-align: left">
<code class="literal">Sources</code>
</td>
<td style="text-align: left">
每個 發行版/區域/原始碼 組合的頂部
</td>
<td style="text-align: left">
連線 <code class="literal">debian/control</code> 獲取原始碼包
</td>
</tr>
</tbody>
</table>
</div>
</div>
<br class="table-break"/>
<p>為了減少網路流量,在最近的檔案庫中,這些元資料儲存為壓縮了的差分檔案。</p>
</div>
<div class="section">
<div class="titlepage">
<div>
<div>
<h3 class="title"><a id="_top_level_release_file_and_authenticity"/>2.5.2. 頂層“Release”檔案及真實性</h3>
</div>
</div>
</div>
<div class="tip" style="margin-left: 0.5in; margin-right: 0.5in;">
<table border="0" summary="Tip">
<tr>
<td rowspan="2" align="center" valign="top">
<img alt="[提示]" src="images/tip.png"/>
</td>
<th align="left">提示</th>
</tr>
<tr>
<td align="left" valign="top">
<p>頂層“<code class="literal">Release</code>”檔案用於簽署<span class="strong"><strong>secure
APT</strong></span>系統下的歸檔檔案。</p>
</td>
</tr>
</table>
</div>
<p>每個 Debian 檔案庫的網址都有一個這樣的 “<code class="literal">Release</code>” 檔案,例如
“<code class="literal">http://deb.debian.org/debian/dists/unstable/Release</code>”,內容如下。</p>
<pre class="screen">Origin: Debian
Label: Debian
Suite: unstable
Codename: sid
Date: Sat, 14 May 2011 08:20:50 UTC
Valid-Until: Sat, 21 May 2011 08:20:50 UTC
Architectures: alpha amd64 armel hppa hurd-i386 i386 ia64 kfreebsd-amd64 kfreebsd-i386 mips mipsel powerpc s390 sparc
Components: main contrib non-free
Description: Debian x.y Unstable - Not Released
MD5Sum:
bdc8fa4b3f5e4a715dd0d56d176fc789 18876880 Contents-alpha.gz
9469a03c94b85e010d116aeeab9614c0 19441880 Contents-amd64.gz
3d68e206d7faa3aded660dc0996054fe 19203165 Contents-armel.gz
...</pre>
<div class="note" style="margin-left: 0.5in; margin-right: 0.5in;">
<table border="0" summary="Note">
<tr>
<td rowspan="2" align="center" valign="top">
<img alt="[注意]" src="images/note.png"/>
</td>
<th align="left">注意</th>
</tr>
<tr>
<td align="left" valign="top">
<p>在 <a class="xref" href="ch02.zh-tw.html#_debian_archive_basics" title="2.1.4. Debian 檔案庫基礎">第 2.1.4 节 “Debian 檔案庫基礎”</a> 裡,你能夠發現我使用"suite" 和
"codename"的邏輯。“發行版”被用來同時談及"suite" 和 "codename".所有由檔案庫提供的歸檔 "area" 名,會被列在
"Components" 下.</p>
</td>
</tr>
</table>
</div>
<p>頂層檔案 "<code class="literal">Release</code>" 的完整性,是由叫 <a class="ulink" href="http://wiki.debian.org/SecureApt">secure
apt</a> 的加密架構來驗證.</p>
<div class="itemizedlist">
<ul class="itemizedlist">
<li class="listitem">
<p>
加密簽名檔案 "<code class="literal">Release.gpg</code>" 是由頂層授權檔案
"<code class="literal">Release</code>" 和加密的 Debian 檔案庫公鑰建立。
</p>
</li>
<li class="listitem">
<p>
公開的 Debian 檔案庫公鑰能夠放入“<code class="literal">/etc/apt/trusted.gpg</code>”;
</p>
<div class="itemizedlist">
<ul class="itemizedlist">
<li class="listitem">
<p>
這樣的操作可以由安裝最新的 <code class="literal">base-files</code> 軟體包的方式完成,或者
</p>
</li>
<li class="listitem">
<p>
手動使用 <code class="literal">gpg</code> 或者 <code class="literal">apt-key</code> 工具 <a class="ulink" href="http://ftp-master.debian.org/"> 獲取釋出在 ftp-master.debian.org
上最新的檔案庫公鑰</a>。
</p>
</li>
</ul>
</div>
</li>
<li class="listitem">
<p>
<span class="strong"><strong>secure APT</strong></span> 系統驗證下載的頂層檔案
"<code class="literal">Release</code>"
的完整性。加密驗證過程用到了"<code class="literal">Release.gpg</code>"檔案和在"<code class="literal">/etc/apt/trusted.gpg</code>"裡的
Debian 檔案庫公鑰.
</p>
</li>
</ul>
</div>
<p>所有 "<code class="literal">Packages</code>" 和 "<code class="literal">Sources</code>" 檔案的完整性是由在頂層
"<code class="literal">Release</code>" 檔案裡的 MD5sum 值來驗證。所有軟體包檔案的完整性由
"<code class="literal">Packages</code>" 和 "<code class="literal">Sources</code>" 檔案裡的 MD5sum
值來驗證.參見
<span class="citerefentry"><span class="refentrytitle">debsums</span>(1)</span>
和 <a class="xref" href="ch02.zh-tw.html#_verification_of_installed_package_files" title="2.4.2. 驗證安裝的軟體包檔案">第 2.4.2 节 “驗證安裝的軟體包檔案”</a>.</p>
<p>因加密簽名驗證比計算 MD5sum 值消耗更多的 CPU,使用 MD5sum 值來驗證每一個軟體包,使用加密簽名來驗證頂層的
"<code class="literal">Release</code>" 檔案,這種方式提供 <a class="ulink" href="http://www.infodrom.org/~joey/Writing/Linux-Journal/secure-apt/">較好安全性的同時,也有比較好的效能</a> (參見 <a class="xref" href="ch10.zh-tw.html#_data_security_infrastructure" title="10.3. 資料安全基礎">第 10.3 节 “資料安全基礎”</a>).</p>
</div>
<div class="section">
<div class="titlepage">
<div>
<div>
<h3 class="title"><a id="_archive_level_release_files"/>2.5.3. 檔案庫層的“Release”檔案</h3>
</div>
</div>
</div>
<div class="tip" style="margin-left: 0.5in; margin-right: 0.5in;">
<table border="0" summary="Tip">
<tr>
<td rowspan="2" align="center" valign="top">
<img alt="[提示]" src="images/tip.png"/>
</td>
<th align="left">提示</th>
</tr>
<tr>
<td align="left" valign="top">
<p>檔案庫層的“<code class="literal">Release</code>”檔案將用作<span class="citerefentry"><span class="refentrytitle">apt_preferences</span>(5)</span>的規則。</p>
</td>
</tr>
</table>
</div>
<p>歸檔層次的 "<code class="literal">Release</code>" 檔案,其全部歸檔位置在
"<code class="literal">/etc/apt/sources.list</code>"中的
"<code class="literal">deb</code>"行中指定,如以下的
"<code class="literal">http://deb.debian.org/debian/dists/unstable/main/binary-amd64/Release</code>"
或
"<code class="literal">http://deb.debian.org/debian/dists/sid/main/binary-amd64/Release</code>"。</p>
<pre class="screen">Archive: unstable
Origin: Debian
Label: Debian
Component: main
Architecture: amd64</pre>
<div class="caution" style="margin-left: 0.5in; margin-right: 0.5in;">
<table border="0" summary="Caution">
<tr>
<td rowspan="2" align="center" valign="top">
<img alt="[小心]" src="images/caution.png"/>
</td>
<th align="left">小心</th>
</tr>
<tr>
<td align="left" valign="top">
<p>對於"<code class="literal">Archive:</code>"
章節,系列名稱("<code class="literal">stable</code>","<code class="literal">testing</code>","<code class="literal">unstable</code>",
…) 用於 <a class="ulink" href="http://deb.debian.org/debian/"> Debian archive</a>
,而代號("<code class="literal">trusty</code>", "<code class="literal">xenial</code>",
"<code class="literal">artful</code>", …) 用於 <a class="ulink" href="http://archive.ubuntu.com/ubuntu/"> Ubuntu
archive</a>。</p>
</td>
</tr>
</table>
</div>
<p>對於部分檔案庫,比如說 <code class="literal">experimental</code> 和
<code class="literal">stretch-backports</code>,
它們包含的軟體包不會被自動安裝,這是因為有額外的行,例如在
"<code class="literal">http://deb.debian.org/debian/dists/experimental/main/binary-amd64/Release</code>"
裡面有如下額外的一行。</p>
<pre class="screen">Archive: experimental
Origin: Debian
Label: Debian
NotAutomatic: yes
Component: main
Architecture: amd64</pre>
<p>請注意,普通的檔案庫沒有 "<code class="literal">NotAutomatic: yes</code>", 預設的 Pin-Priority 值是
500, 而對於有 "<code class="literal">NotAutomatic: yes</code>"的特殊檔案庫, 預設的 Pin-Priority 值是
1 (參見
<span class="citerefentry"><span class="refentrytitle">apt_preferences</span>(5)</span>
和 <a class="xref" href="ch02.zh-tw.html#_tweaking_candidate_version" title="2.7.3. 調整候選版本">第 2.7.3 节 “調整候選版本”</a>).</p>
</div>
<div class="section">
<div class="titlepage">
<div>
<div>
<h3 class="title"><a id="_fetching_of_the_meta_data_for_the_package"/>2.5.4. 獲取用於軟體包的元資料</h3>
</div>
</div>
</div>
<p>當使用 APT 工具時,如 <code class="literal">aptitude</code>, <code class="literal">apt-get</code>,
<code class="literal">synaptic</code>, <code class="literal">apt-file</code>,
<code class="literal">auto-apt</code>,我們需要更新包含 Debian 檔案庫資訊元資料的本地拷貝。這些本地拷貝的檔名稱,和在
"<code class="literal">/etc/apt/sources.list</code>" 檔案裡面的
<code class="literal">distribution</code>, <code class="literal">area</code>,
<code class="literal">architecture</code> 相應名稱一致。 (參見 <a class="xref" href="ch02.zh-tw.html#_debian_archive_basics" title="2.1.4. Debian 檔案庫基礎">第 2.1.4 节 “Debian 檔案庫基礎”</a>).</p>
<div class="itemizedlist">
<ul class="itemizedlist">
<li class="listitem">
<p>
"<code class="literal">/var/lib/apt/lists/deb.debian.org_debian_dists_<distribution>_Release</code>"
</p>
</li>
<li class="listitem">
<p>
"<code class="literal">/var/lib/apt/lists/deb.debian.org_debian_dists_<distribution>_Release.gpg</code>"
</p>
</li>
<li class="listitem">
<p>
"<code class="literal">/var/lib/apt/lists/deb.debian.org_debian_dists_<distribution>_<area>_binary-<architecture>_Packages</code>"
</p>
</li>
<li class="listitem">
<p>
"<code class="literal">/var/lib/apt/lists/deb.debian.org_debian_dists_<distribution>_<area>_source_Sources</code>"
</p>
</li>
<li class="listitem">
<p>
"<code class="literal">/var/cache/apt/apt-file/deb.debian.org_debian_dists_<distribution>_Contents-<architecture>.gz</code>"
(<code class="literal">apt-file</code>)
</p>
</li>
</ul>
</div>
<p>前 4 種類型的檔案是所有相關的 APT 命令共享的,並且可以通過 “<code class="literal">apt-get update</code>” 或
“<code class="literal">aptitude update</code>” 在命令列中進行更新。如果在
“<code class="literal">/etc/apt/sources.list</code>” 中有相應的 “<code class="literal">deb</code>”
行,則 “<code class="literal">軟體包</code>” 元資料會進行更新。如果在
“<code class="literal">/etc/apt/sources.list</code>” 中有相應的
“<code class="literal">deb-src</code>” 行,則 “<code class="literal">原始碼</code>” 元資料會進行更新。</p>
<p>"<code class="literal">Packages</code>" 和 "<code class="literal">Sources</code>"
的元資料檔案包含有“<code class="literal">Filename:</code>”欄位,指向二進位制和原始碼包檔案的位置。目前,這些軟體包都統一放在"<code class="literal">pool/</code>"目錄樹下,這樣可以改善跨版本釋出的傳輸。</p>
<p>“<code class="literal">軟體包</code>”元資料的本地副本可以使用 <code class="literal">aptitude</code>
來進行互動式的搜尋。專門的搜尋命令
<span class="citerefentry"><span class="refentrytitle">grep-dctrl</span>(1)</span>
可以搜尋“<code class="literal">軟體包</code>”和“<code class="literal">原始碼</code>”元資料的本地副本。</p>
<p>"<code class="literal">Contents-<architecture></code>"元資料的本地拷貝,能夠被"<code class="literal">apt-file
update</code>"更新,它的位置和其它 4 個不同。參見
<span class="citerefentry"><span class="refentrytitle">apt-file</span>(1)</span>.
(<code class="literal">auto-apt</code> 的
"<code class="literal">Contents-<architecture>.gz</code>"檔案的本地拷貝預設也使用不同的位置。)</p>
</div>
<div class="section">
<div class="titlepage">
<div>
<div>
<h3 class="title"><a id="_the_package_state_for_apt"/>2.5.5. APT 的軟體包狀態</h3>
</div>
</div>
</div>
<p>除了遠端獲取元資料,<code class="literal">lenny</code> 之後的 APT 工具還會將它在本地產生的安裝狀態資訊儲存在
“<code class="literal">/var/lib/apt/extended_states</code>” 中,APT 會使用它們來追蹤自動安裝的所有軟體包。</p>
</div>
<div class="section">
<div class="titlepage">
<div>
<div>
<h3 class="title"><a id="_the_package_state_for_aptitude"/>2.5.6. aptitude 的軟體包狀態</h3>
</div>
</div>
</div>
<p>除了遠端獲取元資料,<code class="literal">aptitude</code> 命令還會將它在本地產生的安裝狀態資訊儲存在
“<code class="literal">/var/lib/aptitude/pkgstates</code>” 中,這些資訊只能被 aptitude 使用。</p>
</div>
<div class="section">
<div class="titlepage">
<div>
<div>
<h3 class="title"><a id="_local_copies_of_the_fetched_packages"/>2.5.7. 獲取的軟體包的本地副本</h3>
</div>
</div>
</div>
<p>所有通過 APT 機制遠端獲取的軟體包都被儲存在 “<code class="literal">/var/cache/apt/archives</code>”
中,直到它們被清除。</p>
<p><code class="literal">aptitude</code> 的這個快取檔案清理策略,能夠在"<code class="literal">Options</code>" →
"<code class="literal">Preferences</code>"下設定,也可以通過它的選單,"<code class="literal">Actions</code>"下的"<code class="literal">Clean
package cache</code>" 或 "<code class="literal">Clean obsolete files</code>"
來執行強制清理。</p>
</div>
<div class="section">
<div class="titlepage">
<div>
<div>
<h3 class="title"><a id="_debian_package_file_names"/>2.5.8. Debian 軟體包檔名稱</h3>
</div>
</div>
</div>
<p>Debian 軟體包檔案有特定的名稱結構。</p>
<div class="table">
<a id="thenamestructureofdebianpackages"/>
<p class="title">
<strong>表 2.15. Debian 軟體包的名稱結構</strong>
</p>
<div class="table-contents">
<table class="table" summary="Debian 軟體包的名稱結構" border="1">
<colgroup>
<col style="text-align: left"/>
<col style="text-align: left"/>
</colgroup>
<thead>
<tr>
<th style="text-align: left">
軟體包型別
</th>
<th style="text-align: left">
名稱結構
</th>
</tr>
</thead>
<tbody>
<tr>
<td style="text-align: left">
二進位制軟體包(亦稱 <code class="literal">deb</code>)
</td>
<td style="text-align: left">
<code class="literal"><package-name>_<epoch>:<upstream-version>-<debian.version>-<architecture>.deb</code>
</td>
</tr>
<tr>
<td style="text-align: left">
用於 debian-installer 的二進位制軟體包(亦稱 <code class="literal">udeb</code>)
</td>
<td style="text-align: left">
<code class="literal"><package-name>_<epoch>:<upstream-version>-<debian.version>-<architecture>.udeb</code>
</td>
</tr>
<tr>
<td style="text-align: left">
原始碼軟體包(上游原始碼)
</td>
<td style="text-align: left">
<code class="literal"><package-name>_<epoch>:<upstream-version>-<debian.version>.orig.tar.gz</code>
</td>
</tr>
<tr>
<td style="text-align: left">
<code class="literal">1.0</code> 原始碼軟體包(Debian 改變)
</td>
<td style="text-align: left">
<code class="literal"><package-name>_<epoch>:<upstream-version>-<debian.version>.diff.gz</code>
</td>
</tr>
<tr>
<td style="text-align: left">
<code class="literal">3.0 (quilt 補丁管理工具)</code> 原始碼軟體包(Debian 改變)
</td>
<td style="text-align: left">
<code class="literal"><package-name>_<epoch>:<upstream-version>-<debian.version>.debian.tar.gz</code>
</td>
</tr>
<tr>
<td style="text-align: left">
原始碼軟體包(說明)
</td>
<td style="text-align: left">
<code class="literal"><package-name>_<epoch>:<upstream-version>-<debian.version>.dsc</code>
</td>
</tr>
</tbody>
</table>
</div>
</div>
<br class="table-break"/>
<div class="tip" style="margin-left: 0.5in; margin-right: 0.5in;">
<table border="0" summary="Tip">
<tr>
<td rowspan="2" align="center" valign="top">
<img alt="[提示]" src="images/tip.png"/>
</td>
<th align="left">提示</th>
</tr>
<tr>
<td align="left" valign="top">
<p>這裡僅敘述了基本的原始碼包格式。更多內容請參考
<span class="citerefentry"><span class="refentrytitle">dpkg-source</span>(1)</span>。</p>
</td>
</tr>
</table>
</div>
<div class="table">
<a id="theusablecharactbianpackagenames"/>
<p class="title">
<strong>表 2.16. Debian 軟體包名稱中每一個元件可以使用的字元</strong>
</p>
<div class="table-contents">
<table class="table" summary="Debian 軟體包名稱中每一個元件可以使用的字元" border="1">
<colgroup>
<col style="text-align: left"/>
<col style="text-align: left"/>
<col style="text-align: left"/>
</colgroup>
<thead>
<tr>
<th style="text-align: left">
名稱元件
</th>
<th style="text-align: left">
可用的字元(正則表示式)
</th>
<th style="text-align: left">
存在狀態
</th>
</tr>
</thead>
<tbody>
<tr>
<td style="text-align: left">
<code class="literal"><package-name></code>
</td>
<td style="text-align: left">
<code class="literal">[a-z,A-Z,0-9,.,+,-]+</code>
</td>
<td style="text-align: left">
必需
</td>
</tr>
<tr>
<td style="text-align: left">
<code class="literal"><epoch>:</code>
</td>
<td style="text-align: left">
<code class="literal">[0-9]+:</code>
</td>
<td style="text-align: left">
可選
</td>
</tr>
<tr>
<td style="text-align: left">
<code class="literal"><upstream-version></code>
</td>
<td style="text-align: left">
<code class="literal">[a-z,A-Z,0-9,.,+,-,:]+</code>
</td>
<td style="text-align: left">
必需
</td>
</tr>
<tr>
<td style="text-align: left">
<code class="literal"><debian.version></code>
</td>
<td style="text-align: left">
<code class="literal">[a-z,A-Z,0-9,.,+,~]+</code>
</td>
<td style="text-align: left">
可選
</td>
</tr>
</tbody>
</table>
</div>
</div>
<br class="table-break"/>
<div class="note" style="margin-left: 0.5in; margin-right: 0.5in;">
<table border="0" summary="Note">
<tr>
<td rowspan="2" align="center" valign="top">
<img alt="[注意]" src="images/note.png"/>
</td>
<th align="left">注意</th>
</tr>
<tr>
<td align="left" valign="top">
<p>你可以用
<span class="citerefentry"><span class="refentrytitle">dpkg</span>(1)</span>提供的命令檢查軟體包版本,
例如., "<code class="literal">dpkg --compare-versions 7.0 gt 7.~pre1 ; echo $?</code>" .</p>
</td>
</tr>
</table>
</div>
<div class="note" style="margin-left: 0.5in; margin-right: 0.5in;">
<table border="0" summary="Note">
<tr>
<td rowspan="2" align="center" valign="top">
<img alt="[注意]" src="images/note.png"/>
</td>
<th align="left">注意</th>
</tr>
<tr>
<td align="left" valign="top">
<p><a class="ulink" href="https://www.debian.org/devel/debian-installer/">debian-installer (d-i)</a> 使用
<code class="literal">udeb</code> 作為它的二進位制軟體包的副檔名,而非普通的 <code class="literal">deb</code>。一個
<code class="literal">udeb</code> 軟體包是從 <code class="literal">deb</code>
軟體包中剝離了一些不必要的內容(例如文件),從而節省空間同時也放寬軟體包政策的要求。<code class="literal">deb</code> 和
<code class="literal">udeb</code> 軟體包會共享相同的軟體包結構。“<code class="literal">u</code>” 表示微小。</p>
</td>
</tr>
</table>
</div>
</div>
<div class="section">
<div class="titlepage">
<div>
<div>
<h3 class="title"><a id="_the_dpkg_command"/>2.5.9. dpkg 命令</h3>
</div>
</div>
</div>
<p><span class="citerefentry"><span class="refentrytitle">dpkg</span>(1)</span>
是 Debian 軟體包管理中最底層的工具。它非常強大,必須小心使用。</p>
<p>當安裝名為 “<code class="literal"><package_name></code>”
的軟體包時,<code class="literal">dpkg</code> 會按照下列的順序處理它。</p>
<div class="orderedlist">
<ol class="orderedlist">
<li class="listitem">
<p>
解包 deb 檔案(等同於 “<code class="literal">ar -x</code>”)
</p>
</li>
<li class="listitem">
<p>
使用
<span class="citerefentry"><span class="refentrytitle">debconf</span>(1)</span>
執行 “<code class="literal"><package_name>.preinst</code>”
</p>
</li>
<li class="listitem">
<p>
將軟體包安裝到系統中(等同於 “<code class="literal">tar -x</code>”)
</p>
</li>
<li class="listitem">
<p>
使用
<span class="citerefentry"><span class="refentrytitle">debconf</span>(1)</span>
執行 “<code class="literal"><package_name>.postinst</code>”
</p>
</li>
</ol>
</div>
<p><code class="literal">debconf</code> 系統提供帶有 I18N 和 L10N (<a class="xref" href="ch08.zh-tw.html" title="第 8 章 I18N 和 L10N">第 8 章 <em>I18N 和 L10N</em></a>)支援的標準化使用者互動。</p>
<div class="table">
<a id="thenotablefilescreatedbydpkg"/>
<p class="title">
<strong>表 2.17. <code class="literal">dpkg</code> 建立的重要檔案</strong>
</p>
<div class="table-contents">
<table class="table" summary="dpkg 建立的重要檔案" border="1">
<colgroup>
<col style="text-align: left"/>
<col style="text-align: left"/>
</colgroup>
<thead>
<tr>
<th style="text-align: left">
檔案
</th>
<th style="text-align: left">
內容說明
</th>
</tr>
</thead>
<tbody>
<tr>
<td style="text-align: left">
<code class="literal">/var/lib/dpkg/info/<package_name>.conffiles</code>
</td>
<td style="text-align: left">
列出配置檔案。(使用者可修改的)
</td>
</tr>
<tr>
<td style="text-align: left">
<code class="literal">/var/lib/dpkg/info/<package_name>.list</code>
</td>
<td style="text-align: left">
列出軟體包安裝的所有檔案和目錄
</td>
</tr>
<tr>
<td style="text-align: left">
<code class="literal">/var/lib/dpkg/info/<package_name>.md5sums</code>
</td>
<td style="text-align: left">
列出軟體包安裝的檔案的 MD5 雜湊值
</td>
</tr>
<tr>
<td style="text-align: left">
<code class="literal">/var/lib/dpkg/info/<package_name>.preinst</code>
</td>
<td style="text-align: left">
軟體包安裝之前執行的軟體包指令碼
</td>
</tr>
<tr>
<td style="text-align: left">
<code class="literal">/var/lib/dpkg/info/<package_name>.postinst</code>
</td>
<td style="text-align: left">
軟體包安裝之後執行的軟體包指令碼
</td>
</tr>
<tr>
<td style="text-align: left">
<code class="literal">/var/lib/dpkg/info/<package_name>.prerm</code>
</td>
<td style="text-align: left">
軟體包移除之前執行的軟體包指令碼
</td>
</tr>
<tr>
<td style="text-align: left">
<code class="literal">/var/lib/dpkg/info/<package_name>.postrm</code>
</td>
<td style="text-align: left">
軟體包移除之後執行的軟體包指令碼
</td>
</tr>
<tr>
<td style="text-align: left">
<code class="literal">/var/lib/dpkg/info/<package_name>.config</code>
</td>
<td style="text-align: left">
用於 <code class="literal">debconf</code> 系統的軟體包指令碼
</td>
</tr>
<tr>
<td style="text-align: left">
<code class="literal">/var/lib/dpkg/alternatives/<package_name></code>
</td>
<td style="text-align: left">
<code class="literal">update-alternatives</code> 命令使用的替代資訊
</td>
</tr>
<tr>
<td style="text-align: left">
<code class="literal">/var/lib/dpkg/available</code>
</td>
<td style="text-align: left">
所有軟體包的可用性資訊
</td>
</tr>
<tr>
<td style="text-align: left">
<code class="literal">/var/lib/dpkg/diversions</code>
</td>
<td style="text-align: left">
<span class="citerefentry"><span class="refentrytitle">dpkg</span>(1)</span>
使用的檔案移動資訊,由
<span class="citerefentry"><span class="refentrytitle">dpkg-divert</span>(8)</span>
設定
</td>
</tr>
<tr>
<td style="text-align: left">
<code class="literal">/var/lib/dpkg/statoverride</code>
</td>
<td style="text-align: left">
<span class="citerefentry"><span class="refentrytitle">dpkg</span>(1)</span>
使用的檔案狀態改變資訊,由
<span class="citerefentry"><span class="refentrytitle">dpkg-statoverride</span>(8)</span>
設定
</td>
</tr>
<tr>
<td style="text-align: left">
<code class="literal">/var/lib/dpkg/status</code>
</td>
<td style="text-align: left">
所有軟體包的狀態資訊
</td>
</tr>
<tr>
<td style="text-align: left">
<code class="literal">/var/lib/dpkg/status-old</code>
</td>
<td style="text-align: left">
“<code class="literal">var/lib/dpkg/status</code>” 檔案的第一代備份
</td>
</tr>
<tr>
<td style="text-align: left">
<code class="literal">/var/backups/dpkg.status*</code>
</td>
<td style="text-align: left">
第二代備份,以及“<code class="literal">var/lib/dpkg/status</code>”檔案更舊的備份
</td>
</tr>
</tbody>
</table>
</div>
</div>
<br class="table-break"/>
<p>“<code class="literal">status</code>” 檔案也被例如
<span class="citerefentry"><span class="refentrytitle">dpkg</span>(1)</span>、“<code class="literal">dselect
update</code>” 和 “<code class="literal">apt-get -u dselect-upgrade</code>” 等工具使用。</p>
<p>專門的搜尋命令
<span class="citerefentry"><span class="refentrytitle">grep-dctrl</span>(1)</span>
可以搜尋 “<code class="literal">status</code>” 和 “<code class="literal">available</code>” 元資料的本地副本。</p>
<div class="tip" style="margin-left: 0.5in; margin-right: 0.5in;">
<table border="0" summary="Tip">
<tr>
<td rowspan="2" align="center" valign="top">
<img alt="[提示]" src="images/tip.png"/>
</td>
<th align="left">提示</th>
</tr>
<tr>
<td align="left" valign="top">
<p>在<a class="ulink" href="https://www.debian.org/devel/debian-installer/">debian 安裝器</a>環境下,
<code class="literal">udpkg</code> 命令用於開啟<code class="literal">udeb</code>
軟體包,<code class="literal">udpkg</code> 命令是 <code class="literal">dpkg</code> 命令的一個精簡版本.</p>
</td>
</tr>
</table>
</div>
</div>
<div class="section">
<div class="titlepage">
<div>
<div>
<h3 class="title"><a id="_the_update_alternatives_command"/>2.5.10. update-alternatives 命令</h3>
</div>
</div>
</div>
<p>Debian 系統使用
<span class="citerefentry"><span class="refentrytitle">update-alternatives</span>(1)</span>
讓使用者可以不受干擾地安裝多種重疊的程式。例如,如果同時安裝了 <code class="literal">vim</code> 和
<code class="literal">nvi</code> 軟體包,你可以使 <code class="literal">vi</code> 命令選擇執行
<code class="literal">vim</code>。</p>
<pre class="screen">$ ls -l $(type -p vi)
lrwxrwxrwx 1 root root 20 2007-03-24 19:05 /usr/bin/vi -> /etc/alternatives/vi
$ sudo update-alternatives --display vi
...
$ sudo update-alternatives --config vi
Selection Command
----------------------------------------------
1 /usr/bin/vim
*+ 2 /usr/bin/nvi
Enter to keep the default[*], or type selection number: 1</pre>
<p>Debian 選擇系統在 "<code class="literal">/etc/alternatives/</code>"
目錄裡通過符號連結來維持它的選擇。選擇程序使用"<code class="literal">/var/lib/dpkg/alternatives/</code>"目錄裡面的相應檔案。</p>
</div>
<div class="section">
<div class="titlepage">
<div>
<div>
<h3 class="title"><a id="_the_dpkg_statoverride_command"/>2.5.11. dpkg-statoverride 命令</h3>
</div>
</div>
</div>
<p>當安裝一個軟體包時,由
<span class="citerefentry"><span class="refentrytitle">dpkg-statoverride</span>(8)</span>
命令提供的 <span class="strong"><strong>狀態修改</strong></span>,是告訴<span class="citerefentry"><span class="refentrytitle">dpkg</span>(1)</span>
對 <span class="strong"><strong>檔案</strong></span> 使用不同的屬主或許可權的一個方法。如果使用了
"<code class="literal">--update</code>" 選項,並且檔案存在,則該檔案會被立即設定為新的屬主和模式。</p>
<div class="caution" style="margin-left: 0.5in; margin-right: 0.5in;">
<table border="0" summary="Caution">
<tr>
<td rowspan="2" align="center" valign="top">
<img alt="[小心]" src="images/caution.png"/>
</td>
<th align="left">小心</th>
</tr>
<tr>
<td align="left" valign="top">
<p>系統管理員使用 <code class="literal">chmod</code> 或 <code class="literal">chown</code>
命令直接修改某個軟體包<span class="strong"><strong>檔案</strong></span>的屬主或許可權,將會在下次軟體包升級時,被重置。</p>
</td>
</tr>
</table>
</div>
<div class="note" style="margin-left: 0.5in; margin-right: 0.5in;">
<table border="0" summary="Note">
<tr>
<td rowspan="2" align="center" valign="top">
<img alt="[注意]" src="images/note.png"/>
</td>
<th align="left">注意</th>
</tr>
<tr>
<td align="left" valign="top">
<p>本人在此使用了<span class="strong"><strong>檔案</strong></span>
一詞,但事實上也可用於<code class="literal">dpkg</code> 所處理的任何檔案系統物件,包括目錄,裝置等。</p>
</td>
</tr>
</table>
</div>
</div>
<div class="section">
<div class="titlepage">
<div>
<div>
<h3 class="title"><a id="_the_dpkg_divert_command"/>2.5.12. dpkg-divert 命令</h3>
</div>
</div>
</div>
<p><span class="citerefentry"><span class="refentrytitle">dpkg-divert</span>(8)</span>
命令提供的檔案<span class="strong"><strong>轉移</strong></span>,是迫使
<span class="citerefentry"><span class="refentrytitle">dpkg</span>(1)</span>
將檔案不安裝到其預設位置,而是安裝到<span class="strong"><strong>轉移</strong></span>
的位置。<code class="literal">dpkg-divert</code> 是軟體包維護指令碼。不建議系統管理員使用這個命令。</p>
</div>
</div>
<div class="section">
<div class="titlepage">
<div>
<div>
<h2 class="title"><a id="_recovery_from_a_broken_system"/>2.6. 從損壞的系統中恢復</h2>
</div>
</div>
</div>
<p>當執行 <code class="literal">unstable</code> 系統,系統管理員會遇到從錯誤的軟體包管理進行恢復的情形。</p>
<div class="caution" style="margin-left: 0.5in; margin-right: 0.5in;">
<table border="0" summary="Caution">
<tr>
<td rowspan="2" align="center" valign="top">
<img alt="[小心]" src="images/caution.png"/>
</td>
<th align="left">小心</th>
</tr>
<tr>
<td align="left" valign="top">
<p>下面的一些方法具有很高的風險。在此先對你進行警告!</p>
</td>
</tr>
</table>
</div>
<div class="section">
<div class="titlepage">
<div>
<div>
<h3 class="title"><a id="_incompatibility_with_old_user_configuration"/>2.6.1. 不相容舊的使用者配置</h3>
</div>
</div>
</div>
<p>如果一個桌面 GUI
程式在重要的上游版本升級後變得不穩定,你應該懷疑這是舊的本地配置檔案(由它建立的)所導致的。如果它在新建的使用者賬號下執行穩定,那麼這個假設就得到了證實。(這是一個打包的
bug 並且打包者通常會避免它。)</p>
<p>為了恢復穩定,你應該移除相應的本地配置檔案並重新啟動 GUI 程式。你可能需要閱讀舊的配置檔案內容以便之後恢復配置資訊。(別將它們刪得太快了。)</p>
</div>
<div class="section">
<div class="titlepage">
<div>
<div>
<h3 class="title"><a id="_different_packages_with_overlapped_files"/>2.6.2. 具有相同檔案的不同軟體包</h3>
</div>
</div>
</div>
<p>文件級的軟體包管理系統,比如說
<span class="citerefentry"><span class="refentrytitle">aptitude</span>(8)</span>
或
<span class="citerefentry"><span class="refentrytitle">apt-get</span>(1)</span>,
使用軟體包依賴,當出現相同檔案時,不會嘗試去安裝軟體包。(參見 <a class="xref" href="ch02.zh-tw.html#_package_dependencies" title="2.1.6. 軟體包依賴關係">第 2.1.6 节 “軟體包依賴關係”</a>).</p>
<p>軟體包維護者的錯誤,或者系統管理員配置了不一致的檔案庫混合源,(參見 <a class="xref" href="ch02.zh-tw.html#_packages_from_mixed_source_of_archives" title="2.7.2. 混合源檔案庫中的軟體包">第 2.7.2 节 “混合源檔案庫中的軟體包”</a>),都會出現不正確的軟體包依賴情況。如果在出現相同檔案的情況下,你通過
<span class="citerefentry"><span class="refentrytitle">aptitude</span>(8)</span>
或
<span class="citerefentry"><span class="refentrytitle">apt-get</span>(1)</span>
安裝軟體包,<span class="citerefentry"><span class="refentrytitle">dpkg</span>(1)</span>
在對軟體包解包時,確定會給呼叫程式返回錯誤,並不會覆蓋已經存在的檔案。</p>
<div class="caution" style="margin-left: 0.5in; margin-right: 0.5in;">
<table border="0" summary="Caution">
<tr>
<td rowspan="2" align="center" valign="top">
<img alt="[小心]" src="images/caution.png"/>
</td>
<th align="left">小心</th>
</tr>
<tr>
<td align="left" valign="top">
<p>使用第三方軟體包會導致重大的系統風險,因為其通過使用 root
許可權執行維護者指令碼能夠對你的系統做任何事。<span class="citerefentry"><span class="refentrytitle">dpkg</span>(1)</span>
命令只防止解包時的覆蓋行為。</p>
</td>
</tr>
</table>
</div>
<p>可以先通過刪除舊的令人討厭的軟體包,<code class="literal"><old-package></code>,來解決這類錯誤的安裝問題。</p>
<pre class="screen">$ sudo dpkg -P <old-package></pre>
</div>
<div class="section">
<div class="titlepage">
<div>
<div>
<h3 class="title"><a id="_fixing_broken_package_script"/>2.6.3. 修復損壞的軟體包指令碼</h3>
</div>
</div>
</div>
<p>當軟體包指令碼中的一個命令由於某些原因返回錯誤,指令碼也將由於錯誤而退出,軟體包管理系統忽略它們的行為,並導致部分安裝的軟體包。當一個軟體包在它的刪除指令碼中有錯誤時,該軟體包將會成為不可能刪除的軟體包,處理這些問題,都會變得相當棘手。</p>
<p>對於 “<code class="literal"><package_name></code>” 的軟體包指令碼問題,你應該檢視下列的軟體包指令碼。</p>
<div class="itemizedlist">
<ul class="itemizedlist">
<li class="listitem">
<p>
"<code class="literal">/var/lib/dpkg/info/<package_name>.preinst</code>"
</p>
</li>
<li class="listitem">
<p>
"<code class="literal">/var/lib/dpkg/info/<package_name>.postinst</code>"
</p>
</li>
<li class="listitem">
<p>
"<code class="literal">/var/lib/dpkg/info/<package_name>.prerm</code>"
</p>
</li>
<li class="listitem">
<p>
"<code class="literal">/var/lib/dpkg/info/<package_name>.postrm</code>"
</p>
</li>
</ul>
</div>
<p>使用下列的方法,以 root 編輯損壞的軟體包指令碼。</p>
<div class="itemizedlist">
<ul class="itemizedlist">
<li class="listitem">
<p>
在行首新增 “<code class="literal">#</code>” 可以禁用出錯的行
</p>
</li>
<li class="listitem">
<p>
在出錯行的行尾新增 “<code class="literal">|| true</code>” 可以強制返回成功
</p>
</li>
</ul>
</div>
<p>使用下列命令來配置所有部分安裝的軟體包。</p>
<pre class="screen"># dpkg --configure -a</pre>
</div>
<div class="section">
<div class="titlepage">
<div>
<div>
<h3 class="title"><a id="_rescue_with_the_dpkg_command"/>2.6.4. 使用 dpkg 命令進行救援</h3>
</div>
</div>
</div>
<p>因為 <code class="literal">dpkg</code> 是非常底層的軟體包工具,它可以在很糟糕的情況下進行工作,例如無法啟動系統且沒有網路連線。讓我們假定
<code class="literal">foo</code> 軟體包損壞了,並且需要更換。</p>
<p>你可以在軟體包快取目錄:“<code class="literal">/var/cache/apt/archives/</code>” 中找到舊的
<code class="literal">foo</code> 軟體包的無 bug 版本。(如果找不到,你可以從檔案庫 <a class="ulink" href="http://snapshot.debian.org/">http://snapshot.debian.org/</a>
中下載它,或從具有軟體包快取功能的機器中拷貝它。)</p>
<p>如果你能夠啟動系統,你可以通過下列命令來安裝它。</p>
<pre class="screen"># dpkg -i /path/to/foo_<old_version>_<arch>.deb</pre>
<div class="tip" style="margin-left: 0.5in; margin-right: 0.5in;">
<table border="0" summary="Tip">
<tr>
<td rowspan="2" align="center" valign="top">
<img alt="[提示]" src="images/tip.png"/>
</td>
<th align="left">提示</th>
</tr>
<tr>
<td align="left" valign="top">
<p>如果你係統損壞較小,你也可以使用更高層的 APT 系統來降級整個系統,就像 <a class="xref" href="ch02.zh-tw.html#_emergency_downgrading" title="2.7.10. 緊急降級">第 2.7.10 节 “緊急降級”</a> 中做的那樣。</p>
</td>
</tr>
</table>
</div>
<p>如果你的系統無法從硬碟啟動,你應該尋找其它方式來啟動它。</p>
<div class="orderedlist">
<ol class="orderedlist">
<li class="listitem">
<p>
使用 Debian 安裝光碟以救援模式啟動系統。
</p>
</li>
<li class="listitem">
<p>
將硬碟上無法啟動的系統掛載到 “<code class="literal">/target</code>”。
</p>
</li>
<li class="listitem">
<p>
通過下列命令安裝舊版本的 <code class="literal">foo</code> 軟體包。
</p>
</li>
</ol>
</div>
<pre class="screen"># dpkg --root /target -i /path/to/foo_<old_version>_<arch>.deb</pre>
<p>即使位於硬碟上的 <code class="literal">dpkg</code> 命令已損壞,該命令依舊可以執行。</p>
<div class="tip" style="margin-left: 0.5in; margin-right: 0.5in;">
<table border="0" summary="Tip">
<tr>
<td rowspan="2" align="center" valign="top">
<img alt="[提示]" src="images/tip.png"/>
</td>
<th align="left">提示</th>
</tr>
<tr>
<td align="left" valign="top">
<p>任何由硬碟、live GNU/Linux CD、可啟動的 USB 驅動或網路啟動上的另一系統啟動的 GNU/Linux
系統到可以類似地用來救援損壞的系統。</p>
</td>
</tr>
</table>
</div>
<p>如果由於依賴問題,無法用這種方式安裝軟體包,並且你真的必須真麼做,你可以使用 <code class="literal">dpkg</code> 的
“<code class="literal">--ignore-depends</code>”、“<code class="literal">--force-depends</code>”
和其它選項來無視依賴。如果你這麼做了,之後你必須認真努力地修復依賴關係。更多細節參見
<span class="citerefentry"><span class="refentrytitle">dpkg</span>(8)</span>。</p>
<div class="note" style="margin-left: 0.5in; margin-right: 0.5in;">
<table border="0" summary="Note">
<tr>
<td rowspan="2" align="center" valign="top">
<img alt="[注意]" src="images/note.png"/>
</td>
<th align="left">注意</th>
</tr>
<tr>
<td align="left" valign="top">
<p>如果你的系統嚴重損壞了,你應該將系統完整備份到一個安全的地方(參見 <a class="xref" href="ch10.zh-tw.html#_backup_and_recovery" title="10.2. 備份和恢復">第 10.2 节 “備份和恢復”</a>)並進行一次全新的安裝。這是耗時較少且效果較好的辦法。</p>
</td>
</tr>
</table>
</div>
</div>
<div class="section">
<div class="titlepage">
<div>
<div>
<h3 class="title"><a id="_recovering_package_selection_data"/>2.6.5. 恢復軟體包選擇資料</h3>
</div>
</div>
</div>
<p>如果 “<code class="literal">/var/lib/dpkg/status</code>” 因為某種原因出現錯誤,Debian
系統會丟失軟體包選擇資料並受到嚴重影響。尋找位於 “<code class="literal">/var/lib/dpkg/status-old</code>” 或
“<code class="literal">/var/backups/dpkg.status.*</code>” 中舊的
“<code class="literal">/var/lib/dpkg/status</code>” 檔案。</p>
<p>給 “<code class="literal">/var/backups/</code>” 分配一個單獨的分割槽是一個好習慣,因為這個目錄包含了許多重要的系統資料。</p>
<p>對於嚴重的損壞,我建議備份系統後重新安裝。即使失去 “<code class="literal">/var/</code>” 中的所有資料,你依舊可以從
“<code class="literal">/usr/share/doc/</code>” 目錄恢復一些資訊來引導你進行新的安裝。</p>
<p>重新安裝最小(桌面)系統。</p>
<pre class="screen"># mkdir -p /path/to/old/system</pre>
<p>將舊系統掛載到 “<code class="literal">/path/to/old/system/</code>”。</p>
<pre class="screen"># cd /path/to/old/system/usr/share/doc
# ls -1 >~/ls1.txt
# cd /usr/share/doc
# ls -1 >>~/ls1.txt
# cd
# sort ls1.txt | uniq | less</pre>
<p>然後你就可以根據軟體包名稱來進行安裝了。(可能會有一些非軟體包名稱,例如 “<code class="literal">texmf</code>”。)</p>
</div>
</div>
<div class="section">
<div class="titlepage">
<div>
<div>
<h2 class="title"><a id="_tips_for_the_package_management"/>2.7. 軟體包管理技巧</h2>
</div>
</div>
</div>
<div class="section">
<div class="titlepage">
<div>
<div>
<h3 class="title"><a id="_how_to_pick_debian_packages"/>2.7.1. 如何挑選 Debian 軟體包</h3>
</div>
</div>
</div>
<p>你可以根據 <code class="literal">aptitude</code> 這個包管理工具中的軟體包描述或者是任務面板下的列表資訊,來查詢你所需要的軟體包。</p>
<p>當遇到2個以上的類似的軟體包時,先前沒有經過反覆的嘗試,你不知道安裝哪一個的時候,應該用<span class="strong"><strong>常識</strong></span>來判斷。我認為以下幾點是首選的軟體包應該具有的特徵。</p>
<div class="itemizedlist">
<ul class="itemizedlist">
<li class="listitem">
<p>
重要性:是 > 否
</p>
</li>
<li class="listitem">
<p>
型別:main > contrib > non-free
</p>
</li>
<li class="listitem">
<p>
優先順序:需要 > 重要 > 標準 > 可選 > 額外
</p>
</li>
<li class="listitem">
<p>
任務:在任務下有軟體包的列表資訊,例如 “桌面環境”
</p>
</li>
<li class="listitem">
<p>
軟體包是被與之有依賴關係的軟體包所選擇的(例如 <code class="literal"> python2.4</code> 依賴 <code class="literal">
python</code>)
</p>
</li>
<li class="listitem">
<p>
流行度:在投票或者安裝指數上有著更高的分數
</p>
</li>
<li class="listitem">
<p>
更新日誌:維護者經常的更新
</p>
</li>
<li class="listitem">
<p>
BTS (缺陷跟蹤系統):沒有 RC 級別的缺陷(沒有危險、重大嚴重的缺陷)
</p>
</li>
<li class="listitem">
<p>
BTS (缺陷跟蹤系統):有維護者對缺陷報告反饋
</p>
</li>
<li class="listitem">
<p>
BTS (缺陷跟蹤系統): 有著更多的近期修復的 bug 數目
</p>
</li>
<li class="listitem">
<p>
BTS (缺陷跟蹤系統):遺留的非嚴重(non-wishlist)缺陷數量較少
</p>
</li>
</ul>
</div>
<p>Debian 是一個使用分散式開發模式的志願專案,它的檔案庫包含了許多不同關注點和不同質量的軟體包。你必須做出自己的選擇。</p>
</div>
<div class="section">
<div class="titlepage">
<div>
<div>
<h3 class="title"><a id="_packages_from_mixed_source_of_archives"/>2.7.2. 混合源檔案庫中的軟體包</h3>
</div>
</div>
</div>
<div class="caution" style="margin-left: 0.5in; margin-right: 0.5in;">
<table border="0" summary="Caution">
<tr>
<td rowspan="2" align="center" valign="top">
<img alt="[小心]" src="images/caution.png"/>
</td>
<th align="left">小心</th>
</tr>
<tr>
<td align="left" valign="top">
<p>從混合源檔案庫中安裝軟體包是不被 Debian 官方發行版所支援的,除了官方支援的檔案庫的特殊組合以外,例如
<code class="literal">stable</code> 的 <a class="ulink" href="https://www.debian.org/security/">security
updates</a> 和 <a class="ulink" href="https://www.debian.org/News/2011/20110215">stretch-updates</a>。</p>
</td>
</tr>
</table>
</div>
<p>這裡有一個列子,在原有隻跟蹤 <code class="literal">testing</code> 的場景,操作包含在
<code class="literal">unstable</code> 裡發現的新的上游軟體包版本。</p>
<div class="orderedlist">
<ol class="orderedlist">
<li class="listitem">
<p>
臨時更改 "<code class="literal">/etc/apt/sources.list</code>" 檔案,使之指向單一的
"<code class="literal">unstable</code>" 發行版路徑。
</p>
</li>
<li class="listitem">
<p>
執行 "<code class="literal">aptitude update</code>" 命令。
</p>
</li>
<li class="listitem">
<p>
執行 "<code class="literal">aptitude install <package-name></code>" 命令。
</p>
</li>
<li class="listitem">
<p>
恢復到原始 "<code class="literal">/etc/apt/sources.list</code>" 檔案,使之指向
<code class="literal">testing</code> 路徑。
</p>
</li>
<li class="listitem">
<p>
執行 "<code class="literal">aptitude update</code>" 命令。
</p>
</li>
</ol>
</div>
<p>使用這個手工方法,你不需要建立 "<code class="literal">/etc/apt/preferences</code>" 檔案,也不需要擔心
apt-pinning。但這個方法仍然是非常麻煩的。</p>
<div class="caution" style="margin-left: 0.5in; margin-right: 0.5in;">
<table border="0" summary="Caution">
<tr>
<td rowspan="2" align="center" valign="top">
<img alt="[小心]" src="images/caution.png"/>
</td>
<th align="left">小心</th>
</tr>
<tr>
<td align="left" valign="top">
<p>當使用混合檔案源的時候,因為 Debian
不會確保軟體之間的相容性,所以你必須自己去解決相容性問題。如果軟體之間存在不相容性,系統可能會損壞。你必須能夠判斷這些操作所需的技術要求。使用任意混合的檔案源是完全可選的操作,我並不鼓勵你去使用它。</p>
</td>
</tr>
</table>
</div>
<p>從不同的檔案庫中安裝軟體包的一般規則如下。</p>
<div class="itemizedlist">
<ul class="itemizedlist">
<li class="listitem">
<p>
非二進位制軟體包 ("<code class="literal">Architecture: all</code>") 的安裝是<span class="strong"><strong>更保險的</strong></span>。
</p>
<div class="itemizedlist">
<ul class="itemizedlist">
<li class="listitem">
<p>
文件軟體包:沒有特別的要求
</p>
</li>
<li class="listitem">
<p>
解釋程式的軟體包:相容的直譯器必須是可用的
</p>
</li>
</ul>
</div>
</li>
<li class="listitem">
<p>
二進位制軟體包 (non "<code class="literal">Architecture: all</code>")通常會面臨很多障礙,它的安裝<span class="strong"><strong>不保險的</strong></span>。
</p>
<div class="itemizedlist">
<ul class="itemizedlist">
<li class="listitem">
<p>
庫檔案版本的相容性(包括 "<code class="literal">libc</code>")
</p>
</li>
<li class="listitem">
<p>
與之相關的有用的程式版本的相容性
</p>
</li>
<li class="listitem">
<p>
核心 <a class="ulink" href="https://zh.wikipedia.org/wiki/應用二進制接口">ABI</a> 的相容性
</p>
</li>
<li class="listitem">
<p>
C++ <a class="ulink" href="https://zh.wikipedia.org/wiki/應用二進制接口">ABI</a> 的相容性
</p>
</li>
<li class="listitem">
<p>
…
</p>
</li>
</ul>
</div>
</li>
</ul>
</div>
<div class="note" style="margin-left: 0.5in; margin-right: 0.5in;">
<table border="0" summary="Note">
<tr>
<td rowspan="2" align="center" valign="top">
<img alt="[注意]" src="images/note.png"/>
</td>
<th align="left">注意</th>
</tr>
<tr>
<td align="left" valign="top">
<p>為了使軟體包的安裝變得<span class="strong"><strong>更保險</strong></span>
,一些商業的非自由的二進位制程式包可能會提供完整的靜態連結庫。你還是應該檢查 <a class="ulink" href="https://zh.wikipedia.org/wiki/應用二進制接口">ABI</a>
的相容性問題等等。</p>
</td>
</tr>
</table>
</div>
<div class="note" style="margin-left: 0.5in; margin-right: 0.5in;">
<table border="0" summary="Note">
<tr>
<td rowspan="2" align="center" valign="top">
<img alt="[注意]" src="images/note.png"/>
</td>
<th align="left">注意</th>
</tr>
<tr>
<td align="left" valign="top">
<p>為避免短期出現壞的軟體包,從非官方支援的檔案庫安裝二進位制軟體包通常是一個壞注意。即使你在使用 apt-pinning 情況下,也是這樣的。(參見
<a class="xref" href="ch02.zh-tw.html#_tweaking_candidate_version" title="2.7.3. 調整候選版本">第 2.7.3 节 “調整候選版本”</a>).你應當考慮使用 chroot 或類似技術(參見 <a class="xref" href="ch09.zh-tw.html#_virtualized_system" title="9.10. 虛擬化系統">第 9.10 节 “虛擬化系統”</a>)來執行不同檔案庫的程式。</p>
</td>
</tr>
</table>
</div>
</div>
<div class="section">
<div class="titlepage">
<div>
<div>
<h3 class="title"><a id="_tweaking_candidate_version"/>2.7.3. 調整候選版本</h3>
</div>
</div>
</div>
<p>沒有 "<code class="literal">/etc/apt/preferences</code>" 檔案,APT 系統使用版本字串來選擇最新的可用版本作為
<span class="strong"><strong>候選版本</strong></span>。這是通常的狀態,也是 APT
系統最推薦的使用方法。所有官方支援的檔案庫集合,並不要求 "<code class="literal">/etc/apt/preferences</code>"
檔案,因此,一些不應當被作為自動更新源的軟體包,被標記為 <span class="strong"><strong>NotAutomatic</strong></span>,並被適當處理。</p>
<div class="tip" style="margin-left: 0.5in; margin-right: 0.5in;">
<table border="0" summary="Tip">
<tr>
<td rowspan="2" align="center" valign="top">
<img alt="[提示]" src="images/tip.png"/>
</td>
<th align="left">提示</th>
</tr>
<tr>
<td align="left" valign="top">
<p>版本字串的比較規則可以被驗證,例子如下,"<code class="literal">dpkg --compare-versions ver1.1 gt ver1.1~1;
echo $?</code>" (參見
<span class="citerefentry"><span class="refentrytitle">dpkg</span>(1)</span>)。</p>
</td>
</tr>
</table>
</div>
<p>如果經常從混合源檔案庫中安裝軟體包 (參見<a class="xref" href="ch02.zh-tw.html#_packages_from_mixed_source_of_archives" title="2.7.2. 混合源檔案庫中的軟體包">第 2.7.2 节 “混合源檔案庫中的軟體包”</a>), 你可以通過建立
"<code class="literal">/etc/apt/preferences</code>" 檔案並且在其中寫入關於調整<span class="strong"><strong>候選版本</strong></span>的軟體包選取規則的合適條目
(如<span class="citerefentry"><span class="refentrytitle">apt_preferences</span>(5)</span>
中所示)來自動化這些複雜的操作。這被稱為 <span class="strong"><strong>apt-pinning</strong></span>。</p>
<div class="warning" style="margin-left: 0.5in; margin-right: 0.5in;">
<table border="0" summary="Warning">
<tr>
<td rowspan="2" align="center" valign="top">
<img alt="[警告]" src="images/warning.png"/>
</td>
<th align="left">警告</th>
</tr>
<tr>
<td align="left" valign="top">
<p>新手用 apt-pinning 命令會造成比較大的問題。你必須避免使用這個命令除非確實需要它。</p>
</td>
</tr>
</table>
</div>
<div class="caution" style="margin-left: 0.5in; margin-right: 0.5in;">
<table border="0" summary="Caution">
<tr>
<td rowspan="2" align="center" valign="top">
<img alt="[小心]" src="images/caution.png"/>
</td>
<th align="left">小心</th>
</tr>
<tr>
<td align="left" valign="top">
<p>當使用 apt-pinning 命令時,因為 Debian 不會確保軟體之間的相容性,所以你必須自己確認其相容性。apt-pinning
是完全可選的操作,我並不建議去使用它。</p>
</td>
</tr>
</table>
</div>
<div class="caution" style="margin-left: 0.5in; margin-right: 0.5in;">
<table border="0" summary="Caution">
<tr>
<td rowspan="2" align="center" valign="top">
<img alt="[小心]" src="images/caution.png"/>
</td>
<th align="left">小心</th>
</tr>
<tr>
<td align="left" valign="top">
<p>檔案庫層級的 Release 檔案 (參見 <a class="xref" href="ch02.zh-tw.html#_archive_level_release_files" title="2.5.3. 檔案庫層的“Release”檔案">第 2.5.3 节 “檔案庫層的“Release”檔案”</a>) 使用
<span class="citerefentry"><span class="refentrytitle">apt_preferences</span>(5)</span>
的規則.對於 <a class="ulink" href="http://deb.debian.org/debian/dists/">Debian 通用檔案庫</a> 和 <a class="ulink" href="http://security.debian.org/dists/">Debian 安全檔案庫</a>,apt-pinning 只在 "suite"
名下工作。(這點和 <a class="ulink" href="http://www.ubuntu.com/">Ubuntu</a> 檔案庫不同.)例如,你在
"<code class="literal">/etc/apt/preferences</code>" 檔案裡面,可以使用"<code class="literal">Pin: release
a=unstable</code>" ,但不能使用 "<code class="literal">Pin: release a=sid</code>".</p>
</td>
</tr>
</table>
</div>
<div class="caution" style="margin-left: 0.5in; margin-right: 0.5in;">
<table border="0" summary="Caution">
<tr>
<td rowspan="2" align="center" valign="top">
<img alt="[小心]" src="images/caution.png"/>
</td>
<th align="left">小心</th>
</tr>
<tr>
<td align="left" valign="top">
<p>當使用非 Debian 的檔案庫作為 apt-pinning 的一部分時,你應該檢查它們的用途和可信度。例如,Ubuntu 和 Debian
是不能混在一起的。</p>
</td>
</tr>
</table>
</div>
<div class="note" style="margin-left: 0.5in; margin-right: 0.5in;">
<table border="0" summary="Note">
<tr>
<td rowspan="2" align="center" valign="top">
<img alt="[注意]" src="images/note.png"/>
</td>
<th align="left">注意</th>
</tr>
<tr>
<td align="left" valign="top">
<p>即使不建立 "<code class="literal">/etc/apt/preferences</code>" 檔案,在不用 apt-pinning
命令的情況下,你也可以進行相當複雜的系統工作 (參見<a class="xref" href="ch02.zh-tw.html#_rescue_with_the_dpkg_command" title="2.6.4. 使用 dpkg 命令進行救援">第 2.6.4 节 “使用 dpkg 命令進行救援”</a>和<a class="xref" href="ch02.zh-tw.html#_packages_from_mixed_source_of_archives" title="2.7.2. 混合源檔案庫中的軟體包">第 2.7.2 节 “混合源檔案庫中的軟體包”</a>)。</p>
</td>
</tr>
</table>
</div>
<p>如下是關於 <span class="strong"><strong>apt-pinning</strong></span> 技術的簡化說明。</p>
<p>可用的軟體包源在 "<code class="literal">/etc/apt/sources.list</code>" 檔案裡面定義,APT
系統從可用的軟體包源裡面選擇 Pin-Priority 值最大的,作為<span class="strong"><strong>升級</strong></span>
軟體包的<span class="strong"><strong>候選版本</strong></span>.如果一個軟體包的 Pin-Priority 大於
1000,這個版本限制為只能 <span class="strong"><strong>升級</strong></span>,關閉了軟體包降級功能 (參見 <a class="xref" href="ch02.zh-tw.html#_emergency_downgrading" title="2.7.10. 緊急降級">第 2.7.10 节 “緊急降級”</a>).</p>
<p>每個軟體包的 Pin-Priority 值是在 "<code class="literal">/etc/apt/preferences</code>" 檔案中的
"Pin-Priority" 條目中定義或者是使用它的預設值。</p>
<div class="table">
<a id="listofnotablepinpinningtechnique"/>
<p class="title">
<strong>表 2.18. 用於 <span class="strong">apt-pinning</span> 技術的值得注意的 Pin-Priority 值列表。</strong>
</p>
<div class="table-contents">
<table class="table" summary="用於 apt-pinning 技術的值得注意的 Pin-Priority 值列表。" border="1">
<colgroup>
<col style="text-align: left"/>
<col style="text-align: left"/>
</colgroup>
<thead>
<tr>
<th style="text-align: left">
Pin-Priority
</th>
<th style="text-align: left">
apt-pinning 對軟體包的影響
</th>
</tr>
</thead>
<tbody>
<tr>
<td style="text-align: left">
1001
</td>
<td style="text-align: left">
安裝該軟體包,即使是一個降級軟體包的指令
</td>
</tr>
<tr>
<td style="text-align: left">
990
</td>
<td style="text-align: left">
用作<span class="strong"><strong>目標發行版</strong></span>檔案庫的預設值
</td>
</tr>
<tr>
<td style="text-align: left">
500
</td>
<td style="text-align: left">
用作<span class="strong"><strong>常規</strong></span>檔案庫的預設值
</td>
</tr>
<tr>
<td style="text-align: left">
100
</td>
<td style="text-align: left">
用於 <span class="strong"><strong>NotAutomatic</strong></span> 和 <span class="strong"><strong>ButAutomaticUpgrades</strong></span> 檔案庫的預設值
</td>
</tr>
<tr>
<td style="text-align: left">
100
</td>
<td style="text-align: left">
用於<span class="strong"><strong>已安裝</strong></span>軟體包
</td>
</tr>
<tr>
<td style="text-align: left">
1
</td>
<td style="text-align: left">
用於 <span class="strong"><strong>NotAutomatic</strong></span> 檔案庫的預設值
</td>
</tr>
<tr>
<td style="text-align: left">
-1
</td>
<td style="text-align: left">即使被推薦,<span class="strong"><strong>也絕不安裝</strong></span>這個軟體包
</td>
</tr>
</tbody>
</table>
</div>
</div>
<br class="table-break"/>
<p><span class="strong"><strong>目標發行版</strong></span>檔案庫可以通過以下幾種方法來設定。</p>
<div class="itemizedlist">
<ul class="itemizedlist">
<li class="listitem">
<p>
"<code class="literal">/etc/apt/apt.conf</code>" 配置檔案中寫入
"<code class="literal">APT::Default-Release "stable";</code>"
</p>
</li>
<li class="listitem">
<p>
命令列選項,例如: "<code class="literal">apt-get install -t testing some-package</code>"
</p>
</li>
</ul>
</div>
<p><span class="strong"><strong>NotAutomatic</strong></span> 和 <span class="strong"><strong>ButAutomaticUpgrades</strong></span> 的檔案是由檔案庫伺服器上檔案層級的 Release
檔案來設定,(參見 <a class="xref" href="ch02.zh-tw.html#_archive_level_release_files" title="2.5.3. 檔案庫層的“Release”檔案">第 2.5.3 节 “檔案庫層的“Release”檔案”</a>),同時包含"<code class="literal">NotAutomatic:
yes</code>" 和 "<code class="literal">ButAutomaticUpgrades: yes</code>".而 <span class="strong"><strong>NotAutomatic</strong></span> 檔案也是由檔案庫伺服器上的檔案層級的 Release 檔案來設定,但只包含
"<code class="literal">NotAutomatic: yes</code>".</p>
<p>來自眾多檔案源的<軟體包>的 <span class="strong"><strong>apt-pinning 情況</strong></span>可以通過
"<code class="literal">apt-cache policy <package></code>" 命令顯示。</p>
<div class="itemizedlist">
<ul class="itemizedlist">
<li class="listitem">
<p>
"<code class="literal">Package pin:</code>" 開頭的行,列出了軟體包版本的 <span class="strong"><strong>pin</strong></span> ,如果 <package> 相關的 pin 已經定義, 例如,
"<code class="literal">Package pin: 0.190</code>".
</p>
</li>
<li class="listitem">
<p>
沒有 "<code class="literal">Package pin:</code>" 的行存在,如果沒有 <package> 相關的定義。
</p>
</li>
<li class="listitem">
<p>
與 <package> 相關的 Pin-Priority 值列在所有版本字串的右邊,比如,"<code class="literal">0.181
700</code>".
</p>
</li>
<li class="listitem">
<p>
"<code class="literal">0</code>" 是列在所有版本字串的右邊,如果沒有 <package> 相關的定義。例如,
"<code class="literal">0.181 0</code>".
</p>
</li>
<li class="listitem">
<p>
檔案庫 (在 "<code class="literal">/etc/apt/preferences</code>" 檔案作為"<code class="literal">Package:
*</code>"定義) 的 Pin-Priority 值,列在所有檔案庫路徑的左邊,例如,"<code class="literal">100
http://deb.debian.org/debian/ stretch-backports/main
Packages</code>".
</p>
</li>
</ul>
</div>
</div>
<div class="section">
<div class="titlepage">
<div>
<div>
<h3 class="title"><a id="_updates_and_backports"/>2.7.4. 更新和向後移植</h3>
</div>
</div>
</div>
<p><a class="ulink" href="https://www.debian.org/News/2011/20110215">stretch-updates</a> 和
<a class="ulink" href="http://backports.debian.org">backports.debian.org</a>
檔案庫提供了<code class="literal">stable</code> (<code class="literal">stretch</code>)
發行版的更新軟體包。</p>
<p>為了去使用這些檔案庫,你需要在 "<code class="literal">/etc/apt/sources.list</code>" 檔案裡寫入如下所示的檔案庫列表。</p>
<pre class="screen">deb http://deb.debian.org/debian/ stretch main contrib non-free
deb http://security.debian.org/ stretch/updates main contrib
deb http://deb.debian.org/debian/ stretch-updates main contrib non-free
deb http://deb.debian.org/debian/ stretch-backports main contrib non-free</pre>
<p>並不需要在 "<code class="literal">/etc/apt/preferences</code>" 檔案中顯式設定Pin-Priority值.
當新的包可用時,預設配置提供了更合理的更新 (請見 <a class="xref" href="ch02.zh-tw.html#_archive_level_release_files" title="2.5.3. 檔案庫層的“Release”檔案">第 2.5.3 节 “檔案庫層的“Release”檔案”</a>).</p>
<div class="itemizedlist">
<ul class="itemizedlist">
<li class="listitem">
<p>
所有已安裝的舊軟體包都可以通過 <code class="literal">stretch-updates</code> 檔案庫升級到新軟體包。
</p>
</li>
<li class="listitem">
<p>
只有從 <code class="literal">stretch-backports</code> 檔案庫中手動安裝的舊軟體包才會通過
<code class="literal">stretch-backports</code> 檔案庫升級到新軟體包。
</p>
</li>
</ul>
</div>
<p>當你想要從 <code class="literal">stretch-backports</code> 檔案庫中手動的安裝一個名叫
"<code class="literal"><package-name></code>" 的軟體及其依賴包的時候,你應該在目標檔案庫之前加一個 “-t"
引數。</p>
<pre class="screen">$ sudo apt-get install -t stretch-backports <package-name></pre>
</div>
<div class="section">
<div class="titlepage">
<div>
<div>
<h3 class="title"><a id="_blocking_packages_installed_by_recommends"/>2.7.5. 阻止推薦的軟體包的安裝</h3>
</div>
</div>
</div>
<p>如果不想要引入推薦的特定軟體包,你必須建立 "<code class="literal">/etc/apt/preferences</code>"
檔案並且像如下所示的那樣在檔案的頂部明確列出這些軟體包。</p>
<pre class="screen">Package: <package-1>
Pin: version *
Pin-Priority: -1
Package: <package-2>
Pin: version *
Pin-Priority: -1</pre>
</div>
<div class="section">
<div class="titlepage">
<div>
<div>
<h3 class="title"><a id="_tracking_literal_testing_literal_with_some_packages_from_literal_unstable_literal"/>2.7.6. 使用帶有 <code class="literal">unstable</code> 軟體包的 <code class="literal">testing</code> 版本</h3>
</div>
</div>
</div>
<p>如下是一個關於 <span class="strong"><strong>apt-pinning</strong></span> 技術的例子,當使用
<code class="literal">testing</code>的時候,實現 <code class="literal">unstable</code>
中的特定的較新的上游版本軟體包的日常升級。你應該按如下所示的在 "<code class="literal">/etc/apt/sources.list</code>"
檔案中列出所有需要的檔案庫。</p>
<pre class="screen">deb http://deb.debian.org/debian/ testing main contrib non-free
deb http://deb.debian.org/debian/ unstable main contrib non-free
deb http://security.debian.org/ testing/updates main contrib</pre>
<p>按如下所示的設定 "<code class="literal">/etc/apt/preferences</code>" 檔案。</p>
<pre class="screen">Package: *
Pin: release a=unstable
Pin-Priority: 100</pre>
<p>當想要在此配置下從 <code class="literal">unstable</code> 檔案庫中安裝
"<code class="literal"><package-name></code>" 軟體及它的依賴包時,你執行帶有
"<code class="literal">-t</code>" 選項 (<code class="literal">unstable</code> 的 Pin-Priority 值變為
990) 的轉換目標發行版的命令。</p>
<pre class="screen">$ sudo apt-get install -t unstable <package-name></pre>
<p>在此配置下,執行 "<code class="literal">apt-get update</code>" 和 "<code class="literal">apt-get
dist-upgrade</code>"(或者 "<code class="literal">aptitude safe-upgrade</code>" 和
"<code class="literal">aptitude full-upgrade</code>") 命令,會從 <code class="literal">testing</code>
檔案庫升級那些從 <code class="literal">testing</code> 檔案庫安裝的軟體包並且從 <code class="literal">unstable</code>
檔案庫升級那些從 <code class="literal">unstable</code> 檔案庫中安裝的軟體包。</p>
<div class="caution" style="margin-left: 0.5in; margin-right: 0.5in;">
<table border="0" summary="Caution">
<tr>
<td rowspan="2" align="center" valign="top">
<img alt="[小心]" src="images/caution.png"/>
</td>
<th align="left">小心</th>
</tr>
<tr>
<td align="left" valign="top">
<p>小心不要去移除 "<code class="literal">/etc/apt/sources.list</code>" 檔案中的
"<code class="literal">testing</code>" 檔案庫。如果檔案中沒有 "<code class="literal">testing</code>" ,APT
系統會使用更加新的 <code class="literal">unstable</code> 檔案庫升級軟體包。</p>
</td>
</tr>
</table>
</div>
<div class="tip" style="margin-left: 0.5in; margin-right: 0.5in;">
<table border="0" summary="Tip">
<tr>
<td rowspan="2" align="center" valign="top">
<img alt="[提示]" src="images/tip.png"/>
</td>
<th align="left">提示</th>
</tr>
<tr>
<td align="left" valign="top">
<p>我通常會在上述操作後,馬上註釋掉 "<code class="literal">/etc/apt/sources.list</code>" 檔案中的
"<code class="literal">unstable</code>" 檔案庫記錄。這避免了因為處理
"<code class="literal">/etc/apt/sources.list</code>" 檔案中的眾多記錄而造成的升級緩慢雖然同時也阻止了那些從
<code class="literal">unstable</code> 檔案庫中安裝的軟體包通過 <code class="literal">unstable</code> 升級。</p>
</td>
</tr>
</table>
</div>
<div class="tip" style="margin-left: 0.5in; margin-right: 0.5in;">
<table border="0" summary="Tip">
<tr>
<td rowspan="2" align="center" valign="top">
<img alt="[提示]" src="images/tip.png"/>
</td>
<th align="left">提示</th>
</tr>
<tr>
<td align="left" valign="top">
<p>如果 "<code class="literal">/etc/apt/preferences</code>" 檔案中 "<code class="literal">Pin-Priority:
1</code>" 替代了 "<code class="literal">Pin-Priority:100</code>",即使
"<code class="literal">/etc/apt/sources.list</code>" 檔案中的 "<code class="literal">testing</code>"
記錄被刪除了,Pin-Priority 值為 100 的已安裝軟體包也不會通過 <code class="literal">unstable</code> 檔案庫升級。</p>
</td>
</tr>
</table>
</div>
<p>如果你希望自動跟蹤 <code class="literal">unstable</code> 裡某些特殊的軟體包,而在安裝時不再使用初始化選項 "<code class="literal">-t
unstable</code>" , 你必須建立 "<code class="literal">/etc/apt/preferences</code>"
檔案,並在該檔案頂部按下面的方式清晰的列出所有那些軟體包。</p>
<pre class="screen">Package: <package-1>
Pin: release a=unstable
Pin-Priority: 700
Package: <package-2>
Pin: release a=unstable
Pin-Priority: 700</pre>
<p>如下是為每個特定的軟體包設定 Pin-Priority 值。例如,為了使用最新的 <code class="literal">unstable</code> 的英文版
"Debian Reference",你應該在 "<code class="literal">/etc/apt/preferences</code>" 檔案中寫入以下條目。</p>
<pre class="screen">Package: debian-reference-en
Pin: release a=unstable
Pin-Priority: 700
Package: debian-reference-common
Pin: release a=unstable
Pin-Priority: 700</pre>
<div class="tip" style="margin-left: 0.5in; margin-right: 0.5in;">
<table border="0" summary="Tip">
<tr>
<td rowspan="2" align="center" valign="top">
<img alt="[提示]" src="images/tip.png"/>
</td>
<th align="left">提示</th>
</tr>
<tr>
<td align="left" valign="top">
<p>即使你使用的是 <code class="literal">stable</code> 檔案庫,apt-pinning 技術仍然是有效的。根據我以前的經驗,從
<code class="literal">unstable</code> 檔案庫安裝的文件包一直是安全的。</p>
</td>
</tr>
</table>
</div>
</div>
<div class="section">
<div class="titlepage">
<div>
<div>
<h3 class="title"><a id="_tracking_literal_unstable_literal_with_some_packages_from_literal_experimental_literal"/>2.7.7. 使用帶有 <code class="literal">experimental</code> 軟體包的 <code class="literal">unstable</code> 版本</h3>
</div>
</div>
</div>
<p>這是使用<span class="strong"><strong>apt-pinning</strong></span>
的另一個示例,該示例主要使用<code class="literal">unstable</code>源,但包含了<code class="literal">experimental</code>源,
該源可用於安裝上游更新的軟體包 . 需要包含在"<code class="literal">/etc/apt/sources.list</code>" 檔案中的列表如下:</p>
<pre class="screen">deb http://deb.debian.org/debian/ unstable main contrib non-free
deb http://deb.debian.org/debian/ experimental main contrib non-free
deb http://security.debian.org/ testing/updates main contrib</pre>
<p>由於<code class="literal">experimental</code>源是 <span class="strong"><strong>非自動(NotAutomatic)</strong></span>的源 (參見 <a class="xref" href="ch02.zh-tw.html#_archive_level_release_files" title="2.5.3. 檔案庫層的“Release”檔案">第 2.5.3 节 “檔案庫層的“Release”檔案”</a>),其預設的Pin-Priority值 被設定為1
(<<100) .
並不需要在"<code class="literal">/etc/apt/preferences</code>"檔案中設定Pin-Priority值,只需要指定
<code class="literal">experimental</code> 源,除非你需要在下次更新時自動升級時更新特定軟體包.</p>
</div>
<div class="section">
<div class="titlepage">
<div>
<div>
<h3 class="title"><a id="_automatic_download_and_upgrade_of_packages"/>2.7.8. 自動下載和升級軟體包</h3>
</div>
</div>
</div>
<p><code class="literal">apt</code> 軟體包有自己的 cron 指令碼
“<code class="literal">/etc/cron.daily/apt</code>” ,它支援自動下載軟體包。可以安裝
<code class="literal">unattended-upgrades</code> 軟體包來增強這個指令碼,使它能夠自動升級軟體包。可以通過
“<code class="literal">/etc/apt/apt.conf.d/02backup</code>” 和
“<code class="literal">/etc/apt/apt.conf.d/50unattended-upgrades</code>”
中的引數來進行自定義,相關說明位於
“<code class="literal">/usr/share/doc/unattended-upgrades/README</code>” 中。</p>
<p><code class="literal">unattended-upgrades</code> 軟體包主要用於 <code class="literal">stable</code>
系統的安全更新。如果自動升級損壞 <code class="literal">stable</code>
系統的風險小於被入侵者利用已被安全更新修復的安全漏洞,你應該考慮使用自動更新,配置引數如下。</p>
<pre class="screen">APT::Periodic::Update-Package-Lists "1";
APT::Periodic::Download-Upgradeable-Packages "1";
APT::Periodic::Unattended-Upgrade "1";</pre>
<p>如果你執行的是 <code class="literal">unstable</code> 系統,你應該不會想要使用自動更新,因為它肯定會在某天損壞系統。即使位於這樣的
<code class="literal">unstable</code> 情況下,你可能依舊想提前下載軟體包以節省互動式升級的時間,其配置引數如下。</p>
<pre class="screen">APT::Periodic::Update-Package-Lists "1";
APT::Periodic::Download-Upgradeable-Packages "1";
APT::Periodic::Unattended-Upgrade "0";</pre>
</div>
<div class="section">
<div class="titlepage">
<div>
<div>
<h3 class="title"><a id="_limiting_download_bandwidth_for_apt"/>2.7.9. 限制 APT 的下載頻寬</h3>
</div>
</div>
</div>
<p>如果你想限制 APT 的下載頻寬到 800Kib/sec(=100KiB/sec),你應該像下面那樣設定 APT 的配置引數。</p>
<pre class="screen">APT::Acquire::http::Dl-Limit "800";</pre>
</div>
<div class="section">
<div class="titlepage">
<div>
<div>
<h3 class="title"><a id="_emergency_downgrading"/>2.7.10. 緊急降級</h3>
</div>
</div>
</div>
<div class="caution" style="margin-left: 0.5in; margin-right: 0.5in;">
<table border="0" summary="Caution">
<tr>
<td rowspan="2" align="center" valign="top">
<img alt="[小心]" src="images/caution.png"/>
</td>
<th align="left">小心</th>
</tr>
<tr>
<td align="left" valign="top">
<p>降級在 Debian
設計上就不被官方支援。僅僅是在緊急恢復過程中需要做的一部分工作。儘管憎恨這種情形,但降級在很多場景下工作得也不錯。對於重要系統,你應當在恢復操作後備份所有重要資料,並從零開始重新安裝一個新的系統。</p>
</td>
</tr>
</table>
</div>
<p>你可以通過控制<span class="strong"><strong>候選版本</strong></span>從新的檔案庫降級到舊的檔案庫(參見 <a class="xref" href="ch02.zh-tw.html#_tweaking_candidate_version" title="2.7.3. 調整候選版本">第 2.7.3 节 “調整候選版本”</a>),從而使損壞的系統恢復。下面是一種懶惰的方法,可以避免許多冗長的
“<code class="literal">dpkg -i <broken-package>_<old-version>.deb</code>”
命令(參見 <a class="xref" href="ch02.zh-tw.html#_rescue_with_the_dpkg_command" title="2.6.4. 使用 dpkg 命令進行救援">第 2.6.4 节 “使用 dpkg 命令進行救援”</a>)。</p>
<p>搜尋 “<code class="literal">/etc/apt/sources.list</code>” 檔案中像下面那樣使用
<code class="literal">unstable</code> 的行。</p>
<pre class="screen">deb http://deb.debian.org/debian/ sid main contrib non-free</pre>
<p>使用下面的行替換它,從而改為使用 <code class="literal">testing</code>。</p>
<pre class="screen">deb http://deb.debian.org/debian/ buster main contrib non-free</pre>
<p>按如下所示的設定 "<code class="literal">/etc/apt/preferences</code>" 檔案。</p>
<pre class="screen">Package: *
Pin: release a=testing
Pin-Priority: 1010</pre>
<p>執行 “<code class="literal">apt-get update; apt-get dist-upgrade</code>” 使整個系統的軟體包強制降級。</p>
<p>在緊急降級後,移除 “<code class="literal">/etc/apt/preferences</code>” 這個特殊的檔案。</p>
<div class="tip" style="margin-left: 0.5in; margin-right: 0.5in;">
<table border="0" summary="Tip">
<tr>
<td rowspan="2" align="center" valign="top">
<img alt="[提示]" src="images/tip.png"/>
</td>
<th align="left">提示</th>
</tr>
<tr>
<td align="left" valign="top">
<p>這是一個好方法,移除(不是清除!)儘可能多地軟體包,來減少依賴問題。你可能需要手動移除和安裝一些軟體包來使系統降級。需要特別注意 Linux
核心、載入程式、udev、PAM、APT 和網路相關的軟體包以及它們的配置檔案。</p>
</td>
</tr>
</table>
</div>
</div>
<div class="section">
<div class="titlepage">
<div>
<div>
<h3 class="title"><a id="_who_uploaded_the_package"/>2.7.11. 上傳軟體包的是誰?</h3>
</div>
</div>
</div>
<p>儘管 “<code class="literal">/var/lib/dpkg/available</code>” 和
“<code class="literal">/usr/share/doc/package_name/changelog</code>”
中列出的維護者姓名提供了關於“軟體包運作的幕後者是誰”這一問題的一些資訊,但軟體包的實際上傳者依舊不明。<code class="literal">devscripts</code>
軟體包中的
<span class="citerefentry"><span class="refentrytitle">who-uploads</span>(1)</span>
可以識別 Debian 源軟體包的實際上傳者。</p>
</div>
<div class="section">
<div class="titlepage">
<div>
<div>
<h3 class="title"><a id="_the_equivs_package"/>2.7.12. equivs 軟體包</h3>
</div>
</div>
</div>
<p>如果你從原始碼編譯了一個程式來代替 Debian 軟體包,最好將它做成一個真正的本地 Debian
軟體包(<code class="literal">*.deb</code>)並使用私人檔案庫。</p>
<p>如果你選擇從原始碼編譯一個程式並將它安裝到 “<code class="literal">/usr/local</code>”,你可能需要使用
<code class="literal">equivs</code> 作為最後步驟來滿足缺失的軟體包依賴。</p>
<pre class="screen">Package: equivs
Priority: optional
Section: admin
Description: Circumventing Debian package dependencies
This package provides a tool to create trivial Debian packages.
Typically these packages contain only dependency information, but they
can also include normal installed files like other packages do.
.
One use for this is to create a metapackage: a package whose sole
purpose is to declare dependencies and conflicts on other packages so
that these will be automatically installed, upgraded, or removed.
.
Another use is to circumvent dependency checking: by letting dpkg
think a particular package name and version is installed when it
isn't, you can work around bugs in other packages' dependencies.
(Please do still file such bugs, though.)</pre>
</div>
<div class="section">
<div class="titlepage">
<div>
<div>
<h3 class="title"><a id="_porting_a_package_to_the_stable_system"/>2.7.13. 移植一個軟體包到 stable 系統</h3>
</div>
</div>
</div>
<p>對於部分升級的 <code class="literal">stable</code>
系統,使用源軟體包在執行環境中重新構建一個軟體包是不錯的選擇。這可以避免因為依賴關係導致大量軟體包升級。</p>
<p>在 <code class="literal">stable</code> 系統的 “<code class="literal">/etc/apt/sources.list</code>”
檔案中新增下列條目。</p>
<pre class="screen">deb-src http://deb.debian.org/debian unstable main contrib non-free</pre>
<p>如下安裝編譯所需的軟體包並下載源軟體包。</p>
<pre class="screen"># apt-get update
# apt-get dist-upgrade
# apt-get install fakeroot devscripts build-essential
$ apt-get build-dep foo
$ apt-get source foo
$ cd foo*</pre>
<p>如果需要向後移植,可以從 backport 的軟體包中更新一些工具鏈軟體包,例如 <code class="literal">dpkg</code> 和
<code class="literal">debhelper</code>。</p>
<p>執行下列命令。</p>
<pre class="screen">$ dch -i</pre>
<p>更新軟體包版本,例如在 “<code class="literal">debian/changelog</code>” 中附加一個
“<code class="literal">+bp1</code>”</p>
<p>像下面那樣構建軟體包並將它們安裝到系統中。</p>
<pre class="screen">$ debuild
$ cd ..
# debi foo*.changes</pre>
</div>
<div class="section">
<div class="titlepage">
<div>
<div>
<h3 class="title"><a id="_proxy_server_for_apt"/>2.7.14. 用於 APT 的代理伺服器</h3>
</div>
</div>
</div>
<p>因為映象整個 Debian 檔案庫的子區會浪費硬碟和網路頻寬,當你管理許多 <a class="ulink" href="https://zh.wikipedia.org/wiki/Local_area_network">LAN</a> 上的系統時,為
APT 部署一個本地代理伺服器是個好主意。APT 可以通過配置來使用通用 web(http)代理伺服器,例如
<code class="literal">squid</code>(參見 <a class="xref" href="ch06.zh-tw.html#_other_network_application_servers" title="6.10. 其它網路應用服務">第 6.10 节 “其它網路應用服務”</a>),細節參見
<span class="citerefentry"><span class="refentrytitle">apt.conf</span>(5)</span>
和 “<code class="literal">/usr/share/doc/apt/examples/configure-index.gz</code>”。環境變數
“<code class="literal">$http_proxy</code> 會覆蓋 “<code class="literal">/etc/apt/apt.conf</code>”
檔案中設定的代理伺服器。</p>
<p>這裡有一些 Debian 檔案庫的專用代理工具。你應該在使用它們之前檢查 BTS。</p>
<div class="table">
<a id="listoftheproxytofordebianarchive"/>
<p class="title">
<strong>表 2.19. Debian 檔案庫的專用代理工具</strong>
</p>
<div class="table-contents">
<table class="table" summary="Debian 檔案庫的專用代理工具" border="1">
<colgroup>
<col style="text-align: left"/>
<col style="text-align: left"/>
<col style="text-align: left"/>
<col style="text-align: left"/>
</colgroup>
<thead>
<tr>
<th style="text-align: left">
軟件包
</th>
<th style="text-align: left">
流行度
</th>
<th style="text-align: left">
大小
</th>
<th style="text-align: left">
說明
</th>
</tr>
</thead>
<tbody>
<tr>
<td style="text-align: left">
<a class="ulink" href="http://packages.debian.org/sid/approx">
<code class="literal">approx</code> </a>
</td>
<td style="text-align: left">
<a class="ulink" href="http://qa.debian.org/popcon.php?package=approx">V:0, I:0</a>
</td>
<td style="text-align: left">
<a class="ulink" href="http://packages.qa.debian.org/a/approx.html">4729</a>
</td>
<td style="text-align: left">
快取 Debian 檔案庫檔案的代理伺服器(已編譯的 <a class="ulink" href="https://zh.wikipedia.org/wiki/Objective_Caml">OCaml</a> 程式)
</td>
</tr>
<tr>
<td style="text-align: left">
<a class="ulink" href="http://packages.debian.org/sid/apt-cacher">
<code class="literal">apt-cacher</code> </a>
</td>
<td style="text-align: left">
<a class="ulink" href="http://qa.debian.org/popcon.php?package=apt-cacher">V:1, I:1</a>
</td>
<td style="text-align: left">
<a class="ulink" href="http://packages.qa.debian.org/a/apt-cacher.html">289</a>
</td>
<td style="text-align: left">
為 Debian 軟體包和原始碼檔案進行快取代理(Perl 程式)
</td>
</tr>
<tr>
<td style="text-align: left">
<a class="ulink" href="http://packages.debian.org/sid/apt-cacher-ng">
<code class="literal">apt-cacher-ng</code> </a>
</td>
<td style="text-align: left">
<a class="ulink" href="http://qa.debian.org/popcon.php?package=apt-cacher-ng">V:4, I:5</a>
</td>
<td style="text-align: left">
<a class="ulink" href="http://packages.qa.debian.org/a/apt-cacher-ng.html">1401</a>
</td>
<td style="text-align: left">
分發軟體包的快取代理(C++ 編譯的程式)
</td>
</tr>
</tbody>
</table>
</div>
</div>
<br class="table-break"/>
<div class="caution" style="margin-left: 0.5in; margin-right: 0.5in;">
<table border="0" summary="Caution">
<tr>
<td rowspan="2" align="center" valign="top">
<img alt="[小心]" src="images/caution.png"/>
</td>
<th align="left">小心</th>
</tr>
<tr>
<td align="left" valign="top">
<p>當 Debian 重構它的檔案庫結構時,這些專用的代理工具往往需要軟體包維護者重寫程式碼,並可能在一段時間內無法使用。另一方面,通用 web
(http) 代理伺服器更強健並且更容易應對這種改變。</p>
</td>
</tr>
</table>
</div>
</div>
<div class="section">
<div class="titlepage">
<div>
<div>
<h3 class="title"><a id="_small_public_package_archive"/>2.7.15. 小型公共軟體包檔案庫</h3>
</div>
</div>
</div>
<div class="tip" style="margin-left: 0.5in; margin-right: 0.5in;">
<table border="0" summary="Tip">
<tr>
<td rowspan="2" align="center" valign="top">
<img alt="[提示]" src="images/tip.png"/>
</td>
<th align="left">提示</th>
</tr>
<tr>
<td align="left" valign="top">
<p>手動設置軟體包檔案庫是複雜的。有些可用的倉庫管理工具。一個<a class="ulink" href="https://wiki.debian.org/DebianRepository/Setup">詳盡的清單</a>在網路上。</p>
</td>
</tr>
</table>
</div>
<p>下面是一個建立小型公共軟體包檔案庫的示例,相容了 <span class="strong"><strong>secure APT</strong></span> 系統(參見
<a class="xref" href="ch02.zh-tw.html#_top_level_release_file_and_authenticity" title="2.5.2. 頂層“Release”檔案及真實性">第 2.5.2 节 “頂層“Release”檔案及真實性”</a>)。讓我們進行一些假定。</p>
<div class="itemizedlist">
<ul class="itemizedlist">
<li class="listitem">
<p>
賬號名:“<code class="literal">foo</code>”
</p>
</li>
<li class="listitem">
<p>
主機名:“<code class="literal">www.example.com</code>”
</p>
</li>
<li class="listitem">
<p>
所需軟體包:<code class="literal">apt-utils</code>、<code class="literal">gnupg</code> 和其它軟體包
</p>
</li>
<li class="listitem">
<p>
URL: "<code class="literal">http://www.example.com/~foo/</code>" ( →
"<code class="literal">/home/foo/public_html/index.html</code>")
</p>
</li>
<li class="listitem">
<p>
軟體包架構:“<code class="literal">amd64</code>”
</p>
</li>
</ul>
</div>
<p>在該伺服器上使用如下方式為 Foo 建立一個 APT 源鑰匙對。</p>
<pre class="screen">$ ssh foo@www.example.com
$ gpg --gen-key
...
$ gpg -K
...
sec 1024D/3A3CB5A6 2008-08-14
uid Foo (ARCHIVE KEY) <foo@www.example.com>
ssb 2048g/6856F4A7 2008-08-14
$ gpg --export -a 3A3CB5A6 >foo.public.key</pre>
<p>公佈 "<code class="literal">foo.public.key</code>"檔案,即公鑰 ID 為
"<code class="literal">3A3CB5A6</code>"的源公鑰檔案,該檔案可用於 Foo 源的釋出</p>
<p>使用如下方式建立一個名為"Origin: Foo"的源目錄樹。</p>
<pre class="screen">$ umask 022
$ mkdir -p ~/public_html/debian/pool/main
$ mkdir -p ~/public_html/debian/dists/unstable/main/binary-amd64
$ mkdir -p ~/public_html/debian/dists/unstable/main/source
$ cd ~/public_html/debian
$ cat > dists/unstable/main/binary-amd64/Release << EOF
Archive: unstable
Version: 4.0
Component: main
Origin: Foo
Label: Foo
Architecture: amd64
EOF
$ cat > dists/unstable/main/source/Release << EOF
Archive: unstable
Version: 4.0
Component: main
Origin: Foo
Label: Foo
Architecture: source
EOF
$ cat >aptftp.conf <<EOF
APT::FTPArchive::Release {
Origin "Foo";
Label "Foo";
Suite "unstable";
Codename "sid";
Architectures "amd64";
Components "main";
Description "Public archive for Foo";
};
EOF
$ cat >aptgenerate.conf <<EOF
Dir::ArchiveDir ".";
Dir::CacheDir ".";
TreeDefault::Directory "pool/";
TreeDefault::SrcDirectory "pool/";
Default::Packages::Extensions ".deb";
Default::Packages::Compress ". gzip bzip2";
Default::Sources::Compress "gzip bzip2";
Default::Contents::Compress "gzip bzip2";
BinDirectory "dists/unstable/main/binary-amd64" {
Packages "dists/unstable/main/binary-amd64/Packages";
Contents "dists/unstable/Contents-amd64";
SrcPackages "dists/unstable/main/source/Sources";
};
Tree "dists/unstable" {
Sections "main";
Architectures "amd64 source";
};
EOF</pre>
<p>通過 <code class="literal">dupload</code>,你可以自動重複更新你伺服器系統上的 APT 檔案庫內容。</p>
<p>當 “<code class="literal">~/.dupload.conf</code>” 包含如下內容時,在客戶端執行 “<code class="literal">dupload -t
foo changes_file</code>” 將所有的軟體包檔案放入
“<code class="literal">~foo/public_html/debian/pool/main/</code>”。</p>
<pre class="screen">$cfg{'foo'} = {
fqdn => "www.example.com",
method => "scpb",
incoming => "/home/foo/public_html/debian/pool/main",
# The dinstall on ftp-master sends emails itself
dinstall_runs => 1,
};
$cfg{'foo'}{postupload}{'changes'} = "
echo 'cd public_html/debian ;
apt-ftparchive generate -c=aptftp.conf aptgenerate.conf;
apt-ftparchive release -c=aptftp.conf dists/unstable >dists/unstable/Release ;
rm -f dists/unstable/Release.gpg ;
gpg -u 3A3CB5A6 -bao dists/unstable/Release.gpg dists/unstable/Release'|
ssh foo@www.example.com 2>/dev/null ;
echo 'Package archive created!'";</pre>
<p><span class="citerefentry"><span class="refentrytitle">dupload</span>(1)</span>觸發<span class="strong"><strong>postupload</strong></span>鉤子指令碼,該指令碼為每次上傳建立軟體包檔案.</p>
<p>你可以通過下面的方法將這個小型公共檔案庫新增到你客戶端系統的 apt 源中。</p>
<pre class="screen">$ sudo bash
# echo "deb http://www.example.com/~foo/debian/ unstable main" \
>> /etc/apt/sources.list
# apt-key add foo.public.key</pre>
<div class="tip" style="margin-left: 0.5in; margin-right: 0.5in;">
<table border="0" summary="Tip">
<tr>
<td rowspan="2" align="center" valign="top">
<img alt="[提示]" src="images/tip.png"/>
</td>
<th align="left">提示</th>
</tr>
<tr>
<td align="left" valign="top">
<p>如果檔案庫位於本地檔案系統中,你可以使用 “<code class="literal">deb file:///home/foo/debian/ …</code>”。</p>
</td>
</tr>
</table>
</div>
</div>
<div class="section">
<div class="titlepage">
<div>
<div>
<h3 class="title"><a id="_recording_and_copying_system_configuration"/>2.7.16. 記錄和複製系統配置</h3>
</div>
</div>
</div>
<p>你可以通過下面命令建立軟體包和 debconf 選擇狀態的本地副本。</p>
<pre class="screen"># dpkg --get-selections '*' > selection.dpkg
# debconf-get-selections > selection.debconf</pre>
<p>這裡,“<code class="literal">*</code>” 使 “<code class="literal">selection.dpkg</code>” 也包含 “purge”
的軟體包。</p>
<p>你可以將這兩個檔案移動到另一個電腦,並通過下列命令安裝它們。</p>
<pre class="screen"># dselect update
# debconf-set-selections < myselection.debconf
# dpkg --set-selections < myselection.dpkg
# apt-get -u dselect-upgrade # or dselect install</pre>
<p>如果你需要管理一個叢集中的許多伺服器,並且它們的配置幾乎相同,你應該考慮使用專門的軟體包,例如 <code class="literal">fai</code>
來管理整個系統。</p>
</div>
<div class="section">
<div class="titlepage">
<div>
<div>
<h3 class="title"><a id="_converting_or_installing_an_alien_binary_package"/>2.7.17. 轉換或安裝一個外來的二進位制軟體包</h3>
</div>
</div>
</div>
<p><span class="citerefentry"><span class="refentrytitle">alien</span>(1)</span>
可以將 Red Hat 的 <code class="literal">rpm</code>、Stampede 的
<code class="literal">slp</code>、Slackware 的 <code class="literal">tgz</code> 和 Solaris 的
<code class="literal">pkg</code> 二進位制軟體包檔案格式轉換為 Debian 的 <code class="literal">deb</code>
軟體包。如果你想使用來自另一個發行版的軟體包,你可以使用 <code class="literal">alien</code>
轉換並安裝它。<code class="literal">alien</code> 也支援 LSB 軟體包。</p>
<div class="warning" style="margin-left: 0.5in; margin-right: 0.5in;">
<table border="0" summary="Warning">
<tr>
<td rowspan="2" align="center" valign="top">
<img alt="[警告]" src="images/warning.png"/>
</td>
<th align="left">警告</th>
</tr>
<tr>
<td align="left" valign="top">
<p>不應該用
<span class="citerefentry"><span class="refentrytitle">alien</span>(1)</span>
來替代必要的系統軟體包,例如
<code class="literal">sysvinit</code>、<code class="literal">libc6</code>、<code class="literal">libpam-modules</code>
等等。實際上,<span class="citerefentry"><span class="refentrytitle">alien</span>(1)</span>
應該只用於 <span class="strong"><strong>non-free</strong></span> 中僅提供二進位制檔案的軟體包,並且它們應該相容
LSB 或被靜態連結。對於自由軟體,你應該使用它們的源軟體包來製作一個真正的 Debian 軟體包。</p>
</td>
</tr>
</table>
</div>
</div>
<div class="section">
<div class="titlepage">
<div>
<div>
<h3 class="title"><a id="_extracting_package_without_dpkg"/>2.7.18. 不使用 dpkg 解壓軟體包</h3>
</div>
</div>
</div>
<p>在任何的 <a class="ulink" href="https://zh.wikipedia.org/wiki/Unix-like">Unix-like</a> 環境中都可以不使用
<span class="citerefentry"><span class="refentrytitle">dpkg</span>(1)</span>,而使用標準的
<span class="citerefentry"><span class="refentrytitle">ar</span>(1)</span>
和
<span class="citerefentry"><span class="refentrytitle">tar</span>(1)</span>
來解壓 “<code class="literal">dpkg*.deb</code>” 軟體包。</p>
<pre class="screen"># ar x /path/to/dpkg_<version>_<arch>.deb
# ls
total 24
-rw-r--r-- 1 bozo bozo 1320 2007-05-07 00:11 control.tar.gz
-rw-r--r-- 1 bozo bozo 12837 2007-05-07 00:11 data.tar.gz
-rw-r--r-- 1 bozo bozo 4 2007-05-07 00:11 debian-binary
# mkdir control
# mkdir data
# tar xvzf control.tar.gz -C control
# tar xvzf data.tar.gz -C data</pre>
<p>其它的 “<code class="literal">*.deb</code>” 軟體包可以使用
<span class="citerefentry"><span class="refentrytitle">dpkg-deb</span>(1)</span>
解壓來獲得上面的 “<code class="literal">dpkg*.deb</code>” 軟體包;或像上面那樣使用標準的
<span class="citerefentry"><span class="refentrytitle">ar</span>(1)</span>
和較新的帶有
<span class="citerefentry"><span class="refentrytitle">xz</span>(1)</span>
解壓支援的 GNU
<span class="citerefentry"><span class="refentrytitle">tar</span>(1)</span>。</p>
<p>你也可以使用 <code class="literal">mc</code> 命令來瀏覽軟體包內容。</p>
</div>
<div class="section">
<div class="titlepage">
<div>
<div>
<h3 class="title"><a id="_more_readings_for_the_package_management"/>2.7.19. 更多關於軟體包管理的文件</h3>
</div>
</div>
</div>
<p>你可以從下面的文件中瞭解軟體包管理的更多資訊。</p>
<div class="itemizedlist">
<ul class="itemizedlist">
<li class="listitem">
<p>
軟體包管理的主要文件:
</p>
<div class="itemizedlist">
<ul class="itemizedlist">
<li class="listitem">
<p><span class="citerefentry"><span class="refentrytitle">aptitude</span>(8)</span>、<span class="citerefentry"><span class="refentrytitle">dpkg</span>(1)</span>、<span class="citerefentry"><span class="refentrytitle">tasksel</span>(8)</span>、<span class="citerefentry"><span class="refentrytitle">apt</span>(8)</span>、<span class="citerefentry"><span class="refentrytitle">apt-get</span>(8)</span>、<span class="citerefentry"><span class="refentrytitle">apt-config</span>(8)</span>、<span class="citerefentry"><span class="refentrytitle">apt-key</span>(8)</span>、<span class="citerefentry"><span class="refentrytitle">sources.list</span>(5)</span>、<span class="citerefentry"><span class="refentrytitle">apt.conf</span>(5)</span>
和
<span class="citerefentry"><span class="refentrytitle">apt_preferences</span>(5)</span>;
</p>
</li>
<li class="listitem">
<p>
來自 <code class="literal">apt-doc</code> 軟體包的
“<code class="literal">/usr/share/doc/apt-doc/guide.html/index.html</code>” 和
“<code class="literal">/usr/share/doc/apt-doc/offline.html/index.html</code>”;
</p>
</li>
<li class="listitem">
<p>
來自 <code class="literal">aptitude-doc-en</code> 軟體包的
“<code class="literal">/usr/share/doc/aptitude/html/en/index.html</code>”。
</p>
</li>
</ul>
</div>
</li>
<li class="listitem">
<p>
Debian 檔案庫的官方詳細文件:
</p>
<div class="itemizedlist">
<ul class="itemizedlist">
<li class="listitem">
<p><a class="ulink" href="https://www.debian.org/doc/debian-policy/ch-archive">"Debian Policy Manual
Chapter 2 - The Debian Archive"</a>,
</p>
</li>
<li class="listitem">
<p><a class="ulink" href="https://www.debian.org/doc/manuals/developers-reference/resources.html#archive">"Debian Developer's
Reference, Chapter 4 - Resources for Debian Developers 4.6 The Debian
archive"</a>,
</p>
</li>
<li class="listitem">
<p><a class="ulink" href="https://www.debian.org/doc/FAQ/ch-ftparchives">"The Debian GNU/Linux FAQ,
Chapter 6 - The Debian FTP archives"</a>。
</p>
</li>
</ul>
</div>
</li>
<li class="listitem">
<p>
為 Debian 使用者構建一個 Debian 軟體包的教程:
</p>
<div class="itemizedlist">
<ul class="itemizedlist">
<li class="listitem">
<p><a class="ulink" href="https://www.debian.org/doc/manuals/maint-guide/">“Debian 新維護人員手冊”</a>(已過時)。
</p>
</li>
<li class="listitem">
<p><a class="ulink" href="https://www.debian.org/doc/manuals/maint-guide/">“Debian 維護者指導”</a>。
</p>
</li>
</ul>
</div>
</li>
</ul>
</div>
</div>
</div>
</div>
<div class="navfooter">
<hr/>
<table width="100%" summary="Navigation footer">
<tr>
<td align="left"><a accesskey="p" href="ch01.zh-tw.html"><img src="images/prev.png" alt="上一页"/></a> </td>
<td align="center"> </td>
<td align="right"> <a accesskey="n" href="ch03.zh-tw.html"><img src="images/next.png" alt="下一页"/></a></td>
</tr>
<tr>
<td align="left" valign="top">第 1 章 GNU/Linux 教程 </td>
<td align="center">
<a accesskey="h" href="index.zh-tw.html">
<img src="images/home.png" alt="起始页"/>
</a>
</td>
<td align="right" valign="top"> 第 3 章 系統初始化</td>
</tr>
</table>
</div>
</body>
</html>
|