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
|
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2//EN">
<HTML>
<HEAD>
<TITLE> Linux Gazette Table of Contents LG #66</TITLE>
</HEAD>
<BODY BGCOLOR="#FFFFFF" TEXT="#000000" LINK="#0000FF" VLINK="#0000AF"
ALINK="#FF0000" >
<center>
<!-- A HREF="http://www.linuxgazette.com/">
<H1><IMG SRC="../gx/newlogo.jpg" ALT="LINUX GAZETTE" border="0"></H1></A> -->
<A HREF="http://www.linuxgazette.com/">
<H1><IMG ALT="LINUX GAZETTE" SRC="../gx/lglogo.png"
WIDTH="600" HEIGHT="124" border="0"></H1></A>
<H2>May 2001, Issue 66
Published by <I>Linux Journal</I></H2>
<A HREF=../lg_frontpage.html>Front Page</A> |
<A HREF=../lg_frontpage.html>Back Issues</A> |
<A HREF=../lg_faq.html>FAQ</A> |
<A HREF=../mirrors.html>Mirrors</A> |
<A HREF=http://www.linuxgazette.com/wgindex.html>Search</A>
</center>
<!--=================================================================-->
<table>
<TR>
<TD COLSPAN="3" WIDTH="100%" BGCOLOR="#000000"><IMG
SRC="../gx/hammel/cleardot.gif" ALT="" HSPACE=30 VSPACE=2 HEIGHT=1
WIDTH=1 ALIGN=LEFT></TD>
<TD></TD>
</TR>
<tr><td>
<table>
<tr>
<td VALIGN="top"><H1><font color="#BB0000">Visit Our Sponsors:</font></H1></td></tr>
<!-- *** BEGIN sponsors *** -->
<TR><TD>
<A HREF="http://www.linuxnetworx.com"><IMG ALT="Linux NetworX" SRC="../gx/sponsors/linuxnetworx.gif" BORDER="0" VSPACE="10"></A>
</TD></TR>
<TR><TD>
<A HREF="http://www.tuxtops.com"><IMG ALT="Tuxtops" SRC="../gx/sponsors/tuxtops.gif" BORDER="0" VSPACE="10"></A>
</TD></TR>
<TR><TD>
<A HREF="http://www.elinux.com/xwb00120"><IMG ALT="eLinux.com" SRC="../gx/sponsors/elinux.gif" BORDER="0" VSPACE="10"></A>
</TD></TR>
<!-- *** END sponsors *** -->
</table>
</td>
<!--==================================================================-->
<TD ROWSPAN="3" WIDTH="2" BGCOLOR="#000000" NOSAVE><IMG
SRC="../gx/hammel/cleardot.gif" ALT="" HSPACE=1 HEIGHT=1 WIDTH=1%></TD>
<td VALIGN=top>
<H1><font color="#BB0000">Table of Contents:</font></H1>
<!-- *** BEGIN toc *** -->
<UL>
<LI> <a HREF="lg_mail66.html">The MailBag</A>
<LI> <a HREF="lg_bytes66.html">News Bytes</A>
<UL>
<LI> <a HREF="lg_bytes66.html#distro">Distro News</A>
<LI> <a HREF="lg_bytes66.html#general">News in General</A>
<LI> <a HREF="lg_bytes66.html#software">Software Announcements</A>
</UL>
<LI> <a HREF="lg_answer66.html">The Answer Gang</A>
<LI> <a HREF="lg_tips66.html">More 2-Cent Tips</A>
<LI> <a HREF="adam.html">The Weekend Mechanic</A> , <EM>by Thomas Adam</EM>
<LI> <a HREF="collinge.html">HelpDex</A> , <EM>by Shane Collinge</EM>
<LI> <a HREF="correa.html">Interview with Ben Collins, the new Debian Project Leader</A> , <EM>by Fernando Ribeiro Corrêa & Marcos Martins Manhães</EM>
<LI> <a HREF="nielsen.html">Converting Linux HOWTOs into Book Format</A> , <EM>by Mark Nielsen</EM>
<LI> <a HREF="nielsen2.html">Configuring GDM 2.2</A> , <EM>by Mark Nielsen</EM>
<LI> <a HREF="sharma.html">CVS: Client-Server Version Control</A> , <EM>by Kapil Sharma</EM>
<LI> <a HREF="suresh.html">Stopping Spam on Your Linux Box</A> , <EM>by Suresh Ramasubramanian</EM>
<LI> <a HREF="lg_backpage66.html">The Back Page</A>
<UL>
<LI> <a HREF="lg_backpage66.html#authors">About This Month's Authors</A>
<LI> <a HREF="lg_backpage66.html#notlinux">Not Linux</A>
</UL>
</UL>
<!-- *** END toc *** -->
</td>
</tr>
<TR>
<TD COLSPAN="3" WIDTH="100%" BGCOLOR="#000000"><IMG
SRC="../gx/hammel/cleardot.gif"
ALT="-------------------------------------------------------------"
HSPACE=30 VSPACE=2 HEIGHT=1 WIDTH=1 ALIGN=LEFT></TD>
<TD></TD>
</TR>
</table> <!-- ******************************************* -->
<H3 ALIGN="center"><EM>Linux Gazette</EM> Staff and The Answer Gang</H3>
<BLOCKQUOTE>
<STRONG>Editor:</STRONG> Michael Orr<BR>
<STRONG>Technical Editor:</STRONG> Heather Stern<BR>
<STRONG>Senior Contributing Editor:</STRONG> Jim Dennis<BR>
<STRONG>Contributing Editors:</STRONG>
Ben Okopnik, Dan Wilder, Don Marti
</BLOCKQUOTE>
<TABLE WIDTH="100%"><TR>
<TD WIDTH="100%" BGCOLOR="#000000"><IMG
SRC="../gx/hammel/cleardot.gif" ALT="" HSPACE=30 VSPACE=2 HEIGHT=1
WIDTH=1 ALIGN=LEFT></TD>
</TR></TABLE>
<P> <!-- ************************************************** -->
<table>
<tr><td>
<A HREF="issue66.txt.gz">TWDT 1 (gzipped text file)</A><BR>
<A HREF="issue66.html">TWDT 2 (HTML file)</A><BR>
are files containing the entire issue: one in text format, one in HTML.
They are provided
strictly as a way to save the contents as one file for later printing in
the format of your choice;
there is no guarantee of working links in the HTML version.
</td></tr>
<!--==================================================================-->
<TR>
<TD COLSPAN="3" WIDTH="100%" BGCOLOR="#000000"><IMG
SRC="../gx/hammel/cleardot.gif" ALT="" HSPACE=30 VSPACE=2 HEIGHT=1
WIDTH=1 ALIGN=LEFT></TD>
<TD></TD>
</TR>
<tr><td>
<center>
<I>Linux Gazette</I><img alt="[tm]" src="../gx/tm.gif">,
<A HREF="http://www.linuxgazette.com/">http://www.linuxgazette.com/</A><BR>
This page maintained by the Editor of <I>Linux Gazette</I>,
<A HREF="mailto: gazette@ssc.com"> gazette@ssc.com</A>
<P>
<H5>Copyright © 1996-2001 Specialized Systems Consultants, Inc.</H5>
</center>
</td></tr>
<TR>
<TD COLSPAN="3" WIDTH="100%" BGCOLOR="#000000"><IMG
SRC="../gx/hammel/cleardot.gif" ALT="" HSPACE=30 VSPACE=2 HEIGHT=1
WIDTH=1 ALIGN=LEFT></TD>
<TD></TD>
</TR>
</table>
<center>
<H1><A NAME="wanted"><IMG ALIGN=MIDDLE ALT="" SRC="../gx/mailbox.gif">
The Mailbag</A></H1> <BR>
<!-- BEGIN wanted -->
</center>
<P> <hr> <P>
<!-- =================================================================== -->
<center><H3><font color="maroon">HELP WANTED -- Article Ideas</font></H3></center>
<P>
<P> Send tech-support questions, answers and article ideas to The Answer Gang
<<A HREF="mailto:tag@ssc.com">tag@ssc.com</A>>. Other mail (including
questions or comments about the <EM>Gazette</EM> itself) should go to
<<A HREF="mailto:gazette@ssc.com">gazette@ssc.com</A>>. All material
sent to either of these addresses will be considered for publication in the
next issue. <EM>Please send answers to the original querent too, so that s/he
can get the answer without waiting for the next issue.</EM>
<P> Unanswered questions might appear here. Questions with
answers--or answers only--appear in The Answer Gang, 2-Cent Tips, or here,
depending on their content. There is no guarantee that questions will
<em>ever</em> be answered, especially if not related to Linux.
<P> <STRONG>Before asking a question, please check the
<A HREF=../lg_faq.html><I>Linux Gazette</I> FAQ</A> to see if it has been
answered there.</STRONG>
<P> <HR> <P>
<!--====================================================================-->
<!-- BEGIN HELP WANTED : Article Ideas -->
<UL>
<!-- index_text begins -->
<li><A HREF="#wanted/1"
><strong>Device Drivers for Linux Gazette</strong></a>
<!-- index_text ends -->
</UL>
<!-- .~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~. -->
<P> <A NAME="wanted/1"><HR WIDTH="75%" ALIGN="center"></A> <P>
<H3><IMG ALIGN=BOTTOM ALT="" SRC="../gx/envelope.gif">
<FONT COLOR="navy">Device Drivers for Linux Gazette</FONT></H3>
Wed, 18 Apr 2001 22:39:40 -0700
<BR>Ryan Thibodeau (<a href="mailto:tag@ssc.com?cc=rthibode@onlineathens.com"
>rthibode from onlineathens.com</a>)
<!-- ::
Device Drivers for Linux Gazette
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
:: -->
<P><STRONG>
Hi. Just dicovered Linuxgazette today. This is a really great site.
</STRONG></P>
<P><STRONG>
If you are looking for article ideas, I'd like to see an article, or
even series, on writing device drivers for Linux. This is a topic I
have found very little information about on the net.
</STRONG></P>
<P><STRONG>
Just my two cents.
</STRONG></P>
<P>
Writing the Linux kernel's device driver interfaces are enough
of a subject to fill a whole book. Maybe the O'Reilly
<EM>Writing Linux Device Drivers</EM> (by Allessandro Rubini) and
their <EM>Understanding the Linux Kernel</em> by Daniel Pierre Bovet
(among others) would be a good choice for you.
</P>
<P>
As for documention online: You could always read the sources,
copy and paste parts of the Makefiles, copy an existing (similar)
device driver and edit. I realize that this is a horrible
oversimplification; but that's how must of the Linux kernel hackers
started.
<br>-- JimD</P>
<!-- end 0 -->
<!-- . . . . . . . . . . . . . . . . . . . -->
<P><HR WIDTH="40%" ALIGN="center"><P>
<H3><IMG ALIGN=BOTTOM ALT="" SRC="../gx/envelope.gif">
<FONT COLOR="navy"></FONT></H3>
Mon, 16 Apr 2001 22:04:56 -0700
<BR>Vivek Kumar (<a href="mailto:tag@ssc.com?cc=ascon_system@netkracker.com"
>ascon_system from netkracker.com</a>)
<P><STRONG>
how to write a parallel port device driver,ie, interrupt driven.
Not, for printer, but,for general device connected to EPP port..?
</STRONG></P>
<P>
If you need something to be interrupt driven than you need a
kernel module. You might be able to have a very simple kernel
module that simply relays the interrupt as a character through
a device node. Then you could have a user space process listening...
</P>
<P>
[ Some guesses about the nature of <TT>poll()</TT> and <TT>select()</TT>,
trimmed. ] Please post a message to a good linux programming
newsgroup for better details. Actually I've posted an abstracted
version of this question to the
<a href="news:comp.os.linux.development.system"
>comp.os.linux.development.system</a>
newsgroup on your behalf. So, perhaps there's already an answer
waiting...
<br>-- JimD</P>
<p><em>Well, the Answer Guy is just barely getting into this subject,
so for this topic, he's a newbie like the rest of us. It
looks like some of our weekend mechanics really want to get
down into the spark plugs, there.
So, if anyone feels inclined to write a down and dirty device
driver article that explains a bit of deep wizardry in plain
english, especially if it covers something that's new in the
2.4 series kernels, we'd love to publish it. -- Heather</em></p>
<p><em>Or if anybody would like to dissect and explain a small driver
they've written, that would also make a good article. -- Mike</em></p>
<!-- end 1 -->
<a name="mailbag"></a>
<P> <hr> <P>
<!-- =================================================================== -->
<center><H3><font color="maroon">GENERAL MAIL</font></H3></center>
<P> <HR> <P>
<!--====================================================================-->
<!-- BEGIN GENERAL MAIL -->
<UL>
<!-- index_text begins -->
<li><A HREF="#mailbag/1"
><strong>Great</strong></a>
<li><A HREF="#mailbag/2"
><strong>Subscribing to LG</strong></a>
<li><A HREF="#mailbag/3"
><strong>Your writing of: "Integrating" Linux/sendmail with MS Exchange</strong></a>
<li><A HREF="#mailbag/4"
><strong>Thank you</strong></a>
<li><A HREF="#mailbag/5"
><strong>incensative, and down right rude,</strong></a>
<!-- index_text ends -->
</UL>
<!-- .~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~. -->
<P> <A NAME="mailbag/1"><HR WIDTH="75%" ALIGN="center"></A> <P>
<H3><IMG ALIGN=BOTTOM ALT="" SRC="../gx/envelope.gif">
<FONT COLOR="navy">Great</FONT></H3>
Sat, 31 Mar 2001 23:07:10 -0600
<BR>James E. Touma (<a href="mailto:gazette@ssc.com">toumaj from home.com</a>)
<P><STRONG>
Great April edition. Thanks a lot. Keep up the good work (and the
interesting topics).
</STRONG></P>
<P>
Thanks for reading us, Jim! -- Heather
</P>
<!-- end 1 -->
<!-- .~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~. -->
<P> <A NAME="mailbag/2"><HR WIDTH="75%" ALIGN="center"></A> <P>
<H3><IMG ALIGN=BOTTOM ALT="" SRC="../gx/envelope.gif">
<FONT COLOR="navy">Subscribing to LG</FONT></H3>
Sun, 1 Apr 2001 20:36:36 -0700
<BR>Mike Orr (<a href="mailto:gazette@ssc.com">iron from mso.oz.net</a>)
<P>
Finally, a way to subscribe to Linux Gazette!
</P>
<P>
<A HREF="http://www.debian.org/">Debian</A> has long had the lg-issue## packages. Now it has a couple
new packages:
</P>
<ul>
<li> lg-subscription : install new issues as they arrive.
<li> lg-ltest-two : install the latest two issues and remove older ones.
<li> lg-all : install all of the currently-available issue.
</ul>
<P>
Of course, it adds/removes packages only when you do a general package
update.
Note that these programs are supported by Debian, not by <EM>LG</EM>.</p>
<P>
-- Mike (your friendly <EM>Linux Gazette</EM> Editor)
</P>
<P>
Looks like you have to get it from testing (aka woody) or unstable (aka
sid) but at least it shouldn't require a libc update, if you temporarily
add one of these to your sources list to get them. If one of these
<EM>does</EM> ask for a libc change, it's a packaging bug and you should
report it immediately.
</P>
<P>
But be especially careful to change things back, or you may find yourself
in for a big surprise when you run "<tt>apt-get upgrade</tt>" to catch
the latest security patches. -- Heather
</P>
<!-- end 2 -->
<!-- .~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~. -->
<P> <A NAME="mailbag/3"><HR WIDTH="75%" ALIGN="center"></A> <P>
<H3><IMG ALIGN=BOTTOM ALT="" SRC="../gx/envelope.gif">
<FONT COLOR="navy">Your writing of: "Integrating" Linux/sendmail with MS Exchange</FONT></H3>
Tue, 10 Apr 2001 10:39:15 -0400
<BR>Dave Tabor (<a href="mailto:gazette@ssc.com">dtabor from mageeop.com</a>)
<P><STRONG>
Hi,
</STRONG></P>
<P><STRONG>
Just a note of constructive criticism.
</STRONG></P>
<P><STRONG>
I just read a copy of your writing of "Integrating" Linux/sendmail with MS
Exchange, on this site.
</STRONG></P>
<P><STRONG>
<A HREF="../issue38/tag/5.html"
>http://lhd.datapower.com/LDP/LDP/LG/issue38/tag/5.html</A>
</STRONG></P>
<P><STRONG>
It's something you wrote in 1999, so you may be writing differently now. If
so, please disregard this letter.
</STRONG></P>
<p>What you are about to say is still valuable as a reminder to new members
of the Answer Gang, potential article authors, and in fact just about
anybody who hopes to be a very vocal Linux advocate. So I hope you
don't mind that we've published it anyway. -- Heather</p>
<P><STRONG>
Although I found this information helpful, you appear to have trouble
staying on track with the useful information, and like to get off subject
with the Microsoft bashing.
</STRONG></P>
<P><STRONG>
I do use Microsoft products, as well as Linux and AIX products, and
understand your point of view (even agree with most, if not all, of it).
</STRONG></P>
<P><STRONG>
My constructive criticism is that you should refrain from the Microsoft
bashing or at least keep it to one line, and keep more to the point of
trying to relay useful information. (I'm assuming that is what you are
really trying to do.)
</STRONG></P>
<P><STRONG>
If someone is having trouble with something like integrating sendmail and
exchange, they may not have a choice about what systems or software to use,
and just need some well written, detailed information, not an anti-Microsoft
commercial.
</STRONG></P>
<P><STRONG>
- Dave
</STRONG></P>
<P>
Thanks, Dave. Issue 38 was a long time ago now.
</P>
<P>
The Answer Gang now includes a number of more cheerful sorts in addition to
the curmudgeonly Answer Guy himself. One or two even still use Windows for
some of their work. (Note: we avoid answering Windows questions at all,
unless they're really about working with Linux environments.) Having more
of us frees the ones who really don't want to touch anything about MS, from
even having to answer. Also, a heavier editorial hand is being applied now.
</P>
<P>
As for myself, I look forward to the day when systems will be sufficiently
easy to use that it will not be clear... nor terribly necessary to know...
which OS is chugging along "under the hood". I don't think that day is at
all <EM>close</EM> but I look forward to it anyway.
<IMG SRC="../gx/dennis/smily.gif" ALT=":)"
height="24" width="20" align="middle">
</P>
<P>
-- Heather
</P>
<!-- end 3 -->
<!-- .~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~. -->
<P> <A NAME="mailbag/4"><HR WIDTH="75%" ALIGN="center"></A> <P>
<H3><IMG ALIGN=BOTTOM ALT="" SRC="../gx/envelope.gif">
<FONT COLOR="navy">Thank you</FONT></H3>
Wed, 28 Mar 2001 22:10:12 EST
<BR>Spartaco Cicerchia (<a href="mailto:gazette@ssc.com">MI1SA from aol.com</a>)
<P>
Dear Mike
</P>
<P>
I want to take the opportunity to thank you very much for the feed back
and for taking the time to give me the information.
</P>
<!-- end 4 -->
<!-- .~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~. -->
<P> <A NAME="mailbag/5"><HR WIDTH="75%" ALIGN="center"></A> <P>
<H3><IMG ALIGN=BOTTOM ALT="" SRC="../gx/envelope.gif">
<FONT COLOR="navy">incensative, and down right rude,</FONT></H3>
Wed, 4 Apr 2001 00:04:53 -0400
<BR>Joe Agate (<a href="mailto:gazette@ssc.com">joetagate from home.com</a>)
<P>
sorry pal, but after reading your reponse to a post for help, i couldnt
help but send you this note about what an
[ rude word deleted ] you must be...and would be
very much surprised if anyone would want you on the payroll....
</P>
<P>
respectfully,
<br>joe agate
</P>
<P>
<A HREF="../issue50/tag/33.html"
>http://rpmfind.net/linux/mdw/LDP/LG/issue50/tag/33.html</A>
</P>
<P>
[ HTML version of same text, also deleted ]
</P>
<P>
Curiously, he chose to "rag" on the Answer Guy for one of his clearer
answers to an unclear question. He calls him a bad name, then signs
off "respectfully". Right.
</P>
<P>
Is it really "insensitive" to mention that LG has a search engine
(<A HREF="http://www.linuxgazette.com/wgindex.html"
>http://www.linuxgazette.com/wgindex.html</A>)?
Nope, I think not.
</P>
<P>
Is it "insensitive" to ask that querents mention what they've tried
already? Maybe - but it's a fact of life in tech support, most people
say "it's broken" not "I tried this, and that, and the other thing, and...
yada yada ... anyways so you can see I tried everything, and it hates
me". In plain verbal conversation it's rude to maunder on like that,
so people tend not to do it. In tech support, the more info you can
send us (that is related to the question) the better we can help. If
this were a phone call, we could have this merry back and forth, and
it still probably wouldn't take an hour. At typical Answer Gang speeds
though... more info will help you as much as it helps us.
</P>
<P>
Is it "insensitive" to suggest that the poor bloke may have to buy a
new card or new server? Probably. Oh well. Life's tough that way
sometimes. Turns out that he's probably okay, according to another
reader who assured us that the Jotan is indeed a Trident relative.
</P>
<P>
Is it insensitive to send us the same text as both plaintext and HTML?
No, usually it just means someone didn't know how to turn off this "feature"
(cough cough. cough. no, I'm okay. cough cough. water. Ahem) in
MS Outlook. Try this great answer from Chris G. in last month's Answer Gang:
</P>
<P><BLOCKQuote>
<A HREF="../issue65/tag/8.html"
>http://www.linuxgazette.com/issue65/tag/8.html</A>
</BLOCKQuote></P>
<P>
Lastly, I'm pretty sure it's insensitive to publish this, but Joe, you
mailed us, and this is what we normally do with letters to the editors.
Let us know when you have a linux question, and we'll try to answer it --
if you give us enough information!
</P>
<!-- end 5 -->
<!-- .~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~. -->
<A NAME="tag/jobs"></A>
<!-- begin jobs -->
<P> <A NAME="mailbag/5"><HR WIDTH="75%" ALIGN="center"></A> <P>
<H3><IMG ALIGN=BOTTOM ALT="" SRC="../gx/envelope.gif">
<FONT COLOR="navy">Linux jobs</FONT></H3>
Wed, Apr 11, 2001 12:17:14PM -0500
<br>Stuart (<A HREF="mailto:gazette@ssc.com?cc=stuart-5757@hushmail.com"
>stuart-5757 from hushmail.com</A>)
<!-- ::
Linux jobs
~~~~~~~~~~
:: -->
<P><STRONG>
Would it be possible for someone at your publication to provide me with
a resource as to where I could locate an experienced Linux programmer for
the Tampa Florida area. Is there a website for Linux job postings or a
publication that I might be able to contact. I would appreciate any help
that you could give me.
</STRONG></P>
<BLOCKQUOTE>
The Answer Gang published a list of sites for job searchers in the
last issue. I'm sure you can post openings at these sites as well.
</BLOCKQUOTE>
<BLOCKQUOTE>
<A HREF="http://www.linuxgazette.com/issue65/lg_answer65.html#tag/greeting"
>http://www.linuxgazette.com/issue65/lg_answer65.html#tag/greeting</A>
</BLOCKQUOTE>
<BLOCKQUOTE>
LG does not publish job listings because they are so temporary in
nature: the job may be filled by the time the issue is published!
<br>-- Mike
</BLOCKQUOTE>
<p>
To repeat from last time:
</p>
<BLOCKQuote>
You can check out <I>Linux
Journal</I>'s Career Center (<A HREF="http://www.linuxjournal.com/employ/"
>http://www.linuxjournal.com/employ</A>),
Geekfinder (<A HREF="http://www.geekfinder.com/"
>http://www.geekfinder.com</A>), the Sysadmin's Guild (SAGE)
Job Center (<A HREF="http://www.usenix.org/sage/jobs/sage-jobs.html"
>http://www.usenix.org/sage/jobs/sage-jobs.html</A>), or pay
attention to your local area papers for when major high tech Job
Fairs are in your area, so you can go to them. There are also some
really generic job sites like Dice.Com (<A HREF="http://www.dice.com/"
>http://www.dice.com</A>) or
MonsterBoard (<A HREF="http://www.monsterboard.com/"
>http://www.monsterboard.com</A>). If you hate the
corporate mold, check out some of the project offers at
Cosource (<A HREF="http://www.cosource.com/"
>http://www.cosource.com</A>) or Collab.Net
(<A HREF="http://www.collab.net/"
>http://www.collab.net</A>). Or put up your consulting shingle by
listing yourself at Linuxports (<A HREF="http://www.linuxports.com/"
>http://www.linuxports.com</A>) and
getting listed into a few search engines.
</BLOCKQUOTE>
<p>
... and expand a little:
</p>
<BLOCKQuote>
When I went to Google! and typed in the keywords:
<br>
<A HREF="http://www.google.com/search?q=linux+jobs&btnG=Google+Search"
>linux jobs</a>
</BLOCKQUOTE>
<BLOCKQuote>
-- it claimed it has about 400 entries.
</BLOCKQUOTE>
<p>
As Mike noted, many
of these allow employers to post job offers, as well as
having jobseekers post resumés.
<br>-- Heather
</p>
<!-- end jobs -->
<!--endcut ============================================================-->
<H4 ALIGN="center">"Linux Gazette...<I>making Linux just a little more fun!</I>"</H4>
<HR>
<center>
<table cellpadding=7><tr><td>
<IMG SRC="../gx/bytes.gif" border=1 ALT="News Bytes">
</td><td>
<H3>Contents:</H3>
<ul>
<li><a HREF="#distro">Distro News</A>
<li><a HREF="#general">News in General</a>
<li><a HREF="#software">Software Announcements</a>
</ul>
</td></tr></table>
<STRONG>Selected and formatted by <A HREF="mailto:michael.conry@softhome.net">Michael Conry</A> and Mike Orr</STRONG>
</center>
<P> Submitters, send your News Bytes items in
<FONT SIZE="+2"><STRONG>PLAIN TEXT</STRONG></FONT>
format. Other formats may be rejected without reading. You have been
warned! A one- or two-paragraph summary plus URL gets you a better
announcement than an entire press release.
<a name="distro"></a>
<p><hr><p>
<!-- =================================================================== -->
<center><H3><font color="green">Distro News</font></H3></center>
<P> <hr> <P>
<!-- =================================================================== -->
<H3><IMG ALT=" " SRC="../gx/bolt.gif">
<FONT COLOR="green">Debian
</FONT>
</H3>
<a href="http://www.debian.org/">Debian</a> Potato users out there itching
to get their hands on the new 2.4 kernels may be interested in these links.
<a href="http://www.lwn.net/">Linux Weekly News</a>
have posted the Debian-News
<a href="http://lwn.net/2001/0419/a/deb22-2.4.php3">message</a>
of Apr 16, which has advice on getting kernel 2.4 working on you 2.2 potato
install. The
<a href="http://www.fs.tum.de/~bunk/kernel-24.html">instructions</a> should
be read carefully before upgrading.
<hr noshade width="20%">
In other Debian news, The third revision of Debian GNU/Linux 2.2 (nickname
`potato') has been released. This point release, version 2.2r3, mostly
includes security updates, along with a few corrections to important bugs in
the stable distribution. The details are
<a href="http://lists.debian.org/debian-announce-01/msg00002.html">
online</a>.
<P> <hr> <P>
<!-- =================================================================== -->
<H3><IMG ALT=" " SRC="../gx/bolt.gif">
<FONT COLOR="green">Mandrake
</FONT>
</H3>
<P>
<a href="http://www.linux-mandrake.com">
Linux-Mandrake</a> 8.0 has been released.
New features can be studied in detail on their
<a href="http://www.linux-mandrake.com/en/8.0.php">website</a>. Highlights
include KDE 2.1.1, GNOME 1.4, Kernel 2.4.3, Xfree86 4.0.3, and
Anti-aliasing.
If you would like to donate to the project, go to
<a href="http://www.linux-mandrake.com/donations">
http://www.linux-mandrake.com/donations/</a>
<P> <hr> <P>
<!-- =================================================================== -->
<H3><IMG ALT=" " SRC="../gx/bolt.gif">
<FONT COLOR="green">Progeny
</FONT>
</H3>
<P> <a href="http://www.progeny.com/">Progeny</a> Debian is
<a href="http://www.progeny.com/news/newsreleases/?newsrelease=04_09_2001">
out</a> now. The download edition is already
<a href="http://www.progeny.com/download/">available</a>, and the box set
will be on sale from April 23. Ian Murdock, Progeny CEO and President, has
said that Progeny Debian is not trying to be another distribution of Linux.
"In fact, we don't see Progeny Debian as a separate distribution. It is an
enhanced version of Debian for the commercial market. All of our development
efforts are being contributed back to the Debian community, and we hope that
our work can help make Debian better for all users", he comments.
<P> <hr> <P>
<!-- =================================================================== -->
<H3><IMG ALT=" " SRC="../gx/bolt.gif">
<FONT COLOR="green">Red Hat
</FONT>
</H3>
<P>
<a href="http://www.redhat.com/">Red Hat</a> have announced Red Hat Linux 7.1
<a href="http://www.redhat.com/about/presscenter/2001/press_sevenone.html">
with 2.4 kernel</a>.
The Red Hat website has a complete list of the
<a href="http://www.redhat.com/products/software/linux/rhl_new_features.html">
new features</a>.
<P> <hr> <P>
<!-- =================================================================== -->
<H3><IMG ALT=" " SRC="../gx/bolt.gif">
<FONT COLOR="green">Slackware
</FONT>
</H3>
<a href="http://www.lwn.net/">Linux Weekly News</a>
have a
<a href="http://lwn.net/2001/0419/dists.php3">story</a>
on
<a href="http://www.slackware.com/">Slackware</a>'s difficulties.
Apparently, Wind River have laid off the
Slackware development staff. Patrick Volkerding, who is also laid off, says
that he has sufficient funds to publish the next edition of Slackware, but
not enough to pay developers for their input.
This was a big
<a href="http://www.slackware.com/forum/read.php?f=5&i=7887&t=7887">
topic</a>
of conversation on the Slackware forum (might break Netscape).
<p> If you want to see Slackware continue, you can donate to the project via
their <a href="http://www.paypal.com/">PayPal</a> account. Donate to
paypal@slackware.com
<P> <hr> <P>
<!-- =================================================================== -->
<H3><IMG ALT=" " SRC="../gx/bolt.gif">
<FONT COLOR="green">SuSE
</FONT>
</H3>
<a href="http://www.suse.de/en/">SuSE Linux</a>
have announced the release of SuSE Linux 7.1 for the Sparc
architecture of Sun Microsystems.
SuSE Linux 7.1 for Sparc comes with the proven Linux Kernel 2.2.18
as well as the latest Kernel 2.4.2 as a special bonus for
technophile users. SuSE Linux 7.1 is based on the program library
glibc 2.2. The popular SBUS graphics cards are supported by
XFree86 4.0.2.
Application support for LFS (Large File Support) and
IPv6 (Internet Protocol
Version 6) has grown.
<P> SuSE Linux 7.1 for Sparc (Item No. 99985-21SPC) is supplied on
five CD-ROMs with online documentation. It can be obtained
exclusively directly from SuSE at the price of EUR 159 plus VAT.
SuSE Linux 7.1 for Sparc is also available for download from
<a href="ftp://ftp.suse.com/pub/suse/sparc/suse-sparc/">
ftp://ftp.suse.com/pub/suse/sparc/suse-sparc/</a>
<a name="general"></a>
<p><hr><p>
<!-- =================================================================== -->
<center><H3><font color="green">News in General</font></H3></center>
<P> <hr> <P>
<!-- =================================================================== -->
<H3><IMG ALT=" " SRC="../gx/bolt.gif">
<FONT COLOR="green">Upcoming conferences and events
</FONT>
</H3>
<P> Listings courtesy <EM>Linux Journal</EM>. See <EM>LJ</EM>'s
<A HREF="http://noframes.linuxjournal.com/events/">Events</A> page for the
latest goings-on.
<!-- *** BEGIN events table [this line needed by Linux Gazette events.py *** -->
<table cellpadding=5 border=0 width=100%>
<tr><td colspan=2><HR size=5 width=100% noshade align=center></td></tr>
<tr><td valign=top>
<b>Linux for Industrial Applications</b><br>3rd Braunschweiger
Linux-Tage<BR>
<td valign=top>May 4-6, 2001<BR>Braunschweig, Germany<BR>
<A HREF="http://braunschweiger.linuxtage.de/industrie/" target=_blank>
http://braunschweiger.linuxtage.de/industrie/</A><BR>
</td></tr>
<tr><td colspan=2><HR size=5 width=100% noshade align=center></td></tr>
<tr><td valign=top>
<b>Linux@Work Europe 2001</b><BR>
<td valign=top>May 8 - June 15, 2001<BR>Various Locations<BR>
<A HREF="http://www.ltt.de/linux_at_work.2001/" target=_blank>
http://www.ltt.de/linux_at_work.2001</A><BR>
</td></tr>
<tr><td colspan=2><HR size=5 width=100% noshade align=center></td></tr>
<tr><td valign=top>
<b>Linux Expo, São Paulo</b><BR>
<td valign=top>May 9-10, 2001<BR>São Paulo, Brazil<BR>
<A HREF="http://www.linux-expo.com" target=_blank>
http://www.linux-expo.com</A><BR>
</td></tr>
<tr><td colspan=2><HR size=5 width=100% noshade align=center></td></tr>
<tr><td valign=top>
<b>SANS 2001</b><BR><td valign=top>May 13-20, 2001<BR>
Baltimore, MD<BR>
<A HREF="http://www.sans.org/SANS2001.htm" target=_blank>
http://www.sans.org/SANS2001.htm</A><BR>
</td></tr>
<tr><td colspan=2><HR size=5 width=100% noshade align=center></td></tr>
<tr><td valign=top>
<b>7th Annual Applied Computing Conference</b><BR>
<td valign=top>May 14-17, 2001<BR>Santa Clara, CA<BR>
<A HREF="http://www.annatechnology.com/annatech/HomeConf2.asp"
target=_blank>
http://www.annatechnology.com/annatech/HomeConf2.asp</A><BR>
</td></tr>
<tr><td colspan=2><HR size=5 width=100% noshade align=center></td></tr>
<tr><td valign=top>
<b>Linux Expo, China</b><BR>
<td valign=top>May 15-18, 2001<BR>Shanghai, China<BR>
<A HREF="http://www.linux-expo.com/" target=_blank>
http://www.linux-expo.com</A><BR>
</td></tr>
<tr><td colspan=2><HR size=5 width=100% noshade align=center></td></tr>
<tr><td valign=top>
<b>SITI International Information Technologies Week</b><br>
OpenWorld Expo 2001<BR>
<td valign=top>May 22-25, 2001<BR>Montréal, Canada<BR>
<A HREF="http://www.mediapublik.com/en/" target=_blank>
http://www.mediapublik.com/en/</A><BR>
</td></tr>
<tr><td colspan=2><HR size=5 width=100% noshade align=center></td></tr>
<tr><td valign=top>
<b>Strictly e-Business Solutions Expo</b><BR>
<td valign=top>May 23-24, 2001<BR>Minneapolis, MN<BR>
<A HREF="http://www.strictlyebusinessexpo.com/" target=_blank>
http://www.strictlyebusinessexpo.com</A><BR>
</td></tr>
<tr><td colspan=2><HR size=5 width=100% noshade align=center></td></tr>
<tr><td valign=top>
<b>Linux Expo, Milan</b><BR>
<td valign=top>June 6-7, 2001<BR>Milan, Italy<BR>
<A HREF="http://www.linux-expo.com" target=_blank>
http://www.linux-expo.com</A><BR>
</td></tr>
<tr><td colspan=2><HR size=5 width=100% noshade align=center></td></tr>
<tr><td valign=top>
<b>Linux Expo Montréal</b><BR>
<td valign=top>June 13-14, 2001<BR>Montréal, Canada<BR>
<A HREF="http://www.linuxexpomontreal.com/EN/home/" target="_blank">
http://www.linuxexpomontreal.com/EN/home/</A><BR>
</td></tr>
<tr><td colspan=2><HR size=5 width=100% noshade align=center></td></tr>
<tr><td valign=top>
<b>Open Source Handhelds Summit</b><BR>
<td valign=top>June 18-19, 2001<BR>Austin, TX<BR>
<A HREF="http://osdn.com/conferences/handhelds/" target=_blank>
http://osdn.com/conferences/handhelds/</A><BR>
</td></tr>
<tr><td colspan=2><HR size=5 width=100% noshade align=center></td></tr>
<tr><td valign=top>
<b>USENIX Annual Technical Conference</b><BR>
<td valign=top>June 25-30, 2001<BR>Boston, MA<BR>
<A HREF="http://www.usenix.org/events/usenix01/" target=_blank>
http://www.usenix.org/events/usenix01</A><BR>
</td></tr>
<tr><td colspan=2><HR size=5 width=100% noshade align=center></td></tr>
<tr><td valign=top>
<b>PC Expo</b><BR>
<td valign=top>June 26-29, 2001<BR>New York, NY<BR>
<A HREF="http://www.pcexpo.com/" target=_blank>www.pcexpo.com</A><BR>
</td></tr>
<tr><td colspan=2><HR size=5 width=100% noshade align=center></td></tr>
<tr><td valign=top>
<b>Internet World Summer</b><BR><td valign=top>July 10-12, 2001<BR>
Chicago, IL<BR>
<A HREF="http://www.internetworld.com/" target=_blank>
http://www.internetworld.com</A><BR>
</td></tr>
<tr><td colspan=2><HR size=5 width=100% noshade align=center></td></tr>
<tr><td valign=top>
<b>O'Reilly Open Source Convention</b><BR>
<td valign=top>July 23-27, 2001<BR>San Diego, CA<BR>
<A HREF="http://conferences.oreilly.com/" target=_blank>
http://conferences.oreilly.com</A><BR>
</td></tr>
<tr><td colspan=2><HR size=5 width=100% noshade align=center></td></tr>
<tr><td valign=top>
<b>10th USENIX Security Symposium</b><BR>
<td valign=top>August 13-17, 2001<BR>Washington, D.C.<BR>
<A HREF="http://www.usenix.org/events/sec01/" target=_blank>
http://www.usenix.org/events/sec01/</A><BR>
</td></tr>
<tr><td colspan=2><HR size=5 width=100% noshade align=center></td></tr>
<tr><td valign=top>
<b>HunTEC Technology Expo & Conference</b><br>Hosted by Hunstville IEEE<BR>
<td valign=top>August 17-18, 2001<BR>Huntsville, AL<BR>
URL unkown at present<br>
</td></tr>
<tr><td colspan=2><HR size=5 width=100% noshade align=center></td></tr>
<tr><td valign=top>
<b>Computerfest</b><BR>
<td valign=top>August 25-26, 2001<BR>Dayton, OH<BR>
<A HREF="http://www.computerfest.com/" target=_blank>
http://www.computerfest.com</A><BR>
</td></tr>
<tr><td colspan=2><HR size=5 width=100% noshade align=center></td></tr>
<tr><td valign=top>
<b>LinuxWorld Conference & Expo</b><BR>
<td valign=top>August 27-30, 2001<BR>San Francisco, CA<BR>
<A HREF="http://www.linuxworldexpo.com" target="_blank">
http://www.linuxworldexpo.com</A><BR>
</td></tr>
<tr><td colspan=2><HR size=5 width=100% noshade align=center></td></tr>
<tr><td valign=top>
<b>The O'Reilly Peer-to-Peer Conference</b><BR>
<td valign=top>September 17-20, 2001<BR>Washington, DC<BR>
<A HREF="http://conferences.oreilly.com/p2p/call_fall.html"
target=_blank>
http://conferences.oreilly.com/p2p/call_fall.html</A><BR>
</td></tr>
<tr><td colspan=2><HR size=5 width=100% noshade align=center></td></tr>
<tr><td valign=top>
<b>Linux Lunacy<br>Co-Produced by <i>Linux
Journal</i> and Geek Cruises</b><BR>
<A HREF="http://www.linuxjournal.com/lunacy/cruise.html" target=_blank>
Send a Friend <i>LJ</i> and Enter to Win a Cruise!</A><BR>
<td valign=top>October 21-28, 2001<BR>Eastern Caribbean<BR>
<A HREF="http://www.geekcruises.com/" target=_blank>
http://www.geekcruises.com</A><BR>
</td></tr>
<tr><td colspan=2><HR size=5 width=100% noshade align=center></td></tr>
<tr><td valign=top>
<b>LinuxWorld Conference & Expo</b><BR>
<td valign=top>October 30 - November 1, 2001<BR>Frankfurt, Germany<BR>
<A HREF="http://www.linuxworldexpo.de/linuxworldexpo/index.html"
target=_blank>
http://www.linuxworldexpo.de/linuxworldexpo/index.html</A><BR>
</td></tr>
<tr><td colspan=2><HR size=5 width=100% noshade align=center></td></tr>
<tr><td valign=top>
<b>5th Annual Linux Showcase & Conference</b><BR>
<td valign=top>November 6-10, 2001<BR>Oakland, CA<BR>
<A HREF="http://www.linuxshowcase.org/" target=_blank>
http://www.linuxshowcase.org/</A><BR>
</td></tr>
<tr><td colspan=2><HR size=5 width=100% noshade align=center></td></tr>
<tr><td valign=top>
<b>Strictly e-Business Solutions Expo</b><BR>
<td valign=top>November 7-8, 2001<BR>Houston, TX<BR>
<A HREF="http://www.strictlyebusinessexpo.com/" target=_blank>
http://www.strictlyebusinessexpo.com</A><BR>
</td></tr>
<tr><td colspan=2><HR size=5 width=100% noshade align=center></td></tr>
<tr><td valign=top>
<b>LINUX Business Expo</b><BR>Co-located with COMDEX<br>
<td valign=top>November 12-16, 2001<BR>Las Vegas, NV<BR>
<A HREF="http://www.linuxbusinessexpo.com" target=_blank>
http://www.linuxbusinessexpo.com</A><BR>
</td></tr>
<tr><td colspan=2><HR size=5 width=100% noshade align=center></td></tr>
<tr><td valign=top>
<b>15th Systems Administration Conference/LISA 2001</b><BR>
<td valign=top>December 2-7, 2001<BR>San Diego, CA<BR>
<A HREF="http://www.usenix.org/events/lisa2001/" target=_blank>
http://www.usenix.org/events/lisa2001</A><BR>
</td></tr>
<tr><td colspan=2><HR size=5 width=100% noshade align=center></td></tr>
</table>
<!-- *** END events table [this line needed by Linux Gazette events.py *** -->
<P> <hr> <P>
<!-- =================================================================== -->
<H3><IMG ALT=" " SRC="../gx/bolt.gif">
<FONT COLOR="green">Newlix ServerWare
</FONT>
</H3>
<P> <a href="http://www.newlix.com">
Newlix Corporation</a> has developed an intelligent and customisable
administration solution for Linux based server appliances. Newlix
ServerWare contains an intelligent administration engine so intuitive that
it creators say
"it can be seen as having an entire IT team sucked right into the server
appliance!"
This technology is intended to improve the functionality and ease of use of
server appliances.
Full details are
<a href="http://www.newlix.com/products/datasheet.html">available</a> on the
Newlix website.
<P> <hr> <P>
<!-- =================================================================== -->
<H3><IMG ALT=" " SRC="../gx/bolt.gif">
<FONT COLOR="green">eCluster Internet Server Clustering
</FONT>
</H3>
<P>eCluster from
<a href="http://www.xgforce.com/">XGforce</a>
is a scalable, Intelligent load-balance
cluster system, which can be scaled up to 1024 Internet cluster
groups and each contains 1024 cluster nodes(1024X1024).
With round trip time load balance algorithm, one can cluster
any OSes on any CPUs, such as NT, Novell,
UNIXes (SUN SPARC, OS2000 BSD, Linux), etc. The
support of load balance or fail safe mode, ensured non-stoppable
and fast business transactions for SQL Database Servers, such as
Oracle, MS SQL, Informix, MySQL, Postgress, etc.
<p>
A load balance algorithm is used which includes CPU load, weighted load,
vm usage, round trip time, CPU usage, etc.
Other features include Network Traffic Distribution, Network Failsafe,
CFS(tm), and Large Network Management for both Internet and Intranet.
Ports for LINUX, SUN, FreeBSD, and NT are available and free support
is provided. For more information, consult the XGforce
<a href="http://www.xgforce.com/">website</a>.
<P> <hr> <P>
<!-- =================================================================== -->
<H3><IMG ALT=" " SRC="../gx/bolt.gif">
<FONT COLOR="green">ActiveState Launches ASPN Initiative
</FONT>
</H3>
<P>
<a href="http://www.ACtiveState.com/">
ActiveState</a> has launched a new initiative to enable programming with
open source technologies. The ActiveState Programmer Network (ASPN)
includes quality assured binary distributions of Perl, Python and Tcl;
multi-language and platform IDEs; technical references, sample code, recipes
and more. For additional details or go to the
<a href="http://www.ACtiveState.com/ASPN">
ASPN website</a>.
<P> <hr> <P>
<!-- =================================================================== -->
<H3><IMG ALT=" " SRC="../gx/bolt.gif">
<FONT COLOR="green">OTG Software
</FONT>
</H3>
<p><a href="http://www.otg.com/">
OTG Software</a> has announced its acquisition of
<a href="http://www.smartstorage.com">
Smart Storage</a>, a privately held provider
of standards based DVD and CD storage management software.
OTG expects Smart Storage's CD/DVD technology to speed its
entry into the rich media market, to boost its international
momentum, and to enable it to offer more solutions for storing
and accessing data on the UNIX and Linux platforms.
<hr noshade width="20%">
OTG, has also announced its participation and strategic partnership in
<a href="http://www.bmc.com/">
BMC Software</a>'s Application-Centric Storage Management Consortium
(<a href="http://www.bmc.com/products/storage/index.html?p041001er">
ACSM</a>),
a partner program that provides a competitive edge and
additional avenues to members for market development, customer services and
market expansion.
<P> <hr> <P>
<!-- =================================================================== -->
<H3><IMG ALT=" " SRC="../gx/bolt.gif">
<FONT COLOR="green">Linux Fortran
</FONT>
</H3>
Many of us involved in scientific computing make considerable use of
Fortran, either for writing our own code, or for the many libraries which
have been written in the language. Dr. Bronson Messer of the University of
Tennessee has recommended
<a href="http://studbolt.physast.uga.edu/templon/fortran.html">
http://studbolt.physast.uga.edu/templon/fortran.html</a> as a good source of
information relating to Linux and Fortran.
It has comparisons of various compilers, news, tips, etc.
<P> <hr> <P>
<!-- =================================================================== -->
<H3><IMG ALT=" " SRC="../gx/bolt.gif">
<FONT COLOR="green"><IMG ALT="Linux Focus" SRC="../gx/linuxfocus.jpg" WIDTH="143" HEIGHT="45">
</FONT>
</H3>
Here are the May-June articles for the ezine
<A HREF="http://www.linuxfocus.org/">Linux Focus</A>.
<br>
<UL>
<LI><a href="http://linuxfocus.org/English/May2001/article205.shtml">Building a Linux-controlled walking robot</a><br></LI>
<LI><a href="http://linuxfocus.org/English/May2001/article202.shtml">Through the tunnel</a><br></LI>
<LI><a href="http://linuxfocus.org/English/May2001/article190.shtml">Avoiding security holes when developing an application - Part 3 : buffer overflows</a><br></LI>
<LI><a href="http://linuxfocus.org/English/May2001/article181.shtml">Do your job with make!</a><br></LI>
<LI><a href="http://linuxfocus.org/English/May2001/article200.shtml">Introduction to BORG</a><br></LI>
<LI><a href="http://linuxfocus.org/English/May2001/article204.shtml">Real-time mp3 recording, part 2</a><br></LI>
<LI><a href="http://linuxfocus.org/English/May2001/article194.shtml">Game Review - GLTron</a><br></LI>
</UL>
<P> <hr> <P>
<!-- =================================================================== -->
<H3><IMG ALT=" " SRC="../gx/bolt.gif">
<FONT COLOR="green">Linux Links
</FONT>
</H3>
<P>
There is a
<a href="http://www.tempest.com.br/advisories/01-2001.html">
vulnerability</a> in kernel 2.4.x IPTables which you should patch if you use
Linux 2.4 for firewalling.
Quoting from the SANS Institute's alert:
"A vulnerability in the ip_conntrack_ftp module, which is responsible
for tracking incoming FTP connections, has been found. This
vulnerability could be used to bypass IPTables firewall rules if
IPTables is configured to allow RELATED connections to pass unhindered,
which is a standard configuration used with FTP servers. An attacker
can trick the ip_conntrack_ftp module into creating RELATED connections,
thus allowing various outbound connections to the network of the
firewall itself."
A <a href="http://netfilter.samba.org/security-fix/">
patch</a> is available.
<p>
<a href="http://www.thedukeofurl.org/">The Duke of URL</a> has the following
links to tempt you:
<ul>
<li><a href="http://www.thedukeofurl.org/reviews/misc/suse71">
review</a> of SuSE Linux 7.1
http://www.thedukeofurl.org
<li><a href="http://www.thedukeofurl.org/reviews/systems/pogovelocity">
Review</a> of the Pogo Linux Velocity, a desktop Linux machine which sports
IDE RAID 1 or RAID 0.
<li><a href="http://www.thedukeofurl.org/reviews/network/wirelesslan2">
Wireless LAN Overview</a> Part 2: the Devices. This is a good article for
anyone interested in how the new 802.11b devices run on both Linux and
Windows systems. Both cards are tested on each OS.
<li>An <a href="http://www.thedukeofurl.org/reviews/network/v92">
editorial</a> on V.92, its benefits, if you're eligible for the update
and if V.92 is really that much better than the older V.90 standard for
modems.
</ul>
<P>
Since the point of FAQ's is to get newbies up to speed, let's take this
opportunity to direct attention to <a href="http://www.tux.org/lkml">
The linux-kernel mailing list FAQ</a>. Then when you have digested that, you
can see what's happening
<a href="http://vger.kernel.org/">on-list</a>.
<p>
<a href="http://www.slashdot.org/">SlashDot</a> has offered the following
links in the past month:
<ul>
<li> An <a href="http://www.daemonnews.org/200104/bsd_family.html">
article</a> discussing the differences between FreeBSD, NetBSD, OpenBSD and
Apple's OS X/Darwin
<li> Slashdot have an
<a href="http://slashdot.org/interviews/01/04/04/1345213.shtml">
interview</a> with Microsoft's Doug Miller
<li>
<a href="http://www.oreilly.com/news/parrotstory_0401.html">
Parrot:</a> how the April Fool's joke of the Perl and Python merger was
perputrated.
</ul>
Suresh Ramasubramanian mailed a link to
<a href="http://www.hserus.net/dlhowto.html">
an article</a> he has prepared, providing a HOWTO
on configuring a linux box dialup connection, complete with
configuring email services (using sendmail, exim and postfix as the MTA
and mutt as the MUA) on the box. You might find this useful.
<P> Bryan Pfaffenberger writes about
<a href="http://www.linuxjournal.com/articles/currents/0030.html">
Why Open Content Matters</a> in his
Linux Journal web column
"<a href="http://www.linuxjournal.com/articles/currents/">
Currents</a>".
<P> And please, some paper-clip sized sympathy for The Microsoft Office
help clip who became the latest (and most welcome ;-)
<a href="http://news.cnet.com/news/0-1003-200-5575112.html?tag=st.cn.1.lthd">
redundancy</a> in the tech-sector recently.
<p>
Finally, not strictly Linux, but
<a href="http://www.unixspace.com/">UnixSpace.com</a> have announced a free
on-line internet access
<a href="http://www.unixspace.com/context">service</a>
to their ConteXt database server. Includes 30Mb space, Unix shell command line, and some GUI treats focused on DataBase building.
<a name="software"></a>
<P> <hr> <P>
<!-- =================================================================== -->
<center><H3><font color="green">Software Announcements</font></H3></center>
<P> <hr> <P>
<!-- =================================================================== -->
<H3><IMG ALT=" " SRC="../gx/bolt.gif">
<FONT COLOR="green">SSH
</FONT>
</H3>
<P>
<a href="http://openssh.com/">
Open SSH</a> have announced the release of version 2.5.2 of their software.
The Open SSH suite includes the ssh program which replaces rlogin and
telnet, scp which replaces rcp, and
<A HREF="../issue64/dellomodarme.html">sftp</A>
which replaces ftp. Also included
is sshd which is the server side of the package, and the other basic
utilities like ssh-add, ssh-agent, ssh-keygen and sftp-server. OpenSSH
supports SSH protocol versions 1.3, 1.5, and 2.0. You cannot afford to
ignore security!
<P> <hr> <P>
<!-- =================================================================== -->
<H3><IMG ALT=" " SRC="../gx/bolt.gif">
<FONT COLOR="green">PostgreSQL 7.1 version announced
</FONT>
</H3>
The
<a href="http://www.ca.postgresql.org/index.html">
PostgreSQL</a> open source database core development community have
announced the official release of the PostgreSQL 7.1 version. Check their
<a href="http://www.ca.postgresql.org/news.html">news</a> page for more information.
PostgreSQL 7.1 will feature several upgrades and improvement from the
previous version, including:
<ul>
<li> full support for outer joins
<li> removal of the notorious 8k row length limit
<li> write-ahead logging performance enhancement
<li> even greater support for complex queries
<li> support for a larger number of complex queries
<li> a boost in overall performance (speed)
<li> improvements to the JDBC and ODBC interfaces and backup/restore
features
<li> Fuller support for ANSI SQL92 standards.
</ul>
PostgreSQL version 7.1 includes contributions from more than 120 members of
the PostgreSQL open source development community.
<P> <hr> <P>
<!-- =================================================================== -->
<H3><IMG ALT=" " SRC="../gx/bolt.gif">
<FONT COLOR="green">Python
</FONT>
</H3>
<a href="http://www.python.org/2.1/">
Python 2.1</a> has been released. Find out
<a href="http://www.amk.ca/python/2.1/">
what's new</a>, and read the full
<a href="http://sourceforge.net/project/shownotes.php?release_id=31464">
release notes</a>.
<P> <hr> <P>
<!-- =================================================================== -->
<H3><IMG ALT=" " SRC="../gx/bolt.gif">
<FONT COLOR="green">Cylant IDS for Linux: prevents unknown attacks too
</FONT>
</H3>
<P><a href="http://www.cylant.com">
Cylant Technology</a> have released CylantSecure
for Linux, an intrusion detection system that protects against both known
and previously unknown forms of attack.
It uses a modified kernel in conjunction with custom kernel modules to
provide system protection -- and becomes part of the running kernel.
Unlike other IDS products,
CylantSecure does not use rules or patterns for identifying attacks,
eliminating the need to rely on a database of known attack signatures.
Instead, it focuses on actual software behaviour and builds a statistical
model of nominal system behaviour. It enables a computer to distinguish
between normal and abnormal behaviour, and then uses that information
to stop malicious attacks before any damage can occur.
Details on the software are in an online
<a href="http://www.cylant.com/products/secure.htm">
press release</a>.
<P> <hr> <P>
<!-- =================================================================== -->
<H3><IMG ALT=" " SRC="../gx/bolt.gif">
<FONT COLOR="green">ICS Integrates Themes Into Open Motif
</FONT>
</H3>
<a href="http://www.ics.com/">
Integrated Computer Solutions</a> has announced the Developer's
Release of its initiative to add themes to Open Motif. Themes is a
capability supplied with Linux desktop environments that provides users with
the ability to personalise the overall look of the user interface of their
desktop.
The Developer Release of Themes for Open Motif works with GTK themes created
for Gnome. Currently, themes are
converted by hand into a format that Open Motif can process. As the Open
Motif Themes capability evolves, no conversion will be necessary and Open
Motif based applications will automatically adopt the theme set by the end
user. The objective of the initiative is to support both the Gnome and KDE
desktop environments. ICS is actively looking to recruit other Open Source
developers to help with this project.
Further details can be found at the ICS forum
<a href="http://www.ics.com/forum/forum.php?forum_idG">
website</a>.
<P> <hr> <P>
<!-- =================================================================== -->
<H3><IMG ALT=" " SRC="../gx/bolt.gif">
<FONT COLOR="green">Internet Exchange Messaging Server 5
</FONT>
</H3>
Messaging software developer
<a href="http://www.ima.com/">International Messaging Associates</a>
have launched the beta version of its latest product,
Internet Exchange Messaging Server 5 (IEMS 5). IEMS 5 supports distributed
computing environments and is said to run well on mixed Linux and Windows
platforms.
"Currently, we are working on providing support for several Linux
distributions," said Tim Kehres, IMA Managing Director. These Linux
distributions include RedHat, SuSE, VALinux, Turbo Linux, Caldera, Mandrake,
among others.
This product enables users to access
their mailboxes via POP3 or IMAP4-capable clients such as Microsoft Outlook,
Netscape Navigator, Eudora Mail, as well as the Internet Exchange Web Mail
Client.
<P> You can get a copy of IEMS 5 at
<a href="http://www.ima.com/download/v5eval.html">
http://www.ima.com/download/v5eval.html</a>.
The product overview can, also be
<a href="http://www.ima.com/pdf/iemsoverview.pdf">
downloaded</a>. Beta participants of the Linux-Windows-based
Internet Exchange Messaging Server (IEMS) 5 shall get a US$300 price
reduction (about 30% off) if
they purchase the messaging solution now than wait for its forthcoming
official release.
<P> <hr> <P>
<!-- =================================================================== -->
<H3><IMG ALT=" " SRC="../gx/bolt.gif">
<FONT COLOR="green">Other software
</FONT>
</H3>
<a href="http://www.ba.be/">Better Access Networking</a> in Leuven is
<a href="http://www.teamware.com/">Teamware's</a> new reselling partner for
Teamware Office 5.3 for Linux in Belgium. Teamware Office for Linux completes
Better Access' product offering by bringing e-mail, calendar and document
management functionalities to Linux. Teamware have also made a partner
agreement with
<a href="http://www.coresys.se">
Coresys AB</a> in Sweden.
For latest news, check out the Teamware
<a href="http://www.teamware.com/mail/">newsletter</a>.
<hr noshade width="20%">
<P> The new version of
<a href="http://www.gnu.org/software/mailman/">
Mailman</a>, 2.0.4, compatible with
<a href="http://www.python.org/2.1/">Python 2.1</a>, is out.
<a href="http://lwn.net/">
LWN</a> have the
<a href="http://lwn.net/2001/0419/a/mailman.php3">
story</a>.
<hr noshade width="20%">
<a href="http://www.insignia.com/">Insignia</a> sponsored a technical
interest forum at the recent Embedded Systems Conference. The subsequent
detailed press release is wide-ranging and available
<a href="http://www.insignia.com/news/e_041001.asp">online</a>.
<!-- *** BEGIN copyright *** -->
<P> <hr> <P>
<H5 ALIGN=center>
Copyright © 2001, Michael Conry and
the Editors of <A HREF="mailto:gazette@ssc.com"><I>Linux Gazette</I></A>.<BR>
Copying license <A HREF="../copying.html">http://www.linuxgazette.com/copying.html</A><BR>
Published in Issue 66 of <i>Linux Gazette</i>, May 2001</H5>
<!-- *** END copyright *** -->
<P> <hr> <P>
<!-- ::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: -->
<center>
<H1><A NAME="answer">
<img src="../gx/dennis/qbubble.gif" alt="(?)"
border="0" align="middle">
<font color="#B03060">The Answer Gang</font>
<img src="../gx/dennis/bbubble.gif" alt="(!)"
border="0" align="middle">
</A></H1>
<BR>
<H4>By Jim Dennis, Ben Okopnik, Dan Wilder, Breen, Chris, and the Gang,
the Editors of Linux Gazette...
and You!
<br>Send questions (or interesting answers) to
<a href="mailto:tag@ssc.com">tag@ssc.com</a>
</H4>
<p><em><font color="#990000">There is no guarantee that your questions
here will <b>ever</b> be answered. You can be published anonymously
- just let us know!
</font></em></p>
</center>
<p><hr><p>
<!-- endcut ======================================================= -->
<H3>Contents:</H3>
<dl>
<dt><a href="#tag/greeting"
><strong>¶: Greetings From Heather Stern</strong></A></dl>
<DL>
<!-- index_text begins -->
<dt><A HREF="#tag/1"
><img src="../gx/dennis/qbub.gif" height="28" width="50"
alt="(?)" border="0"
><strong>help installing telnetd</strong></a>
<dt><A HREF="#tag/2"
><img src="../gx/dennis/qbub.gif" height="28" width="50"
alt="(?)" border="0"
><strong>touch files recursively linux mandrake 7.2</strong></a>
<dt><A HREF="#tag/3"
><img src="../gx/dennis/qbub.gif" height="28" width="50"
alt="(?)" border="0"
><strong>Winprinters</strong></a>
<dt><A HREF="#tag/4"
><img src="../gx/dennis/qbub.gif" height="28" width="50"
alt="(?)" border="0"
></a>your mail --or--
<dd><A HREF="#tag/4"
><strong>Search and Replace Without Breaking Permissions</strong></a>
<dt><A HREF="#tag/5"
><img src="../gx/dennis/qbub.gif" height="28" width="50"
alt="(?)" border="0"
></a>your mail --or--
<dd><A HREF="#tag/5"
><strong>Kernel Panic after putting disk back</strong></a>
<dt><A HREF="#tag/6"
><img src="../gx/dennis/qbub.gif" height="28" width="50"
alt="(?)" border="0"
><strong>Procmail and regular expressions....(Snowwhite...)</strong></a>
<dt><A HREF="#tag/7"
><img src="../gx/dennis/qbub.gif" height="28" width="50"
alt="(?)" border="0"
></a>Need to milk you again --or--
<dd><A HREF="#tag/7"
><strong>Timely Samba Release?</strong></a>
<dt><A HREF="#tag/8"
><img src="../gx/dennis/qbub.gif" height="28" width="50"
alt="(?)" border="0"
><strong>3d linux</strong></a>
<dt><A HREF="#tag/9"
><img src="../gx/dennis/qbub.gif" height="28" width="50"
alt="(?)" border="0"
><strong>linux vectoring synergy</strong></a>
<dt><A HREF="#tag/10"
><img src="../gx/dennis/qbub.gif" height="28" width="50"
alt="(?)" border="0"
><strong>Why linux for routing</strong></a>
<dt><A HREF="#tag/11"
><img src="../gx/dennis/qbub.gif" height="28" width="50"
alt="(?)" border="0"
><strong>disappearing act</strong></a>
<dt><A HREF="#tag/12"
><img src="../gx/dennis/qbub.gif" height="28" width="50"
alt="(?)" border="0"
><strong>getting 2 dynamic ip addresses</strong></a>
<!-- index_text ends -->
</DL>
<!-- .~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~. -->
<A NAME="tag/greeting"><HR WIDTH="75%" ALIGN="center"></A>
<H3 align="left"><img src="../gx/dennis/hbubble.gif"
height="50" width="60" alt="(¶) " border="0"
>Greetings from Heather Stern</H3>
<!-- begin hgreeting -->
<p>Once again, welcome to the wonderful world of The Answer Gang. The peeve
of the month this time is a tie:</p>
<ul>
<li><strong>AOL users asking for help regarding things which clearly would
not be answered by AOL's tollfree tech support by anything but closing the
offending account.</strong>
<br>
<br>Folks, AOL doesn't <em>have</em> a Linux version, not even for SVGAlib.
The closest we can get are a zillion instant messanger clients,
including Netscape, for which the universal trick is "tell it who you
are on AOL, then start IM'ing your friends." If you can't figure
out who you are on AOL, we certainly don't know! So, we can't answer
any AOL questions at all. Even ethical ones.
<br>
<li><strong>Business people who want us to do <em>their</em> homework -
asking very complicated questions clearly worth a certain amount of
consulting time, frosted with an automatically tacked on "This message
is confidential and may not be given to anyone but the intended recipient,
legal mumbo jumbo, etc. etc." message which they may not even be aware of,
and possible cherry on top "Please hurry."</strong>
<br>
<br>Understand we're not really peeved at the person who's asking, so much
as the presumption. <em>Linux Gazette</em> is for everyone ... to
make Linux just a little more fun ... and if we don't get to (potentially)
give your answer to the masses, too, then <em>LG</em> isn't getting
"paid" to pass your question along to us.
<br>
<br>If you're a corporate type with an outbound mail gateway that adds such
notes, and you're fairly sure your answer will be useful (maybe even fun)
for the rest of the <em>Linux Gazette</em> readership, then
<blockquote><em><font color="#FF0000">give us permission to
publish the thread, up front, when you ask the question.
</font></em></blockquote>
<br>
<br>Your company will still be anonymous. You can be anonymous too, if
you say so.
<br>
<br>As for "hurry" -- if you want a timely answer, or even to be sure of
getting one, pay a consultant.
(Cheap plug: some of the Gang happen to be consultants. But not
all of us.)
</ul>
<p>We could probably use a few more articles that appeal to corporate
users, though! Enough of that, though. Onward to something fun. The
fun I took on this month is to upgrade my system.</p>
<p>Oh boy.</p>
<p>Surely I mentioned that I've been on a continuous upgrade path of
<a href="http://www.suse.com/">SuSE</a> since early 5.1? No? Well,
okay, I admit, I did a "real" reinstall sometime around 6.1 or so,
and then have chugged along on security updates and adding RPMs from
the latest 6.x branch for a while. With an occasional graft from
Debian packages and source tarballs.</p>
<p>Like any normal user I also have lots of different things I do, so
my home directory's a bit messy, I have a few projects here and there,
and I haven't been real prissy about which account I use to download
general things like cartoons (Hi
<a href="http://www.shanecollinge.com/Linux">Shane</a>!)
or new kernel sources into. Usually I remember to move them to
someplace under /usr/src eventually.</p>
<p>As Piglet was fond of saying, "Whatta... whatta mess."</p>
<p>Surely it would have been easier for me if I hadn't decided to buy an
extra hard disk at the same time, discovered that my floppy bay stopped
working (p.s. can't boot from my CD. Something to do with it being a SCSI
device in an IDE system), and (eek!) was reminded that we'd like to get
the column fragments in early this month.</p>
<p>Of course, I was able to abuse about a CD's worth of free disk space to
cover for this. I made the extra hard disk a feature rather than more
trouble by installing the new setup solely to it.</p>
<p>The install went fine, but it wasn't completely smooth. Here's a few
hints if you're plotting an upgrade, and I promise, they don't depend on
you using SuSE:</p>
<ul>
<li><strong>Decide how much stuff you're going to put on there <em>before</em>
you lay out your partitions, so you have enough.</strong>
<br>I ended up experimenting with <tt>parted</tt> after I foolishly
made <tt>/usr</tt> a bit small (Hint: 2 Gb is <em>not</em> big enough.
What was I <em>thinking</em>? Oh yeah. My old drive didn't use Gnome and K
desktop. Now they're par for the course. Heh.) <tt>parted</tt> works
great so far, provided you've had prior training with the "Towers of
Hanoi" game first. It can resize partitions, and it can move them, but
it can't slide them forward. I had this great wooden Hanoi game when
I was a kid, and while I was juggling partitions I could almost hear the
wooden clicks and swaps in my head.
<br>
<li><strong>Check that you're going to be able to use the same account
numbers.</strong>
<br>This is more of a biggie if you're completely changing distros, but
it still applies. If you've created "system level" accounts for a
database or something, and it wasn't a package designed for your
distro, you may discover that something else expects to use that number
now. Whether you move your own, or decide to do something about the
interloper, things aren't going to work right until it's fixed.
<br>
<br>If you can't, and you're restoring accounts from a tarball, then
just make sure you have the user and group accounts you need
already assigned to their new numbers before you restore. Then
<tt>tar</tt> will deal with the number change for you.
<br>
<li><strong>While we're talking about version numbers, check that config files
haven't completely changed style during the upgrade.</strong>
<br>If they have, you probably cannot just drop the old ones back in
safely at all. In this category, I got off light... maybe because
I'd already gone and upgraded a few things on my own.
<br>
<li><strong>If it's in the retail channel, it's out of date -- get your security
patches.</strong>
<br>The new version of YaST makes this easier, but I also had a few things
of my own to add to the security plan.
</ul>
<p>Beyond these normal things, I really needed to get some of these projects
into directories of their own, so it's clear where I should put stuff for
those things from now on. Rather like ordering the teenager to clean up
their room...</p>
<p>Next thing I know the end of the month is approaching, and my dreams of
handling TAG at a dreamy summertime pace are dashed again
<IMG SRC="../gx/dennis/smily.gif" ALT=":)"
height="24" width="20" align="middle">
</p>
<p>I still think backups are your friend, but at least I didn't need 'em
this time. All I need is more RAM and I'm set! The weather is
improving and I'm having a great time. So here's those answers --
share and enjoy.</p>
<!-- end hgreeting -->
<!-- .~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~. -->
<A NAME="tag/1"><HR WIDTH="75%" ALIGN="center"></A>
<!-- begin 1 -->
<H3 align="left"><img src="../gx/dennis/qbubble.gif"
height="50" width="60" alt="(?) " border="0"
>help installing telnetd</H3>
<p><strong>From dtrott
</strong></p>
<p align="right"><strong>Answered By Ben Okopnik
<br></strong></p>
<!-- sig -->
<P><STRONG>
Hi
<br>I have recently installed debian 2.2, i was just wonderin if someone had a link
or could suggest where i might find some basic instructions on setting up
telnetd.
</STRONG></P>
<BLOCKQUOTE><IMG SRC="../gx/dennis/bbub.gif" ALT="(!)"
HEIGHT="28" WIDTH="50" BORDER="0"
> [Ben]
<Warning! Opinion time!> I can give you a one-word instruction manual:
</BLOCKQUOTE>
<BLOCKQUOTE><BLOCKQuote>
Don't.
</BLOCKQuote></BLOCKQUOTE>
<BLOCKQUOTE>
Telnet is insecure, and its capabilities are seriously limited by
comparison with SSH. Install ssh/sshd, and create an executable file in
your <TT>/etc/init.d/</TT> directory called "sshd" with the following content:
</BLOCKQUOTE>
<p align="center">See attached <a href="misc/tag/sshd.sh.txt"
>sshd init script</a></p>
<BLOCKQUOTE>
Now, create a symlink in your <TT>/etc/rc2.d/:</TT>
</BLOCKQUOTE>
<BLOCKQUOTE><BLOCKQUOTE><CODE>
ln -s /etc/init.d/sshd /etc/rc2.d/S20sshd
</CODE></BLOCKQUOTE></BLOCKQUOTE>
<BLOCKQUOTE>
The "S20" part says to 'S'tart the service (rather than 'K'illing it); the
'20' places it (on my system, at least - take a look at your own "rc2.d"
and number it appropriately) just after the link to "inetd". The position
of the link is not all that critical; next to "inetd" (which starts other
network services) seems appropriate, though. If you want to run the server
immediately after doing this, but don't want to reboot, simply type
</BLOCKQUOTE>
<BLOCKQUOTE><BLOCKQUOTE><CODE>
sshd
</CODE></BLOCKQUOTE></BLOCKQUOTE>
<BLOCKQUOTE>
at the command prompt.
</BLOCKQUOTE>
<BLOCKQUOTE>
That's it. Just type 'ssh' where you would usually type 'telnet'. Oh, and
make sure to at least skim the 'ssh' and 'sshd' man pages; this will make
you aware of the many options that are available with this protocol.
</BLOCKQUOTE>
<BLOCKQUOTE>
I have not researched SSH in great depth, by the way; "kill telnet" is
sorta common wisdom at this point, and I've read just enough to agree with
it. After using telnet for a number of years, I find that I'm very pleased
by the configurability of SSH; that alone, security aspects aside, made it
worth switching for me. It would be nice if the other TAG members chimed
in with their take on the proper usage and better reasons, but I'm highly
satisfied with my installation.
</BLOCKQUOTE>
<!-- end 1 -->
<!-- .~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~. -->
<A NAME="tag/2"><HR WIDTH="75%" ALIGN="center"></A>
<!-- begin 2 -->
<H3 align="left"><img src="../gx/dennis/qbubble.gif"
height="50" width="60" alt="(?) " border="0"
>touch files recursively linux mandrake 7.2</H3>
<p><strong>From Martin Colello
</strong></p>
<p align="right"><strong>Answered By Ben Okopnik
<br></strong></p>
<P><STRONG>
This is probably so easy as to be considered a joke, but I can't figure out how
to do it.
</STRONG></P>
<P><STRONG>
I need to touch a bunch of directories recursively. All the directories and
their contents, but I can't find any option in the touch command that allows
this.
</STRONG></P>
<P><STRONG>
Any help appreciated, thanks!
</STRONG></P>
<BLOCKQUOTE><IMG SRC="../gx/dennis/bbub.gif" ALT="(!)"
HEIGHT="28" WIDTH="50" BORDER="0"
> [Ben]
I've never seen a 'recurse' option in any "touch" I've used. Doesn't mean
that one doesn't exist, though. Since yours doesn't, try this:
</BLOCKQUOTE>
<BLOCKQUOTE><BLOCKQUOTE><CODE>
find DIR -exec touch {} \;
</CODE></BLOCKQUOTE></BLOCKQUOTE>
<BLOCKQUOTE>
where DIR is either the path to the top directory that contains all the
subdirectories you want to touch, OR is a list of the paths to those
subdirectories themselves. One of those two options should do what you
want. If you want to touch only the files (not the directories), add the
'-type f' option before '-exec'.
</BLOCKQUOTE>
<BLOCKQUOTE>
It can also be a healthy idea to try it with "echo" instead of "touch" the
first time; I test a lot of my "dangerous" scripts that way before letting
them loose on live data.
</BLOCKQUOTE>
<BLOCKQUOTE><IMG SRC="../gx/dennis/bbub.gif" ALT="(!)"
HEIGHT="28" WIDTH="50" BORDER="0"
> [Mike]
Or:
</BLOCKQUOTE>
<BLOCKQUOTE><BLOCKQUOTE><CODE>
find DIR | xargs touch
</CODE></BLOCKQUOTE></BLOCKQUOTE>
<P><STRONG><IMG SRC="../gx/dennis/qbub.gif" ALT="(?)"
HEIGHT="28" WIDTH="50" BORDER="0"
>
Hi, just wanted to let you know the command worked great, I never thought of
using any other argument with find except -name.
</STRONG></P>
<BLOCKQUOTE><IMG SRC="../gx/dennis/bbub.gif" ALT="(!)"
HEIGHT="28" WIDTH="50" BORDER="0"
> [Ben]
"find" is a <em>very</em> cool utility. The man page is pretty big, but it's well
worth reading up on. Lots and lots of good options.
</BLOCKQUOTE>
<P><STRONG><IMG SRC="../gx/dennis/qbub.gif" ALT="(?)"
HEIGHT="28" WIDTH="50" BORDER="0"
>
Linux Gazette rocks, thanks a lot for your help.
</STRONG></P>
<BLOCKQUOTE><IMG SRC="../gx/dennis/bbub.gif" ALT="(!)"
HEIGHT="28" WIDTH="50" BORDER="0"
> [Ben]
Yeah, we know.
<IMG SRC="../gx/dennis/smily.gif" ALT=":)"
height="24" width="20" align="middle">
</BLOCKQUOTE>
<BLOCKQUOTE>
You're welcome!
</BLOCKQUOTE>
<P><STRONG><IMG SRC="../gx/dennis/qbub.gif" ALT="(?)"
HEIGHT="28" WIDTH="50" BORDER="0"
>
Just out of curiosity, the reason I needed to touch everything was because my
anonymous ftp server wouldn't show certain files even though the permissions
were the same as others that worked. But I found if I touched one then it
showed up. Now they all show up thanks to you, by why should this have happened
in the first place?
</STRONG></P>
<BLOCKQUOTE><IMG SRC="../gx/dennis/bbub.gif" ALT="(!)"
HEIGHT="28" WIDTH="50" BORDER="0"
> [Ben]
I haven't experienced any problems with setting up FTP servers, so I can't
really comment.
</BLOCKQUOTE>
<BLOCKQUOTE><IMG SRC="../gx/dennis/bbub.gif" ALT="(!)"
HEIGHT="28" WIDTH="50" BORDER="0"
> [Heather]
Readers, if you think you know what it might have been, let us know.
You can reach The Answer Gang as <A HREF="mailto:tag@ssc.com"
>tag@ssc.com</A>.
</BLOCKQUOTE>
<!-- end 2 -->
<!-- .~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~. -->
<A NAME="tag/3"><HR WIDTH="75%" ALIGN="center"></A>
<!-- begin 3 -->
<H3 align="left"><img src="../gx/dennis/qbubble.gif"
height="50" width="60" alt="(?) " border="0"
>Winprinters</H3>
<p><strong>From jzaragoza alberich
</strong></p>
<p align="right"><strong>Answered By Mike Orr, Heather Stern
<br></strong></p>
<p><strong>
I know what a winmodem is. I know too that they must be thrown off. All
of them.
But what is a winprinter? How can they be recognized? Must they be
thrown off too? Or do they work under Linux?
</STRONG></P>
<BLOCKQUOTE><IMG SRC="../gx/dennis/bbub.gif" ALT="(!)"
HEIGHT="28" WIDTH="50" BORDER="0"
> [Mike]
Beware of any hardware that lists only Windows operating systems on the
box. If it says "Windows and Macintosh", there's a good chance it will work
with Linux too. But if it lists only Windows 95/98/2000, NT and Me, be
suspicious. It could be like a Winmodem, where vital parts of the modem
functionality are missing in the modem and must be emulated by the driver.
or it could mean there's Windows-specific code <EM>in the printer</EM>. For
instance, instead of using a standard page-description language like PCL
or Postscript, the printer may be tied to the Windows printing system
directly (e.g., it may communicate with the computer via Windows API calls).
</BLOCKQUOTE>
<BLOCKQUOTE><IMG SRC="../gx/dennis/bbub.gif" ALT="(!)"
HEIGHT="28" WIDTH="50" BORDER="0"
> [Heather]
A winprinter (like a winmodem) does not have complete printer brains.
It uses WIndows GDI calls to preprocess a buffer with the printable image
and then just accepts it straight. If I read the original description
right. Anyways like a winmodem it rally hits CPU when trying to get work
done.
</BLOCKQUOTE>
<BLOCKQUOTE>
Under Windows that means the driver is really tiny, since GDI is part of
the default DLLs that make the rest of the GUI work.
</BLOCKQUOTE>
<BLOCKQUOTE>
Under Linux that means if it's a Lexmark you can convince it to work,
and if it's something else, you <EM>could</EM> try the Lexmark winprinter
drivers ... and if they don't work, oh well, give that to someone who only
uses windows and needs a cheap printer.
</BLOCKQUOTE>
<BLOCKQUOTE>
Under a debian system you can use the package lexmark7000linux. For
others you should try Henryk Paluch's website:
<A HREF="http://bimbo.fjfi.cvut.cz/~paluch/l7kdriver"
>http://bimbo.fjfi.cvut.cz/~paluch/l7kdriver</A>
</BLOCKQUOTE>
<BLOCKQUOTE><IMG SRC="../gx/dennis/bbub.gif" ALT="(!)"
HEIGHT="28" WIDTH="50" BORDER="0"
> [Mike]
Combined printer/fax/copier/scanners should especially be avoided unless
you know that model works with Linux.
</BLOCKQUOTE>
<BLOCKQUOTE><IMG SRC="../gx/dennis/bbub.gif" ALT="(!)"
HEIGHT="28" WIDTH="50" BORDER="0"
> [Heather]
It turns out there's a really great site that keeps track of all sorts
of things about printing under linux. Wouldn't you guess, it's:
<A HREF="http://www.linuxprinting.org"
>http://www.linuxprinting.org</A>
</BLOCKQUOTE>
<P><STRONG><IMG SRC="../gx/dennis/qbub.gif" ALT="(?)"
HEIGHT="28" WIDTH="50" BORDER="0"
>
Thank you very much. You are very kind. Of course it will be an honor
to get into your magazine.
Perhaps would you find it interesting to talk about other
"winsoftware": scanners, digital photography devices, joysticks, etc.
</strong></p>
<!-- end 3 -->
<!-- .~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~. -->
<A NAME="tag/4"><HR WIDTH="75%" ALIGN="center"></A>
<!-- begin 4 -->
<H3 align="left"><img src="../gx/dennis/qbubble.gif"
height="50" width="60" alt="(?) " border="0"
>Search and Replace Without Breaking Permissions</H3>
<p><strong>From Peagler Kelley
</strong></p>
<p align="right"><strong>Answered By Ben Okopnik
<br></strong></p>
<!-- ::
Search and Replace Without Breaking Permissions
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
:: -->
<P><STRONG>
Hi,
</STRONG></P>
<P><STRONG>
I am doing a global search and replace on some files via a unix script. I
use the sed command (saving a copy of the original in $file.old) like so:
</STRONG></P>
<P><STRONG><CODE>
sed "s/$INPUT_TXT/$OUTPUT_TXT/g" $file > $NEW_FILE
</CODE></STRONG></P>
<P><STRONG>
Then I perform a diff on the original file ($file) and the new file
($NEW_FILE) and redirect the output to <TT>/dev/null</TT>. If there is a difference
between the two files, then I move the new file to the old file.
Unfortunately I end up changing the permissions on all the files in the
directory, depending on whatever default umask is set. Is there a way that
I can either 1) find out what the permissions of the original file are and
change them accordingly to the new file, or 2) move the new file to the
original file while keeping the permissions of the old file?? Please let me
know. Thanks!!
</STRONG></P>
<BLOCKQUOTE><IMG SRC="../gx/dennis/bbub.gif" ALT="(!)"
HEIGHT="28" WIDTH="50" BORDER="0"
> [Ben]
"sed" is not the best tool for "in-place editing" of the kind you want to
do - all you really want is to change the data in the file, right? Perl
offers a solution that reduces it from a three-step process
(change/diff/move) to one:
</BLOCKQUOTE>
<blockquote><code><font color="#000033"><br>perl -i -wpe 's/$INPUT_TXT/$OUTPUT_TXT/g' $file
</font></code></blockquote>
<BLOCKQUOTE>
That's it. The editing is done in the file itself; the permissions are
unchanged. No muss, no fuss, no greasy aftertaste.
</BLOCKQUOTE>
<!-- sig -->
<P><STRONG><IMG SRC="../gx/dennis/qbub.gif" ALT="(?)"
HEIGHT="28" WIDTH="50" BORDER="0"
>
I agree with you. I wanted to use perl, but the person who I'm creating this
for does not know perl and will be responsible for supporting it. I like your
quick, dirty solution and I may force them to use it just because it's
easier
<IMG SRC="../gx/dennis/smily.gif" ALT=";-)"
height="24" width="20" align="middle">. Thanks!
</strong></p>
<!-- end 4 -->
<!-- .~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~. -->
<A NAME="tag/5"><HR WIDTH="75%" ALIGN="center"></A>
<!-- begin 5 -->
<H3 align="left"><img src="../gx/dennis/qbubble.gif"
height="50" width="60" alt="(?) " border="0"
>Kernel Panic after putting disk back</H3>
<p><strong>From hma
</strong></p>
<p align="right"><strong>Answered By Heather Stern
<br></strong></p>
<!-- sig -->
<!-- ::
Kernel Panic after putting disk back
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
:: -->
<P><STRONG>
Hi,
</STRONG></P>
<P><STRONG>
I like to thank u guys for great job. Am still going thru your past issues.
I have sent 2 questions here and I have not heard anything from u guys..
is my pattern wrong?
</STRONG></P>
<BLOCKQUOTE><IMG SRC="../gx/dennis/bbub.gif" ALT="(!)"
HEIGHT="28" WIDTH="50" BORDER="0"
> [Heather]
1. We can't reply to every message. There are hundreds and hundreds of them
every month. That you received no reply before is not a personal slight.
We will never get to all of them. Just continue to look for whether
someone else's answers apply to your questions too.
</BLOCKQUOTE>
<BLOCKQUOTE>
2. You had no subject this time - that usually doesn't help.
For good behavior patterns that help your message get seen, see the TAG
entry "Creed of the Querent" a few issues ago:
<A HREF="http://www.linuxgazette.com/issue62/tag/5.html"
>http://www.linuxgazette.com/issue62/tag/5.html</A>
</BLOCKQUOTE>
<P><STRONG><IMG SRC="../gx/dennis/qbub.gif" ALT="(?)"
HEIGHT="28" WIDTH="50" BORDER="0"
>
I still have the following problem and I hope U can help now...The problem
am having is that when I boot to my linux I recieve the following message:
" Vfs: Kernel panic" and that it. It doesn't go.
</STRONG></P>
<BLOCKQUOTE><IMG SRC="../gx/dennis/bbub.gif" ALT="(!)"
HEIGHT="28" WIDTH="50" BORDER="0"
> [Heather]
This message means the kernel loaded, then could not find what it's looking
for next. VFS means virtual file system - that's what really manages all
of Linux' filesystem drivers - it probably can't find the root fs. Although
usually if that's the problem it says so. Odd.
</BLOCKQUOTE>
<P><STRONG><IMG SRC="../gx/dennis/qbub.gif" ALT="(?)"
HEIGHT="28" WIDTH="50" BORDER="0"
>
When I try doing fsck,
I get command not found.
</STRONG></P>
<BLOCKQUOTE><IMG SRC="../gx/dennis/bbub.gif" ALT="(!)"
HEIGHT="28" WIDTH="50" BORDER="0"
> [Heather]
You're doing fsck from where? fsck is a linux utility, so you need to come
up from a linux rescue disk of some sort. Toms Root Boot perhaps - handy
because you can download and create one using DOS if you have to:
<A HREF="http://www.toms.net/rb"
>http://www.toms.net/rb</A>
</BLOCKQUOTE>
<BLOCKQUOTE>
There are Windows utilities for accessing ext2 volumes, but they won't
directly help you get back into Linux, and I don't know of a Windows based
ext2 analogue to Scandisk.
</BLOCKQUOTE>
<P><STRONG><IMG SRC="../gx/dennis/qbub.gif" ALT="(?)"
HEIGHT="28" WIDTH="50" BORDER="0"
>
The problem started when I remove one of my harddisk and after puting it
back, I got this problem. But I get into win when I select it.
</STRONG></P>
<BLOCKQUOTE><IMG SRC="../gx/dennis/bbub.gif" ALT="(!)"
HEIGHT="28" WIDTH="50" BORDER="0"
> [Heather]
When you select Win from what? Have you replaced LILO with something else?
(LILO doesn't normally have a selector, it makes you type things. Of course
you could have Storm Linux, which replaced the boot: prompt with a cool
selector screen.) Did you move any partitions before you put the drive back?
Is the drive now your second drive?
</BLOCKQUOTE>
<BLOCKQUOTE>
To fix LILO:
</BLOCKQUOTE>
<BLOCKQUOTE><ol>
<li> Boot from that rescue disk
<li> mount up the <TT>/</TT> volume on some empty directory ... <tt>/mnt</tt>
would do nicely ... <em> don't forget to tell it to use ext2, example:
<br><tt>mount -t ext2 /dev/hda5 /mnt</tt></em>
<li> cd into the mountpoint and run chroot
<li> edit your <TT>/etc/lilo.conf</TT> so it mentions your new volumes... and
points
at the right volume as your root partition now! For example, if it's
now the second drive, than all your references to <TT>/dev/hda</TT> have to
refer to <TT>/dev/hdb</TT>, except for "boot" (which says where to put the
LILO first stage)
<li> (If it has become the second drive) you'll also want to edit
<TT>/etc/fstab</TT>,
since all its drive references are off, too. Otherwise you'll get a
failure in the next stage when Linux really spins up.
<li> Run <TT>/sbin/lilo</TT> to put your bootloader back together.
Or else fix your new bootloader so it passes good options to your linux
kernel - I think NT needs a copy of a (correct) LILO bootsector for its
mechanism, in a tiny little file.
<br>
In short, LILO hates it when you move stuff around. Sorry.
</ol></BLOCKQUOTE>
<P><STRONG><IMG SRC="../gx/dennis/qbub.gif" ALT="(?)"
HEIGHT="28" WIDTH="50" BORDER="0"
>
I hope u reply now.
</STRONG></P>
<BLOCKQUOTE><IMG SRC="../gx/dennis/bbub.gif" ALT="(!)"
HEIGHT="28" WIDTH="50" BORDER="0"
> [Heather]
My inbox load today was light and I'm in a crossplatform mood, so you got
lucky. Usually I leave LILO matters for the rest of the Gang.
</BLOCKQUOTE>
<P><STRONG><IMG SRC="../gx/dennis/qbub.gif" ALT="(?)"
HEIGHT="28" WIDTH="50" BORDER="0"
>
Thanks.
<br>Hassan
</STRONG></P>
<BLOCKQUOTE><IMG SRC="../gx/dennis/bbub.gif" ALT="(!)"
HEIGHT="28" WIDTH="50" BORDER="0"
> [Heather]
Have a happier day
</BLOCKQUOTE>
<p>... I merged answers about his chroot troubles into the steps above ...</p>
<P><STRONG><IMG SRC="../gx/dennis/qbub.gif" ALT="(?)"
HEIGHT="28" WIDTH="50" BORDER="0"
>
Once again, thanx and keep up the good work...some day when I become a guru, I hope to help too...
<IMG SRC="../gx/dennis/smily.gif" ALT=":-)"
height="24" width="20" align="middle">
</STRONG></P>
<P><STRONG>
Hassan
</STRONG></P>
<BLOCKQUOTE><IMG SRC="../gx/dennis/bbub.gif" ALT="(!)"
HEIGHT="28" WIDTH="50" BORDER="0"
> [Heather]
When you feel ready, I'm pretty sure the Gang will still be here to welcome
you aboard!
</BLOCKQUOTE>
<!-- end 5 -->
<!-- .~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~. -->
<A NAME="tag/6"><HR WIDTH="75%" ALIGN="center"></A>
<!-- begin 6 -->
<H3 align="left"><img src="../gx/dennis/qbubble.gif"
height="50" width="60" alt="(?) " border="0"
>Procmail and regular expressions....(Snowwhite...)</H3>
<p><strong>From Andrew Higgs
</strong></p>
<p align="right"><strong>Answered By Ben Okopnik, Mike Orr, Faber Fedor
<br></strong></p>
<P><STRONG><IMG SRC="../gx/dennis/qbub.gif" ALT="(?)"
HEIGHT="28" WIDTH="50" BORDER="0"
>
Hi all,
</STRONG></P>
<P><STRONG>
While on the subject....any suggestions on a good place to find out
about regular expressions and procmail.
</STRONG></P>
<P><STRONG>
I collect mail from one ISP mailbox and send it on to the correct user
based on email address. I also have a problem with people who use
mailing list groups in Outlook etc. How do I split these properly?
</STRONG></P>
<P><STRONG>
Any pointers gratiously accepted.
</STRONG></P>
<BLOCKQUOTE><IMG SRC="../gx/dennis/bbub.gif" ALT="(!)"
HEIGHT="28" WIDTH="50" BORDER="0"
> [Ben]
"procmail" uses extended regexes, much the same as "egrep". So, for some
good examples and broad-scope explanations of those, try
</BLOCKQUOTE>
<PRE>
man procmailex
man procmailrc
man grep # The "REGULAR EXPRESSIONS" section is a great reference
man regex # Somewhat different "flavor", but useful
</PRE>
<BLOCKQUOTE>
For single address to multiple local user resolution, read the "Email
Addressing FAQ (How to use user+box@host addresses)" at
<A HREF="http://www.faqs.org/faqs/mail/addressing/">www.faqs.org/faqs/mail/addressing/</A> - as it happens, I just ran into this
thing yesterday, and was much impressed with the logical style and layout
of it. Even if this is not <em>exactly</em> what you're doing, there are a number
of relevant useful techniques described in this document - and it's mostly
based on doing it with "procmail".
</BLOCKQUOTE>
<BLOCKQUOTE><IMG SRC="../gx/dennis/bbub.gif" ALT="(!)"
HEIGHT="28" WIDTH="50" BORDER="0"
> [Mike]
Ben! You even wrote the article about procmail antispam filtering and
you didn't mention it.
<IMG SRC="../gx/dennis/smily.gif" ALT=":)"
height="24" width="20" align="middle"> Just in case Andrew hasn't seen it:
</BLOCKQUOTE>
<BLOCKQUOTE><BLOCKQuote>
<A HREF="../issue62/okopnik.html"
>http://www.linuxgazette.com/issue62/okopnik.html</A>
</BLOCKQuote></BLOCKQUOTE>
<BLOCKQUOTE><IMG SRC="../gx/dennis/bbub.gif" ALT="(!)"
HEIGHT="28" WIDTH="50" BORDER="0"
> [Faber]
Let me through out this little tidbit:
</BLOCKQUOTE>
<BLOCKQUOTE><BLOCKQuote>
If you use the \< and \> word boundary markers in procmail, keep in mind
that they consume (eat) the word boundary. Every other program I've
used the word boundary markers on did <EM>not</EM> eat them.
</BLOCKQuote></BLOCKQUOTE>
<BLOCKQUOTE>
Makes a BIG difference when your grepping your text (and took me an hour
to figure out!).
</BLOCKQUOTE>
<BLOCKQUOTE>
Regards,
<br>Faber Fedor
</BLOCKQUOTE>
<!-- end 6 -->
<!-- .~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~. -->
<A NAME="tag/7"><HR WIDTH="75%" ALIGN="center"></A>
<!-- begin 7 -->
<H3 align="left"><img src="../gx/dennis/qbubble.gif"
height="50" width="60" alt="(?) " border="0"
>Timely Samba Release?</H3>
<p><strong>From Andrew
</strong></p>
<p align="right"><strong>Answered By Andrew Higgs, Jim Dennis
<br></strong></p>
<!-- ::
Timely Samba Release?
~~~~~~~~~~~~~~~~~~~~~
:: -->
<P><STRONG>
Hello,
</STRONG></P>
<P><STRONG>
I swear that the hardest thing to setup under Linux (at least for
me ) has been samba. Running Linux RedHat 6.1 & have a windows 98
se machine. I see the Linux machine when i go into Network
Neighbourhood & when i click on it i get the password box but it
ALWAYS fails. The message i am getting at the moment is this
</STRONG></P>
<pre><strong> [2001/04/08 04:02:05, 0] smbd/server.c:sig_hup(340)
Got SIGHUP
[2001/04/09 00:18:04, 0] smbd/password.c:domain_client_validate(1213)
domain_client_validate: no challenge done - password failed
[2001/04/09 00:18:05, 0] smbd/password.c:domain_client_validate(1213)
domain_client_validate: no challenge done - password failed
[2001/04/09 00:18:09, 0] smbd/password.c:domain_client_validate(1213)
domain_client_validate: no challenge done - password failed
[2001/04/09 00:18:10, 0] smbd/password.c:domain_client_validate(1213)
domain_client_validate: no challenge done - password failed
</strong></pre>
<P><STRONG>
What i would truley like is to setup Linux as a domain controller
so when booting the windows machine validation is done via the
Linux machine by verifying against the password file or smbpasswd
file & so then u have access to shares at that point. Does it have
to be WinNT to get this to work. I know their is the issue with
encrypted passwords. Currently my Linux machine is set to yes
Regards...
</STRONG></P>
<P><STRONG>
Andrew
</STRONG></P>
<BLOCKQUOTE><IMG SRC="../gx/dennis/bbub.gif" ALT="(!)"
HEIGHT="28" WIDTH="50" BORDER="0"
> [Andrew Higgs]
Hi Andrew,
</blockquote>
<blockquote>
It is very possible to have Win 95 and 98 logon to a Samba domain. I
assume you have read the relevant docs which come with Samba.
</blockquote>
<blockquote>
Have you added a Samba user to correspond with the one (your windows
username) you are trying to use. It seems to me that it is failing
because the username (and consequently the password) is not
there. Try 'smbpasswd -a username' also 'man smbpasswd' for further
details. Also bear in mind that Win 95 (and I assume 98) don't let
you specify a username when trying to login to the Samba server,
they just use your windows username.
</blockquote>
<blockquote>
I hope this is sorts out your problem.
</blockquote>
<blockquote>
Kind regards
<br>Andrew Higgs
</blockquote>
<BLOCKQUOTE><IMG SRC="../gx/dennis/bbub.gif" ALT="(!)"
HEIGHT="28" WIDTH="50" BORDER="0"
> [JimD]
I was just reading about the Samba 2.2.0 release at
<A HREF="http://www.samba.org/samba/samba.html"
>http://www.samba.org/samba/samba.html</A>. The Samba team is continuing
to strive towards full domain controller and "MS Active Directory"
functionality. You should look at the new release and read every
shred of documentation. Linux/Samba as a domain controller is
still cutting edge (sometimes brushing against the cutting edge leaves
us dripping a bit of blood).
</BLOCKQUOTE>
<BLOCKQUOTE>
You'll especially want to read the PDC HOWTO documentation at
your nearest mirror of the Samba web site: <A HREF="http://www.samba.org"
>http://www.samba.org</A>
Just follow the "Documentation" link and look for the FAQs and
HOWTOs under the "New PDC Documentation" heading.
</BLOCKQUOTE>
<BLOCKQUOTE>
There are Samba mailing lists and discussion of Samba predominates
the discussion on the news:comp.protocols.smb newsgroup. If you
have a connection to a good NNTP server you can post your questions
to a forum where hundreds of Samba users and specialists can see it.
</BLOCKQUOTE>
<BLOCKQUOTE>
Also, no tech support suggestions for Samba would be complete if
we didn't point you to the Samba DIAGNOSIS guide. You can see that
at: <A HREF="http://WWW.samba.org/samba/docs/DIAGNOSIS.html"
>http://WWW.samba.org/samba/docs/DIAGNOSIS.html</A> (where WWW can
be www or the names of one of the many samba mirrors).
</BLOCKQUOTE>
<!-- end 7 -->
<!-- .~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~. -->
<A NAME="tag/8"><HR WIDTH="75%" ALIGN="center"></A>
<!-- begin 8 -->
<H3 align="left"><img src="../gx/dennis/qbubble.gif"
height="50" width="60" alt="(?) " border="0"
>3d linux</H3>
<p><strong>From Philippe CABAL
</strong></p>
<p align="right"><strong>Answered By Michael J. Hammel
<br></strong></p>
<P><STRONG>
hi
</STRONG></P>
<BLOCKQUOTE><IMG SRC="../gx/dennis/bbub.gif" ALT="(!)"
HEIGHT="28" WIDTH="50" BORDER="0"
> [The Graphics Muse]
Howdy.
</BLOCKQUOTE>
<P><STRONG><IMG SRC="../gx/dennis/qbub.gif" ALT="(?)"
HEIGHT="28" WIDTH="50" BORDER="0"
>
i am looking for a free multiplateform (win32 + unix)
3d modeling <TT>/</TT> rendering <TT>/</TT> animating software
all i found is povray and blender
</STRONG></P>
<BLOCKQUOTE><IMG SRC="../gx/dennis/bbub.gif" ALT="(!)"
HEIGHT="28" WIDTH="50" BORDER="0"
> [The Graphics Muse]
That's about it.
</BLOCKQUOTE>
<P><STRONG><IMG SRC="../gx/dennis/qbub.gif" ALT="(?)"
HEIGHT="28" WIDTH="50" BORDER="0"
>
but id like a software as open as pov (data souces)
as intuitive as a blender
</STRONG></P>
<BLOCKQUOTE><IMG SRC="../gx/dennis/bbub.gif" ALT="(!)"
HEIGHT="28" WIDTH="50" BORDER="0"
> [The Graphics Muse]
No such beast.
</BLOCKQUOTE>
<P><STRONG><IMG SRC="../gx/dennis/qbub.gif" ALT="(?)"
HEIGHT="28" WIDTH="50" BORDER="0"
>
actually i am a proggramer so i need to have a look at the scene-source
isnt there a vrml stuff that do broadcast output ?
</STRONG></P>
<BLOCKQUOTE><IMG SRC="../gx/dennis/bbub.gif" ALT="(!)"
HEIGHT="28" WIDTH="50" BORDER="0"
> [The Graphics Muse]
Nope. You have a few choices, but nothing that fits all your desires here.
</BLOCKQUOTE>
<BLOCKQUOTE>
If you want VRML, you can try SCED or SCEDA. Both have pretty primitive
interfaces, but are fairly sophisticated underneath. They include a
constraint-based mechanism. The source is available. They are the only
ones I know of that produce VRML output.
</BLOCKQUOTE>
<BLOCKQUOTE>
Outside of these two, all the other tools do not provide source: Blender,
Houdini, Maya, etc. Blender is by far the least expensive but the most
sophisticated for the money. Houdini and Maya are high end, high dollar
products. POVRay is just a rendering engine, not an interactive modelling
tool. A better option for rendering is probably BMRT, the Blue Moon
Rendering Tools, which is a Renderman compliant renderer. It was actually
used for several movies. However, like POVRay, it is just a rendering
engine, not an interactive modeller.
</BLOCKQUOTE>
<BLOCKQUOTE>
Nothing is available on Linux for free and with source provided that can do
broadcast output. You have to string together a few different tools in
order to do that - for example Blender for modelling, something else to
convert Blender files to RIB files (it doesn't do RIB yet), and then BMRT
for rendering.
</BLOCKQUOTE>
<BLOCKQUOTE>
Blender is really the best thing going in this department, since you can
add scripting to it fairly well using Python. It's interface is production
quality. It just doesn't export to formats that can be used by other
rendering engines, like RIB for PRMan (Pixar's rendering engine) or BMRT.
</BLOCKQUOTE>
<BLOCKQUOTE>
As for cross platform, give it up. Blender I think is cross platform.
POVRay doesn't much care where it's ported to and I believe BMRT has been
ported to Windows (much to the consternation of the original author, no
doubt). But cross platform graphics tools are pretty difficult to do since
such tools are often very happy close to the hardware, and getting close to
the hardware on different OS's is not quite so easy a proposition.
</BLOCKQUOTE>
<BLOCKQUOTE>
Hope that helps.
</BLOCKQUOTE>
<!-- end 8 -->
<!-- .~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~. -->
<A NAME="tag/9"><HR WIDTH="75%" ALIGN="center"></A>
<!-- begin 9 -->
<H3 align="left"><img src="../gx/dennis/qbubble.gif"
height="50" width="60" alt="(?) " border="0"
>linux vectoring synergy</H3>
<p><strong>From darrell rolstone
</strong></p>
<p align="right"><strong>Answered By Ben Okopnik
<br></strong></p>
<P><STRONG><IMG SRC="../gx/dennis/qbub.gif" ALT="(?)"
HEIGHT="28" WIDTH="50" BORDER="0"
>
Dear Staff of the Answer Gang!
</STRONG></P>
<P><STRONG>
I hope you folks appreciate the occasional question from a
non-techie....whose really into seeing and helping the information
revolution FLOURISH!
</STRONG></P>
<P><STRONG>
I'm a 52 year old "synergy design consultant" from Marin County
California....living in Thailand for the last 6 plus years. I was a pioneer
in the Wholistic Health movement of the 70's and a student of R.Buckminister
Fuller. I'm a world class Nordic Physical Therapist.....and I have trouble
with even the simplest technological things like copying something onto a
disk! REALLY!
</STRONG></P>
<BLOCKQUOTE><IMG SRC="../gx/dennis/bbub.gif" ALT="(!)"
HEIGHT="28" WIDTH="50" BORDER="0"
> [Ben]
<laugh> The two are not necessarily related... but say on.
</BLOCKQUOTE>
<P><STRONG><IMG SRC="../gx/dennis/qbub.gif" ALT="(?)"
HEIGHT="28" WIDTH="50" BORDER="0"
>
But inspite of nearly total techno ignorance.....I'm quite skilled in the
social aspects of the techno evolution/revolution! And I sincerely want to
help that process along it's path.
</STRONG></P>
<P><STRONG>
So, my question('s) to you guru's of "geekness"....just what is being
done in the area of co-ordinating all the linux "programing development"
that is manifesting? Is there a "co-operative" formed? Can a (traditionally
"left-brained" dominant) programer offer up his/her work to a linux "group
of (traditionally right-brained dominant)marketers" that will then take
over and bring his/her work to fruition?!
(thereby "sharing the knowledge" at a higher level of efficiency).
</STRONG></P>
<P><STRONG>
If there is such a "group"......can you direct me to them?
Praises upon you all for sharing your knowledge! Really!
</STRONG></P>
<BLOCKQUOTE><IMG SRC="../gx/dennis/bbub.gif" ALT="(!)"
HEIGHT="28" WIDTH="50" BORDER="0"
> [Ben]
Well, Darrell... <em>that's</em> a heck of a question to ask of a bunch of
traditionally left-brained computer types. <smile> Actually, if you're a
student of revolutionary processes, you may find Linux <em>very</em> interesting
for just that reason.
</BLOCKQUOTE>
<BLOCKQUOTE>
The Linux kernel itself - as wonderful of a thing as it is - is not (from
my perspective) the thing that is responsible for the popularity and the
tremendous growth of Linux. What is responsible for it is the Linux/Open
Source <em>model</em> - that of people working on their own, or with a team, and
getting full recognition for their work. The traditional hurdle of
marketing a product is largely eliminated, since the greatest majority of
the programs for Linux are free; the "distribution channel" - the Internet
- is also mostly free (the costs are not assignable to Linux, so it is
free in this regard.) In those terms, the marketing model for Linux and its
software is not the traditional "push" - we have no need to stuff it down
the gullets of barely willing customers - it is "pull": when people need a
piece of software, they research it, download it, and install it. As well,
the "feedback loop" that is usually set up between the programmer and the
interested users of the program is a tremendously powerful tool: if fifty
thousand people have pounded on your program for a few months, and the
flow of bug reports has finally ground to a halt, either that program is as
perfect as code can be, or it has simply been cowed into submission.
<IMG SRC="../gx/dennis/smily.gif" ALT=":)"
height="24" width="20" align="middle">
</BLOCKQUOTE>
<BLOCKQUOTE>
The effect of this is exactly what Robert Pirsig talked about in his "Zen
and the Art of Motorcycle Maintenance" (I would guess that you're familiar
with the work) - a shift toward Quality being the focus. That, to me, is
the most exciting thing about Linux: quality really <EM>is</EM> "Job #1".
</BLOCKQUOTE>
<BLOCKQUOTE>
As to co-operatives... well, have you ever tried herding cats?
<IMG SRC="../gx/dennis/smily.gif" ALT=":)"
height="24" width="20" align="middle"> There
are several things that have worked well in the Open Source community,
usually by providing maximum assistance and convenience but minimum
direction: any of the large-scale programming projects, such as <A HREF="http://www.winehq.com/">WINE</A>,
Mozilla, the whole series of GNU projects, <A HREF="http://www.kde.org/">KDE</A>, etc. There is also
SourceForge, which provides an archive/code repository/distribution
point for development efforts.
</BLOCKQUOTE>
<BLOCKQUOTE>
I'm not sure if this is any kind of an answer that you were looking for;
mostly, these are just the ramblings of a right-brained guy who loves
using his creativity in a left-brained way. <chuckle> I think that
dichotomy was a no-starter, for me; never could see it...
</BLOCKQUOTE>
<!-- end 9 -->
<!-- . . . . . . . . . . . . . . . . . . . -->
<A NAME="tag/10"><HR WIDTH="75%" ALIGN="center"></A>
<HR WIDTH="40%" ALIGN="center">
<!-- begin 0 -->
<H3 align="left"><img src="../gx/dennis/qbubble.gif"
height="50" width="60" alt="(?) " border="0"
>Why Linux for routing</H3>
<p><strong>From Ian Carr-de Avelon
</strong></p>
<p align="right"><strong>Answered By Mike Orr
<br></strong></p>
<P><STRONG>
In LG#65 I read:
<br>"Another thing this article does is raise the question, just because we
can use Linux in a wide variety of routing situations, should we? Are
you choosing a Linux router because it's the most appropriate solution
for the task, or simply because "we're a Linux-only shop"? "
</STRONG></P>
<P><STRONG>
Well... What are the choices? Basicly:
</STRONG></P>
<P><STRONG><ol>
<li>CISCO - expensive and involving commands which are unrelated to any
other other task you do.
<li> Also ran dedicated routers - less expensive but an ever changing sea of
this month's best offer leaving you with a different web based configuration
on virtually every router you will buy and if an interface card blows,
they don't make them any more. If the system ever gets hacked - they
don't provide updates, it is obsolete.
<li>DOS based old PC - cheap but involving commands which are unrelated to any
other other task you do. If an interface card blows, it is the same as
every PC in your office and local PC store.
<li>Linux based old PC - cheap and allowing you to use the same shell, editor
etc which you use for every other computing task (assuming you are Linux based).
If an interface card blows, it is the same as every PC in your office and
local PC store.
</ol></STRONG></P>
<P><STRONG>
The Linux option has a lot going for it especially if you are an organisation
which does not have a team only dedicated to routers, like large telcos do.
Routing sits causing no problems for months, while you forget how to
work on the router, and then when problems arrive it is panic stations,
because nobody can work, clients are not being served and business is
being lost.
I run a Polish ISP with Linux and one CISCO router, which we bought because
I was over ruled, because although the WAN card for Linux was cheaper,
the CISCO dealer offered unbeatable financing. I don't see that changing soon.
</STRONG></P>
<P><STRONG>
Yours
<br>Ian
</STRONG></P>
<BLOCKQUOTE><IMG SRC="../gx/dennis/bbub.gif" ALT="(!)"
HEIGHT="28" WIDTH="50" BORDER="0"
> [Mike]
You bring up some good points, but that does not invalidate the question.
I'm not saying Linux *shouldn't* be used for routing, just that each
organization needs to weigh the price-vs-performance-vs-maintainability
factors for iteself. The situation I was thinking about (and perhaps
it wasn't clear in the paragraph) was not a small, low-traffic
network, for which Linux's price and maintainability certainly runs circles
over proprietary systems, but rather an an enterprise-level,
high-traffic situation. Is there an amount of thoroughput above which
Linux routers are not (currently) scalable, a point at which Ciscos
would be more economical? I don't know, but a netadmin in that situation
would want to explore both options before making a decision.
</BLOCKQUOTE>
<BLOCKQUOTE>
My point is not so much about Linux vs Cisco, but about jumping on the
Linux bandwagon too quickly. We all know hundreds of companies that
refused to consider any alternatives to buying NT servers, WINS servers,
Novell servers, etc. The same can happen in the Linux world, if one
refuses to consider an alternative to a Linux router more because it's
politically incorrect than because of an actual comparision of price,
performance and maintainability and how they would all affect your
organization in its situation.
</BLOCKQUOTE>
<!-- end 0 -->
<!-- . . . . . . . . . . . . . . . . . . . -->
<A NAME="tag/11"><HR WIDTH="75%" ALIGN="center"></A>
<!-- begin 0 -->
<H3 align="left"><img src="../gx/dennis/qbubble.gif"
height="50" width="60" alt="(?) " border="0"
>disappearing act</H3>
<p><strong>From eric lin
</strong></p>
<p align="right"><strong>Answered By Ben Okopnik
<br></strong></p>
<P><STRONG>
Hello Answer Gang,
</STRONG></P>
<P><STRONG>
Let me start off by thanking all of you for providing such excellent
service.
</STRONG></P>
<P><STRONG>
I'm running RedHat 6.2 with apache 1.3.9 and Sendmail 8.9.3 as an Internal
web/mail server.
I use it on a daily basis, but haven't changed any of the configurations
since the initial install. Yet mysteriously the httpd.conf and the
sendmail.conf files becomes null (file size of 0)!!! This occurs randomly
and usually after a reboot of the system.
</STRONG></P>
<P><STRONG>
Since it is internal and no one uses it except for myself, I have no way of
explaining why this is.
</STRONG></P>
<P><STRONG>
Do you guys have any ideas???
</STRONG></P>
<BLOCKQUOTE><IMG SRC="../gx/dennis/bbub.gif" ALT="(!)"
HEIGHT="28" WIDTH="50" BORDER="0"
> [Ben]
Wow. That's odd. <EM>Very</EM> odd. It sounds like maybe some sort of a config
file backup procedure (?) gone wrong. One of the first things I'd do is
switch to "<TT>/etc/init.d</TT>" and grep the scripts there for any mention of the
above files. I'd investigate anything I found with a <em>very</em> sceptical eye,
possibly looking for evidence of intrusion (I can see some script kiddie
being very interested in those two files...) or just a badly-written
script.
</BLOCKQUOTE>
<BLOCKQUOTE>
If you can't find anything, try setting the immutable attribute on those
files via "<tt>chattr</tt>" (see the manpage); this should at least stop them from
"disappearing". I, for one, would be <em>very</em> interested to know what you
find out in your troubleshooting process.
</BLOCKQUOTE>
<!-- sig -->
<!-- end 0 -->
<!-- . . . . . . . . . . . . . . . . . . . -->
<A NAME="tag/12"><HR WIDTH="75%" ALIGN="center"></A>
<!-- begin 0 -->
<H3 align="left"><img src="../gx/dennis/qbubble.gif"
height="50" width="60" alt="(?) " border="0"
>getting 2 dynamic ip addresses</H3>
<p><strong>From Christi Gell
</strong></p>
<p align="right"><strong>Answered By Mike Orr
<br></strong></p>
<P><STRONG>
I have a DSL and I want to get 2 dynamic IP addresses w/it. I've got a
hub, but every time my husband needs to get online, I need to release my
IP address.
</STRONG></P>
<BLOCKQUOTE><IMG SRC="../gx/dennis/bbub.gif" ALT="(!)"
HEIGHT="28" WIDTH="50" BORDER="0"
> [Mike]
Your hub is connected directly to the DSL modem? In that case, you will
have to contact your ISP to get a second dynamic address from them... if
you can.
</BLOCKQUOTE>
<BLOCKQUOTE>
A more common scenario is to have one computer (the server) connected to the
modem and also to the hub. The second computer is connected only to the hub.
The first computer has IP firewalling and IP masquerading compiled into the
kernel. (I assume you're running Linux, since you sent this to a Linux answer
forum. If you're using Windows, you'll have to go somewhere else for help.)
Then you enable IP masquerading on the server. Now the second computer
can reach the Internet without needing a second dynamic IP from the ISP.
</BLOCKQUOTE>
<BLOCKQUOTE>
To set this up, search for "masquerading" or "masquerade" in the Linux
Gazette search engine (<a href="http://www.linuxgazette.com/wgindex.html"
>www.linuxgazette.com/wgindex.html</a>). Or pick up a Linux
configuration book from the bookstore or look in the manual that came
with your distribution.
</BLOCKQUOTE>
<!-- end 0 -->
<center>
<H1><A NAME="tips"><IMG ALIGN=MIDDLE ALT="" SRC="../gx/twocent.jpg">
More 2¢ Tips!</A></H1> <BR>
<!-- BEGIN tips -->
Send Linux Tips and Tricks to <A HREF="mailto:gazette@ssc.com">gazette@ssc.com</A></center>
<UL>
<!-- index_text begins -->
<li><A HREF="#tips/1"
><strong>Easy LG browsing 2 cent tip</strong></a>
<li><A HREF="#tips/2"
><strong>vim hot color swapping</strong></a>
<li><A HREF="#tips/3"
><strong>linux version of dos commands</strong></a>
<li><A HREF="#tips/4"
><strong>Booting w/ CD-ROM</strong></a>
<li><A HREF="#tips/6"
><strong>dvi and Deskjet</strong></a>
<li><A HREF="#tips/7"
><strong>how to find an i/o adress for an specific pci slot</strong></a>
<li><A HREF="#tips/8"
><strong>Pam.d questions</strong></a>
<li><A HREF="#tips/9"
><strong>Finding my computer at home from the outside LG #65</strong></a>
<!-- index_text ends -->
</UL>
<!-- .~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~. -->
<P> <A NAME="tips/1"><HR WIDTH="75%" ALIGN="center"></A> <P>
<H3><IMG ALIGN=BOTTOM ALT="" SRC="../gx/lil2cent.gif">
<FONT COLOR="navy">Easy LG browsing 2 cent tip</FONT></H3>
Fri, 20 Apr 2001 20:31:35 +1000 (EST)
<BR>bandido (<a href="mailto:tag@ssc.com">bandido from drinkordie.com</a>)
<P>
This handy dandy function is courtasy of Cobratek on <tt>#Mandrake</tt>
on Efnet, it is super kewl, since you can unpack all your LG issues (you
do have all 65 don't you?) and instanty view any one.
</P>
<P>
Simply add this function to either <tt>~/.bashrc</tt> or better yet
<TT>/etc/bashrc</TT> so everyone on your system can read LG.
</P>
<P><code>
function lg () { lynx /home/bandido/docs/Linux.Gazette/$1/index.html ; }
</code></P>
<P>
Remember to change path to whatever you unpack your LG issues to, and do
not use <tt>~/</tt> dirname of course if you put the function in
<TT>/etc/bashrc</TT>
<IMG SRC="../gx/dennis/smily.gif" ALT=":)"
height="24" width="20" align="middle">
</P>
<P>
Personally I unpack all issues like this,
</P>
<P><code>
<br>/home/bandido/doc/Linux.Gazette/1
<br>/home/bandido/doc/Linux.Gazette/2</code>
<br>3 4 5
<br>etc
</P>
<P>
Thus, I type lg 20 or lg 35 etc, to open 20 or 35 instanlty in lynx, and I
am in prior dir when I exit. Nice and handy, never far away from LG
<IMG SRC="../gx/dennis/smily.gif" ALT=":)"
height="24" width="20" align="middle">
Feel feel to drop by <tt>#Mandrake</tt> on Efnet too, unlike most linux
channeols, newbies are very much welcome.
</P>
<!-- end 1 -->
<!-- .~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~. -->
<P> <A NAME="tips/2"><HR WIDTH="75%" ALIGN="center"></A> <P>
<H3><IMG ALIGN=BOTTOM ALT="" SRC="../gx/lil2cent.gif">
<FONT COLOR="navy">vim hot color swapping</FONT></H3>
Thu, 19 Apr 2001 07:37:04 -0700
<BR>Adam Monsen (<a href="mailto:tag@ssc.com">meonkeys from hotmail.com</a>)
<P>
Vim's syntax highlighting can be helpful at times at painful at other times.
Add this to your <tt>.vimrc</tt> and you can turn colors on and off with
the tap of a button.
</P>
<Pre>
" map F8 to switch on and off syntax highlighting
function Swapcolor()
if exists("g:syntax_on")
syntax off
set nohlsearch
else
syntax on
set hlsearch
endif
endfunction
map <F8> :call Swapcolor()<CR>
</Pre>
<!-- end 2 -->
<!-- .~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~. -->
<P> <A NAME="tips/3"><HR WIDTH="75%" ALIGN="center"></A> <P>
<H3><IMG ALIGN=BOTTOM ALT="" SRC="../gx/lil2cent.gif">
<FONT COLOR="navy">linux version of dos commands</FONT></H3>
Sun, 01 Apr 2001 15:06:34 -0700
<BR>Steve Winston (<a href="mailto:tag@ssc.com">xee from mediaone.net</a>)
<P>
They start with letter "m." They look at a floppy disk as "a:" or "a:\"
as Windoze
does.
<br>To copy one file to another, use "mcopy"
<br>If you want to copy a file "myfile" from <tt>a:</tt>
to your home directory, use this command:
</p>
<blockquote><code>
mcopy a:\myfile /home
</code></blockquote>
<p>If you want to copy myfile from <TT>/home</TT> to <tt>a:</tt> use this
command:
<blockquote><code>
mcopy /home/myfile a
</code></blockquote>
<p>
To check the contents of a file or directory, use mdir.
<br>To check the contents of a:
</P>
<blockquote><code>
mdir a:
</code></blockquote>
<P>
Hope that helps a little bit,
<br>stevew
</P>
<!-- end 3 -->
<!-- .~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~. -->
<P> <A NAME="tips/4"><HR WIDTH="75%" ALIGN="center"></A> <P>
<H3><IMG ALIGN=BOTTOM ALT="" SRC="../gx/lil2cent.gif">
<FONT COLOR="navy">Booting w/ CD-ROM</FONT></H3>
Tue, 17 Apr 2001 23:38:57 -0400
<BR>joseph.lalingo (<a href="mailto:tag@ssc.com">joseph.lalingo from ablelink.org</a>)
<BR>Tip from Daniel S. Washko
<P><STRONG>
Hello,
</STRONG></P>
<P><STRONG>
How can I use CFDISK from my REDHAT CD-ROM as though it was from a
hard drive linux installation?
</STRONG></P>
<P>
If this is during the install process, I am pretty sure you could hit
<ctrl><alt><f1-?> to switch to another terminal. Keep cycling through the
keys until you find a free terminal. You should then be able to use
cfdisk.
</P>
<P>
-- Daniel
</P>
<!-- sig -->
<!-- end 4 -->
<!-- .~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~. -->
<P> <A NAME="tips/6"><HR WIDTH="75%" ALIGN="center"></A> <P>
<H3><IMG ALIGN=BOTTOM ALT="" SRC="../gx/lil2cent.gif">
<FONT COLOR="navy">dvi and Deskjet</FONT></H3>
Sat, 14 Apr 2001 09:55:53 -0400
<BR>C. Martinet (<a href="mailto:tag@ssc.com">email from cmarti.net</a>)
<br>Tip from Ben Okopnik
<P><STRONG>
Dear answer guy,
</STRONG></P>
<P><STRONG>
I would like to print a dvi file on an HP600 deskjet printer. Is it possible ?
I've tried with the commands dvilj, dvilj2p, dvilj4 and dvil4l, but there
are all for LaserJet printers. So I have some strange results.
</STRONG></P>
<P>
Have you tried "dvihp"? It's supposed to convert DVIs to HP PCL (Printer
Control Language.) Or, you could always just run "dvips" - it'll produce a
PostScript file that you should be able to print without any problems.
<br>-- Ben</P>
<!-- end 6 -->
<!-- .~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~. -->
<P> <A NAME="tips/7"><HR WIDTH="75%" ALIGN="center"></A> <P>
<H3><IMG ALIGN=BOTTOM ALT="" SRC="../gx/lil2cent.gif">
<FONT COLOR="navy">how to find an i/o adress for an specific pci slot</FONT></H3>
Thu, 29 Mar 2001 09:35:37 -0800
<BR>Christer Olsen (<a href="mailto:tag@ssc.com">christer.olsen from cegal.com</a>)
<br>Tip from Mike Orr
<P><STRONG>
i need to find out the slot adress for my pci network card , how can i
easily track down this
</STRONG></P>
<P><STRONG>
my network card is in slot 1 and i need to find out the adress
(0x0081 or ???)
</STRONG></P>
<P>
Does it say in the boot messages? Run "dmesg | less" to see your boot
messages again. If you don't find the right information, please
send us back a copy of your boot messages (in particular, the portions
beginning with "PCI: " and anything that looks like it may be related
to the network card).
</P>
<P>
Each PCI slot corresponds to a fixed address. Perhaps looking in
<tt>include/linux/pci.h</tt> or <tt>drivers/pci/pci.c</tt>
in the kernel source would help.
<br>-- Mike</P>
<!-- end 7 -->
<!-- .~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~. -->
<P> <A NAME="tips/8"><HR WIDTH="75%" ALIGN="center"></A> <P>
<H3><IMG ALIGN=BOTTOM ALT="" SRC="../gx/lil2cent.gif">
<FONT COLOR="navy">Pam.d questions</FONT></H3>
Tue, 3 Apr 2001 15:11:42 +1000
<BR>andrew (<a href="mailto:tag@ssc.com">andrewkennedy from optusnet.com.au</a>)
<BR>Tips from Faber Fedor, Ben Okopnik, and Heather Stern
<P><STRONG>
Back for more of your knowledge
</STRONG></P>
<P>
And we're still here dishing it out!
</P>
<P><STRONG>
I have an authlog file & i keep seeing this info within it
</STRONG></P>
<pre><strong>Apr 3 11:31:58 echelon pam_limits[27640]: invalid line 'hard^Icore^I0'
Apr 3 11:31:58 echelon pam_limits[27640]: invalid line 'soft^Inproc^I100'
Apr 3 11:31:58 echelon pam_limits[27640]: invalid line 'hard^Inproc^I150'
Apr 3 11:31:58 echelon pam_limits[27640]: invalid line 'hard^Ifsize^I40000'
</strong></pre>
<P><STRONG>
Pam was installed via an RPM & seems to be working fine within everything else.
</STRONG></P>
<P><STRONG>
I would just like to fix this area of it if possible
</STRONG></P>
<P>
Check your <TT>/etc/security/limits.conf</TT> file. It seems PAM doesn't like it.
Why? I don't know, but I checked my limits.conf file and my columns were
separated by spaces, not tabs.
</P>
<P>
If you do a <tt>cat -v -t -e /etc/security/limits.conf</TT>, you'll see tabs
as <tt>^I</tt> and eon-oflines as <tt>$</tt>. -- Faber
</P>
<P>
Just to be nitpicky, <tt>cat -A</tt> is a combination of those options. -- Ben
</P>
<P>
<tt>cat -T</tt> is enough to see the dratted tabs as <tt>^I</tt> but stray
spaces at the end of the line still won't be obvious. -- Heather
</P>
<!-- end 8 -->
<!-- .~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~.~~. -->
<P> <A NAME="tips/9"><HR WIDTH="75%" ALIGN="center"></A> <P>
<H3><IMG ALIGN=BOTTOM ALT="" SRC="../gx/lil2cent.gif">
<FONT COLOR="navy">Finding my computer at home from the outside LG #65</FONT></H3>
Wed, 11 Apr 2001 11:17:02 -0400
<BR>Ben Walton (<a href="mailto:tag@ssc.com">bdwalton from mail.lakeheadu.ca</a>)
<P>
Hi there Linux Gazette Team!
</P>
<P>
I was browsing through LG today, and came across the article 'Finding my
computer at home from the outside'. This is a topic that interests me,
as I like to be able to access my home machine from school. Although
technically accurate, I found that writing these scripts is an extremely
cumbersome way to do the job. (Not to mention that passwordless logins
(secure tunnel or no) are just plain bad form...). I'm not writing this
email to complain (you guys do too much good work), but rather to
inform!
</P>
<P>
If you're in a situation like me, and you either can't get (or can't
afford) a static IP on broadband, there is a much simpler solution.
<A HREF="http://www.dyndns.org"
>http://www.dyndns.org</A>. A free service (they DO accept
donations), DynDNS allows you to register a hostname (within one of
their domains...for now), and run a client to update with them each time
your IP changes. After registering with DynDNS, you can download a
little client utility (I prefer ipcheck.py), and have it run from your
<TT>/etc/ppp/ip-up</TT> script (I'm on DSL, so my connection is still
PPP)...which is run every time that your IP changes.
</P>
<P>
I've found the service to be most valuable.
</P>
<P>
Thanks
<br>-Ben Walton
</P>
<!-- sig -->
<!-- end 9 -->
<H4 ALIGN="center">
"Linux Gazette...<I>making Linux just a little more fun!</I>"
</H4>
<P> <HR> <P>
<!--===================================================================-->
<center>
<H1><font color="maroon">The Weekend Mechanic</font></H1>
<H4>By <a href="mailto:n6tadam@users.purbeck.dorset.sch.uk">Thomas Adam</a></H4>
</center>
<P> <HR> <P>
<!-- END header -->
<H1><CENTER>Welcome to the new Linux Weekend Mechanic!</CENTER></H1>
<H2>Table of Contents</H2>
<UL>
<LI><A HREF="#wmdesc">What exactly is the Weekend Mechanic?</A>
<LI><A HREF="#customshell">Customising the shell environment</A>
<LI><A HREF="#crontab">Setting up and using crontab</A>
<LI><A HREF="#closing">Closing Time</A>
</LI>
</UL>
<HR>
<!-- Section one - what is the LWM-->
<A NAME="wmdesc"><H2>What exactly is the Weekend Mechanic?</H2></A>
<P>Welcome to this months new feature....<B>The Weekend Mechanic</B>. Actually,
for those of you who have been avid readers since LG's initial release, you'll
realise that this column used to be written by John M Fisk in 1996-1998 and so
it is not that new. However, I thought it would be nice to re-introduce this as
a regular feature.</P>
<P>The Weekend Mechanic will draw together my experiences of Linux and the problems that I have had to solve either at home or at school each month. So, The Weekend Mechanic will concentrate on the following:</P>
<P>
<UL>
<LI>General Linux News
<LI>Shell Programming
<LI>Shell Customisations
<LI>Sed, Awk, hints
<LI>Program Reviews
<LI>And anything else.....
</LI>
</UL>
</P>
<P>So, with that in mind, lets begin this months fixing and tinkering session......</P>
<!-- ** END SECTION ONE ** -->
<HR>
<!-- ** BEGIN "CustomShell" -->
<A NAME="customshell"><H2>Customising the Shell Environment</H2></A>
<P>I have noticed that more and more people when using Linux tend solely to rely on the GUI, hoping in vein that they do not have to type in any commands in fear of deleting their work, making a fatal mistake, etc. Although the only real threat of this happening is if you are logged in as "root", I find that people are still wary!! However, there will come a time regardless when typing in commands will be a necessity and it is important that your shell environment is customised so that you can complete your tasks with ease. This article will show you how to customise the login shell so that features such as <I>Aliases, editors, shells</I>, etc can work in the way that you want them to.</P>
<P>Firstly, we should make sure that you have an appropriate editor installed. There are many console editors to choose from, such as: emacs, joe, jed, pico, vi. Once you have found an editor that you like (I happen to use both Pico and Jed) then you can tell the shell to use. Some programs such as Cron (as we shall see later on..) rely on the shell having an editor set up so that you can edit the crontab.</P>
<P>There are two files that we shall be concentrating on. They are located in
your home directory as: <B>.bashrc</B> and <B>.bash_profile</B>. In my .bashrc
file, I find that it begins with the following:</P>
<PRE>
# User specific aliases and functions
alias ls='ls -o --color=auto'
alias cad='cat /var/squidGuard/db/blacklist/adverts'
alias cc='cd /mnt/cdrom/Mandrake/RPMS'
alias mail='mail -v'
alias rm='rm -i'
alias cp='cp -i'
alias mv='mv -i'
alias d='ls'
alias s='cd ..'
alias p='cd -'
</PRE>
<P>Aliases are useful, especially if you find yourself typing out a command that has a deep directory listing. For example, if you found yourself having to keep typing in the command <PRE>cd /var/spool/users/home/mail/root/sun</PRE>to save all that typing you can specify a "shortcut" word that automatically does just that. Cool eh?</P>
<P>So to tell the shell that you want to use the word "checkmail" to do the command <PRE>cd /var/spool/users/home/mail/root/sun</PRE>you would add to the list:</P>
<P><PRE>alias checkmail='cd /var/spool/users/home/mail/root/sun'</PRE> Then you could type the alias <B>checkmail</B> and hey presto....it works!!</P>
<P>Of course many people like to issue aliases to accommodate their typographical errors; i.e.,
<PRE>
alias eamcs='emacs'
alias emcas='emacs'
</PRE>
Personally I think this is a bad idea, and you should learn to type more accurately!</P>
<BR>
<P>The next section we shall look at is how to tell the shell which programs to run when it is suitable to run them. In my <B>.bash_profile</B> file I have among the following:</P>
<PRE>
PATH=/sbin:/usr/sbin:/bin:/usr/bin:/usr/X11R6/bin
ENV=$HOME/.bashrc
USERNAME="root"
export USERNAME ENV PATH
</PRE>
<P>This is the section that we shall be concentrating upon setting these variables. Common variables that have not been set are ones like "EDITOR" and "MAIL". These variables are common to the user that is currently logged in, meaning that different values can be specifies for each user.
The variable <NOBR><PRE>EDITOR</PRE></NOBR> specifies the editor to use when editing files. This variable is usually called from programs such as <I>Pine</I> and <I>Cron</I>, but it can be very useful when writing shell scripts.</P>
<P>To set the variable, one has to add it to the "export" list, like this:<BR><BR><PRE>export USERNAME ENV PATH EDITOR</PRE></P>
<P>Exporting a variable releases it into the environment, rather than keeping it within a single program. Exporting is done, so that many different programs can use the same variable name with the same value, get it :-).</P>
<P>Once added to the export list, save the file, and exit your editor. So, now that we have defined a new variable, the next thing to do is to tell Bash, that it is there. To do this, you must "source" the file. This is a bash builtin that re-reads the file. You can either type this in, in one of two ways. Either you can specify <BR><PRE>source filename</PRE>or you can specify a "." thus:</P>
<PRE>. filename</PRE>
<P>And that will then active your new added variable. Well, thats it for this section....</P>
<!-- ** END "customshell" ** -->
<HR>
<!-- ** BEGIN "crontab" ** -->
<A NAME="crontab"><H2>Setting up and Using Crontab</H2></A>
<P>Do you ever find yourself repeating common tasks throughout the day, and wished that there was some sort of program that would automate it all for you? Well, look no further, Mr. Cron is here :-)</P>
<P>Cron is a scheduling program, and even more specifically it is known as a <I>daemon</I>. By daemon, I do not mean that it is a nasty creature with two horns!! A daemon is simply a program that runs in the background waiting for instructions. When it receives them, it executes them and when it has finished, it goes dormant again.</P>
<P>Cron is usually started when you switch to one of your run-levels. However, just to make sure it has started, issue the following command:</P>
<PRE>
ps ax | grep crond
</PRE>
<P>If you get a response similar to:</P>
<PRE>
root 311 0.0 0.7 1284 112 ? S Dec24 0:00 crond
root 8606 4.0 2.6 1148 388 tty2 S 12:47 0:00 grep crond
</PRE>
<P>Then cron has started, and you are ready to use it. If you don't get "crond" returned, then you must start the daemon, by typing <PRE>crond</PRE></P>
<P>Cron is particularly useful when you find yourself needing to run backup and general maintenance programs. To tell cron when to run a program, you have to fill out several fields. Each separate program that is scheduled via cron is put into a file known as a <I>crontab</I> file. The fields are defined as the following:</P>
<PRE>
Min Hour DOM Month DOW User Cmd
</PRE>
<P>And a description of their input values are summarized in the table below:</P>
<TABLE CELLPADDING="5" BORDER="1" WIDTH=100%>
<TH>FIELD</TH>
<TH>DESCRIPTION</TH>
<TR>
<TD ALIGN="center"><B>Min</B></TD>
<TD ALIGN="left">Specifies the minute on or past the hour. Values range from 0 to 59.</TD>
</TR>
<TR>
<TD ALIGN="center"><B>Hour</B></TD>
<TD ALIGN="left">Specifies the hour (Military style) that the script should run at. The range is from 0 to 23 where "0" is Midnight</TD>
</TR>
<TR>
<TD ALIGN="center"><B>DOM</B></TD>
<TD ALIGN="left">This is the Day of Month, that you want the command run on, e.g. to run a command on the 23th of each month, the DOM would be 23</TD>
</TR>
<TR>
<TD ALIGN="center"><B>Month</B></TD>
<TD ALIGN="left">Specifies the month to run the script in. Values range from 1 to 12, where "1" is January and "12" is December. Or it can be specified using the first three letters of the month, e.g. May</TD>
</TR>
<TR>
<TD ALIGN="center"><B>DOW</B></TD>
<TD ALIGN="left">Specifies the day of the week, either as a numeric value of 0 to 7 (0 and 7 are both Sunday) or as the name of the week (using first three letters only), e.g. Mon</TD>
</TR>
<TD ALIGN="center"><B>User</B></TD>
<TD ALIGN="left">Indicates who is running the command</TD>
</TR>
<TR>
<TD ALIGN="center"><B>Cmd</B></TD>
<TD ALIGN="left">The path and name of the script/program to be run</TD>
</TR>
</TABLE>
<P>You can use a "*" (without the quotes) in any of the time fields to mean
"every minute", "every hour", etc.
<P>So, with the above descriptions in mind, the following examples are all valid:</P>
<PRE>
01 * * * * root /usr/bin/script <B>"This command is run at one min past every hour"</B>
17 8 * * * root /bin/mail <B>"This command is run daily at 8:17 am"</B>
17 20 * * * root /usr/bin/fetch <B>"This command is run daily at 8:17 pm"</B>
00 4 * * 0 root /bin/qweb <B>"This command is run at 4 am every Sunday"</B>
* 4 * * Sun root /usr/bin/file2rpm <B>"This command is run at 4 am every Sunday"</B>
42 4 1 * * root /usr/bin/squidlog <B>"This command is run 4:42 am every 1st of the month"</B>
01 * 19 07 * root /usr/bin/xman <B>"This command is run hourly on the 19th of July"</B>
</PRE>
<P>See how easy it is? :-). Cron also accepts more sophisticated time
specifications: run "man 5 crontab" for an explanation of these.
<P>
Of course this is all very well, but I have not told you where to put any of your cron entries. So.........hang on there, reader.</P>
<P>The most common version of cron installed on linux systems is "vixie-cron", and so in the "/etc" folder should be a file called "crontab". If you have specified the environment variable EDITOR (see the above section) then you can simply type in:</P>
<PRE>
crontab -e
</PRE>
<P>And that will load the file into your text editor
<P>If you did not open it using the above command, then open it using a text editor of your choice and you should find something that looks like the following</P>
<PRE>
SHELL=/bin/bash
PATH=/sbin:/bin:/usr/sbin:/usr/bin
MAILTO=root@grangedairy.linux
HOME=/
# run-parts
01 * * * * root run-parts /etc/cron.hourly
02 4 * * * root run-parts /etc/cron.daily
22 4 * * 0 root run-parts /etc/cron.weekly
42 4 1 * * root run-parts /etc/cron.monthly
</PRE>
<P>The SHELL variable indicates the current shell that we are using</P>
<P>The PATH indicates the path to the most common programs</P>
<P>The MAILTO option indicates to whom the output of the cron result (i.e. whether it has worked or not) and any output from the program is to be mailed. If you find that it is annoying, then you can delete this variable.</P>
<P>The section below "#runparts" is supposed to work so that in the folder "/etc/cron.daily" for example, whatever script is in there gets executed daily. However, for some strange reason, it has never worked well for me, and I have since found it easier to specify my own cron list.</P>
<P> So, to add the above examples to our crontab, it is just a matter of <I>copying</I> and <I>pasting</I> them in:</P>
<PRE>
SHELL=/bin/bash
PATH=/sbin:/bin:/usr/sbin:/usr/bin
MAILTO=root@grangedairy.linux
HOME=/
# run-parts
01 * * * * root run-parts /etc/cron.hourly
02 4 * * * root run-parts /etc/cron.daily
22 4 * * 0 root run-parts /etc/cron.weekly
42 4 1 * * root run-parts /etc/cron.monthly
#Custom Crontabs -- Put in by Thomas Adam
01 * * * * root /usr/bin/script
17 8 * * * root /bin/mail
17 20 * * * root /usr/bin/fetch
00 4 * * 0 root /bin/qweb
* 4 * * Sun root /usr/bin/file2rpm
42 4 1 * * root /usr/bin/squidlog
01 * 19 07 * root /usr/bin/xman
</PRE>
<P>Then save the file. Now the last thing we have to do is to tell cron that we have edited the file. That is done, with the following command:</P>
<PRE>
crontab -u root /etc/crontab
</PRE>
<P>And thats it...just sit back and wait..... You should find that by now your workload has diminished by about 25% or so!!!</P>
<P>Cron also has the ability of allowing and denying certain users who are allowed to use cron. To implement this, two files called <I>cron.allow</I> and <I>cron.deny</I> have to be created in the folder "/etc".</P>
<P>These files work in the following way. If for example you wanted nobody to have access to cron, then you would add the line "ALL" to the <I>cron.deny</I> file. If you wanted only certain people to use cron then you would add their username to the <I>cron.allow</I> file.</P>
<P>Rather than having to edit the file each time, I find it much easier to use the following command:</P>
<PRE>
cat username >>/etc/cron.allow
</PRE>
<P>Thats all there is to it....have a go and see what you think......!?!</P>
<!-- ** END "crontab" ** -->
<HR>
<!-- ** BEGIN "closing" ** -->
<A NAME="closing"><H2>Closing Time</H2></A>
<P>Well folks, thats it for this month. I had hoped to do more, but unfortunately school work had intervened yet again!! I would really appreciate some feedback, general comments, hints as to articles, etc. Armed with this information I can then go about "making linux just that little more fun" :-)</P>
<P>I am now off to go and teach piano, do some Geography revision (yay) and then maybe continue working on some of my ongoing "bash script projects". After which, I might even be able to get some sleep. who knows?????</P>
<P>In the meantime however, I wish everyone....<B>"happy Linuxing"</B></P>
<!-- ** END "closing" ** -->
<HR>
<H1 ALIGN="center"><FONT COLOR="red">Send me comments....</FONT></H1>
<H2 ALIGN="center">Any comments, suggestions, ideas, etc can be mailed to me by clicking the e-mail address link below:</H2>
<H2 ALIGN="center"><A HREF="mailto:n6tadam@users.purbeck.dorset.sch.uk">Thomas Adam</A></H2>
<!-- *** BEGIN bio *** -->
<!-- *** END bio *** -->
<!-- *** BEGIN copyright *** -->
<P> <hr> <!-- P -->
<H5 ALIGN=center>
Copyright © 2001, Thomas Adam.<BR>
Copying license <A HREF="../copying.html">http://www.linuxgazette.com/copying.html</A><BR>
Published in Issue 66 of <i>Linux Gazette</i>, May 2001</H5>
<!-- *** END copyright *** -->
<H4 ALIGN="center">
"Linux Gazette...<I>making Linux just a little more fun!</I>"
</H4>
<P> <HR> <P>
<!--===================================================================-->
<center>
<H1><font color="maroon">HelpDex</font></H1>
<H4>By <a href="mailto:shane_collinge@yahoo.com">Shane Collinge</a></H4>
</center>
<P> <HR> <P>
<!-- END header -->
<IMG ALT="clippy.jpg" SRC="misc/collinge/clippy.jpg"
WIDTH="750" HEIGHT="303">
<BR CLEAR="all">
<IMG ALT="deepregret.jpg" SRC="misc/collinge/deepregret.jpg"
WIDTH="750" HEIGHT="303">
<BR CLEAR="all">
<IMG ALT="comicsml.jpg" SRC="misc/collinge/comicsml.jpg"
WIDTH="750" HEIGHT="303">
<BR CLEAR="all">
<P> For those not into gaming, "All your base are belong to us", is a
video-game slogan translated from the Japanese. Read the
<A HREF="http://www.latimes.com/business/cutting/features/lat_allbase010315.htm">LA Times article</A>,
see the <A HREF="http://hubert.retrogames.com/history.htm">history</A>, or watch
Clippy sing it on the <A HREF="http://www.officeclippy.com/">Microsoft site</A>
(turn on Javascript and run the mouse back and forth over the links in the left
column and watch what the Clippy image does, then click on the "Click" button
several times).
<BLOCKQUOTE><EM>
[Too bad I can't listen to the song, "It Looks Like You're Writing a
Letter", since it's in Windows Media format. I would just like to see
its parody version,
<A HREF="../issue63/lg_backpage63.html#notlinux">"It Looks Like You're
Writing a Suicide Note"</A>. -Mike.]
</EM></BLOCKQUOTE>
<HR NOSHADE WIDTH="80%"> <!-- ****************************************** -->
<P> I read the
<A HREF="http://www.xml.com/pub/a/2001/04/18/comicsml.html">overview</A> by
Jason McIntosh about ComicsML over the weekend. There's a lot of sense in what
he says: about the ability to define comics and to be able to search archives
and automate processes. As an example, just last week I was searching for a
specific Far Side and luckily the text had been reproduced within a HTML page
so I was able to find it. Otherwise I could have been searching fruitlessly for
weeks.
<P> That said, as an artist myself the act of documenting
artwork and standardizing it seems to demystify the
process. Part of the magic of reading today "Pearls Before
Swine" or "Randolph Itch 2am" is having to track it down
and read it. Automating the process turns it into a kind of
Shakespeare-via-Brodies-Notes. There is no shortcut to art.
Add that to the technical fact that the time taken to draw
a strip will now double - once for the art which we already
draw and ink, then the marking up of the ComicsML after the
fact, thinking of an appropriate teaser, typing the spoken
text etc. Sheesh! Most cartoonists barely have enough
attention span to brush their teeth,
<BLOCKQUOTE><EM>
[And run around chasing villains all day. -Mike.]
</EM></BLOCKQUOTE>
let alone do all this
house-keeping for each and every strip.
<P> Art as revenue-raiser also requires that human intervention
be present. When HelpDex was running on LinuxToday.com the
filenames were randomized so automated scripts or robots
COULDN'T simply pull down the pics every day. LT was paying
for a service that would entice readers to their site, not
robots. There's no incentive to sponsor a strip without
being able to quantify the hits or business generated.
<P> I sound harsh, but I'm not. ComicsML does look like a good
idea being introduced at a good time. The new breed of
cartoonist literate in new technologies such as the ones
working in Flash and so on would pick this up quickly and
once standardized, could help spread information much more
rapidly than currently occurs. I feel from conventional
artists such as myself there is bound to be a slow uptake
as this simply adds more effort to setup than the benefit
it would realise.
<P> What am I trying to say? I think it's a tidy idea but I'm
too darn lazy to implement it unless I can see a direct
benefit from the extra effort required.
<!-- *** BEGIN bio *** -->
<SPACER TYPE="vertical" SIZE="30">
<P>
<H4><IMG ALIGN=BOTTOM ALT="" SRC="../gx/note.gif">Shane Collinge</H4>
Part computer programmer, part cartoonist, part Mars Bar. At night, he runs
around in a pair of colorful tights fighting criminals. During the day... well,
he just runs around. He eats when he's hungry and sleeps when he's sleepy.
<!-- *** END bio *** -->
<!-- *** BEGIN copyright *** -->
<P> <hr> <!-- P -->
<H5 ALIGN=center>
Copyright © 2001, Shane Collinge.<BR>
Copying license <A HREF="../copying.html">http://www.linuxgazette.com/copying.html</A><BR>
Published in Issue 66 of <i>Linux Gazette</i>, May 2001</H5>
<!-- *** END copyright *** -->
<H4 ALIGN="center">
"Linux Gazette...<I>making Linux just a little more fun!</I>"
</H4>
<P> <HR> <P>
<!--===================================================================-->
<center>
<H1><font color="maroon">Interview with Ben Collins, the new Debian Project Leader</font></H1>
<H4>By <a href="mailto:frc@linux.com.br">Fernando Ribeiro Corrêa & Marcos Martins Manhães</a><BR>
Originally published at <A HREF="http://www.olinux.com.br/Interviews">OLinux</A></H4>
</center>
<P> <HR> <P>
<!-- END header -->
<p>
<b>OLinux: First of all, tell us about your background.</b>
</p>
<p>
<b>Ben Collins:</b>
I am generally speaking a programmer and systems
administrator. In the past I have also worked as a Desktop
Publisher and a web designer. I've worked for NASA LaRC,
several ISPs and currently am working at
<A HREF="http://www.winstar.com">Winstar</A>
.</p>
<p>
<b>OLinux: Please give a brief summary of
<A HREF="http://www.debian.org">Debian</A>'s History, Philosophy
and Organization on handling free software development?</b>
</p>
<p>
<b>Ben Collins:</b>
Our philosophy goes back a long way. Mainly we believe that
it <EM>is</EM> possible to create a completely free operating system
with all of the things you need to do your daily work. That's
what started Debian, and prompted Ian Murdock to write the
Debian Manifesto. From there began our project, and from it
has come the Debian Free Software Guidelines (DFSG), which
defines the type of software licensing we consider to be Free
in the sense of Freedom. Also came the Debian Social
Contract, which defines what we will support for our users.
Later, as we grew, came our Constitution, which defines our
operating procedures, and breakdown of authority within the
project.</p>
<p>We've basically given full control of each package to the
maintainer of that package, so long as it falls within the
guidelines of our well defined Policy. Our Policy is one of
the strengths of the Debian distribution. Without it, we
would not have a cohesive set of packages, and
installs/upgrades would be a nightmare.</p>
<p>
<b>OLinux: How excited you are about being in front of the
Debian Project? Do you have something in mind for the
Debian Project? Are you going to make changes on the way
the work is done?</b>
</p>
<p>
<b>Ben Collins:</b>
I'm extremely excited. This is my third run at the DPL
position, and it is a goal I have finally achieved thanks
completely to those in the project that have faith in my
ability to handle the job. I have plans to clean up some
loose ends that have been plaguing our internal organisation
for some time. After this, I plan to tackle some of the more
difficult situations that still linger, or are threatening to
be a problem in the near future.</p>
<p>
<b>OLinux: What are going to be the differences between your
leadership and the predecessor's?</b>
</p>
<p>
<b>Ben Collins:</b>
When I first came to Debian, Ian Jackson was finishing his
term as DPL, and he was very inactive (to his defense, I do
not know any details of his situation). Wichert then followed
for two terms. I believe he did an excellent job keeping
Debian going. However, my plans are to get Debian moving
rather than continue to limp along with some of the problems
we face.</p>
<p>
<b>OLinux: How are people organized and what are the tools
used to control the results of the work being done in
different projects and parts of the world?</b>
</p>
<p>
<b>Ben Collins:</b>
Within Debian, we have the maintainers (some 800 it seems
now). Each of them is responsible for maintaining one or more
packages (some do not maintain packages, but help with other
projects internally, such as ftp archive, www site, etc.).
They have complete control of their tasks within the
guidelines and policy. Within this, some developers have
grouped together to manage large specific tasks. Examples of
this are the Debian Junior project, as well as the ports (such
as sparc, arm, alapha, powerpc, etc.) and language
projects.</p>
<p>All work is coordinated via mailing lists. Some people
also use IRC as a way of immediate interaction (via
irc.openprojects.net). We also have the Debian Bug Tracking
System to manage bug reports for all of our packages and
systems. This system is available publicly via our web
pages. Anyone can file a bug, and track it's progress
directly with the maintainer.</p>
<p>
<b>OLinux: How many people are working for Debian nowadays?
Are you satisfied with the results?</b>
</p>
<p>
<b>Ben Collins:</b>
Last I checked, about 800. I am satisfied with the results.
What I am not satisfied with is the influx of maintainers
without a better scheme to manage them. Work is being done,
but I want to see some other things in this area discussed
and looked at.</p>
<p>
<b>OLinux: What do you think about people saying that the
Debian 2.2 has too much bugs? What are you going to do in
"Woody" to change this point of view?</b>
</p>
<p>
<b>Ben Collins:</b>
I was not aware that people said that. We have an excellent
security team that fixes all known security related bugs. We
also make regular point releases (2.2r3 is being worked on as
I write this) to update the security patches into a new
release. For woody we have a new "testing" mechanism which
should help reduce the amount of time needed to release.
Hopefully this will make more frequent releases possible.</p>
<p>
<b>OLinux: What are your expectations about the "Woody"
launch?</b>
</p>
<p>
<b>Ben Collins:</b>
I look forward to a lot of the things that are going to be
available in woody. Woody also promises to be the most
architectures we have ever released at one time (by any
distribution, that I am aware of).</p>
<p>
<b>OLinux: What are the active projects at Debian? How are
they divided and coordinated in terms of content and staff
for each project?</b>
</p>
<p>
<b>Ben Collins:</b>
Usually a project within Debian creates itself to fill a
need. The project manages itself, and delegates within its
own ranks who is responsible for what tasks. I'm not aware
of all such projects, simply because most of them work in the
background, silently making Debian better.</p>
<p>
<b>OLinux: Here, in Brazil, there is a project called
<a href="http://debian-br.sourceforge.net">
Debian BR</a>
. This is a project that is translating the Debian content
to Portuguese. Do you know that? If yes, what do you think
about it? If not, you are invited to visit the Debian BR
web site at debian-br.sourceforge.net. Do you know other
projects like this in other countries?</b>
</p>
<p>
<b>Ben Collins:</b>
I had not heard of it before. I think it is an excellent
thing, much like the JP and similar projects. The more people
we can get Debian to, the better. I'll have a look at the
web site, and I wish the best of luck to the project for it's
efforts.</p>
<p>
<b>OLinux: Do you consider Debian the leading GNU/Linux
distribution in the world?</b>
</p>
<p>
<b>Ben Collins:</b>
On many basis, yes. However, I measure Debian on what's
important to me, and am well aware that it lacks in areas
that are important to others. A recurring topic is our
installer. I'm happy to report that a new modular installer
is being worked on, and it so far appears to exceed, or will
exceed, all of the goals that the group set for itself. It
will probably not be done in time for woody, though.</p>
<p>
<b>OLinux: How is Debian's relationship with the GNOME
Foundation? And with the KDE league?</b>
</p>
<p>
<b>Ben Collins:</b>
I'm not able to answer this question. I do know that we have
some developers that work closely with both projects, and
that GNOME and KDE are both fully integrated within our
distribution.</p>
<p>
<b>OLinux: What are the advantages and what differentiates
Debian from
other popular distributions as SuSE or Red Hat, besides being a
non-commercial distribution?</b>
</p>
<p>
<b>Ben Collins:</b>
I think we have three major strengths. One is our development
model. No other distribution has all of its developers
available first hand to take bug reports and suggestions from
its user base.</p>
<p>No other distribution has as extensive a set of policies
that allows it to distribute as many packages as we do, all
integrated into our distribution, with easy installation.</p>
<p>No other distribution offers the ease of upgrades that we
do. There have been reports of people being able to
effortlessly upgrade from as far back as Debian 1.3 (bo) to
the current stable 2.2 (potato) (note, this is a libc5 to
libc6 upgrade path). Debian not only supports, but guarantees
upgradability. It is one of our primary goals.</p>
<p>
<b>OLinux: How do you describe Debian Project achievements
and what are the prospects and goals for the next
years?</b>
</p>
<p>
<b>Ben Collins:</b>
The fact that Debian is still around, and is still growing is
a major achievement. We have not lost site of our primary
goals; to produce a free and stable distribution. Over the
next few years I hope to see Debian prosper from commercial
acceptance via companies like Progeny. I'm hoping that
vendors will see us as a more viable solution for desktops
and pre-installed systems.</p>
<p>
<b>OLinux: Give us some predictions about the growth of the
GNU/Linux operating system for the next 2, 5 and 10
years.</b>
</p>
<p>
<b>Ben Collins:</b>
That's hard to predict. Unfortunately, as free as it may be,
GNU/Linux is directly affected by the economy. The current
trend of Internet companies starting to fail, will likely
scare away of a lot of the venture capital that has flooded
Linux in the past years. Hopefully this will be a good thing,
and the Linux companies will have to start working to make
their money, and not ride the wave of hype. I would guess
that over the next 2 years, Linux's hype will settle down,
and people will start taking it more seriously (not just
those in-the-know).</p>
<p>In 5 years, I suspect that GNU/Linux will be as common as
MacOS, Solaris and Windows in the home. In 10 years, who
knows. That's like an eternity to the technical world, so
Linux may be obsolete by then.</p>
<p>
<b>OLinux: What are the improvements that GNU/Linux needs
to be more deployed in by the corporate market?</b>
</p>
<p>
<b>Ben Collins:</b>
An accepted, easy to use interface. KDE and GNOME are working
toward this with great strides. But even with a good
interface, getting accepted and being "common" take far
longer than a development cycle.</p>
<p>
<b>OLinux: Debian is definitely the best Linux distro, but
its hardware configuration interface and its installer are
not so friendly. Is the Debian Project going to focus on a
best interaction with the final user or it still a
distribution for the systems administrators only?</b>
</p>
<p>
<b>Ben Collins:</b>
Yes, the debian-installer group is working very hard on this.
We do not want to remain a niche distribution only used by
administrators and hard-core hackers.</p>
<!-- *** BEGIN bio *** -->
<SPACER TYPE="vertical" SIZE="30">
<P>
<H4><IMG ALIGN=BOTTOM ALT="" SRC="../gx/note.gif">Fernando Ribeiro Corr&eci;a</H4>
I am a computer analyst just about to finish my
graduation at Federal University of Rio de Janeiro. Now, I have built
with my staff the best
<A HREF="http://www.olinux.com.br">Linux portal</A> in Brazil and have further
plans to improve services and content for our Internet users.
<SPACER TYPE="vertical" SIZE="30">
<P>
<H4><IMG ALIGN=BOTTOM ALT="" SRC="../gx/note.gif">Marcos Martins Manhães</H4>
I'm a journalist graduated from UFRJ (Federal
University of Rio de Janeiro). I'm 25 years old and have been working at
OLinux for one year. I began studying mecanical engeneering, but I gave
up during the second year. I've spent one year in Rockville (went to
Montgomery College), Maryland, and traveled a lot around the USA (that
was a great time).
<!-- *** END bio *** -->
<!-- *** BEGIN copyright *** -->
<P> <hr> <!-- P -->
<H5 ALIGN=center>
Copyright © 2001, Fernando Ribeiro Corrêa & Marcos Martins Manhães.<BR>
Copying license <A HREF="../copying.html">http://www.linuxgazette.com/copying.html</A><BR>
Published in Issue 66 of <i>Linux Gazette</i>, May 2001</H5>
<!-- *** END copyright *** -->
<H4 ALIGN="center">
"Linux Gazette...<I>making Linux just a little more fun!</I>"
</H4>
<P> <HR> <P>
<!--===================================================================-->
<center>
<H1><font color="maroon">Converting Linux HOWTOs into Book Format</font></H1>
<H4>By <a href="mailto:articles@gnujobs.com">Mark Nielsen</a></H4>
</center>
<P> <HR> <P>
<!-- END header -->
<ol>
<li>
<a href="#Introduction">Introduction</a></li>
<li><a href="#perl">Perl script to convert the Postscript files</a></li>
<li>
<a href="#Conclusion">Conclusion</a></li>
<li>
<a href="#REF">References</a></li>
</ol>
<h3>
<a NAME="Introduction"></a>Introduction</h3>
I wanted to print out Linux HOWTOs into book format. However, I am not fond
of manually converting the HOWTOs. Instead, since all the HOWTOs are available
in Postscript format, I figured out that I could download the Postscript
files on a regular basis and use various tools to convert the Postscript
files into book formatted Postscript and PDF files. I accomplished this
with a relatively small Perl script using a variety of Unix tools. I plan on
have a cron job run at least once a week to update the books.
<a NAME="perl"></a>
<h3>Perl script to convert the Postscript files
</h3>
The Perl script is in this section, and you can
also <a href="misc/nielsen/HOWTO_Books.pl.txt">get the Perl script here</a>.
<pre>
#!/usr/bin/perl
# ftp://ftp.tardis.ed.ac.uk/users/ajcd/psutils.tar.gz
# http://www.dcs.ed.ac.uk/home/ajcd/psutils/
# cp Makefile.unix Makefile
# ln -s /usr/bin/perl /usr/local/bin/perl
# mkdir -p /usr/local/share/man/man1
# /usr/local/bin/psbook
#system ("lynx --source ftp://ftp.tardis.ed.ac.uk/users/ajcd/psutils.tar.gz > /tmp/psutils.tar.gz)";
# system ("cd /tmp; tar -zxvf psutils.tar.gz; cd psutils; cp Makefile.unix Makefile");
# system ("ln -s /usr/bin/perl /usr/local/bin/perl; mkdir -p /usr/local/share/man/man1");
# system ("cd /tmp/psutils; make; make install; ln -s /usr/local/bin/psutils /usr/bin/psutils");
# Ignore the lines above, unless you don't have psutils.
# I keep the lines above just so I remember how I installed psutils.
my $TempFile1 = "/tmp/HOWTO_Convert_1.ps";
my $TempFile2 = "/tmp/HOWTO_Convert_1.pdf";
my $SourceDir = "/root/HOWTO";
my $Destination = "/root/HOWTO_Books";
my $ZippedPDF = "/root/HOWTO_books_pdf.tgz";
my $ZippedPS = "/root/HOWTO_books_ps.tgz";
if (!(-d $Destination)) {system "mkdir $Destination";}
print "Downloading HOWTOs from http://www.ibiblio.org/pub/Linux/docs/HOWTO/other-formats/ps/Linux-ps-HOWTOs.tar.gz\n";
system ("lynx --source http://www.ibiblio.org/pub/Linux/docs/HOWTO/other-formats/ps/Linux-ps-HOWTOs.tar.gz > $SourceDir/Linux-ps-HOWTOs.tar.gz");
system ("cd $SourceDir; tar -zxvf Linux-ps-HOWTOs.tar.gz");
my @Files = <$SourceDir/*.ps.gz>;
foreach my $File (@Files)
{
my $command="gunzip -c $File | /usr/bin/psbook -s4 | mpage -2 > $TempFile1";
print "Executing psbook and mpage on $File\n$command\n";
system ($command);
$command = "ps2pdf $TempFile1 $TempFile2";
print "Executing ps2pdf\n$command\n";
system ($command);
my (@Temp) = split(/\//,$File);
my $NamePDF = pop @Temp;
my $NamePS = $NamePDF;
$NamePDF =~ s/\.ps\.gz$/\.pdf/;
$NamePS =~ s/\.ps\.gz$/\.ps/;
my $NewPS = "$Destination/$NamePS";
my $NewPDF = "$Destination/$NamePDF";
system ("mv $TempFile2 $NewPDF");
print "Created the book-formatted HOWTO, $NewPDF\n";
system ("mv $TempFile1 $NewPS");
print "Created the book-formatted HOWTO, $NewPS\n";
}
print "Creating zip files $ZippedPDF and $ZippedPS\n";
system ("tar -zcvf $ZippedPDF $Destination/*.pdf");
system ("tar -zcvf $ZippedPS $Destination/*.ps");
</pre>
<h3>
<a NAME="Conclusion"></a>Conclusion</h3>
This is just a simple Perl script I use to download and convert the
Postscript HOWTOs. My future goals involve:
<ol>
<li> using LWP in Perl instead of Lynx. Simple enough.
<li> converting the entire Perl script into Python.
<li> better error checking if the files don't get downloaded or if the
conversion doesn't work.
<li> creating objects accepting text, TeX, Postscript, PDF, or other formats
that can be converted into Postscript fairly easily and then into book format.
</ol>
For now, my simple Perl script works out just fine. I am interested in
converting other documents for people provided that the documentation falls
under some form of free documentation, like
<a href="http://www.gnu.org/philosophy/license-list.html#DocumentationLicenses">
Licenses For Documentation</a> located at www.gnu.org.
<h3>
<a NAME="REF"></a>References</h3>
<ol>
<li>10/2000 <a href="http://www.gnujobs.com/Articles/8/Book_Binding-3.html">Micro Publishing: Part 3 , by Mark Nielsen
</a>.
<li> 7-1-2000
<a href="http://genericbooks.com/Articles/5/Book_Binding-2.html">
Micro Publishing, part II (Mark's Update)</a>
<li> 12-1999 -- <a
href="http://genericbooks.com/Literature/Articles/1/Book_Binding-1.html">
Micro Publishing</a>.
<li>
If this article
changes, it will be available here
<a href="http://www.gnujobs.com/Articles/18/HOWTO_Books.html">
http://www.gnujobs.com/Articles/18/HOWTO_Books.html</a></li>
</ol>
<p>
<i> Mark works as an independent consultant donating time to causes like
GNUJobs.com, writing articles, writing free software, and working
as a volunteer at <a href="http://www.eastmont.net">eastmont.net</a>.</i>
<!-- *** BEGIN bio *** -->
<SPACER TYPE="vertical" SIZE="30">
<p>
<h4><img align=bottom alt="" src="../gx/note.gif">Mark Nielsen</h4>
Mark works at ZING
(<A HREF="http://www.genericbooks.com">www.genericbooks.com</A>) and
<A HREF="http://GNUJobs.com">GNUJobs.com</A>. Previously,
Mark founded <A HREF="http://www.gnujobs.com">The Computer Underground</A>.
Mark works on non-profit and volunteer projects which promote free literature
and software. To make a living, he recruits people for GNU related jobs and
also provides solutions for web/database problems using Linux, FreeBSD, Apache,
Zope, Perl, Python, and PostgreSQL.
<!-- *** END bio *** -->
<!-- *** BEGIN copyright *** -->
<P> <hr> <!-- P -->
<H5 ALIGN=center>
Copyright © 2001, Mark Nielsen.<BR>
Copying license <A HREF="../copying.html">http://www.linuxgazette.com/copying.html</A><BR>
Published in Issue 66 of <i>Linux Gazette</i>, May 2001</H5>
<!-- *** END copyright *** -->
<H4 ALIGN="center">
"Linux Gazette...<I>making Linux just a little more fun!</I>"
</H4>
<P> <HR> <P>
<!--===================================================================-->
<center>
<H1><font color="maroon">Configuring GDM 2.2</font></H1>
<H4>By <a href="mailto:articles@gnujobs.com">Mark Nielsen</a></H4>
</center>
<P> <HR> <P>
<!-- END header -->
<ol>
<li>
<a href="#Introduction">Introduction</a></li>
<li><a href="#install">Downloading and installing GDM.</a></li>
<li><a href="#config">Configuring GDM</a></li>
<li><a href="#Conclusion">Conclusion</a></li>
<li><a href="#REF">References</a></li>
</ol>
<h3>
<a NAME="Introduction"></a>Introduction</h3>
GDM or GNOME Display Manager, is a nice GUI login screen which makes it nice
and pretty to login to X-windows. It it much nicer for non-linux people to have
a GUI interface to login to rather than a console.
<p>
One thing that bothered me with some of the older versions of GDM was the
fact that I couldn't place the login window anywhere I wanted on the
screen. With the latest version, it as very easy. Also, I couldn't figure
out how to make logos of people in the login window, and now I figured
that out. The latest version of GDM is really nice and I have figured out
how to configure it the way I wanted it to be configured, so I finally
decided to write this article.
<h3><a name="install">Downloading and installing GDM.</h3>
I could have downloaded an RPM from somewhere, but instead I decided to
compile it manually. I was testing it on a RH 6.2 system. As soon as I can
get the 7.1 version of RH (as the 7.0 wasn't worth the trouble), I will
test it on it as well, and Debian of course.
<p>
The danger of not using RPMs to install GDM, is the fact that I am installing
a newer version of GDM on top of a GDM version which was installed by RPMs.
This could cause problems if I decided to use an RPM in the future. I found
an RPM version at
<a href="ftp://ftp.gnome.org/pub/GNOME/stable/latest/redhat/i386/Base/gdm-2.2.0-1.i386.rpm">
ftp://ftp.gnome.org/pub/GNOME/stable/latest/redhat/i386/Base/gdm-2.2.0-1.i386.rpm</a>
in case you don't want to install it manually.
<p>
Initial Steps
<ol>
<li> Downloaded GDM from <a href="ftp://ftp.gnome.org/pub/GNOME/stable/latest/sources/gdm-2.2.0.tar.gz">
ftp://ftp.gnome.org/pub/GNOME/stable/latest/sources/gdm-2.2.0.tar.gz</a>
<li> tar -zxvf gdm-2.2.0.tar.gz
<li> cd gdm-2.2.0
<li> ./configure --prefix=/usr
<li> make
<li> make install
</ol>
After fooling around a bit, I found out that /etc/X11/gdm wasn't being
used for the configuration files, so I linked /etc/X11/gdm to the place
that gdm was looking. I probably could have recompiled gdm to fix this problem,
but I am being lazy. Also, one directory was missing, so I created it.
<p>
Three additional Steps
<ol>
<li>mv /usr/etc/gdm /usr/etc/gdm_new
<li>ln -s /etc/X11/gdm /usr/etc/gdm
<li>mkdir /usr/share/faces/
</ol>
Again, I emphasize the fact that you should probably use the rpm and
not bother installing it manually.
<h3>
<a NAME="config"></a>Configuring GDM</h3>
The goals I had were,
<ol>
<li> Be able to place the login screen anywhere I wanted.
<li> Be able to play a game before someone has to login.
<li> Be able to put images in the background just for fun.
<li> Be able to put a clock on the background.
<li> Be able to put pictures or logos of people on the browser part of GDM.
</ol>
I had to change some of the settings in the file gdm.conf. My changes
were
<pre>
Browser=true
SetPosition=true
PositionX=100
PositionY=100
Exclude=bin,daemon,adm,lp,sync,shutdown,halt,mail,news,uucp,operator,nobody,gdm,postgres,pvm,otherlogin
GlobalFaceDir=/usr/share/faces/
</pre>
Also, here was my Init/Default script,
<pre>
#!/bin/sh
/usr/X11R6/bin/xsetroot -solid "#363047"
xsri -geometry +5+5 /etc/X11/xdm/Logo2.png
xsri -geometry +400+5 /home/mark/public_html/wedding/wed2.jpg
xsri -geometry +700+500 /home/mark/public_html/wedding/walk.jpg
xsri -geometry +200+500 /home/mark/public_html/wedding/kiss.jpg
xsri -geometry +5+175 /home/mark/public_html/kiss.gif
xsri -geometry +5+500 /usr/local/apache_gnujobs/htdocs/images/zing.png
xeyes -geometry +825+5 &
xclock -digital -geometry +825+125 -update 1 &
xtriangles -geometry +800+300 &
</pre>
In order to get logos or pictures of people on the GDM screen, I had to
make the name of the image exactly the name of username and put it in
/usr/share/faces/. To test this, I took my logo for ZING and copied it
to
"/usr/share/faces/root" like
<pre>
cp /usr/local/apache_gnujobs/htdocs/images/zing.png /usr/share/faces/root
</pre>
Notice that there is no extension.
<h3>
<a NAME="Conclusion"></a>Conclusion</h3>
Everything worked perfectly once I followed these steps. Using the rpm
might have been easier, but oh well. I will try that out next time. I
highly recommend to back up any gdm configuration files before installing
any new RPMs (though the RPMs should back them up for you). I don't really
see any other features that I would need. Some miscellaneous features, like maybe
a ticker tape, downloading the weather, or other games besides triangles
would be cool. I imagine it is possible, but it isn't necessary for me.
It also might be a security risk to let people play games before they
have to login, in case they figure out some way to break out to a shell,
so I wouldn't advise putting games into GDM on public computers.
<p>
I would have liked to compare KDM with GDM, but I wasn't able to easily
find a recent web page for KDM. I am also waiting until I install the latest
version of KDE before I mess around with KDM anyways.
<h3>
<a NAME="REF"></a>References</h3>
<ol>
<li><a href="http://www.socsci.auc.dk/~mkp/gdm/">Gnome Display Manager</a>
<li> 6-24-1999 <a href="../issue43/nielsen.xdm.html">Setting up XDM</a>.
<li>
If this article
changes, it will be available here
<a href="http://www.gnujobs.com/Articles/19/GDM.html">
http://www.gnujobs.com/Articles/19/GDM.html</a></li>
</ol>
<p>
<i> Mark works as an independent consultant donating time to causes like
GNUJobs.com, writing articles, writing free software, and working
as a volunteer at <a href="http://www.eastmont.net">eastmont.net</a>.</i>
<!-- *** BEGIN bio *** -->
<SPACER TYPE="vertical" SIZE="30">
<p>
<h4><img align=bottom alt="" src="../gx/note.gif">Mark Nielsen</h4>
Mark works at ZING
(<A HREF="http://www.genericbooks.com">www.genericbooks.com</A>) and
<A HREF="http://GNUJobs.com">GNUJobs.com</A>. Previously,
Mark founded <A HREF="http://www.gnujobs.com">The Computer Underground</A>.
Mark works on non-profit and volunteer projects which promote free literature
and software. To make a living, he recruits people for GNU related jobs and
also provides solutions for web/database problems using Linux, FreeBSD, Apache,
Zope, Perl, Python, and PostgreSQL.
<!-- *** END bio *** -->
<!-- *** BEGIN copyright *** -->
<P> <hr> <!-- P -->
<H5 ALIGN=center>
Copyright © 2001, Mark Nielsen.<BR>
Copying license <A HREF="../copying.html">http://www.linuxgazette.com/copying.html</A><BR>
Published in Issue 66 of <i>Linux Gazette</i>, May 2001</H5>
<!-- *** END copyright *** -->
<h4 align=center style='text-align:center'><!--endcut ============================================================-->"Linux
Gazette...<i>making Linux just a little more fun!</i>" </h4>
<div class=MsoNormal align=center style='text-align:center'>
<hr size=2 width="100%" align=center>
</div>
<h1 align=center style='text-align:center'><span style='color:maroon'><!--===================================================================-->CVS:
Client-Server Version Control</span></h1>
<h4 align=center style='text-align:center'>By <a
href="mailto:kapil@linux4biz.net">Kapil Sharma</a></h4>
<div class=MsoNormal align=center style='text-align:center'>
<hr size=2 width="100%" align=center>
</div>
<span style='font-size:12.0pt;font-family:"Times New Roman";mso-fareast-font-family:
"Times New Roman";color:black;mso-ansi-language:EN-GB;mso-fareast-language:
EN-US;mso-bidi-language:AR-SA'>
<ol start=1 type=1>
<li class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;
mso-list:l0 level1 lfo1;tab-stops:list 36.0pt'><a href="#one"><!-- END header -->Overview</a>
</li>
<li class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;
mso-list:l0 level1 lfo1;tab-stops:list 36.0pt'><a href="#two">Getting CVS</a>
</li>
<li class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;
mso-list:l0 level1 lfo1;tab-stops:list 36.0pt'><a href="#three">The
repository</a> </li>
<li class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;
mso-list:l0 level1 lfo1;tab-stops:list 36.0pt'><a href="#four">Multiple
Developers</a> </li>
<li class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;
mso-list:l0 level1 lfo1;tab-stops:list 36.0pt'><a href="#five">Rolling
back to previous version</a> </li>
<li class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;
mso-list:l0 level1 lfo1;tab-stops:list 36.0pt'><a href="#six">Some common
CVS commands</a> </li>
<li class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;
mso-list:l0 level1 lfo1;tab-stops:list 36.0pt'><a href="#seven">Other
tools and add-ons to CVS</a> </li>
<li class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;
mso-list:l0 level1 lfo1;tab-stops:list 36.0pt'><a href="#more">More
information</a> </li>
</ol>
</span>
<h2><a name=one></a>Overview</h2>
<p>CVS is a version control system. Using it, you can record the history of
your source files. CVS helps if you are part of a group of people working on
the same project, sharing the same code. Several developers can work on the
same project remotely using CVS's client-server model in which the code exists
on a central server and each programmer get the source on his local machine
from the CVS server (checkout) and save it back on the CVS server (checkin)
after development. Each time a programmer checks in his new code into the CVS
server, the difference is saved as a new version rather than overwriting the previous
version. This allows the server to recreate any previous version upon request,
although by default it distributes the latest version.</p>
<p>This article explains how to use CVS in client-server mode and get the most
out of it.</p>
<h2><a name=two></a>Getting CVS</h2>
<p>You can find CVS in your Linux distribution or get the source from <a
href="http://www.cvshome.org/downloads.html">http://www.cvshome.org/downloads.html</a></p>
<p class=MsoNormal>The home page for CVS is <a href="http://www.cvshome.org">http://www.cvshome.org</a>.
</p>
<h2><a name=three></a>The repository</h2>
<p>The CVS repository stores a complete copy of all the files and directories
which are under version control. Normally, you never access any of the files in
the repository directly. Instead, you use CVS commands to get your own copy of
the files into a working directory, and then work on that copy. When you've
finished a set of changes, you check (or commit) them back into the repository.
The repository then contains the changes which you have made, as well as
recording exactly what you changed, when you changed it, and other such
information. </p>
<p><b>Creating a Repository</b> <br>
To create a repository, run the CVS init command. It will set up an empty
repository in the CVS root specified in the usual way . </p>
<pre><![if !supportEmptyParas]> <![endif]><o:p></o:p></pre><pre>cvs -d /usr/local/cvsroot init</pre>
<p class=MsoNormal>Here /usr/local/cvsroot will become the repository. </p>
<p><b>CVSROOT environment variable</b> </p>
<p>Set the CVSROOT environment variable in your shell startup script. For
instance, in ~/.bashrc: </p>
<pre><![if !supportEmptyParas]> <![endif]><o:p></o:p></pre><pre>$ export CVSROOT=:pserver:username@foo.com:/usr/local/cvsroot </pre>
<p><b>Backing up the Repository</b> <br>
There are a few issues to consider when backing up the repository: </p>
<ul type=disc>
<li class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;
mso-list:l1 level1 lfo2;tab-stops:list 36.0pt'>One should either not use
CVS during the backup, or have the backup program lock CVS while doing the
backup. </li>
<li class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;
mso-list:l1 level1 lfo2;tab-stops:list 36.0pt'>To lock CVS, you would
create `#cvs.rfl' lock files in each repository directory. </li>
</ul>
<p><b>Remote Repositories</b> <br>
Your working copy of the sources can be on a different machine than the
repository. Using CVS in this manner is known as client/server operation. </p>
<p>Setting up the server: <br>
Put the following entry in /etc/inted.conf on server: </p>
<pre><![if !supportEmptyParas]> <![endif]><o:p></o:p></pre><pre>2401 stream tcp nowait root /usr/local/bin/cvs cvs -f --allow-root=/usr/cvsroot pserver</pre>
<p>If your inetd wants a symbolic service name instead of a raw port number,
then put this in `/etc/services': </p>
<pre><![if !supportEmptyParas]> <![endif]><o:p></o:p></pre><pre>cvspserver<span style="mso-spacerun: yes"> </span>2401/tcp</pre>
<p class=MsoNormal><br>
and put cvspserver instead of 2401 in `inetd.conf'. <br>
After making you changes, send a HUP signal to inetd. </p>
<p><b>Password authentication for remote repository</b> <br>
For remote password authentication put a file `$CVSROOT/CVSROOT/passwd' . The
file will look like: </p>
<pre><![if !supportEmptyParas]> <![endif]><o:p></o:p></pre><pre>anonymous:</pre><pre>kapil:1sOp854gDF3DY</pre><pre>melissa:tGX1fS8sun6rY:pubcvs</pre>
<p>The password is in Unix encrypted form. The first line in the example will
grant access to any CVS client attempting to authenticate as user anonymous, no
matter what password they use. The second and third lines will grant access to
kapil if he supplies his respective plaintext passwords. </p>
<p>The third will grant access to melissa if she supplies the correct password,
but her CVS operations will actually run on the server side under the system
user pubcvs. </p>
<p><i>Note: CVS can be configured not to check the UNIX real passwd file i.e
/etc/passwd for CVS authentication by setting SystemAuth=no in the CVS `config'
file ($CVSROOT/CVSROOT/config).</i> </p>
<p><b>Using the client with password authentication</b> </p>
<p>You have to login to CVS server for the first time: </p>
<pre><![if !supportEmptyParas]> <![endif]><o:p></o:p></pre><pre><span style="mso-spacerun: yes"> </span>cvs -d :pserver:kapil@foo.com:/usr/local/cvsroot login</pre>
<p>The you can use all the commands of CVS on the remote machine: </p>
<pre><![if !supportEmptyParas]> <![endif]><o:p></o:p></pre><pre><span style="mso-spacerun: yes"> </span>cvs -d :pserver:kapil@foo.com:/usr/local/cvsroot checkout someproj</pre>
<p><b>Read only repository access</b> <br>
It is possible to grant read-only repository access to people using the
password-authenticated server. There are two ways to specify read-only access
for a user: by inclusion, and by exclusion. <br>
"Inclusion" means listing the user in the `$CVSROOT/CVSROOT/readers'
file, which is simply a newline-separated list of users. Here is a sample
`readers' file: </p>
<pre><![if !supportEmptyParas]> <![endif]><o:p></o:p></pre><pre>kapil</pre><pre>yogesh</pre><pre>john</pre>
<p>(Don't forget the newline after the last user.) </p>
<p>"Exclusion" means listing everyone who should have write access.
If the file $CVSROOT/CVSROOT/writers exists, then only those
users listed in it will have write access, and everyone else will have
read-only access. The `writers' file has the same format as the `readers' file.
</p>
<p><b>Setting up the files in repository</b> <br>
If the files you want to install in CVS reside in `someproj', and you want them
to appear in the repository as `$CVSROOT/someproj', you can do this: </p>
<pre><![if !supportEmptyParas]> <![endif]><o:p></o:p></pre><pre>$ cd someproj</pre><pre>$ cvs import -m "Imported sources" someproj vendor </pre><pre><span style="mso-spacerun: yes"> </span>rel1-1</pre>
<p class=MsoNormal>Here The string `vendor' is a vendor tag, and `rel1-1' is a
release tag. </p>
<p><b>CVS locks in repository</b> <br>
Any file in the repository with a name starting with `#cvs.rfl.' is a read
lock. Any file in the repository with a name starting with `#cvs.wfl' is a
write lock. The directory `#cvs.lock' serves as a master lock. That means one
must obtain this lock first before creating any of the other locks. </p>
<p>To obtain a read lock, first create the `#cvs.lock' directory. If it fails
because the directory already existed, wait for a while and try again. After
obtaining the `#cvs.lock' lock, create a file whose name is `#cvs.rfl.'
followed by information of your choice (for example, hostname and process
identification number). Then remove the `#cvs.lock' directory to release the
master lock. Then proceed with reading the repository. When you are done,
remove the `#cvs.rfl' file to release the read lock. </p>
<p>To obtain a write lock, first create the `#cvs.lock' directory, as with a
read lock. Then check that there are no files whose names start with
`#cvs.rfl.'. If there are, remove `#cvs.lock', wait for a while, and try again.
If there are no readers, then create a file whose name is `#cvs.wfl' followed
by information of your choice (for example, hostname and process identification
number). Hang on to the `#cvs.lock' lock. Proceed with writing the repository.
When you are done, first remove the `#cvs.wfl' file and then the `#cvs.lock'
directory. </p>
<p><b>Symbolic revisions using tags in CVS<br>
</b>The release number of final software releases are different from revisions
in CVS. The revision numbers might change for several times between two
releases.You can use the tag command to give a symbolic name to a certain
revision of a file. </p>
<p>Change to the working directory and issue the following command for tagging:
</p>
<pre><![if !supportEmptyParas]> <![endif]><o:p></o:p></pre><pre>$ cvs tag rel1-1 file.c</pre>
<p class=MsoNormal>This command will tag the file "file.c" as release
1.1 </p>
<pre><![if !supportEmptyParas]> <![endif]><o:p></o:p></pre><pre>$ cvs tag rel1-1 .</pre>
<p class=MsoNormal>This command will tag all the files under current directory
recursively as revision 1.1</p>
<p>You can use the `-v' flag to the status command to see all tags that a file
has, and which revision numbers they represent by issuing the following
command:</p>
<pre><![if !supportEmptyParas]> <![endif]><o:p></o:p></pre><pre>$ cvs status -v file.c</pre>
<p>Now you can checkout any revision of a module by using the following
command: </p>
<pre><![if !supportEmptyParas]> <![endif]><o:p></o:p></pre><pre>$ cvs checkout -r rel1-1 module1</pre>
<p class=MsoNormal>here "module1" is the name of the module. The -r
flag with checkout option makes it easy to retrieve the sources that make up
revision 1.1 of the module `module1' at any time in the future.</p>
<h2><a name=four></a>Multiple Developers</h2>
<p><b>File status</b> <br>
The cvs status command gives a status about the states of the files. You can
get a status of the file by: </p>
<pre><![if !supportEmptyParas]> <![endif]><o:p></o:p></pre><pre>$ cvs status [options] files</pre>
<p><b>Bringing a file up to date</b> <br>
When you want to update or merge a file, use the update command. This brings
into your working copy the changes others have recently committed. Your
modifications to a file are never lost when you use update. If no newer
revision exists, running update has no effect. If you have edited the file, and
a newer revision is available, CVS will merge all changes into your working
copy. </p>
<p><b>Resolving Conflicts</b> </p>
<p>If two people simultaneously make changes to different parts of the same
file, CVS is smart enough to merge the changes itself. But if two people make
changes to the <em>same</em> part of a file, CVS cannot tell what the final
result is supposed to be, so it gives up and wines, "Conflict!"
Conflicts arise when one developer commits a change and a second developer,
without running cvs update to receive the first developer's change, tries to
commit his own incompatible change. Resolving changes can take hours or even
days. In this section, I will explain how to resolve source conflicts. </p>
<p>When you enter the cvs commit command to automatically upload all the files
you have changed or added to a project, the CVS repository server may inform
you that your locally-edited files are not up-to-date with the server or that
you need to manually merge one or more files with newer versions that have
already been uploaded to the repository by some other developer. Here's a
typical warning message that occurred during a CVS commit process: </p>
<pre><![if !supportEmptyParas]> <![endif]><o:p></o:p></pre><pre>$ cvs commit</pre><pre>cvs commit: Examining .</pre><pre>cvs commit: Up-to-date check failed for `andy.htm' </pre><pre>cvs commit: Up-to-date check failed for `sample.htm' </pre><pre>cvs commit: Up-to-date check failed for `index.htm' </pre><pre>...</pre><pre>cvs [commit aborted]: correct above errors first!</pre>
<p>You can use the cvs update command to update your local project copy with
the latest changes in the cvs repository. To update your entire working copy of
the site, open a command prompt, change to the directory containing the project
you're developing, and issue the command: </p>
<pre><![if !supportEmptyParas]> <![endif]><o:p></o:p></pre><pre>$ cvs update</pre>
<p class=MsoNormal>This will update and automatically merge every file that has
changed since you last copied over new files from the CVS repository.
Line-by-line updates to individual text files (such as HTML files) can often be
handled automatically. CVS will list for you any files that require your
attention for manual editing and merging. </p>
<p>Automatic merge example: <br>
You are editing some project file called "index.html" locally and
when you try to commit that file to CVS repository then CVS will give you the
following error: </p>
<pre><![if !supportEmptyParas]> <![endif]><o:p></o:p></pre><pre>$ cvs commit index.html</pre><pre><span style="mso-spacerun: yes"> </span>cvs commit: Up-to-date check failed for `index.html' </pre><pre><span style="mso-spacerun: yes"> </span>cvs [commit aborted]: correct above errors first!</pre>
<p class=MsoNormal>This happens because there is a newer version of the same
file on the CVS repository. You should use cvs update command to get the latest
version from the CVS repository onto your local machine: </p>
<pre><![if !supportEmptyParas]> <![endif]><o:p></o:p></pre><pre>$ cvs update index.html</pre><pre>RCS file: /usr/local/cvsroot/index.html,v</pre><pre>retrieving revision 1.4</pre><pre>retrieving revision 1.5</pre><pre>Merging differences between 1.4 and 1.5 into index.html </pre><pre>M index.htm</pre>
<p class=MsoNormal>After the automatic merge process you should check the
merged copy to check if it is working properly. When you are satisfied with the
local copy of "index.html" file then you can commit it to CVS: </p>
<pre><![if !supportEmptyParas]> <![endif]><o:p></o:p></pre><pre>$ cvs commit index.htm</pre><pre>Checking in index.htm;</pre><pre>/usr/local/cvsroot/index.htm,v <-- index.htm</pre><pre>new revision: 1.6; previous revision: 1.5 </pre><pre>done</pre>
<p>Manual merge example: <br>
In some cases, your recent work on a file might be so different that the CVS
needs your manual intervention in order to integrate everyone's work and put it
back into the site repository. </p>
<pre><![if !supportEmptyParas]> <![endif]><o:p></o:p></pre><pre>$ cvs commit index.html cvs commit: Up-to-date check failed for</pre><pre><span style="mso-spacerun: yes"> </span>`index.html' cvs [commit aborted]: correct above errors first!</pre>
<p>Use the cvs update command to bring your local copy of the site up to date: </p>
<pre><![if !supportEmptyParas]> <![endif]><o:p></o:p></pre><pre>$ cvs update</pre><pre>cvs update: Updating .</pre><pre>RCS file: /usr/local/cvsroot/index.html,v</pre><pre>retrieving revision 1.5</pre><pre>retrieving revision 1.6</pre><pre>Merging differences between 1.5 and 1.6 into index.htm</pre><pre>rcsmerge: warning: conflicts during merge</pre><pre>cvs update: conflicts found in activity.htm</pre><pre>C index.htm</pre>
<p>This time CVS was unable to merge the files automatically, so it created a
special copy of the conflicting file in place of the original index.html. The
file has marker lines to indicate the beginning and end of conflictiong
region(s); e.g., </p>
<pre><![if !supportEmptyParas]> <![endif]><o:p></o:p></pre><pre><span style="mso-spacerun: yes"> </span><<<<<<<< filename</pre>
<p class=MsoNormal>To resolve the conflict, simply edit the index.html file and
replace the text between the markers and test the result until it works. You
should also delete the markers </p>
<pre><![if !supportEmptyParas]> <![endif]><o:p></o:p></pre><pre><<<<<<<<========>>>>>>>> </pre>
<p class=MsoNormal>from the file. When you have finished correcting the file
and have tested it, use the cvs commit command to put your latest copy of file
into the repository: </p>
<pre><![if !supportEmptyParas]> <![endif]><o:p></o:p></pre><pre>$ cvs commit</pre><pre>Checking in index.html;</pre><pre>/usr/local/cvsroot/index.html,v <-- index.html</pre><pre>new revision: 1.7; previous revision: 1.6 </pre><pre>done</pre>
<p><b>Watches (CVS communication)</b> <br>
CVS can function as a communication device as well as a record-keeper. A
"watches" feature provides multiple developers working on the same
project with a way to notify each other about who is working on what files at a
given time. By "setting a watch" on a file/directory , a developer
can have CVS notify her if anyone else starts to work on that file by means of
sending e-mail or some other method. </p>
<p>To use watches you have to edit two files in the repository administrative
area. You have to edit the "$CVSROOT/CVSROOT/notify" file (which
tells CVS how notifications are to be performed) and
"$CVSROOT/CVSROOT/users" file(which supplies external e-mail
addresses). The best way to modify administrative files is to checkout one copy
from the repository ,edit them and then check in to repository . </p>
<p>To specify e-mail notification, first uncomment the following line from
"$CVSROOT/CVSROOT/notify" file: </p>
<pre><![if !supportEmptyParas]> <![endif]><o:p></o:p></pre><pre>ALL mail %s -s "CVS notification"</pre>
<p class=MsoNormal>This command causes notifications to be sent as e-mail with
the subject line "CVS notification". </p>
<p>Then you have to create/edit the file "$CVSROOT/CVSROOT/users" .
The format of each line in the users file is: CVS_USERNAME:EMAIL_ADDRESS. For
example: </p>
<pre><![if !supportEmptyParas]> <![endif]><o:p></o:p></pre><pre>kapil:kapil@linux4biz.net</pre>
<p>The CVS username at the beginning of the line corresponds to a CVS username
in CVSROOT/password, or the server-side system username of the person running
CVS. Following the colon is an external e-mail address to which CVS should send
watch notifications for that user. </p>
<p><b>E-mail notification with logfile</b> <br>
CVS provides a feature of sending automated e-mail to everyone working on a
project with a log message whenever a commit takes place. The program to
do the mailing - contrib/log.pl in the CVS source distribution - can be
installed anywhere on your system. You can also install it into
"$CVSROOT/CVSROOT". You should change the following line in log.pl : </p>
<pre><![if !supportEmptyParas]> <![endif]><o:p></o:p></pre><pre>$mailcmd = "| Mail -s 'CVS update: $modulepath'"; </pre>
<p>Once you've setup the log.pl , you can put lines similar to these into your “loginfo”
file. The <tt><span style='font-size:10.0pt;font-family:"Arial Unicode MS"'>`loginfo'</span></tt>
file is used to control where <samp><span style='font-family:"Arial Unicode MS"'>`cvs
commit'</span></samp> log information is sent. You can find it in "$CVSROOT/CVSROOT".</p>
<pre><![if !supportEmptyParas]> <![endif]><o:p></o:p></pre><pre>projectteam1 CVSROOT/log.pl %s -f CVSROOT/commitlog -m projectteam1@linux4biz.net</pre><pre>projectteam2 CVSROOT/log.pl %s -f CVSROOT/commitlog -m projectteam2@linux4biz.net</pre>
<p>The %s expands to the names of the files being committed; the -f option to
log.pl takes a file name, to which the log message will be appended (so
CVSROOT/commitlog is an ever-growing file of log messages); and the -m flag
takes an e-mail address, to which log.pl will send a message about the commit.
The address is usually a mailing list, but you can specify the -m option as <br>
many times as necessary in one log.pl command line. </p>
<p><b>Some commands related to setting up watches on files</b>: </p>
<p>If you only want to be notified about, say, commits, you can restrict
notifications by adjusting your watch with the -a flag (a for action): </p>
<pre><![if !supportEmptyParas]> <![endif]><o:p></o:p></pre><pre>$ cvs watch add -a commit hello.c</pre>
<p>Or if you want to watch edits and commits but don't care about unedits, you
could pass the -a flag twice: </p>
<pre><![if !supportEmptyParas]> <![endif]><o:p></o:p></pre><pre>$ cvs watch add -a edit -a commit hello.c</pre>
<p>Adding a watch with the -a flag will never cause any of your existing
watches to be removed. If you were watching for all three kinds of actions on
hello.c, running </p>
<pre><![if !supportEmptyParas]> <![endif]><o:p></o:p></pre><pre>$ cvs watch add -a commit hello.c</pre>
<p class=MsoNormal>has no effect - you'll still be a watcher for all three
actions. </p>
<p>To remove watches, run: </p>
<pre><![if !supportEmptyParas]> <![endif]><o:p></o:p></pre><pre>$ cvs watch remove hello.c</pre>
<p class=MsoNormal>which is similar to add in that, by default, it removes your
watches for all three actions. If you pass -a arguments, it removes only the
watches you specify: </p>
<pre><![if !supportEmptyParas]> <![endif]><o:p></o:p></pre><pre>$ cvs watch remove -a commit hello.c</pre>
<p>To find out who is watching files, run cvs watchers: </p>
<pre><![if !supportEmptyParas]> <![endif]><o:p></o:p></pre><pre>$cvs watchers</pre><pre>$cvs watchers hello.c</pre>
<p>To find out who is editing files, run cvs editors: </p>
<pre><![if !supportEmptyParas]> <![endif]><o:p></o:p></pre><pre>$cvs editors</pre><pre>$cvs editors hello.c</pre>
<p>Note: It is necessary to run "cvs edit" before editing any file to
be able to watch feature working. To make sure you do, CVS has a feature to
remind the someone to use cvs edit with the help of the watch on command:
</p>
<pre><![if !supportEmptyParas]> <![endif]><o:p></o:p></pre><pre>$ cd project</pre><pre>$ cvs watch on hello.c</pre>
<p>By running cvs watch on hello.c, kapil causes future checkouts of project to
create hello.c read-only in the working copy. When someone else tries to work
on it, he'll discover that it's read-only and be reminded to run cvs edit
first. </p>
<pre><![if !supportEmptyParas]> <![endif]><o:p></o:p></pre><pre>$cvs edit hello.c</pre>
<h2><a name=five></a>Rolling back to previous version</h2>
<p class=MsoNormal>Sometimes you need to revert back to previous version of
your project. A project under CVS version control can quickly and
conveniently revert to an earlier stage of its life. I will explain some of the
common examples: </p>
<pre><![if !supportEmptyParas]> <![endif]><o:p></o:p></pre><pre>$ cvs checkout -D '1 year ago' preproject</pre>
<p class=MsoNormal>Here preproject is the name of the project. </p>
<pre><![if !supportEmptyParas]> <![endif]><o:p></o:p></pre><pre>$ cvs checkout -r1.4 preproject</pre>
<p class=MsoNormal>1.4 is CVS's revision number for that version. <a name=six></a></p>
<h2>Some common CVS commands</h2>
<p><b>Some common terms:<br>
</b>Import:<span style="mso-spacerun: yes"> </span>This means taking an
existing directory tree and copying it into the CVS repository, creating a new
CVS project.
<br>
Commit: Apply all your changes to the CVS repository. Each changed file will
be assigned a new CVS version.<br>
Checkout: Get the working copy of files from cvs repository into the local
directory.<br>
Export: export is same as checkout. The only difference is that export does not
copy out the CVS administrative directories, so you cannot run CVS commands
in the resulting tree. On the other hand, this is how you create your "final"
copy for distribution.<br>
Upload: General term for Import or commit.<br>
Download: General term for checkout or export.<br>
Checkin: General term, same as commit.</p>
<p><b>Adding a file to the CVS repository "My_Files"</b> </p>
<pre><![if !supportEmptyParas]> <![endif]><o:p></o:p></pre><pre>$ cvs add File3.txt</pre><pre>$ cvs commit</pre>
<p class=MsoNormal>cvs add does not upload the file right away, but registers
it to be uploaded at the next commit. </p>
<pre><![if !supportEmptyParas]> <![endif]><o:p></o:p></pre>
<p>This invokes your default text editor and prompts you to enter a description
of your changes. Save the file and quit the editor. CVS will then ask you to
continue, and select the option to continue. Now you have uploaded a file to
the CVS repository "My_Files". </p>
<p><b>Changing a file to the CVS repository "My_Files"</b> </p>
<p> This can be done with cvs commit command. Let us add some content to
the file File2.txt and then commit it to the cvs repository.</p>
<pre>$ ls /var >> File2.txt</pre><pre>$ cvs commit</pre>
<p><b>Removing files</b> <br>
To remove files from a site, you run the cvs remove command on the desired
filenames in your working copy. As a ``safeguard'', cvs remove will not work if
the working copies of your files still exist.<br>
Syntax:<span style="mso-spacerun: yes"> </span>$ cvs remove [options]
files<br style='mso-special-character:line-break'>
<![if !supportLineBreakNewLine]><br style='mso-special-character:line-break'>
<![endif]></p>
<pre>$ cvs remove file.html</pre><pre>cvs server: file `file.html' still in working directory</pre><pre>cvs server: 1 file exists; remove it first</pre><pre>$</pre>
<p>To get around this, you may use the -f option with the cvs remove command or
remove the file first and then execute the cvs remove command. </p>
<pre>$ cvs remove -f oldfile.html</pre><pre>cvs server: scheduling `oldfile.html' for removal</pre><pre>cvs server: use 'cvs commit' to remove this file permanently</pre><pre>$ cvs commit</pre><pre><![if !supportEmptyParas]> <![endif]><o:p></o:p></pre><pre>Or</pre><pre>$ rm File3.txt</pre><pre>$ cvs remove File3.txt</pre><pre>$ cvs commit</pre><pre><![if !supportEmptyParas]> <![endif]><o:p></o:p></pre>
<p class=MsoNormal>This will not delete the actual file from the CVS server
yet; it simply makes a note to tell the server to remove these files the next
time you commit your working copy of the project.<br>
<span style="mso-spacerun: yes"> </span></p>
<p><b>Removing directories</b> <br>
The way that you remove a directory is to remove all the files in it. You don't
remove the directory itself: there's no way to do that. Instead you specify the
`-P' option to cvs update or cvs checkout, which will cause CVS to remove empty
directories from working directories. (Note that cvs export always removes
empty directories.) Note that `-P' is implied by the `-r' or `-D' options of
checkout. This way CVS will be able to correctly create the directory or not
depending on whether the particular version <br>
you are checking out contains any files in that directory. </p>
<p><b>Creating the directory structure from number of files in the CVS
repository</b><br>
This cvs import command is used to put several projects in cvs repository. </p>
<pre>$ cd source <br>
here source is the files that you want to put in cvs repository.<br
style='mso-special-character:line-break'>
<![if !supportLineBreakNewLine]><br style='mso-special-character:line-break'>
<![endif]></pre><pre>$ cvs import -m "Test Import" My_Files Revision1 start<br>
The string <samp><span style='font-family:"Arial Unicode MS"'>‘Revision1’</span></samp> is a <em>vendor tag</em>, and <samp><span
style='font-family:"Arial Unicode MS"'>`start'</span></samp> is a <em>release tag</em>. “My_Files” is the name of directory in cvs repository. The –m option is to put log message.</pre>
<p><b>Get the working copy of files from CVS</b> </p>
<p>Okay, now we want to download these files into a Working directory. <br>
When we checkout a package from cvs, it will create a directory for us. The
parameter "My_Files" that we specified when we uploaded the files
into cvs will be the name of <br>
the directory created for us when cvs downloads the package for us. </p>
<p>Now we need to get the cvs package. </p>
<pre><![if !supportEmptyParas]> <![endif]><o:p></o:p></pre><pre>$ cvs checkout My_Files</pre>
<p><b>Downloading updates that other people make</b> </p>
<p>If you have downloaded a package from a repository that someone else is
maintaining, if you wish to download all the changes, then execute the
following command, </p>
<pre><![if !supportEmptyParas]> <![endif]><o:p></o:p></pre><pre>$ cvs update -dP</pre>
<p>The "d" creates any directories that are or are missing. The
"P" removes any directories that were deleted from the repository. </p>
<p><b>Viewing the difference</b> <br>
You can easily see the difference between two file using cvs. </p>
<pre><![if !supportEmptyParas]> <![endif]><o:p></o:p></pre><pre>$ cd project</pre><pre>$ cvs diff index.html</pre>
<p class=MsoNormal>This command runs diff to compare the version of
`index.html' that you checked out with your working copy. Here
"project" is the name of the local project directory. </p>
<pre><![if !supportEmptyParas]> <![endif]><o:p></o:p></pre><pre>$ cvs diff -r 1.20 -r 1.21 hello.c</pre>
<p class=MsoNormal>This command will show the difference between two versions
of same file. </p>
<p><b>The annotate Command</b> <br>
With annotate, you can see who was the last person to touch each line of a
file, and at what revision they touched it. It gives you more information than
the history command: </p>
<pre><![if !supportEmptyParas]> <![endif]><o:p></o:p></pre><pre>$cvs annotate</pre>
<p>View logs </p>
<pre><![if !supportEmptyParas]> <![endif]><o:p></o:p></pre><pre>$ cvs log -r 1.21 hello.c</pre>
<p class=MsoNormal>This will show you the logs for hello.c version 1.21 <a
name=seven></a></p>
<h2>Other tools and add-ons to CVS</h2>
<p><b>Henner Zeller's CVSweb </b> <br>
It has a feature of browsing the CVS repository by web browser and even shows
the latest revision and log message for each file. It presents you with a
web-based interface to browse any and all of the sites and projects you manage
by CVS. You can get it from <a
href="http://stud.fh-heilbronn.de/~zeller/cgi/cvsweb.cgi/">http://stud.fh-heilbronn.de/~zeller/cgi/cvsweb.cgi/</a>
</p>
<p><b>Martin Cleaver's CVSweb</b> <br>
It features capabilities for file upload as well as file browsing of CVS
repository. You can get this software from <a
href="http://sourceforge.net/projects/cvswebclient/">http://sourceforge.net/projects/cvswebclient/</a>
</p>
<p><b>LinCVS</b> <br>
A CVS GUI client for Linux. It provides nice features and easy to use. You
can get it from: <a href="http://www.lincvs.org/">http://www.lincvs.org/</a> </p>
<p><b>WinCVS</b> <br>
A CVS GUI client for Windows. It has many good features and I will
recommend this software for Windows clients. You can get it from <a
href="http://www.cvsgui.org/download.html">http://www.cvsgui.org/download.html</a>
<a name=more></a></p>
<h2>More Information</h2>
<p>CVS Manual : <a href="http://www.cvshome.org/docs/manual/index.html">http://www.cvshome.org/docs/manual/cvs.html</a></p>
<p>CVS Mailing lists: <a href="http://www.cvshome.org/communication.html">http://www.cvshome.org/communication.html</a></p>
<p> <o:p></o:p></p>
<h4><!-- *** BEGIN bio *** -->
<spacer type=vertical size=30>
<img border=0 width=32 height=32 id="_x0000_i1028" src="..\gx\note.gif"
align=BOTTOM>Kapil Sharma</h4>
<p class=MsoNormal>Kapil is a Linux/Unix and Internet security consultant. He
has been working on various Linux/Unix systems and Internet Security for over
three years. He maintains a web site (<a href="http://www.linux4biz.net">http://linux4biz.net</a>)
for providing free as well as commercial support for web, Linux and Unix
solutions. <!-- *** END bio *** --><!-- *** BEGIN copyright *** --></p>
<div class=MsoNormal align=center style='text-align:center'>
<hr size=2 width="100%" align=center>
</div>
<h5 align=center style='text-align:center'><!-- P -->Copyright © 2001, Kapil
Sharma.<br>
Copying license <a href="..\copying.html">http://www.linuxgazette.com/copying.html</a><br>
Published in Issue 66 of <i>Linux Gazette</i>, May 2001<o:p></o:p></h5>
<div class=MsoNormal align=center style='text-align:center'>
<hr size=2 width="100%" align=center>
</div>
<!-- *** END copyright *** -->
<H4 ALIGN="center">
"Linux Gazette...<I>making Linux just a little more fun!</I>"
</H4>
<P> <HR> <P>
<!--===================================================================-->
<center>
<H1><font color="maroon">Stopping Spam on Your Linux Box</font></H1>
<H4>By <a href="mailto:mallet@cluestick.org">Suresh Ramasubramanian</a></H4>
</center>
<P> <HR> <P>
<!-- END header -->
<P> If you have an e-mail account, you are bo doubt getting mail
that you have not asked for, and do not want in your inbox - unsolicited e-mail
(aka spam). What's Spam? In 3D "meatspace", it is a luncheon meat manufactured
by Hormel Corp (which also owns <a href="http://www.spam.com"
>http://www.spam.com</a>). Spam on the net though is
unsolicited e-mail, unwanted e-mail, frequently sent in bulk and advertising
some commercial proposition. Most of the Spam you probably get, and what this
article deals with, is UC/BE (Unsolicited Commercial and/or Bulk E-Mail).</p>
<P> If you have a linux (or *nix) box, you have a set of powerful tools to stop
all this spam from cluttering your inbox. These tools are even more useful to
you if you run a production mailserver and want to stop spam from reaching your
users.</p>
<P>The three cardinal rules of spamfighting are:</p>
<UL>
<LI>Prevention is better than cure. Armor yourself against spam.</LI>
<LI>Filter Spam before it reaches your mailbox</LI>
<LI>Complain to the spammer's ISP and get him shut down</LI>
</UL>
<H2>I. Prevention is better than cure. Armor yourself against spam.</H2>
<P>Protect yourself and prevent spammers from harvesting your address. Don't
expose your primary e-mail addresses where a spammer can get at it and add it
to his list. This includes places like <a href="http://www.slashdot.org"
>/.</a>, usenet, publicly archived mailing lists, web based
bulletin boards - in short, anywhere online. Instead, follow one of these
steps:</P>
<P>1. Use a "throwaway" address (say abcde@yahoo.com) when posting. If you
find that this address is getting spammed, you can just throw it away and
switch to another address. To be on the safe side, when you are posting
online, "munge" your address to something like abcde@yahoo.com.Spammers.Suck.
Obviously, spammers (who use robots to crawl the web searching for mail ids and
burn the entire thing into a CD) will not be able to mail you.</P>
<P>2. If you run your own domain, use "expiring" mail addresses - addresses
which will be valid for a [week|month|year], and will then cease to exist.
This address can be something like me-mar31-apr31@mydomain.com. In case you
don't have your own domain, heck, use me-mar31-april31@yahoo.com instead :)</p>
<P>3. Both these measures have a major drawback: you have to keep changing
your e-mail address--faster than your girlfriend changes her hairstyle! :) If
your ISP uses sendmail, you have another option - "plus" addresses.</P>
<P>Plus addresses are available with newer versions of sendmail (8.8 and
above). Just add a plus sign and any string you want after the username and
before the '@'--the mail will still be delivered properly. For instance,
me+foo_bar@myisp.com will reach me - sendmail will ignore everything after the
plus. For a (slightly old) FAQ on how to implement plus addressing in
various MTAs (and how to use them in various mail clients) see <a
href="http://www.faqs.org/faqs/mail/addressing/"
>http://www.faqs.org/faqs/mail/addressing/</a>. (Note that some
MTAs use a hyphen instead of a plus sign. We'll still call them plus addresses
here--but maybe we should call them "minus" addresses instead!
<IMG SRC="../gx/dennis/smily.gif" ALT=";D" height="24" width="20"
align="middle">)
<p><EM>Obligatory disclaimer: before you start using plus addresses in your
e-mail, send yourself a test mail with a plus address and check whether it
reaches you.</EM>
<p> Plus addresses are useful because they reveal just <EM>where</EM> a
spammer harvested your mail id from.
For instance, if you subscribe to the Linux India Help mailing list,
subscribe to it as you+lih@yourdomain.com (and make sure you set your mail
client to post messages to the list only using this identity or the list will
bounce your mails). Both PINE and Mutt allow you to use different identities
when posting (roles in PINE and folder hooks in mutt). Another advantage of
plus addresses is that, if you start getting lots of spams to a plus
address, you can just send all mails reaching that address to be read by Dave
Null (aka /dev/null).</p>
<P>See <a href="#app1">Appendix #1</a> below for how to configure multiple
identities (including plus addresses) in pine 4.x and Mutt.
<H2>II. Filter Spam before it reaches your mailbox</H2>
<P>You can do this at the MTA level and by running Procmail filters. If your
remote mailbox gives you a unix shell account, run the filters there instead of
on your desktop linux box. Naturally, for the MTA level config / patching, you
have to be root :)</p>
<H3>Procmail Filtering</H3>
<P>Several procmail recipes are available for you to trap and dev/null (or even
complain about) most of the spam you get. The most popular one is Spambouncer
by Catherine Hampton. Download for free at
<a href="http://www.spambouncer.org"
>http://www.spambouncer.org</a>. Another excellent page is
maintained by Concordia University at <a
href="http://alcor.concordia.ca/topics/email/auto/procmail/spam/"
>http://alcor.concordia.ca/topics/email/auto/procmail/spam/</a>.
You can also check out <a href="http://www.waltdnes.org/email"
>SpamDunk</a> by Walt Dnes.</p>
<H3>MTA level filtering (Sendmail)</H3>
<P>As most linux boxes come installed with sendmail, I will go into slightly
more detail here. Sendmail 8.8.7 (which came with Redhat 5.1) and above have
spam blocking features, which allow you to deny mails from specific domains /
domains blackholed in the MAPS RBL and other blackhole lists. In any case,
upgrade to the latest version of sendmail available (currently 8.11.3, or the
8.12 betas).</p>
<P>Compiling sendmail is a really good idea (and is quite easy - with detailed
instructions given in a file called INSTALL in the sendmail source tree). Or
you can get prebuilt binaries in whatever format you want (rpm, deb and
such).</p>
<P>Stock sendmail installs can reject SMTP connections from domains / addresses
based on a database of filter rules - see /etc/mail/access (and
/etc/mail/access.db, which you generate using makemap hash access.db <
access).</p>
<P>/etc/mail/access can have e-mail addresses, whole domains or even specific
ip addresses / ip blocks as keys.</p>
<pre>
spammer@yahoo.com 550 Get lost - No spammers allowed
spammer.com 550 Go to hell
192.168.212 REJECT
</pre>
<P>would refuse smtp connections from spammer@yahoo.com, any user from
spammer.com (or hosts within the spammer.com domain), and any host on the
192.168.212.* netblock. For further (extremely detailed) details, see Claus
Assmann's page at <a href="http://www.sendmail.org/~ca/email/"
>http://www.sendmail.org/~ca/email/</a> (and the sendmail FAQ
at <a href="http://www.sendmail.org/faq/"
target=_blank">http://www.sendmail.org/faq/</a> won't hurt either).</p>
<P>Test this by sending a test mail to yourself from that host and then
download the message using fetchmail, using the -v argument. This will allow
you to monitor the SMTP transaction - when the FROM address is parsed, if
sendmail sees that you have blacklisted the address, fetchmail will flush and
delete it. <EM>Obvious warning: never put a reject entry your own mailhost or
any host you accept mail from using fetchmail into your access db--you will
lose mail if you do this.</EM></p>
<P>You can also reject mail from all hosts listed in the MAPS RBL and other DNS
based blackhole lists by enabling the dnsbl features in sendmail.mc and
rebuilding sendmail.cf. See <a href="http://www.mail-abuse.org/rbl/usage.html"
>http://www.mail-abuse.org/rbl/usage.html</a> for more
details.</p>
<P>Oh yes - make sure you are not an open relay, which can be abused by
spammers to relay their spam, leaving you with a clogged mailqueue, a mailbox
full of thousands of bounces, angry flames from spammed people and possibly a
listing in the RBL (if you are slow to fix it). See
<A HREF="http://www.sendmail.org/tips/relaying.html">http://www.sendmail.org/tips/relaying.html</A> and
<A HREF="http://www.orbs.org/otherresources.html ">http://www.orbs.org/otherresources.html </A>for more details.</p>
<P>Newer versions of sendmail dont make you an open relay - if you resist the
temptation to configure sendmail using linuxconf (or most other auto config
tools). Create a sendmail.mc file and regenerate sendmail.cf. For example,
see
<a href="http://www.hserus.net/sendmail.html"
>http://www.hserus.net/sendmail.html</a> (part of my Dialup
HOWTO at <a href="http://www.hserus.net/dlhowto.html"
>http://www.hserus.net/dlhowto.html</a></p>
<P>See <a href="#app2">Appendix #2</a> below for antispam measures (including
closing open relays) in other MTAs
<H2>III. Complain against spammers, get them shut down.</H2>
<P>Spam, being the insiduous, creeping slime that it is, will sooner or later
slip through all your filters and enter your mailbox. A linux box gives you
all you need to track the spammer down - basic *nix tools like whois, nslookup,
traceroute, and the best one of all: dig. The best solution is to spare a
little time (less than five minutes) to send out a few complaints to the
spammer's webhost, his ISP, his freemail provider - anyone and everyone who can
do serious damage to the spammer. These tools are also available on the web at
<A HREF="http://www.samspade.org">http://www.samspade.org</A>.</P>
<P>See <a href="#app3">Appendix #3</a> below for more links on tracing and
reporting spam
<H2><a name="app1">Appendix 1</a></H2>
<P>Roles in PINE - With PINE 4.x and above, press S (Setup) and R (Roles). Add
as many roles as you feel like and switch between them using <b>#</b> (the Hash
character). Or you can choose between different roles when replying to an
e-mail.</p>
<P>Roles in Mutt - Use folder hooks, so that all outgoing mail from a
particular folder have the from field set to me+tag@myisp.com</p>
<pre>
folder-hook linux "my_hdr From: me+linux@myisp.com (My Linux Account)"
set envelope_from # sets the envelope sender, which is what's checked
# by the list server <= mutt 1.2.x and above
</pre>
<P>Procmail recipe to dev/null all mails sent to a tagged address that attracts
too much spam:</P>
<PRE>
# If mail is sent to you+spam_string@yourisp.com trash it
:0:
*^TO_ you+spam_string@yourisp.com
/dev/null
</PRE>
<H2><a name="app2">Appendix 2</A></H2>
<P>QMail: See <a
href="http://www.summersault.com/chris/techno/qmail/qmail-antispam.html"
>http://www.summersault.com/chris/techno/qmail/qmail-antispam.html</a>
for a detailed account of anti-spam features in qmail (several of them).</p>
<P>Other MTAs: Debian comes with Exim. There are other *nix MTAs as well. See
<A HREF="http://www.mail-abuse.org/tsi/ar-fix.html">http://www.mail-abuse.org/tsi/ar-fix.html</A>
(and the websites of each MTA) for a comprehensive howto.</p>
<H2><A NAME="#app3">Appendix 3</A></H2>
<P>Reference links:</p>
<P><UL>
<LI><A HREF="http://spam.abuse.net/howtocomplain.html">The abuse.net faq</A></LI>
<LI><A HREF="http://oasis.ot.com/~dmuth/spam-l/tracking.html">The Spam-L mailing list FAQ</A></LI>
<LI><A HREF="http://www.geocities.com/SiliconValley/Lakes/5362/search.html">The
Lumber Cartel Search Page</A>--see their home page for the funny story of
just <EM>how</EM> the Lumber Cartel has become an in-joke among anti-spammers)</LI>
<LI><A HREF="http://www.mail-abuse.org">MAPS</A>-The Mail Abuse Prevention
System, home of the RBL, RSS and DUL blackhole lists)</LI>
<LI><A HREF="http://www.orbs.org">ORBS</A>--another DNS based blackhole list</LI>
<LI><A HREF="http://spam.abuse.net">John R Levine's Network Abuse Clearinghouse</A></LI>
<LI><A HREF="http://www.cauce.org">CAUCE International</A></LI>
<LI><A HREF="http://www.india.cauce.org">CAUCE India</A></LI>
</UL>
<!-- *** BEGIN bio *** -->
<SPACER TYPE="vertical" SIZE="30">
<P>
<H4><IMG ALIGN=BOTTOM ALT="" SRC="../gx/note.gif">Suresh Ramasubramanian</H4>
<P><A HREF="mailto:suresh@india.cauce.org">Suresh</A> is
President of the Indian chapter of
<A HREF="http://india.cauce.org">CAUCE</A>, an international organization of
people dedicated to fighting Spam. He is webmaster of
<A HREF="http://www.kcircle.com">KCircle</A>, one of the world's most popular
trivia quiz resources.</a>
<!-- *** END bio *** -->
<!-- *** BEGIN copyright *** -->
<P> <hr> <!-- P -->
<H5 ALIGN=center>
Copyright © 2001, Suresh Ramasubramanian.<BR>
Copying license <A HREF="../copying.html">http://www.linuxgazette.com/copying.html</A><BR>
Published in Issue 66 of <i>Linux Gazette</i>, May 2001</H5>
<!-- *** END copyright *** -->
<H4 ALIGN="center">
"Linux Gazette...<I>making Linux just a little more fun!</I>"
</H4>
<P> <hr> <P>
<H1><font color="maroon">The Back Page</font></H1>
<ul>
<li><a HREF="#authors">About This Month's Authors</a>
<li><a HREF="#wacko">Wacko Topic of the Month</a>
<li><a HREF="#notlinux">Not Linux</a>
<li><a HREF="#spam">World of Spam</a>
</ul>
<a name="authors"></a>
<P> <HR> <P>
<!--======================================================================-->
<center><H3><font color="maroon">About This Month's Authors</font></H3></center>
<P> <HR> <P>
<!--======================================================================-->
<P> Author bios are now at the bottom of the corresponding article. This was
suggested by <A HREF="mailto:dpuryear@usa.net">Dustin Puryear</A>, and we
decided we like the idea. What do you readers think?
<a name="wacko"></a>
<P> <hr> <P>
<!--====================================================================-->
<center><H3><font color="maroon">Wacko Topic of the Month</font></H3></center>
<P> <HR> <P>
<!--======================================================================-->
<P>
<!-- FONT COLOR="green" -->
<H3 align="left"><img src="../gx/dennis/qbubble.gif"
height="50" width="60" alt="(?) " border="0"
>Yamaha and UFOs</H3>
<p align="right"><strong>Answered By Ben Okopnik, Mike Orr, Heather Stern
<br></strong></p>
<P> <STRONG>I wanted to ask if you service yamahe music equipment.</STRONG>
</STRONG></P>
<BLOCKQUOTE><IMG SRC="../gx/dennis/bbub.gif" ALT="(!)"
HEIGHT="28" WIDTH="50" BORDER="0"
> [Ben]
Hey, <I>LG</I> <STRONG>does</STRONG> mention "Yamaha" a dozen times in past
issues (the sound card, obviously). Maybe the guy was getting desperate and
trying every source... That is pretty wild, though. I'm still waiting for "Dear
Earthlings: I just installed Windows on my UFO, and now I can't get back in..."
</BLOCKQUOTE>
</STRONG></P>
<BLOCKQUOTE><IMG SRC="../gx/dennis/bbub.gif" ALT="(!)"
HEIGHT="28" WIDTH="50" BORDER="0"
> [Mike]
"Hey Earthlings, we just installed something called Windoze En-Tee on
our flying saucer, and it made all or monitors turn
<FONT COLOR="blue">blue</FONT>. There's a message
in <FONT COLOR="gray">white</FONT> letters on the screen, but we don't
understand the language. Please help <STRONG>URGENTLY</STRONG> as our
spacecraft is out of control and is locked on a crash course with Earth."
</BLOCKQUOTE>
</STRONG></P>
<BLOCKQUOTE><IMG SRC="../gx/dennis/bbub.gif" ALT="(!)"
HEIGHT="28" WIDTH="50" BORDER="0"
> [Heather]
Fellow-being: What you need is to install something else quick.
Since your saucer can run Windoze (also called MSwin or windows or wind*ws)
I recommend "ZipSlack"
<A HREF="">http://www.slackware.com/zipslack/getzip.php</A>.
It can load quickly onto the "FAT" filesystem MSwin uses and once you have
successfully launched that you should stop crashing...
<P> You may want something more well-tuned to your saucer once you have that
going.
<P> According to my research (slim pickings, most of our movies about aliens
don't describe their software, but one notes you are able to run some of our
virus software), apparently your native operating system most closely resembles
something here called "MacOS". This is at least part of the problem, nearly
any earthling knows that the MacOS and Windows vendors are at war with each
other.
<P> Unfortunately MacOS is proprietary so getting you a working copy without
getting some Earth hardware to go with it, may be a problem, esp. if you
have no Earth currency aboard.
<P> Fortunately, we Linuxers can recommend either
<A HREF="http://www.yellowdoglinux.com">Yellow Dog Linux</A> or
<A HREF="http://www.linuxppc.com">LinuxPPC 2000</A>
, as well as
<A HREF="http://www.debian.org">Debian</A>. I can't say which will have the fastest install -
a Mac-using friend highly recommends the first... Debian is highly available
so you should be able to reach a mirror site no matter which of our land
masses you are presently nearest. To save you time the web link you need
is <A HREF="http://cdimage.debian.org/ftp-mirrors.html">http://cdimage.debian.org/ftp-mirrors.html</A>.
Normally they discourage getting ISO images directly like that but, they
expect you to have a stable system to fetch. I hope you will have no
problems whatsoever creating discs ...
By the way, most earthlings don't understand the funny messages generated
by those blue screens either. Luckily I can assure you they don't help fix
the problem...
</BLOCKQUOTE>
<!-- /FONT -->
<a name="notlinux"></a>
<P> <hr> <P>
<!--====================================================================-->
<center><H3><font color="maroon">Not Linux</font></H3></center>
<P> <HR> <P>
<!--======================================================================-->
<P>
<A HREF="http://www.faqs.org/rfcs/rfc3092.html">RFC 3092</A> muses on the
etymology of 'foo' and 'bar'. Among other things, it says the "wildly popular"
Smokey Stover comic strip of the 1930s by Bill Holman
"featured a firetruck called the Foomobile that rode
on two wheels."
<P> The RFC also has a table of which other RFCs mention "foo", "bar" or
"fubar".
<HR NOSHADE WIDTH="40%" ALIGN="center"> <!-- ************************************** -->
<P> Rory Krause and I came up with this one:<BR>
the sysadmin's dance: do the Buggy Boogie.
<HR NOSHADE WIDTH="40%" ALIGN="center"> <!-- ***************************** -->
<P> <A HREF="http://rtmark.com/cuehack/">CueJack</A> is a Windows application
that lets you scan a products with a :CueCat scanner, then displays a web page
with "alternative information" about the product's company.
As you can guess, the "alternative information" is stuff the company
doesn't want you to know.
"This could be information about corporate abuse, boycotts against the company,
even how much money the company is making, their corporate image as presented
to shareholders, etc."
Courtesy Slashdot.
<P> Miscellania: The program was renamed from CueHack because another program
already had the same name. The author is working on a Linux version but says
there are technical difficulties.
<a name="spam"></a>
<P> <hr> <P>
<!--====================================================================-->
<center><H3><font color="maroon">World of Spam</font></H3></center>
<P> <HR> <P>
<!--======================================================================-->
<P>
<H4> Some of the funnier spams found in the <EM>Gazette</EM> mailbox.</H4>
<P> ... helps Businesses to eliminate the need of hiring telemarketers
Automated initial customer application process and many more
features......... You will smile all the way to the Bank!!
<P> Automatically calls........ To market products and to make announcements.
To confirm preset appointments, prescheduled meetings, and conferences. Our
CTI software can be used by businesses and services by calling sequentially or
randomly. Automatically dials up to 2,000 - 10,000 prospects per day without
human interference. When our CTI software calls it can simply leave a message
or it can ask for a response. You may obtain responses by recording their
voices, asking them to press a key, to respond to choices or transferring to a
live operator. Just record your messages, select which group ( Data Bases) you
want to call , when you want to start and stop, and then let our CTI software
got to work calling everyone. You will save tremendous time and get results
very fast ! without increasing your overheads or hiring extra help.
<BLOCKQUOTE><EM>
[ Your Editor got an obnoxious phone call at home recently from one of
these machines. The recorded message said, "Please hold until a
representative can get to you." Click!
<P>
</EM><TT>
Subject: BOUNCE tag@ssc.com: Message too long (>40000 chars)<BR>
</TT><EM>
It's nice to know the TAG spamfilter is working.
<IMG ALT=";)" SRC="../gx/dennis/smily.gif"
WIDTH="20" HEIGHT="24" ALIGN="middle">
-Mike.]
</EM></BLOCKQUOTE>
<HR NOSHADE WIDTH="40%" ALIGN="center"> <!-- ************************************** -->
From: Justin Catterall<BR>
Date: Fri, 6 Apr 2001 22:39:05 +0100
<P> Regarding the
<A HREF="../issue65/lg_backpage65.html#notlinux">Nigerian money scam</A>
in last month's Not Linux.
<P> I've been receiving faxes the same as this for a few years at work, the
scam is worse than it looks: they *have* been succesful on several
occaions - all UK (if not world) banks know not to let their customers
get involved.
<P> What basically happens is A N Idiot agrees to the deal, signs the papers
and money appears in his/her account. A N Idiot then transfers most of
the money to another account (the scammer's). The money coming into the
account then never arrives - originating bank denies knowledge or
whatever - A N Idiots bank ha's, in the mean time, sent the money to
another bank. The first thing the bank does is debit A N Idiot's
account... A N Idiot is holding the can for an awful lot more money than
they thought they'd ever see.
<P> Holding the can for more money than you thought you'd ever see is
probably better than holding the can for the first million you've just
made and is all you have because if you're 999,000 away from paying back
1,000,000 they aren't really going to try to get it back but if you're
nearly their they'll clean you out then lock you up.
<P> These scammers are real bastards, if I didn't know it happened I wouldn't
believe people could be so bad to other people.
<P> Anyway, I just thought I'd let you know that this scam has worked and how
it worked (roughly and AIUI).
<P> Keep up the work with the gazette.
<HR NOSHADE WIDTH="40%" ALIGN="center"> <!-- ***************************** -->
<P>
From: James Suttie<BR>
Date: Fri, 20 Apr 2001 22:36:48 +0100
<P> keep up the good work with Linux Gazette - here's one of many links to the
African spam scam!
<A HREF="http://www.state.vt.us/atg/NIGERIA.htm">http://www.state.vt.us/atg/NIGERIA.htm</A>
<HR NOSHADE WIDTH="40%" ALIGN="center"> <!-- ************************************** -->
<P> Are you planning to rent a Limousine, Sedan or a Private car for your Teen
Prom Ceremony this session?
<HR NOSHADE WIDTH="40%" ALIGN="center"> <!-- ************************************** -->
<P> ALWAYS SEND $5 CASH (U.S. CURRENCY) FOR EACH REPORT CHEQUES NOT BE ACCEPTED
ALWAYS SEND YOUR ORDER VIA FIRST CLASS MAIL Make sure the cash is concealed by
wrapping it in at least two sheets of paper. On one of those sheets of paper,
include: (a) the number & name of the report you are ordering, (b) your e-mail
address, and (c) your name & postal address.
<HR NOSHADE WIDTH="40%" ALIGN="center"> <!-- ************************************** -->
<P> Free Leads Daily - Spam FREE! No Cost to you!
<HR NOSHADE WIDTH="40%" ALIGN="center"> <!-- ************************************** -->
<P> YOU CAN make over a half million dollars every 4 to 5 months from
your home for a one time investment of only twenty five U.S.
Dollars.
<HR NOSHADE WIDTH="40%" ALIGN="center"> <!-- ***************************** -->
<P> Subject: BUSINESS OPPORTUNITY EXTRAORDINAIRE!!
<P> I understand you are seeking information about home based business
opportunities.
<P> --LEGITIMATE online business, which is SUCCESSFUL and GROWING.
<P> --PERFECT for someone who has VERY LITTLE TIME to invest or
for someone who LOVES being online!
<P> Please email me at the address below to receive FREE VITAL INFORMATION
(You'll very well Kick Yourself and your Modem if you don't)
<HR NOSHADE WIDTH="40%" ALIGN="center"> <!-- ***************************** -->
<P>Our research indicates this information may be of interest to you.
<HR NOSHADE WIDTH="40%" ALIGN="center"> <!-- ***************************** -->
<P> Hello gazette<BR>
WOW! This is absolutely amazing! Now you can put money in
your pocket at warp speed using the internet! We're not talking
weeks or even days, but within HOURS!! Wouldn't you like to
be $5,000 richer by the day after tomorrow? Then you can do it
again as often as you like - even every day! For all the fantastic
details, send a blank email to: [address]
<HR NOSHADE WIDTH="40%" ALIGN="center"> <!-- ***************************** -->
E-zine Editors... Authors... Information Publishers...** NEVER BEFORE SEEN ** Techniques For
Turning an Electronic Newsletter Into a $20,000+ a Month Profit Stream!
<BLOCKQUOTE><EM>
[Wow, something that's actually relevant to </EM>LG<EM> -Mike.]
</EM></BLOCKQUOTE>
<HR NOSHADE WIDTH="80%"> <!-- ************************************** -->
<P> Happy Linuxing!
<P> Michael Orr<br>
Editor, <A HREF="http://www.linuxgazette.com/"><i>Linux Gazette</i></A>, <A
HREF="mailto:gazette@ssc.com">gazette@ssc.com</a>
<BR CLEAR="all">
<!-- *** END Not Linux *** -->
<!-- *** BEGIN copyright *** -->
<P> <hr> <P>
<H5 ALIGN=center>
Copyright © 2001, the Editors of <I>Linux Gazette</I>.<BR>
Copying license <A HREF="../copying.html">http://www.linuxgazette.com/copying.html</A><BR>
Published in Issue 66 of <i>Linux Gazette</i>, May 2001</H5>
<!-- *** END copyright *** -->
|